对于那些不知道的人,numpy的弗洛伊德-沃尔什算法在networkx中可用。networkx floyd_warshall_numpy的description说明如下:弗洛伊德算法适用于查找稠密图或带有负权重的图的最短路径,当Dijkstra算法失败时。如果存在负循环,该算法仍可能失败。它的运行时间为O(n^3),运行空间为O(n^2)。networkx single_source_shortest_path算法在稀疏图上效果更好。您应该知道,如果使用各种“shortest_path”算法,则会忽略边缘权重。各种Dijkstra算法包括边缘权重。更多描述here。
numpy.random.exponential(size=(1000,1000))
上测试,我发现scipy.sparse.csgraph.floyd_warshall()
比networkx.algorithms.floyd_warshall_numpy
快大约10倍。另一个函数networkx.algorithms.floyd_warshall
在合理的时间内无法完成。 - Colonel Panic