目录
- [1 基础知识](#1 基础知识)
- [2 模板](#2 模板)
- [3 工程化](#3 工程化)
1 基础知识
假设有n个结点,m条边(边的长度或者权重不一致),最短路问题的分类及求解方法如下:
1 单源最短路问题 ,例如求结点1到结点n的最短距离。
1.1 所有边的权重都是正的。
- 朴素版dijkstra算法,时间复杂度为O(n^2)。时间复杂度与边数无关,适合于稠密图。它是基于贪心实现的。
- 堆优化版dijkstra算法,时间复杂度为O(mlogn)。适合于稀疏图。它是基于贪心实现的。
1.2 存在负权边。
- bellman-ford算法,时间复杂度为O(nm)。它是基于离散数学中的一些知识实现的。
- spfa算法,一般情况下,时间复杂度为O(m);最坏情况下,时间复杂度为O(nm)。
2 多源最短路问题,例如求n个结点中两两结点的最短距离。
- floyd算法,时间复杂度为O(n^3)。它是基于动态规划实现的。
2 模板
待补充。。。
3 工程化
待补充。。。