📜  Dijkstra 和 Floyd-Warshall 算法的比较

📅  最后修改于: 2022-05-13 01:57:54.364000             🧑  作者: Mango

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 的算法不适用于负边缘。