Prolog中的路线规划

时间:2014-03-13 17:54:31

标签: 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 个答案:

答案 0 :(得分:1)

Z \ = Y行可防止路线中的循环,否则你可能会有一个arad的分段 - >阿拉德。