您好,有人可以帮助我了解此代码的工作原理吗?
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).
答案 0 :(得分:2)
我假设这是取自“Prolog编程”一书?实际上很好地解释了它。
代码的作用是给出一个起始位置,一个目的地为你提供一个路径(如果它存在)。这将放在路线中。
rev,如本书中所定义,反转存储在R中的结果并将其置于Route中,主要是因为结果是向后的。
代码的其余部分通过检查两个位置之间是否存在直接链接(这是a(X,Y)定义的内容)或者是否可以通过其中一个位置来查找从Start到Dest的可能路径地点与之直接相关。
有了这本书和书,你应该能够找出代码。