Floyd | Dijkstra | Bellman-Ford | 队列优化的Bellman-ford | |
---|---|---|---|---|
空间复杂度 | O(N²) | O(M) | O(M) | O(M) |
时间复杂度 | O(N3) | O((M+N)logN) | O(NM) | O(NM) |
适用情况 | 稠密图,和顶点关系密切 | 稠密图,和顶点关系密切 | 稀疏图,和边关系密切 | 稀疏图,和边关系密切 |
负权 | 可以解决 | 不能解决 | 可以解决 | 可以解决 |
注1:N为定点数,M为边数
注2: Floyd的编码复杂度较小,均摊到每个点上的时间复杂度并不算太高,如果是求所有点对间的最短路径,或数据范围较小,Floyd算法较为合适
注3: Dijkstra用堆优化后,时间复杂度可以达到O(MlogN),具有良好的扩展性,最大的缺点是不能解决负权的问题