• Martes 16 de Abril de 2024, 06:07

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Hasto

Páginas: [1]
1
Programación Lógica / Problema Del Viajero En Prolog (urgente)
« en: Martes 16 de Agosto de 2005, 18:36 »
Hola a todos, tengo aquí un pequeño problema con el código del viajero, para aquellos que no lo conocen, es el hecho de pasar por todos los nodos de un grafo "con el menor costo" o distancia, según lo quieras ver. La cuestión es la siguietne:
Hasta ahora solo he podido hacer que parta de un nodo y regrese al mismo pero no pasa por todos los nodos, estos tienen dobles caminos, es decir, que se puede ir y regresar con cualquier conexión, por ejemplo:
NODO1<---------------->NODO2
Lo que necesito, es únicamente poder desplegar todos los nodos en la ruta, aunque se repitan algunos, pero que estén todos los nodos, espero alguien me pueda ayudar, este es el código que tengo y el ejemplo de como usarlo:

%BASE DE CONOCIMIENTO
conect(gdl,mty,800).
conect(mty,mex,1000).
conect(gdl,mex,500).
conect(mex,oax,600).
conect(tij,gdl,2000).
conect(ver,oax,400).
conect(mex,ver,300).

conect(mty,gdl,800).
conect(mex,mty,1000).
conect(mex,gdl,500).
conect(oax,mex,600).
conect(gdl,tij,2000).
conect(oax,ver,400).
conect(ver,mex,300).


%MOTOR
existe(X,[X|Lista]).
existe(X,[_|R]):- existe(X,R).

trip(X,Y,C,Ruta):-trip(X,Y,C,Ruta,[]).
trip(X,Y,C,[X|[Y]],Ruta):-conect(X,Y,C),not existe(Y,Ruta).
trip(X,Y,C,[X|R],Ruta):-conect(X,Z,C1),not existe(Z,Ruta),trip(Z,Y,C2,R,[Z|Ruta]),C is C1+C2.

%ejemplo:
%trip(gdl,gdl,Dinero,Ruta)

Páginas: [1]