2010-12-14 64 views
0

你好可以有人幫我udnerstand這個代碼的工作原理嗎?序言代碼解釋

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

什麼是rev,a和legal? – aschepler 2010-12-14 15:36:15

+0

它不起作用。 – 2010-12-14 17:00:08

回答

2

我假設這是從「Prolog編程」一書中找到的?其實它在那裏很好解釋。

代碼的作用是給出一個起始位置和一個目的地,如果它存在的話給你一條路線。這將被放入路由。

rev,如本書中所定義的,將R中存儲的結果取反,並將其放入Route中,這主要是因爲結果是反向的。

代碼的其餘部分通過檢查兩個位置之間是否存在直接鏈接(這就是a(X,Y)定義的內容),或者如果可以通過其中一個鏈接與那裏有直接的聯繫。

隨着這本書和手中的書,你應該能夠找出代碼。