我想在双向图中找到从A站到B站的最短路径(如果A连接到B而B连接到A),图表在分支上没有权重。问题就像这样发布了
解决(开始,结束,路径)。
启动站。
终点目的地站。
路径 - 以最短路径传递的所有站的列表。图中任意两个直接连接的站之间的距离相等。
基地的事实是这样的:
事实( “Staion1”, “metroline”, “站2”, “metroline”)。
metro line是直接连接两个staions的线路数。如果第2和第4个参数相同,则直接连接站。
线( “abbesses的”, “12”, “皮嘉尔”, “12”)。
线(“Abbesses”,“12”,“Lamarck Caulaincourt”,“12”)
线(“Ale'sia”,“4”,“Mouton Duvernet”,“4”)
line(“Ale'sia”,“4”,“Porte d'Orle'ans”,“4”)
(“Alexandre Dumas”,“2”,“Philippe Auguste”,“2”)
线(“Alexandre Dumas”,“2”,“Avron”,“2”)
线(“Alma Marcesu”,“9”,“Ie'na”,“9”)。
编辑:
我试图解决这个问题,并且我发现如果使用BFS它会更快
这是我写的解决方案:
解决(开始,结束,路径): - 。solve1([开始],结束,[开始],路径)
solve1([P | O],结束,访问,[结束?|]): - 儿童(P,S),构件(完,S),
solve1([P | O],结束,访问,路径): -
(未(构件(P,访问)),儿童(P,S),追加(O,S,O1),solve1(O1 ,结束,访问,路径));
(solve1(O,结束,访问,路径))。
? - 应该是包含目标节点的路径的列表
唯一的问题是我不知道如何将路径返回到目标节点
谢谢你的提前。