2010-12-14 28 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

+0

動作しません。 –

答えて

2

私はこれが "Programming in Prolog"の本であると仮定していますか?それは実際にそこでかなりよく説明されています。

コードには開始位置が与えられ、目的地にはルートがあります(存在する場合)。これはルートに置かれます。

revは、本書で定義されているように、結果が逆方向であるため、Rに格納された結果を逆にしてRouteに配置します。

残りのコードは、2つの場所の間に直接リンク(a(X、Y)が定義するもの)があるかどうかをチェックするか、またはそこには直接リンクしている場所があります。

これと手元の本で、コードを理解できるはずです。