Yen's Algorithm

一、作用

求源点到终点的最短路径,k条。无环无负权

  • 根路径:最短路径
  • 偏离路径:计算从偏离节点(即根路径的最后一个节点)到汇点的最短路径,这就是偏离路径。

算法的基本思路是:

  1. 首先找到最短路径(使用 Dijkstra 等算法)

  2. 然后系统地生成第 2、3、...、k 条最短路径

  3. 通过 "偏移路径"(deviation path)的概念生成新路径

正确性:

  • 任何最短路径的子路径也是最短路径
  • 第k条最短路径必然是从前k-1条路径中的某一条偏差而来的
  • 算法通过系统地在每个可能的位置进行偏差,确保不会错过任何可能的候选路径

 

二、例子

 

Screenshot 2025-12-05 at 15.18.28

 

Screenshot 2025-12-05 at 15.19.09

 

Screenshot 2025-12-05 at 15.20.49

 

Screenshot 2025-12-05 at 15.21.19

 

删除s~1的边,保留s以及之前的最短子路径,求最短路径 删除1~2的边,保留点1以及之前的最短子路径,求最短路径 删除2~3的边,保留点2以及之前的最短子路径,求最短路径 删除3~e的边,保留点3以及之前的最短子路径,求最短路径

 

posted @ 2025-12-05 15:26  ylxn  阅读(2)  评论(0)    收藏  举报