Bellman-Ford 算法的最外层循环可以提前终止的吧?

来源:9-5 负权边和Bellman-Ford算法

磊磊要酷酷滴

2019-06-13

  • 如果最外层的某次循环,distTo 和 from 都没有更新,那么下一次循环也不会再更新了,这时就可以提前退出最外层循环了;
  • 这是我手画跟踪算法发现的问题,当然我是没能力在理论上证明啦;
  • 想请教一下bobo老师对这个问题的看法;
    图片描述
    图片描述
写回答

1回答

liuyubobobo

2019-06-13

赞!你是对的,没有问题的:)


因为如果在一次遍历中,没有任何一个边需要松弛的话,后续的遍历,也一定不会再可能松弛了。松弛的过程是根据from和distTo中的值作出判断,修改的也是from和distTo的值。如果在某一轮没有更改,后面的判断一定不会变了:)


所以可以在每轮循环中,设计一个变量,记录这一轮是否有松弛操作。如果没有,就可以退出循环了:)


再次赞主动用纸笔跟踪 + 自己独立思考!相信你对这个算法的认识比大多数同学更加深刻:)


继续加油!:)

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程