Yen's Algorithm
一、作用
求源点到终点的最短路径,k条。无环无负权
- 根路径:最短路径
- 偏离路径:计算从偏离节点(即根路径的最后一个节点)到汇点的最短路径,这就是偏离路径。
算法的基本思路是:
-
首先找到最短路径(使用 Dijkstra 等算法)
-
然后系统地生成第 2、3、...、k 条最短路径
-
通过 "偏移路径"(deviation path)的概念生成新路径
正确性:
- 任何最短路径的子路径也是最短路径
- 第k条最短路径必然是从前k-1条路径中的某一条偏差而来的
- 算法通过系统地在每个可能的位置进行偏差,确保不会错过任何可能的候选路径
二、例子
|
|
|
|
| 删除s~1的边,保留s以及之前的最短子路径,求最短路径 | 删除1~2的边,保留点1以及之前的最短子路径,求最短路径 | 删除2~3的边,保留点2以及之前的最短子路径,求最短路径 | 删除3~e的边,保留点3以及之前的最短子路径,求最短路径 |
谢谢!

浙公网安备 33010602011771号