Bellman-ford算法为什么能在v-1次内完成所有节点最短路径的计算

之前一直不能理解,为什么bellman-ford算法只需对所有的边最多执行v-1次松弛操作,即可完成单源最短路径的计算。
也查过很多资料,看过各种各样的解释。现在经过自己的总结,给出了自己的一个解释,在此记录,以作备忘。
不一定对,仅供参考。

这里将会使用倒推法来验证v-1。

1.把从源点到每个节点的最短路径看成是一条线,那么会有v-1条这样的线。(v是节点数量)

2.将所有的这些线进行整合、合并,在同一层级上的相同的节点转化成一个节点,那么会得到一个类似于树的结构。

3.当对所有的边进行第1轮松弛操作的时候,那么至少树的第一层的那些节点的最短路径就能确定了,对于其他也被松弛了的节点,不去做考虑。

4.同理,进行第2轮松弛操作的时候,至少树的第二层的那些节点的最短路径也能确定了。以此类推,进行第n轮松弛操作的时候,至少树的第n层的那些节点的最短路径也能确定。

6.所以,在最坏的情况下,当所有节点是一条链的时候,最多需要v-1轮的松弛操作。

7.可以看出,对于一般的图来说,就算是在最差的情况下,一般也不需要v-1轮的松弛操作。

8.可以从树高来算出最多需要多少轮次的松弛操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值