数据结构课设题目——求第K短的最短路径

本文介绍了Yen算法的核心部分,用于寻找图中第K条最短路径。算法通过从已知路径发展候选路径,并利用两个条件避免重复和循环,确保路径的唯一性。在实现课程设计时,要求编程实现Yen算法,用堆存储候选路径,同时分析算法的时间复杂性。
摘要由CSDN通过智能技术生成
(1) 问题描述
最短路径问题是图论中的一个经典问题,主要研究成果有Dijkstra、Floyd等优秀算法,Dijkstra算法一直被认为是图论中的好算法。但这两个算法有一个共同的缺陷:这里的最短路径指两点之间最短的那一条路径, 不包括次短、再次短等等路径。实际上,在使用咨询系统或决策支持系统时,希望得到最优的决策参考外,还希望得到次优、再次优等决策参考。这同样反映在最短路径问题上,如一个交通咨询系统,除了希望得到最短路径以外,由于交通堵塞等问题,可能需要获知次短、第K短的最短路径。因此,有必要将最短路径问题予以扩充,能求出第K短最短路径。形式的表述就是想要在图中求出从起点到终点的前k短的路径(最短、第2短、第3短……第k短),并且需要这些路径都是无环的。
常见的较好的求解前k短无环路径的算法是Yen算法(以发明者名字命名的)。现在简要地描述一下Yen算法。设Pi为从起点s到终点t的第i短的无环路径。一开始是P1,也就是从s到t的最短路径,可以通过Dijkstra、Bellman-Ford或BFS等算法轻易地求出。接下来要依次求出P2,P3……Pk。可以将P1~Pi看成一棵树,称为Ti,它的根节点是s,所有叶节点都是t。例如假设s = 1,t = 5,求出的P1~P5为,P1:1->2->3->5;P2:1->3->2->5;P3:1->3->5;P4:1->4->5;P5:1->4->3->5。此时的T5就是如图6-65所示的一棵树。

定义devi为Pi的偏离点(deviation node),

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值