贝尔曼福特算法跟踪

时间:2012-12-04 06:40:12

标签: algorithm trace directed-graph edges bellman-ford

我不知道在哪里发布这个问题,我只是想知道我是否做了这个跟踪正确。我得到了这个图

diagram

以下是问题:

  

使用顶点t作为源,在下面的有向图上显示Bellman-Ford算法的轨迹。在每次传递中,按(x,t),(y,z),(u,t),(y,x),(u,y),(t,x),(t,y)的顺序放松边缘),(t,z),(z,x),(z,u)。每次通过后显示d值。图表是否有负加权圆圈?你如何使用Bellman-Ford算法检查它?

我得到的答案是u = 12,t = 0,x = 4,y = 12,z = -3,并且它没有负加权圆。这个问题值得很多,一个错误意味着减去很多,所以我不知道还有谁为我检查这个。谢谢。

1 个答案:

答案 0 :(得分:1)

按照您指定的顺序放松 -
最初,d值为<t = 0, u = inf, x = inf, y = inf, z = inf>

(x, t) <0, inf, inf, inf, inf>  
(y, z) <0, inf, inf, inf, inf>   
(u, t) <0, inf, inf, inf, inf>   
(y, x) <0, inf, inf, inf, inf>   
(u, y) <0, inf, inf, inf, inf> <--Upto this no update because no relaxation started from non-inf  
(t, x) <0, inf, 7, inf, inf>   
(t, y) <0, inf, 7, 12, inf>   
(t, z) <0, inf, 7, 12, -3>   
(z, x) <0, inf, 4, 12, -3>   
(z, u) <0, 12, 4, 12, -3>

第二次迭代

(x, t) <0, 12, 4, 12, -3>  
(y, z) <0, 12, 4, 12, -3>   
(u, t) <0, 12, 4, 12, -3>   
(y, x) <0, 12, 4, 12, -3>   
(u, y) <0, 12, 4, 12, -3>  
(t, x) <0, 12, 4, 12, -3>   
(t, y) <0, 12, 4, 12, -3>   
(t, z) <0, 12, 4, 12, -3>   
(z, x) <0, 12, 4, 12, -3>   
(z, u) <0, 12, 4, 12, -3>

由于它在第二次迭代后没有改变,这是最终答案,与你的匹配。 也没有负的权重周期,因为整个迭代没有变化。

注意 - 如果边缘的顺序不同,我们可能预期在第二次迭代中会发生变化。

相关问题