在找到每个节点到其他节点的最短距离时,Bellman Ford 的 n 次调用是否会比 Floyd-Warshall 更快?
Would n calls of Bellman Ford be faster than Floyd-Warshall when finding the shortest distance from each node to each other node?
假设没有负边。
Floyd-Warshall 的恒定运行时间为 O(V^3)。 Bellman Ford 的最坏情况运行时间为 O(VE),但最佳情况为 O(E)。
所以 运行 每个单独节点的 BF 的最坏情况运行时间为 O(EV^2),但最佳情况为 O(VE),这是正确的吗?
几乎在所有情况下,Bellman Ford 都会比 Floyd-Warshall 慢。如果图是一棵树,那么 E = V
,两者将是相同的 V^3
。但是,E
很容易变大。 E
在完整图的情况下可以达到 V^2
,其中一个节点上的 BF 将与整个图上的 FW 一样长。
当 Dijkstra 可以解决 E+VlogV
中的相同问题时,很少有理由使用 BF,在除简单树以外的所有情况下,它都比 VE
更快。
假设没有负边。
Floyd-Warshall 的恒定运行时间为 O(V^3)。 Bellman Ford 的最坏情况运行时间为 O(VE),但最佳情况为 O(E)。
所以 运行 每个单独节点的 BF 的最坏情况运行时间为 O(EV^2),但最佳情况为 O(VE),这是正确的吗?
几乎在所有情况下,Bellman Ford 都会比 Floyd-Warshall 慢。如果图是一棵树,那么 E = V
,两者将是相同的 V^3
。但是,E
很容易变大。 E
在完整图的情况下可以达到 V^2
,其中一个节点上的 BF 将与整个图上的 FW 一样长。
当 Dijkstra 可以解决 E+VlogV
中的相同问题时,很少有理由使用 BF,在除简单树以外的所有情况下,它都比 VE
更快。