给定图的边(有向)列表,如何找到2个节点之间的距离?

时间:2018-08-20 02:39:39

标签: python python-3.x shortest-path

假设我将边设置为包含边的列表,如下所示:

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之间的最短路径(并且还要考虑存在两个等距离的最短路径的情况)

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个位置)。

我偶然发现了一些鼓励使用Dijkstra算法的类似帖子,但是我还没有找到在Python 3.5x中可以做到的算法(也许有,但我只是找不到它..:/)

因此,除了上面找到我的问题之外,除了找到节点8和4之间的最小距离外,我还想将其推广到给定边集和距离矩阵的情况下找到任何两个节点之间的最小距离。

1 个答案:

答案 0 :(得分:4)

尝试使用networkx

import networkx
shortest_path(G, source, target)
  • G 是图形。
  • 来源是起始节点。
  • 目标是路径末尾的节点。

shortest_path documentation