объяснение кода пролога - PullRequest
       2

объяснение кода пролога

0 голосов
/ 14 декабря 2010

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

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).

1 Ответ

2 голосов
/ 15 декабря 2010

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

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

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

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

Имея это и книгу в руках, вы сможете найти код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...