次短路

问题:对于一个带权图,求两个顶点之间的次短路。

概念:次短路表示除最短路以外长度最小的路径

类别一:可以重复经过一个点。

解法:这个类别解法和求最短路相似,在进行 dijkstra 的过程中记录两个数组:dist0 和 dist1,分别表示最短路和次短路的答案。每次更新时需要依次判断是否可以更新次短路和最短路的值。由于需要计算次短路,所以调整后的 dijkstra 算法需要至少循环 2n-1 次才可以获得最终答案。

证明:如果我们要求解起点s到终点t的次短路,其中t周围有相邻节点u(u不止一个),那么有两种可能的情况:(1)起点s到顶点u的最短路+d(u,t),即u不在t的最短路径上。(2)起点到顶点u的次短路+d(u,t),即u在t的最短路径上。

类别二:不能重复经过一个点。

解法暴力,枚举两个顶点之间最短路上的每条边,每次在去掉这条边的剩下的图中计算最短路,取其中最小的一个答案就是最终次短路的答案。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值