我在这个网站上阅读了其他类似的问题和答案,但似乎无法找到我的特定问题的答案。我正在尝试在 Prolog 中编码一个迷宫。从区域 0 可以自由移动到区域 1 或区域 3。从区域 3 可以自由移动到区域 0、区域 4 或区域 5 等。我想找到长度为 7 的所有路径从开始到结束(从 0 到 14)。我在 SWI-Prolog 中以下列方式对问题进行了编码:
region(0).
region(1).
region(2).
region(3).
region(4).
region(5).
region(6).
region(7).
region(8).
region(9).
region(10).
region(11).
region(12).
region(13).
region(14).
region(15).
connection(0,1). %connection exists between these two regions
connection(0,3).
connection(1,2).
connection(1,8).
connection(1,7).
connection(3,4).
connection(3,5).
connection(7,9).
connection(7,5).
connection(7,8).
connection(5,6).
connection(8,10).
connection(8,11).
connection(11,12).
connection(11,13).
connection(13,15).
connection(13,14).
double_link(X,Y) :-
region(X),
region(Y),
( connection(X,Y) | connection(Y,X) ). %can go from region X to region Y, and vice versa
path(X,Y) :-
double_link(X,Y).
path(X,Y) :-
double_link(X,Z),
path(Z,Y).
当我执行时,path(14,0).
我得到true
. 但是,当我执行 path(0,14). 时,我用完了本地堆栈空间。我不知道怎么可能。谢谢你的帮助!