Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2007, 20:54
Fossil
 
Fecha de Ingreso: febrero-2007
Mensajes: 4
Antigüedad: 18 años, 1 mes
Puntos: 0
Problema con prolog

Saludos,

Necesito una ayuda con prolog, resulta que necesito una función en Prolog que me cuente los nodos de un grafo etiquetado. El grafo es de la forma:

nodo(2,[arista(1,nodo(3,[]))])

El 2 se refiere a la etiqueta del primer nodo, el 1 es la etiqueta de la arista que une al nodo 2 con el 3.

Hasta ahora lo que llevo es esto, sin embargo no me esta dando el resultado deseado:
contarNodos(nodo(_,[]),N) :- N is 1.
contarNodos(nodo(_,[X|XS]),N) :- contarNodos(X,N1), contarNodos(XS,N1), N is N1 + 1.
contarNodos(arista(_,X),N) :- contarNodos(X,N1), N is N1.

Ademas del caso base, este caso me da las respuestas que quiero:

?-contarNodos1(nodo(2,[arista(3,nodo(1,[]))]),N).
N=2 (2 nodos)

Al probar este caso de prueba no me da los nodos que quiero:
contarNodos1(nodo(2,[arista(3,nodo(1,[])),arista(2,nodo(3,[arista(3,nodo(4,[arista(3,nodo(4,[]))]))]))]),N).
N=3 (NO !!!!)

Quisiera saber si me pueden ayudar, se los agradecería enormemente, gracias.