このサイトで他の同様の質問と回答を読みましたが、特定の問題に対する回答が見つからないようです。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) を実行すると、ローカル スタック領域が不足します。それがどのようになるかわかりません。助けてくれてありがとう!