关于双层dijkstra算法

双层dijkstra算法解释:对于一个图,我已经知道了所有点的点和边,然后我对于某一条边进行修改,如我可以添加一条边,或者修改边的长度。然后依然问你最短路的长度。这时候你就可以把这个图当作两个,然后这两个图用一条你修改或者添加的边进行连接。
就比如对于有n个点m条边的简单无向图,我从u-v,我先以u为起点,通过dijskra算法跑一边这个图,求出该点到其他所有点的最短距离;同理以v为起点跑一边,也是求出以该点为起点到所有点的最短距离。之后我添加或者修改一条边l(x,y),然后我就取d(u,x)+d(v,y)与d(u,y)+d(v,x)中最短的那个,加上l,与原来的没添加过的路径长度比比,之后迭代更新就行。
在这里插入图片描述
就像这样。
相关题目:
https://blog.csdn.net/qq_43653717/article/details/105291549

拓展(个人思考,不一定对):而对于修改或者添加两条边,我可以搞成3层的形式,但是这样复杂度会大大的提高。
在这里插入图片描述
你需要先求出所有点的dijskra,然后列车所有的成对边。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值