【发布时间】:2022-07-27 20:44:46
【问题描述】:
有什么办法可以防止这段代码出现循环。
move(a,b).
move(b,a).
move(a,c).
move(b,d).
move(b,e).
move(d,h).
move(d,i).
move(e,j).
move(e,k).
move(c,f).
move(c,g).
move(f,l).
move(f,m).
move(g,n).
move(g,o).
goal(n).
goSolveTheMaze(Start,Way) :-
dfs(Start, Way),!.
dfs(Goal, [Goal]) :-
goal(Goal),!.
dfs(Start, [Start|Way]) :-
move(Start, N),
dfs(N, Way).
所以当move(a,b) 移动到(b,c) 时不要回到(b,a),
当运行goSolveTheMaze(a,path)。
输出应该是path=[a,c,g,n]。
【问题讨论】:
标签: prolog artificial-intelligence depth-first-search