当前位置: 首页 > 知识库问答 >
问题:

Yen优化Bellman-Ford算法的正确性

裴翰学
2023-03-14

我试图解决算法简介中的问题24-1,它指的是Yen对Bellman Ford algirithm的优化,我在wiki中找到了介绍,改进:

Yen的第二个改进首先在所有顶点上分配一些任意的线性顺序,然后将所有边的集合划分为两个子集。第一个子集Ef包含所有边(vi, vj),使得i

不幸的是,我不能证明至少两个边松弛距离的方法如何匹配正确的最短路径距离:一个来自Ef,一个来自Eb。

共有1个答案

苏波涛
2023-03-14

Ef和Eb是拓扑排序的非循环。

让我们证明主循环的上界是| V |/2

对于所有的顶点v,有两个选项来实现与源s的最短距离。一个是d[s, v]=INFINITE,另一个是d[s, v]=FINITE。因此,我们需要考虑d[s,v]是有限的情况,这意味着必须存在从s到v的最短路径。

假设P=(V0,V1,V2,…,VK-1,VK)是该路径,其中VO=S和VK=V。让我们考虑在P中有多少次方向的变化,即,(VI-1,VI)属于EF和(VI,VI 1)属于EB的情况。根据引理24.2的证明,p最多有| V |-1条边。因此,方向上最多有| V |-2个变化。由于Ef和Eb是拓扑排序,一旦开始方向无变化序列的节点具有正确的d值,则可以在单次过程的前半部分或后半部分使用正确的d值计算路径中方向无变化的任何部分。方向的每次更改都需要在路径的新方向上进行半次传递。

    |V-1| | first edge direction | passes
    ----- | -------------------- | ------
    even  | forward              | (|V|-1)/2
    even  | backward             | (|V|-1)/2 +1
    odd   | forward              | |V|/2
    odd   | backward             | |V|/2

因此,此修改将算法主循环的最坏情况迭代次数从|V|−1减少到|V|/2。

 类似资料:
  • 我正在做一个有向图的项目,其中边的权重都依赖于变量x。我试图找到x的最小值,这样我的图就不包含任何正权重的回路。 我的问题是——这可能很愚蠢,但我不明白如何——:我如何使用改良的贝尔曼-福特来检查正电路而不是负电路的存在? 谢谢。

  • 假设有一个具有

  • 我了解到Bellman-Ford算法的运行时间为O(| E |*| V |),其中E是边的数量,V是顶点的数量。假设图没有任何负加权圈。 我的第一个问题是,我们如何证明在(| V |-1)迭代中(每次迭代检查E中的每条边),它更新到每个可能节点的最短路径,给定一个特定的起始节点?有没有可能我们已经迭代了(|V |-1)次,但仍然没有得到到每个节点的最短路径? 假设算法正确,我们真的能做得更好吗?我

  • 我在试图理解这个算法是如何工作的。 给定一个问题,搜索从源s到图中所有顶点的路径, 我想我必须这样做: 我的问题是: 我的程序是好的还是我必须改变它。 当我必须检查是否存在负循环时?非常感谢。

  • 我如何在Bellman-Ford算法中证明这一点: 如果没有负权重循环,则从源到接收器的每个最短路径最多有边,其中是图中的顶点数。 有什么想法吗?

  • 有了贝尔曼-福特的算法,稍有改变:在第7行,我们把