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

How can I find the distance between 2 nodes given a list of edges (directed) of a graph?

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

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 中相应边的 2 个节点之间的距离(在第 i 个位置)。

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

因此,为了补充我上面的问题,除了找到节点 8 和 4 之间的最小距离外,我还想将其概括为在给定边集和距离矩阵的情况下找到任意 2 个节点之间的最小距离。

尝试使用 networkx:

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

shortest_path documentation