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).``````

thanks.