使用Bellman-Ford算法:是否有正确的遍历每条边的方法?

时间:2011-11-27 02:51:14

标签: bellman-ford

我正在做一个家庭作业问题,我需要从顶点z开始运行bellman-ford算法。它要我“在每次传球中,以与图中相同的顺序放松边缘,并在每次传球后显示d和pi值。” 根据我的理解,我认为这个算法遍历图形就像一个BFS,从他们希望我使用的图中有意义,所以我无法看到相同的路径是如何工作的。如果有人能通过指出如何开始它指向我正确的方向将是非常有用的。问题和问题所指的数字: enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

我会试着指出你的错误。

  

我认为这个算法像BFS一样遍历图表

事实并非如此。该算法重复迭代图形的所有边缘,并且“放松”#34;它们直到达到稳定状态(不再能够放松)

您附加的示例有点令人困惑,类似于BFS执行。这是因为在每次迭代中它们只加粗影响节点值的边(放松的边)。

所以,要回答你的问题,选择边缘的任何顺序,然后开始所谓的"放松"他们。对于每个边缘,将其指向节点d值设置为距离Z最远的最短距离,并将其设置为它的前任节点。重复此操作,直到所有值都稳定。

希望能回答你的问题。

答案 1 :(得分:0)

正如Ido.Co所说,在Bellman Ford中没有特定的扫描/迭代顺序。但据说首先扫描广度,执行速度更快。