python图寻找替代的最快路径

python图寻找替代的最快路径,python,networkx,shortest-path,Python,Networkx,Shortest Path,我有一个非常大的网络(来自整个国家的道路网络),我将其加载到networkx中以计算点之间的距离。如果我只想知道两点之间最快的路线的话,这很好,速度也很快。但是,我也想知道路线的备选方案(例如,如果一条路线是1000km,我也想知道1010、1018、1032和1042km的备选方案)。我曾想过使用networkx的all_simple_paths函数,但这真的很慢,需要几天才能运行。有人能提出另一种方法吗 谢谢 Networkx有一个内置算法,可以生成最短路径、下一条最短路径、下一条最短路径等

我有一个非常大的网络(来自整个国家的道路网络),我将其加载到networkx中以计算点之间的距离。如果我只想知道两点之间最快的路线的话,这很好,速度也很快。但是,我也想知道路线的备选方案(例如,如果一条路线是1000km,我也想知道1010、1018、1032和1042km的备选方案)。我曾想过使用networkx的all_simple_paths函数,但这真的很慢,需要几天才能运行。有人能提出另一种方法吗


谢谢

Networkx有一个内置算法,可以生成最短路径、下一条最短路径、下一条最短路径等

是的

例如:

import networkx as nx
G = nx.Graph()
G.add_edges_from([[0,1], [1,2], [2,3], [0,2], [0,3]])
X = nx.shortest_simple_paths(G, 0, 3) #generator to find paths from 0 to 3 in order from shortest to longest.
for x in X:
    print(x)
> [0, 3]
> [0, 2, 3]
> [0, 1, 2, 3]
#note that X is now empty because it is a generator
for x in X:
    print(x) #nothing to see here
> 
#if you just want the first two:
X = nx.shortest_simple_paths(G, 0, 3)
for k in range(2):
    print(next(X))
> [0, 3]
> [0, 2, 3]
该算法将找到所有路径,但它的设置使其在被要求时只做额外的工作来计算第k条最短路径,然后将其忘记。有关发电机的详细信息,请参阅