关于图G的Bellman-Ford和一些事实?

时间:2015-03-28 08:30:07

标签: math graph graph-theory shortest-path bellman-ford

我们知道bellman-ford算法检查每个步骤中的所有边缘,如果是,则检查每个边缘

  

d(v)的> d(U)+ W(U,V)

然后d(v)被更新,使得w(u,v)是边(u,v)的权重,d(u)是顶点u的最佳寻找路径的长度。如果在一步中我们没有顶点更新,则算法终止。假设这个算法,用于在s迭代完成后找到图G中具有n顶点的顶点k<n的所有最短路径,以下哪项是正确的?

  

1)来自s的所有最短路径中的边数最多为k-1

     

2)来自s的所有最短路径的权重最多为k-1

     

3)图表没有负循环。

我确定其中一个是真的,但我的TA说其中两个是正确的。对这些问题的任何想法或暗示?

1 个答案:

答案 0 :(得分:1)

让我们一次查看一个语句:

  

1)来自s的所有最短路径中的边数最多为k-1

考虑以下图表:

s ---e1---> n1 ---e2---> n2 ---e3---> n3

如果边缘按给定的顺序排序(e1, e2, e3),那么在第一次迭代后,每个节点都会有正确的距离(检查e1更新n1,然后检查{{ 1}}更新e2等等。所以在这种情况下,算法在n2次迭代后停止,因为第二次迭代不会改变任何东西。最长最短路径中的边数为k=23不成立。因此,这种说法是错误的。但是,如果同时评估所有边,则该语句是正确的(每次迭代只能比前一次迭代更远一个边缘)。

  

2)来自3 <= 2-1的所有最短路径的权重最多为s

边缘数量及其总重量均不受k-1的限制。请考虑上例中的所有边都有权重1000.显然没有k-1的连接。

  

3)图表没有负循环。

如果您按照所做的那样定义算法(在没有进行任何更改时终止),那么这是正确的。任何负循环都会导致无限循环,因为此循环中顶点的距离会相继减小。