【发布时间】:2011-05-23 22:22:33
【问题描述】:
我想在双向图中的prolog中找到从A站到B站的最短路线(如果A连接到B而不是B连接到A),该图在分支上没有权重。问题是这样发布的
solve(Start,End,Path).
起点站。
终点站。
路径最短的所有站点的路径列表。图中任意两个直接相连的站点之间的距离相等。
实际上基本是这样的:
fact("Staion1","metroline","Station2","metroline").
地铁线是直接连接两个车站的线路数。如果第 2 和第 4 个参数相同,则站直接连接。
line("Abbesses","12","Pigalle","12").
line("Abbesses","12","Lamarck Caulaincourt","12").
line("Ale'sia","4","Mouton Duvernet","4").
line("Ale'sia","4","Porte d'Orle'ans","4").
line("Alexandre Dumas","2","Philippe Auguste","2").
line("Alexandre Dumas","2","Avron","2").
line("Alma Marcesu","9","Ie'na","9").
编辑:
我试图解决这个问题,我发现如果使用 BFS 会更快。
这是我写的解决方案:
solve(Start,End,Path):-solve1([Start],End,[Start],Path).
solve1([P|O],End,Visited,[End|?]):-children(P,S),member(End,S),!.
solve1([P|O],End,Visited,Path):-(not(member(P,Visited)),children(P,S),append(O,S,O1),solve1(O1,End,Visited,Path));
(solve1(O,End,Visited,Path)).
?-应该是带有目标节点路径的列表
唯一的问题是我不知道如何将路径返回到目标节点。
谢谢在前面。
【问题讨论】:
-
告诉我们您是如何开始解决问题的以及您遇到的问题。看起来您希望其他人为您完全解决这个问题......
标签: prolog graph-theory shortest-path