Dijkstra 和 Floyd-Warshall 算法的比较
主要用途:
- Dijkstra 算法是单源最短或SSSP 算法的一个示例,即,给定一个源顶点,它会找到从源到所有其他顶点的最短路径。
- Floyd Warshall 算法是全对最短路径算法的一个示例,这意味着它计算所有节点对之间的最短路径。
时间复杂度:
- Dijkstra 算法的时间复杂度:O(E log V)
- Floyd Warshall 的时间复杂度:O(V 3 )
其他要点:
- 我们可以使用 Dijskstra 的最短路径算法通过对每个顶点运行它来查找所有对最短路径。但是这种情况的时间复杂度是 O(VE Log V),在最坏的情况下可以达到 (V 3 Log V)。
- 算法之间的另一个重要区别因素是它们对分布式系统的工作。与 Dijkstra 的算法不同,Floyd Warshall 可以在分布式系统中实现,使其适用于 Graph of Graphs(用于地图)等数据结构。
- 最后,Floyd Warshall 适用于负边缘但没有负循环,而 Dijkstra 的算法不适用于负边缘。