最短路径算法对比分析
Floyd |
Dijkstra |
Bellman-Ford |
队列优化的Bellman-Ford | |
空间复杂度 |
O(N^3) |
O(M) |
O(M) |
O(M) |
时间复杂度 |
O(N^3) |
O((M+N)logN) |
O(NM) |
O(NM) |
适用情况 |
稠密图 和顶点关系密切 |
稠密图 和顶点关系密切 |
稀疏图 和边关系密切 |
稀疏图 和边关系密切 |
负权 |
可以解决 |
不能解决 |
可以解决 |
不能解决 |
所求 |
求两点间最短路 |
求某点到所有点最短路 |
求某点到所有点最短路 |
求某点到所有点最短路 |
思路 |
三层循环枚举桥梁判断是否通过桥梁会有更短路 |
从所求点更新周围所有点然后每次走到最近的点 |
枚举所有边判断是否通过边能更新dis |
与未优化差不多,只是用了队列 |