24.3-1
接下里将使用残余网络来表示这个流网络,并且由于边容量都是 ,因此忽略容量标记值。一开始残余网络如下:
![]()
随后运行 BFS,找到了一条增广路径 。由此可以对残余网络进行更新:
![]()
随后找到了一条增广路径 。由此可以对残余网络进行更新:
![]()
最后找到了一条增广路径 ,由此可以对残余网络进行更新:
![]()
此后,再也不存在增广路径,因此最大流 。,从而得到最大匹配 。
24.3-2
考虑算法 FORD-FULKERSON
的第 3 行的 while
循环,定义循环不变量:对于 和 总是为整数。接下来证明这个循环变量成立。
初始化:一开始,所有的流 都为 ,由于容量只取整数值,因此所有容量 都是整数,循环不变量得以成立。
保持:假设循环执行前,循环不变量保持成立,此时找到了一条增广路径 。由于 都是整数,因此从第 4 行计算出来的 是整数。由于对于所有边 的 属性都是整数,因此对 都减去一个整数 ,仍然是整数。按照方程 24.2 更新残余网络的每条边的容量 ,得到的仍然是整数。
终止:最终 while
循环停止后,所有边上的流 和残余容量 都是整数。
因此,最终计算出来的最大流的值 一定是一个整数。
24.3-3
这条增广路径的最大值为:。令 。接下来介绍如何构造达到这个上界的增广路径。
首先构造出图 。从 中取出 个节点,不失一般性,设其为 ,从 中也取出 个节点,设其为 。那么 。对于其它节点 ,只需要保证它们在另一部分的节点和 相连即可。最终如此构造出图 。
在前 轮迭代中,假设算法 FORD-FULKERSON
在第 轮的增广路径是 ,那么这 轮后,残余网络 包含了如下这些边:,那么第 轮所构造的增广路径 可以如下构造:。
可见,上述所构造的增广路径 达到了长度 。由于增广路径 是一条简单路径, 中总有一部分节点已经被使用完了,无法再找到一对节点 再延长路径长度,因此只能走向节点 。最终, 是所求满足条件的最长路径。