networkx从路径到顶点的最短路径

时间:2018-08-15 18:12:50

标签: python-3.x networkx

我正在使用netwrokx使用Dijkstra算法计算不同顶点之间的最短路径。我有一种情况,我想连接三个不同的顶点(例如,无向图中的A,B和C)。首先,我找到了从A到B的最短路径,然后我想找到从A到B的最短路径。到目前为止,我一直在尝试计算从A到B的所有节点的最短路径长度。到C,然后从给出最小路径长度的节点计算出最短路径。由于路径可能具有多达200到300个节点,因此计算量很大。

任何人都可以给我提示如何改善方法吗?或更简单的方法来找到从现有边缘到目标的最短路径?

2 个答案:

答案 0 :(得分:1)

向图形添加一个新节点'auxiliary'。对于u-A路径中的每个节点B,从u'auxiliary'添加一条边。

找到从C'auxiliary'的最短路径。通过删除最后一个节点'auxiliary'截断该路径。这是从C到该路径的最短路径。

更一般而言,只要您想找到从一个节点到一组节点的最短路径,并且(有一点概括性),它就会找到从一组节点到另一组节点的最短路径。

答案 1 :(得分:0)

  1. 找到最短路径X = A到B。
  2. 找到最短路径Y = A到C。
  3. 找到Z到B的最短路径。
  4. 合并路径。
networkx 导入的

shortest_path(G,源,目标)将返回两个顶点之间的最短路径。

如果通过实现Dijkstra算法来完成此方法,则效率渐近等于Dijkstra算法。