【发布时间】:2019-01-26 03:46:25
【问题描述】:
假设我将边缘设置为包含边缘的列表,如下所示:
E=[(1, 6), (1, 7), (2, 3), (2, 6), (3, 2), (3, 8), (4, 5), (4, 7), (5, 4), (5, 9), (6, 1), (6, 7), (6, 2), (7, 1), (7, 6), (7, 4), (8, 9), (8, 3), (9, 8), (9, 5)]
在给定距离矩阵的情况下,我想找到节点 8 和 4 之间的最短路径(并且还考虑有 2 条等距离最短路径的情况):
C=[2.5, 5.59, 1.0, 2.0, 1.0, 2.0, 1.0, 2.0, 1.0, 2.0, 2.5, 5.0, 2.0, 5.59, 5.0, 2.0, 5.0, 2.0, 5.0, 2.0]
C 中的每个元素(例如在第 i 个位置)对应于 E(在第 i 个位置)中相应边的 2 个节点之间的距离。
我偶然发现了一些类似的帖子,这些帖子鼓励使用 Dijkstra 的算法,但我还没有找到可以在 Python 3.5x 中执行此操作的帖子(也许有,但我就是找不到……:/)
因此,为了补充我上面的问题,除了找到节点 8 和 4 之间的最小距离外,我还想将其推广到在给定边集和距离矩阵的情况下找到任意 2 个节点之间的最小距离。
【问题讨论】:
-
我不完全理解这个问题,顺便说一句,想要的输出是什么?
-
@U9-Forward 很抱歉造成混淆,我会相应地编辑它。期望的输出是找到节点 8 和 4 之间的最短距离,并任意将其推广到任意 2 个节点
-
我还是不清楚
-
看看优先搜索(优先是负距离)或best-first search。实现它会很有趣(提示:从 BFS 开始,然后将 FIFO 队列与优先级队列交换)。
-
@randomir 谢谢!我会阅读这些参考资料。
标签: python python-3.x shortest-path