在任何情况下,重复的Bellman-Ford都比Floyd-Warshall好吗?

时间:2018-11-19 00:41:51

标签: algorithm graph time-complexity

考虑到重复Bellman-Ford的时间复杂度为O(V(^ 2)* E)和Floyd-Warshall O(V ^ 3)的事实,在这种情况下,最好使用重复Bellman-Ford得到所有对的最小路径?在哪种情况下会更糟?

2 个答案:

答案 0 :(得分:0)

由于您已经知道复杂性(重复的Bellman-ford = O((V^2)*E)和Floyd-warshall O(V^3)),因此您可以轻松地分析出对您的图形更好的图形。如果E < V使用Bellmam-ford,否则使用Floys-warshall。

  

Bellman ford的主要应用是在图中找到负循环。对于弗洛伊德·沃霍尔来说,是寻找所有对子的最短路径。

通常在图中,边数(E)总是大于顶点(V)。因此,我建议使用 Floyd-warshall

如果图形可能具有负周期,则必须使用Bellman ford来检查图形是否具有负周期。

答案 1 :(得分:0)

Bellman Ford的原始实现每次运行花费O(V * E)时间。当E

但是,您可以进行优化。 Bellman Ford使用队列的一种变体,类似于BFS的工作原理,不同之处在于,当获得更好的成本时,可以多次向队列中添加元素。实际上,在随机生成的图上,该方法的性能几乎与带堆的Dijkstra相同,后者为O(E log V)。