最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(有节点和路径组成的)中两节点之间的最短路径。算法具体的形式包括:
- 确定起点的最短路径问题 —— 即已知起始点,求最短路径的问题。适合使用Dijkstra算法。
- 确定终点的最短路径问题 —— 于确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。
- 确定起点终点的最短路径问题 —— 即已知起点和终点,求两点之间的最短路径。
- 全局最短路径问题 —— 求图中所有的最短路径。适合使用Floyd-Warshall算法。
用于解决最短路径问题的算法被称作“最短路径算法”,有时被简称作“路径算法”。最常用的路径算法有:
- Dijkstra算法
- A*算法
- Bellman-Ford算法
- SPFA算法(Bellman-Ford算法的改进版本)
- Floyd-Warshall算法
- Johnson算法
- Bi-Direction BFS算法
图 | 算法 |
基本遍历 |
|
最短路径 |
|
最小生成树 |
|
强连通分量 |
|
图匹配 |
|
网络流 |
|