Hi, I have an undirected graph, I wish to find 3 shortest paths,
my code below gives me all possible paths,
can anyone give me some advice to find 3 shortest paths ?
my idea of finding 3 shortest path is
1) since i have all possible path, i can store all of them in a list, sort by its length,
choose the 3 shortest.
2) edit my algorithm to give me 3 shortest path.
But I have no idea on how to con't.
edge(1,2) . . . % makes the graph bidirectional connectedEdge(X,Y) :- edge(X,Y). connectedEdge(X,Y) :- edge(Y,X). % check if X has been visited member(X,[X|R]). member(X,[Y|R]) :- member(X,R). % search path(Node, Node, _, [Node]). path(Start, Finish, Visited, [Start | Path]) :- connectedEdge(Start, X), not(member(X, Visited)), path(X, Finish, [X | Visited], Path). find_paths(Start, Finish) :- path(Start, Finish, [Start], Path), printPath(Path), nl, fail. % print printPath(). printPath([X]) :- !, write(X). printPath([X|T]) :- write(X), write(', '), rintPath(T).