2010-12-14 4 views
0

Здравствуйте, может кто-нибудь мне помочь, как работает этот код?Пролог код объяснения

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

Я предполагаю, что это взято из книги «Программирование в Прологе»? На самом деле это довольно хорошо объяснено.

Что делает код, дается начальное местоположение, а пункт назначения дает вам маршрут, если он существует. Это будет помещено в Маршрут.

rev, как определено в книге, изменяет результаты, сохраненные в R, и помещает их в Маршрут, в основном потому, что результат обратный.

Остальная часть кода ищет возможный маршрут от начала до места назначения, проверяя, существует ли прямая ссылка (это то, что определяют a (X, Y)) между двумя местоположениями, или если вы можете попасть туда через один из в местах, где есть прямая связь.

С учетом этого и книги в руке вы сможете выяснить код.

Смежные вопросы