最短路径:迪杰斯克拉

本文深入讲解了Dijkstra算法的工作原理,通过实例展示了如何逐步优化路径,找到图中两点间的最短距离。每选一个起点意味着其入度已最优化,体现了贪心策略选择最短边的原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
第一次确定了(初始化):V0
所以放进S 这个确定集合里面,dis 是表示v0 到所有点的距离
在这里插入图片描述
S【7】:.0
遍历:v0 – v1, v0 – v2
dis【7】: 0 3 2 inf inf inf inf
然后知道 到 v2 距离最短:2
所以

第二次确定了(作为新起始点):V2
在这里插入图片描述
S【7】:0,2
遍历:v2 – v3,v2 – v5 //(接下不写了一个道理的,为了其他内容看些)
dis【7】: 0 3 2 5 inf 7 inf
因为从dis集合可以知道目前最短距离是:3 (为什么不是0或者2 呢,因为他们是已知的点了:v0 和v2,排除在外)

第三次确定(作为新起始点):V1
在这里插入图片描述
S【7】:0,2,1
dis【7】:0 3 2 4 8 7 inf

第四次确定(作为新起始点):V3
在这里插入图片描述
S【7】:0,2,1,3
dis【7】:0 3 2 4 6 7 inf

第五次确定(作为新起始点):V4
在这里插入图片描述
S【7】:0,2,1,3,4
dis【7】:0 3 2 4 6 7 13

第六次确认(作为新起始点):V5
在这里插入图片描述
S【7】:0,2,1,3,4,5
dis【7】:0 3 2 4 6 7 11

第七次确认(作为新起始点):v6
在这里插入图片描述
在这里插入图片描述
因为 S 集合此时 == 所有顶点,所以循环结束

总结:

  1. 每选一个起始点就意味着他的入度(即箭头指向的点)已经是最优化了,这也是贪心算法为什么每次选择最短距离边 (新起始点的入度边)的原因

  2. 每次选完一个起始点,遍历与之相连的下一个顶点且分别相加这些边,如果已经知道距离,例:v0到v4 距离18,经过遍历相加后发现新的路径同样可以到达距离只要:14
    ,则优化v0到v4距离为14

反正只要记住:每次选择的起始点已经被前个起始点优化到最优了。

c 和 MATLAB 代码待更

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值