在上学期,用马丁的删除算法实现了K可靠最短路径。
这学期为了进行进一步算法比较,决定用最原始的YEN算法来计算K最短路径,算法最早提出人是YEN,于是算法因此而命名。
在查阅了大量资料后,终于搞明白了算法的思想,终取用java和C#实现它。
步骤
用DIjkstra算法求出最短路径 k=1;
这条path中的任意两节点构成的边都可以作为偏离边,此边的开始节点为偏离节点
然后依次将这条path上的偏离边去掉求最短路径。去最短的为次短路径,k=2;
依次循环,知道K求出
这里要注意两点:
在我们寻找偏离边 u -> v' 的时候,如果 u == xi.pre (也就是当 要找的偏离边 和 xi