0

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.