Edmonds-Karp算法复杂度证明
3309
2022.05.15
2022.07.19
发布于 未知归属地

「图论」相关证明文章见如下帖子:
图论相关证明文章列表


【目录】

  1. Edmonds-Karp算法复杂度证明

      1. 时空复杂度

        1. 1. 一次BFS增广

        2. 2. BFS增广次数

          1. 2.1 增广路长度非递减
          2. 2.2 增广次数

Edmonds-Karp算法复杂度证明

本文给出EK算法复杂度的(严格)证明,证明过程参考了这两篇文章证明1证明2。这是我为了发布 Dinic算法复杂度证明 而写的前置文章,Dinic复杂度证明用到了EK复杂度证明的一个结论。欢迎大家指正!


EK算法 以BFS方式 (无权最短路径) 寻找增广路径实现 Ford-Fulkerson 方法即为 Edmonds-Karp 算法。每找到一条增广路并确定该路径上的最小边权(该路径最大可发送流)后,将此边权计入最大流中,并在此路径上对 方向的边减去该权值, 方向上加上该权值。当BFS无法再找到增广路时算法结束,得到 的最大流。


时空复杂度

以下证明 EK 算法的时间复杂度为:

本证明参考了证明1证明2


1. 一次BFS增广

每次 增广,在增广路上的未饱和边会多出一条反向边,原图的单向边添加反向边后,就具有双向边 (两条) ,但饱和边仍是一条 (反向) ,因此增广操作导致的边数增长不会使总边数超过原来的 2 倍,即算法的任意时刻总边数 。因此一次 的时间复杂为 ,即


2. BFS增广次数
2.1 增广路长度非递减

即证明算法过程中的 的 BFS 增广操作,即正向边删除和反向边增加的操作,不会导致源点 到任意一点 的最短路径距离减少。残留图 经过一次 BFS 增广变为 后,对任意顶点 ,源点 的最短路径长度 非递减,即有 。以下利用反证法证明,并在证明中解释为何只能证明非递减而无法证明严格递增,即不是

  1. 假设某一次 增广后,使得某些顶点到源点 的最短路径距离相比增广前变小了,且这其中距离源点 最近者为 。则根据该假设有

    (1)

  2. 的靠近源点 的前一个顶点,则有

    (2)

    如 2.1.1 所述, 是我们有意选择的在 中最短距离相比在 中变小的且距离 最近的顶点, 更靠近 ,但在 中相比在 中距离 的最短路径未变小,即有

    (3)

  3. 假设 ,已知 的最短路径距离为 ,则有

    (4)

    结合(1)、(2)、(3)有

    ,即

    (5)

    (4) 是由 2.1.3 的假设得到的,与由 (1), (2), (3) 得到的 (5) 矛盾,故在 2.1.1 假设成立的前提下,2.1.3 的假设 不成立,即 。同时我们还能看到,如果一开始证明的是 ,那么就要反证 (对应式(1)),经过同样的过程当前的式 (5) 会变为 ,将推导不出与 (4) 式的矛盾(因为都有一个等号)。

  4. 由上述知 ,但如 2.1.2 所述, ,故在 上的增广必定经过了 ,且此边饱和,导致在 中产生了反向边 。于是可知在 中有

    (6)

(6) 与 (5) 矛盾,于是最初 2.1.1 的假设不成立,即不存在这样的顶点 ,也即增广操作使得源点到任意一点 的长度 非递减故EK算法寻找的增广路长度非递减


2.2 增广次数
  1. 假设某次 的增广中 为饱和边,增广后 。之后 要再次出现的前提是 在增广路上。在 第一次成为饱和边时有

    (7)

  2. 第二次成为饱和边,可知在此前的 中在增广路上,在 的这次增广中有

    (8)

  3. 由 2.1 的结论, 到任意顶点的最短路径非递减,即必有 ,结合 (7) 和 (8),有

    ,即

    (9)

也就是说, 第二次成为饱和边时 的最短距离至少比前一次成为饱和边时大 2。而 到任意顶点的距离最多不超过,故 可以成为饱和边的次数最多为 。每次增广至少有一条边成为饱和边,根据 2.1 中的说明,EK算法过程中边数 ,故考虑 所有边的总的增广次数必小于 ,即 增广次数复杂度为


综上,EK 算法复杂度为

证明过程中 BFS增广使得增广路长度非递减 的结论是关键,网上有的文章声称 BFS 寻找增广路的操作使得增广路长度递增,但我们已经在 2.1.3 的叙述中指出这是不对的。根据 2.1 的证明,只能得到 非递减 的结果,但这一结论在 2.2 中足以证明任意边第二次成为饱和边时其最短路径长至少增加2,由此得到BFS次数的上界。

空间复杂度:存图空间为 ,队列空间为 。总体时间复杂度为


评论 (7)