Попытка найти, существует ли путь из двух комнат в лабиринте - PullRequest
0 голосов
/ 05 июня 2019

Итак, я должен выполнить это задание в прологе, который состоит из следующего, нам дан лабиринт, состоящий из комнат.Некоторые номера связаны с другими, а некоторые нет.Мы должны написать код пролога, который проверяет, существует ли путь из одной комнаты в другую.До сих пор я написал базу знаний, которая представляет все соединенные комнаты.Теперь я должен добавить еще, чтобы проверить, существует ли путь или нет.

До сих пор я пробовал много вещей, таких как утверждение, что существует путь между X и Y, если X связан с Z, а Z связан с X. Я почти уверен, что мы должны использовать рекурсию, но не совсемуверен, как именно.Ниже я покажу код, который я написал.

connected(X,Y) :- 
  door(X,Y);
  door(Y,X).

door(m,i).
door(m,n).
door(n,o).
door(n,o).
door(p,l).
door(j,k).
door(e,f).
door(j,f).
door(f,b).
door(a,b).
door(k,g).
door(g,c).
door(c,d).
door(d,h).
door(h,l).

путь (X, X).путь (X, Y): - путь (X, Z), подключен (Z, Y).

Ожидаемый вывод `path (a, m) должен быть ложным.Но он застревает в бесконечном цикле.

...