Bellman-Ford算法-为什么无法按顺序更新边缘?


14

Bellman-Ford算法确定从源的最短路径到所有其它顶点。最初,与所有其他顶点之间距离设置为。然后计算从到每个顶点的最短路径;这正好为 迭代。我的问题是:小号小号| V | 1sss|V|1

  • 为什么需要迭代?|V|1
  • 如果以其他顺序检查边缘会不会很重要?
    假设,如果我先检查边缘1,2,3,然后在第二次迭代中检查2,3,1。

麻省理工学院的埃里克教授说顺序并不重要,但是这使我感到困惑:如果算法的值取决于边缘但是是在之后更新的,该算法是否会错误地基于边缘更新节点?x2x1x1x2


您考虑采用哪种实施方式?动态编程显然没有顺序问题。对于其他人来说,这可能是不平凡的。
拉斐尔

Answers:


15

考虑从到的最短路径,。该路径最多包含边,因为如果我们没有负的权重循环,则在最短路径中重复顶点始终是个坏主意(或者至少存在一条不重复顶点的最短路径)。 。sts,v1,v2,,vk,t|V|1

在第一回合中,我们知道边缘将被放宽,因此在此回合之后的距离估计将是正确的。请注意,目前我们知道是什么,但是在放松所有边缘的同时,我们也必须放松该边缘。在第二轮中,我们在某个时候放松。我们仍然不知道或是什么,但是我们知道它们的距离估计是正确的。(s,v1)v1v1(v1,v2)v1v2

重复此,一些轮后,我们已放宽,在这之后的距离估计为是正确的。在整个算法结束之前,我们不知道是多少,但是我们知道它会在某个时刻发生(假设没有负权重循环)。k+1(vk,t)tk

因此,关键的观察结果是,在第轮之后,最短路径的第个节点必须将其距离估算值设置为正确的值。由于路径最多为边长,因此舍入即可找到此最短路径。如果第三轮仍然改变了一些东西,然后又发生了一些奇怪的事情:所有路径都应该已经“结算”到它们的最终值,所以我们必须面临一个负负周期的情况。ii|V|1|V|1|V|


我在这里有一个小疑问。我相信| v | -1是最坏情况的回合数,之后计算从s到t的最短路径。假设我们有顶点s,v1,v2..vn,t。边按(s,v1),(v1,v2)..(vn,t)的顺序选择,然后在一次迭代中,我们将拥有从s到t的最短路径。实际术语中,我们不知道边的选取顺序,因此不知道| v | -1圆。我对吗?
whokares

1
@whokares:是的,您可能会很幸运,并在第一轮中找到最短的路径。您不确定直到上一轮才知道您找到的值确实是最短的路径,但是可能是。Dijkstra的算法实质上是“导致”这种情况的发生:如果所有边缘的权重均为非负值,则Dijkstra的算法中使用的优先级队列“预测”了松弛边缘的顺序,因此您可以在第一轮松弛中找到所有最短的路径。
亚历克斯(Alex)10 Brink

感谢您的更新。我在其中一种材料中将其称为<br>幻灯片6:松弛顺序选择不当会导致指数级的松弛:<br>幻灯片8:边缘松弛的“智能”顺序<br>
whokares 2012年

不管每次迭代中边的顺序如何,最短路径都将在| v | -1个迭代中进行计算,对吗?他为什么要说指数。他的意思是,如果我们为通常的所有迭代选择了相同的顺序,则将调用松弛代码,但由于该顺序而更新顶点标签的次数可能会减少,因此可以节省处理器时间 ?
whokares 2012年

1
@whokares:他们提出的第一个算法(可能具有指数的运行时间)不会在一轮中放松所有边缘,而是找到一些放松操作会改变某些边缘的边缘,并放松该边缘。如果您继续这样做,并且没有负重循环,那么最终没有边缘会对您有所帮助,并且您会停下来。但是,由于您没有回合,也没有在下一个要放松的边上进行固定的排序,因此您可能最终会进行成倍的放松。他们提出的改进算法是Bellman-Ford,它确实具有回合。
亚历克斯(Alex)10 Brink

3

没有任何循环的最长路径为|V|。我们从源开始,所以我们已经有一个长度为1的路径,因此我们需要|V| - 1更多的节点才能获得最长的路径。

顺序无关紧要,因为每个顺序都将保持不变:n迭代之后,每个节点的值小于或等于从s到包含最多n边的节点的最小成本路径的成本。

如果在迭代开始时,成本直到n节点都是正确的,那么在迭代结束时,成本到节点都是正确的n+1。重新排序可能会导致某些节点在正常进行更新之前具有较低的成本,但是无论如何最终还是会对其进行更新。


我不知道这只是我一个人,还是我无法真正轻松地将这些事实形象化。对我来说,我仍然认为在V-1迭代中可能有些节点没有更新。
user1675999

不,当具有| V |时,| E | = | V | -1边 通过没有循环的简单路径连接的节点。而且您有| V | -1次迭代,请删除您的响应,因为它是错误的。
山姆

@sam你是谁,你说的答案有什么关系?
fgb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.