单源最短路

固定出发点,求到达其它点的最短距离

 

(Dijkstra(迪杰斯特拉)算法

 

堆优化的Dijkstra

 

线段树优化的Dijkstra

 

 

斐波拉契堆优化的Dijkstra

 

 

 

 

#### Bellman-ford

 

 

小优化

 

 

大优化

 

 

bfs版的SPFA

 

dfs版的SPFA

 

 

 

 

 

多源最短路

 

求任意两点最短距离

 

Floyd

动态规划思想

 

 

 

 

 

总结

 

算法名称图存储方式适合情况时间复杂度说明
Floyd矩阵多源O(n^3)可以存在负权边,图中不能存在环,能解决最长路径问题
Dijkstra邻接表,链式前向星单源O(n ^ n)不能存在负权边,不能存在负权环
优先队列优化的Dijksra邻接表,链式前向星单源O(m * logn),常数大不能存在负权边,不能存在负权环
线段数优化的Dijksra邻接表,链式前向星单源O(m * logn),常数小不能存在负权边,不能存在负权环
BEllman-ford邻接表,链式前向星单源O(n * m)能判断负环,不能解决负环最短路,边权可以为负,能解决最长路径问题
SPFA邻接表,链式前向星单源O(n * m) 到 O(Km)能判断负环,不能解决负环最短路,边权可以为负,能解决最长路径问题
斐波拉契堆优化的Dijkstra邻接表,链式前向星单源O(m + nlogn)不能存在负权边,不能存在负权环