Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
arc( a , b ). arc( a , f ). arc( b , c ). arc( b , d ). arc( b , e ). arc( f , g ). arc( f , i ). arc( i , j ). arc( i , k ). % --- traverse/3 ----------------------- % % Traverses a directed graph % % traverse( Origin, Destination, Path ). %--------------------------------------- traverse(A,Z,P) :- traverse(A,Z,[],Vs), reverse(Vs,P). % --- traverse/4 -------------------------------------------- % % private helper for traverse/3 % % traverse( Origin, Destination, Visited, Path). % % Note that Path is returned in most recently visited order. % %------------------------------------------------------------ traverse(A,Z,Vs,[Z,A|Vs]) :- % we can get from A to Z arc(A,Z). % - if A and Z are directly connected traverse(A,Z,Vs,P) :- % otherwise, we can get from A to Z, if... arc(A,B), % - A is connected to some B \+ member(B,Vs), % - that we have not yet visited traverse(B,Z,[A|Vs],P). % - and we can get from B to Z (recording that A has been visited).