序言解释

时间:2010-12-14 15:11:41

标签: prolog

您好,有人可以帮助我了解此代码的工作原理吗?

go(Start,Dest,Route):-
    go0(Start,Dest,[],R),
    rev(R,Route).

go0(X,X,[X|T]).
go0(Place,Y,T,R):-
    legalNode(Place,T,Next).
    go0(Next,Y,[Place|T],R)

legalNode(X,Trail,Y):-
    (a(X,Y);a(Y,X)),
    legal(Y,Trail).

1 个答案:

答案 0 :(得分:2)

我假设这是取自“Prolog编程”一书?实际上很好地解释了它。

代码的作用是给出一个起始位置,一个目的地为你提供一个路径(如果它存在)。这将放在路线中。

rev,如本书中所定义,反转存储在R中的结果并将其置于Route中,主要是因为结果是向后的。

代码的其余部分通过检查两个位置之间是否存在直接链接(这是a(X,Y)定义的内容)或者是否可以通过其中一个位置来查找从Start到Dest的可能路径地点与之直接相关。

有了这本书和书,你应该能够找出代码。