一尘不染

最佳最短路径算法

algorithm

“ Floyd-Warshall算法”“ Dijkstra算法” 之间有什么区别,哪个是找到图中最短路径的最佳方法?

我需要计算网络中所有线对之间的最短路径,并将结果保存到数组中,如下所示:

**A     B     C     D      E**
A 0     10    15    5     20
B 10     0    5     5     10
C 15     5    0     10    15
D 5      5    10    0     15
E 20     10    15   15    0

阅读 210

收藏
2020-07-28

共1个答案

一尘不染

Dijkstra的算法可找到图中一个节点与每个其他节点之间的最短路径。您将为每个节点运行一次。权重必须为非负数,因此,如有必要,您必须首先对图形中的值进行标准化。

Floyd-
Warshall一次
计算所有节点对之间的最短路径!循环权重必须为非负数,并且图形必须是有
向的 (您的图表不是)。

Johnson的算法使用Dijkstra的算法在一次遍历中查找所有对,并且对于稀疏树更快(请参阅链接以进行分析)。

2020-07-28