Prolog 入口和出口之间的所有可能路线
我需要帮助解决迷宫路径。提前谢谢Prolog 入口和出口之间的所有可能路线,prolog,maze,transitive-closure,Prolog,Maze,Transitive Closure,我需要帮助解决迷宫路径。提前谢谢 link(a,b). link(b,c). link(c,d). link(f,c). link(b,e). link(d,e). link(e,f). 编写一个谓词,定义任意两个相邻点(例如X和Y)之间的路由,前提是它们之间存在链接,递归谓词涵盖任意两个非相邻点(例如X和Z)之间路由的更一般情况通过确定X和迷宫中第三个点(比如Y)之间存在连接,以及Y和Z之间存在路径这一事实 两个特殊房间——一个连接到“a”并称为“入口”,另一个连接到“f”并称为“
link(a,b).
link(b,c).
link(c,d).
link(f,c).
link(b,e).
link(d,e).
link(e,f).
编写一个谓词,定义任意两个相邻点(例如X和Y)之间的路由,前提是它们之间存在链接,递归谓词涵盖任意两个非相邻点(例如X和Z)之间路由的更一般情况通过确定X和迷宫中第三个点(比如Y)之间存在连接,以及Y和Z之间存在路径这一事实
两个特殊房间——一个连接到“a”并称为“入口”,另一个连接到“f”并称为“出口”。添加一组事实以反映两个新房间。使用任务1中的谓词,编写一个谓词,查找入口和出口之间的所有可能路线,并创建已访问房间的列表。编写另一个谓词,在每次迭代结束时或每次到达出口时在交互控制台中显示列表。写一个测试计划,显示你的预期结果和实际结果。评估此解决方案并确定任何潜在问题以及可能导致其发生的情况
这个解决方案的问题是循环。如果我想链接(a,f),prolog说不。我的谓词有什么问题吗
|-链接(a,b)。
链接(b,c)。
链接(c,d)。
链接(f,c)。
链接(b,e)。
链接(d,e)。
链接(e,f)
路由(X,Y):-链路(X,Y)。
路由(X,Y):-链路(X,Z),路由(Z,Y)。
对
对
对
对
对
对
对
!----------------------------------------
! 错误20:未定义谓词
! 目标:路由(31102,31104):-链路(31102,31104)
流产
|-链接(a,f)。
没有
|?路线(X,Y)。
X=a,
Y=b
X=b,
Y=c
X=c,
Y=d
X=f,
Y=c
X=b,
Y=e
X=d,
Y=e
X=e,
Y=f
X=a,
Y=c
X=a,
Y=e
X=a,
Y=d
)
X=a,
Y=d
|-链接(X,Z)。
X=a,
Z=b
|?-
|-链接(X,Z)。
X=a,
Z=b
X=b,
Z=c
X=c,
Z=d
X=f,
Z=c
X=b,
Z=e
X=d,
Z=e
X=e,
Z=f
有关closure0/3
的定义,请参阅
或者,要使用您的新名称:
route(A0,A) :-
link(A0,A1),
closure0(link, A1,A).
在这个网站上提问之前,你应该更好地解释你尝试了什么。没有人会帮你做家庭作业,但很多人都愿意帮助你理解一些你不知道的技术要点。不要张贴你必须做的练习,希望有人能帮你做…通过阅读了解这个网站。
route(A0,A) :-
link(A0,A1),
closure0(link, A1,A).