Hi bobo 老师,
在这个回答中您说“对节点2的所有邻边进行relax操作”即松弛操作的对象是某个节点的邻边。而在本节说的却都是对买某个节点进行松弛操作说法不太一致。
不管哪种说法我理解松弛操作都是指“计算经过某个节点到达另一个节点的路径的距离”。比如 A —> B —> C若对顶点 B 进行松弛操作或者说对 B 的邻边进行松弛操作都是指计算经过 B —> C 的路径的距离。不知这样理解是否正确?
另外本节最后10’40’'处分析复杂度时PPT 上说的也是“对所有的节点进行 V-1 次松弛操作”因此复杂度是 O(VE)但如果按照上一节的说法即松弛操作的对象是边那岂不是变成了“对所有边进行 V-1 次松弛操作”这样的话算法复杂度不就变成 O(EE) 了吗?
我也参考了别的文章中对 Bellman-ford 算法的解释其中有一篇的说法就是:
反复对边集 E 中的每条边进行松弛操作使得顶点集V中的每个顶点 v 的最短距离估计值逐步逼近其最短距离。
出处:这里
总结一下我的问题
1. 松弛操作的对象是谁?
2. Bellman-ford 算法是对 V 个顶点进行松弛还是对 E 条边进行松弛还是两种都可以呢?
3. 松弛操作的对象不同会导致算法复杂度不同?
谢谢!