图中所有对的最短路径都指向非负加权边

时间:2019-03-18 16:28:23

标签: graph shortest-path directed-graph weighted-graph

我有一个带非负加权边的有向图,其中两个顶点之间有多个边。

我需要计算所有对的最短路径。 此图非常大(2000万个顶点和1亿条边)。 Floyd–Warshall是最好的算法吗?有很好的库或工具可以完成此任务吗?

1 个答案:

答案 0 :(得分:0)

对于有非负周期的有向图,存在几种最短路径算法,弗洛伊德-沃舍尔可能是最著名的算法,但是根据您提供的数据,我认为无论如何都将遇到内存问题(时间可能是个问题,但是您可以找到可以轻松,大规模并行化的所有算法。
与使用的算法无关,您将不得不将结果存储在某个位置。而存储20,000,000²= 400,000,000,000,000路径长度(如果不是完整路径本身)将至少使用数百TB。
访问这些结果中的任何一个都可能比计算一条最短路径(内存墙)要长,后者可以在不到一毫秒的时间内完成(取决于图形结构,您会发现比Dijkstra或任何优先级要快得多,快得多的技术)基于队列的算法)。

我认为您应该寻找一种替代方法,即不需要计算所有最短路径。或者,为了应用不同的算法,研究图的结构(DAG,易于划分/聚类的结构良好的图,几何/地理信息...),因为在一般情况下,我看不到任何解决方法。

例如,使用您给出的数字,考虑到它的尺寸,它的平均稀疏度约为5。图分区方法可能会非常有用。