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.