Python 3.x networkx从一条路径到顶点的最短路径

Python 3.x networkx从一条路径到顶点的最短路径,python-3.x,networkx,Python 3.x,Networkx,我正在使用netwrokx使用Dijkstra算法计算不同顶点之间的最短路径。我有一个例子,我想连接三个不同的顶点(例如无向图中的a、B和C)。首先我找到从A到B的最短路径,然后我想找到从A到B的最短路径。到目前为止,我尝试的是计算从A到B路径到C的所有节点的最短路径长度,然后我计算从给出最小路径长度的节点的最短路径。这是计算密集型的,因为路径可能有多达200到300个节点 谁能给我一个提示,我该如何改进这个方法?或者更容易找到从现有边到目标的最短路径?在图形中添加一个新节点,“辅助”。对于A-

我正在使用netwrokx使用Dijkstra算法计算不同顶点之间的最短路径。我有一个例子,我想连接三个不同的顶点(例如无向图中的a、B和C)。首先我找到从A到B的最短路径,然后我想找到从A到B的最短路径。到目前为止,我尝试的是计算从A到B路径到C的所有节点的最短路径长度,然后我计算从给出最小路径长度的节点的最短路径。这是计算密集型的,因为路径可能有多达200到300个节点


谁能给我一个提示,我该如何改进这个方法?或者更容易找到从现有边到目标的最短路径?

在图形中添加一个新节点,
“辅助”
。对于
A
-
B
路径中的每个节点
u
,将一条边从
u
添加到
“辅助”

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

更一般地说,只要您想找到从一个节点到一组节点的最短路径,并且(有点泛化)它可以找到从一组节点到另一组节点的最短路径,这种方法就可以工作

  • 找到从X=A到B的最短路径
  • 找到从Y=A到C的最短路径
  • 找到从Z=B到C的最短路径
  • 合并路径
  • 最短路径(G、源、目标)networkx导入的将返回两个顶点之间的最短路径


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

    我建议您研究图论,这是一个经典问题Thankyu@tcclnol。你能提供任何讨论图论和这个问题的链接吗?