贝尔曼 - 福特算法部分证明

时间:2018-05-24 13:54:15

标签: algorithm bellman-ford

我如何在Bellman-Ford算法中证明这一点:

如果没有负权重周期,那么从源s到接收器t的每条最短路径最多有n-1条,其中n是数字图中的顶点。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

该语句逐字逐句是错误的:在所有边都具有零权重的图中,没有负权重循环,但每条路径都是最短的。 我们可以证明的是以下略有(但重要的)不同版本:

如果没有负重量周期,则存在从源s到接收器t的最短路径,最短路径n - 1边,其中n是图中顶点的数量。

这是证明。 假设有>= n个边缘的最短路径。 然后此路径具有> n个顶点。 根据鸽子原理,有两个顶点是相同的。 因此,我们可以移除部分路径,将s -> (sequence-1) -> v -> (sequence-2) -> v -> (sequence-3) -> t转换为s -> (sequence-1) -> v -> (sequence-3) -> t。 周期v -> (sequence-2) -> v的长度是非负的,所以我们的新路径并不比旧路径差。 而旧的声称是最短的,它也不会更好。 总之,这意味着我们删除了一个零重量的循环。

重要的是,由于我们至少删除了一次v,因此在我们的过程中顶点的数量减少了。 现在,重复上述过程,直到路径的边缘小于n。 它仍然是最短的路径。 因此,我们证明了存在< n边的最短路径。