2014-03-13 76 views
2

下面是一個在線教程,給出路線規劃方案: -路線規劃中的Prolog

route(X,Y,R) :- 
route(X,Y,[X],R). 

route(X,Y,_,[drive(X,Y)]) :- 
travel(X,Y). 
route(X,Y,V,[drive(X,Z)|R]) :- 
travel(X,Z), 
\+ member(Z,V), 
route(Z,Y,[Z|V],R) 
Z \= Y.  %Only required if Y is not ground. 


travel(X,Y) :- road(X,Y). 
travel(X,Y) :- road(Y,X). 


road(arad,sibiu). 
road(arad,timisoara). 
road(arad,zerind). 
road(zerind,oradea). 
road(oradea,sibiu). 
road(sibiu,fagaras). 

什麼我不明白的是註釋語句:Z\=Y。 爲什麼需要此聲明?以及爲什麼只有在Y不被磨光時才需要該聲明?

+1

帶着或不帶着它運行代碼,看看會發生什麼。 :) –

+1

我找不到任何區別...你能提供一些提示嗎? – Pingu

回答

1

Z \ = Y線防止路線中的環路,否則您可能會有一個路段 - > arad。