“还须证明能找到整数最大流。Ford–Fulkerson 方法从整数零流开始;若当前流整数,则每条正向余量 $c(a) f(a)$ 和反向余量 $f(a)$ 都是整数。一条正残量路径的瓶颈是正…”
形式陈述
给定容量网络,Ford–Fulkerson 从零流开始。对当前可行流
并沿
若残量图中不再有
若容量为非负整数,每次
直觉
一次增广把整条残量路看成可同时调整的方向链,瓶颈是这次最多能推多少。正向记录使用尚空容量,反向记录撤销旧流;早期路径因此不是不可逆承诺。
停止证书来自全局不可达性,而非“刚才选的路已经满”。只要还有残量源汇路,就存在严格增加流值的可行改动;当所有这类路消失,残量可达集恰好暴露一个与当前流同值的割。
例子与边界
弧
容量均为
其中
反平行原弧与残量反向记录方向可能相同,更新时必须通过配对索引找到各自原弧;只用端点定位会在撤销时改错记录。平行弧也应分别保存容量与残量,或在不需要逐弧输出时预先合并容量。
大整数容量说明终止不等于高效:容量用二进制写入时,
推论与应用
增广思想把二分图匹配中的交替路、单源单汇流与某些环流可行性算法放进同一残量语言。最小费用流还要比较增广费用并防止负费用圈,带下界环流要先恢复可行初始流;它们不能只沿任意残量路重复本页步骤。
Ford–Fulkerson 始终维护满足守恒的可行流,并按完整源汇路增加流值。Push–Relabel允许中间状态违反守恒而形成预流,只沿局部 admissible edge 推送超额;两者的状态空间、终止条件与复杂度势函数不同。
在源无正流入、汇无正流出的约定下,流分解定理把可行流写成非负的源汇路径流与环流之和。最大流页的更一般可行域还可能含汇到源的路径分量,须按其方向计入净值。分解解释路线语义,增广次数仍需独立的选路分析。
参考资料
- L. R. Ford Jr. and D. R. Fulkerson, “Maximal Flow Through a Network,” Canadian Journal of Mathematics 8, 1956, pp. 399–404。
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,§24.2。
- Jon Kleinberg and Éva Tardos, Algorithm Design, Pearson, 2005,Ch. 7。