I have an undirected, unweighted graph, I wish to find 3 shortest paths between
ID: 3635042 • Letter: I
Question
I have an undirected, unweighted graph, I wish to find 3 shortest paths between 2 nodes, as I'm simulating a mrt network thus duplicate path is allowed due to transfer station.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
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.
[Code]
edge(1,2)
.
.
connectedEdge(X,Y) :- edge(X,Y).
connectedEdge(X,Y) :- edge(Y,X).
member(X,[X|R]).
member(X,[Y|R]) :- member(X,R).
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.
printPath([]).
printPath([X]) :- !, write(X).
printPath([X|T]) :- write(X),write(', '),printPath(T).
[/Code]