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

"프로그래밍에서 프롤로그 프로그래밍"책에서 가져온 것으로 가정합니다. 실제로 꽤 잘 설명되어 있습니다.

코드에는 시작 위치가 주어지며 목적지는 경로를 제공합니다. 이것은 Route에 놓이게됩니다.

rev는 책에 정의 된대로 결과가 거꾸로 있기 때문에 기본적으로 R에 저장된 결과를 반전하여 Route에 배치합니다.

코드의 나머지 부분은 두 위치 사이에 직접 링크 (a (X, Y)가 정의하는 것)가 있는지 또는 한 위치를 통해 거기에 도착할 수 있는지 확인하여 시작부터 목적지까지 가능한 경로를 찾습니다. 거기 위치는에 직접 연결이다.

그 책과 함께 책을 읽으면 코드를 파악할 수 있습니다.