首先讲讲我对bellman_ford 这一经典的最短路径算法的理解: 这是一个动态规划的过程,我们这里把每条边松弛一遍算是一次松弛操作,第一次松弛操作,至少能 更新和源点用一条边相连的点,但不排除更新和源点用n-1条边相连的点,第二次松弛操作,至少能更新和源点用两条边相连的点,依次类推。因为每个点的最短路径,出现在用一条边相连的情形,两条边相连的情形。。。n-1条边相连的情形,也不是每种情形都有,但总归在这n-1种情形里面,而这些情形并不是依次出现的,而是杂乱的,不过n-1次松弛,保证了每种情况都出现了,dist数组中保存了其中的最短路径。
关于优化,如果中间某次松弛,没有发生更新,说明达到了稳定态。则可以跳出循环。
如果n-1次松弛都有更新,则我们要怀疑是不是有负权回路,做第n次松弛,只要其中一个点有更新,就是存在负权回路。
现在讲讲关于此题:就是求最长路,思想和求最短路一样。