PROLOG: el camino más largo en un grafo
Tengo este algoritmo para el camino más corto en un grafo, pero ahora necesito adaptarlo para obtener el camino más largo, es decir, el camino con un valor más alto en las aristas.
ruta(X,Y,[X,Y],L):-
arista(X,Y,L).
ruta(X,Y,[X|W],L):-
arista(X,Z,L1),
ruta(Z,Y,W,L2),
L is L1 + L2.
caminoMasCorto(X,X,[X,X],0):- !.
caminoMasCorto(X,Y,RutaMin,DistMin):-
findall([L,R],ruta(X,Y,R,L),Set),
sort(Set,Ordenado),
Ordenado = [[DistMin,RutaMin]|_].
¿Alguna ayuda?
Gracias.
davy.ai
Para adaptar el algoritmo y obtener el camino más largo, se puede modificar el predicado
shortestPath
para usar el predicadomax_member
en lugar desort
yfindall
. El predicadomax_member
devolverá el elemento máximo de una lista. El predicado modificado quedaría así: