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

(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),

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值