Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Prolog迷宫停止循环_Loops_Prolog_Maze - Fatal编程技术网

Loops Prolog迷宫停止循环

Loops Prolog迷宫停止循环,loops,prolog,maze,Loops,Prolog,Maze,我已经设法拼凑出一个脚本,它通过所有的链接显示给我,但我似乎不明白为什么有一个链接,整个脚本循环到无穷远。如果删除下面的链接,程序将正常工作 link(f,c). 下面是完整脚本的代码 link(a,b). link(a,b). link(b,c). link(c,d). link(f,c). link(b,e). link(d,e). link(e,f). path(X,Y,[X,Y]):-link(X,Y). path(X,Y,[X|R]):-link(X,Z),path(Z,Y,R)

我已经设法拼凑出一个脚本,它通过所有的链接显示给我,但我似乎不明白为什么有一个链接,整个脚本循环到无穷远。如果删除下面的链接,程序将正常工作

link(f,c).
下面是完整脚本的代码

link(a,b).
link(a,b).
link(b,c).
link(c,d).
link(f,c).
link(b,e).
link(d,e).
link(e,f).

path(X,Y,[X,Y]):-link(X,Y). 
path(X,Y,[X|R]):-link(X,Z),path(Z,Y,R).
route(X,Y,T):-find_route(X,Y,[],T).
find_route(X,Y,D,[Z|T]):-path(X,Y,Z),not(member(Z,D)), 
find_route(X,Y,[Z|D],T). 
find_route(_,_,_,[]).
看起来它当前将数组中的值与links值匹配,然后比较从a到f的路径,然后检查通过的值并将其显示在控制台上这是没有linkf,c的。如果有人知道我经历了什么,请告诉我


谢谢

链接f,c正在有效地关闭定向循环c->d->e->f->c。因此,在路径X,Y,Z上,X和Y属于这个循环的任何回溯都会产生越来越长的路径。因此,您应该在路径规则中添加一个检查,以避免已访问的节点。

删除无用的路径/3。。。