3

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

图表

这是问题:

在以下有向图上显示 Bellman-Ford 算法的轨迹,使用顶点 t 作为源。在每一遍中,按照(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, and z=-3,而且它没有负权重圆。这个问题值得很多分,一个错误意味着减去很多,所以我不知道还有谁必须为我检查这个。谢谢你。

4

1 回答 1

2

按照您指定的顺序放松 -
最初的 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>

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

注意 - 如果边的顺序不同,我们可能已经预料到第二次迭代会发生变化。

于 2012-12-04T07:11:49.047 回答