“沿用最小费用流的有限容量、有身份弧记录及需求约定。输入还包括一份已核验容量与供需的可行流 $f$。本页处理费用优化;没有可行起点时,先做可行性归约,不能把任意零流冒充满足非零需求的流。”
形式陈述
沿用最大流的有限有向弧记录,保留平行弧、反平行弧与各自身份。每条弧
指定从
残量环给出的最优性判据
对当前可行流
若有负环,沿它送出瓶颈允许的正量就能降低费用,而所有顶点的净需求不变。反过来,若有更便宜的同需求流
另一份等价证书是顶点势
沿环求和时势抵消,所以这排除了负环。若没有负环,加入到每个顶点的零费用虚拟源弧,再取最短距离作为
直觉
容量决定能通过多少,费用决定在相同供需下怎样安排更便宜。反向残量费用取负,正好退还撤销旧流的成本。负环是一条净供需为零的改进方向,即使它与指定的源汇路线不相连,也可能影响总费用。
势给每个顶点换一个价格基准。同端点路径的费用只增加同一个端点差,环费用则完全不变。因此非负约化费用既方便最短路计算,又给出没有降价循环的最优性证书。
例子与边界
两条各能发送一单位流的路径,单位费用分别为五和二。需求为一时取费用二的路线;需求为二时两条都须使用,总费用为七。若没有指定流值或供需,零流可能已最优,原问题就变了。
负环可以有界地改善一个已经达到目标流值的方案。设
费用自环也要单独计入:它不改变任何顶点的净需求,负费用时应在最优解中送满,正费用时可置零。最大流中“删掉自环不影响流值”的结论,因而不能直接用于费用目标。
若容量与需求均为整数,非空可行域存在整数最优流,费用本身可以是实数。其依据是有向点弧关联矩阵的全幺模性及整数边界,而不是“每个可行流都是整数”。任意实容量下仍有上述最优性判据;依赖每轮至少增加一单位的离散终止证明则需要整数条件。
推论与应用
逐次最短路法在每个当前流值已经费用最优的前提下,沿最短残量路增加流值,并保持可行势。零流是合适起点的一个常见情形,是原图没有负费用环;有负环时须另做初始化或采用能处理它的费用优化过程。
Network Simplex在网络流的生成树基之间换基;带下界与需求的环流归约处理可行性。找到任意可行流之后,仍要通过负环判据或对偶证书核验费用最优,二者承担不同任务。
指派、运输、带成本匹配和库存调度都可用此模型。原始—对偶方法把流与势同步维护,线性规划则提供统一的目标与约束语言。实际复杂度应另报图大小、容量和费用编码、算术成本及采用的算法;问题定义本身没有一个固定的求解时间界。
最小平均环消去从任意同需求可行流出发,按每条弧的平均费用选择改进环,以紧误差收缩和固定弧证明多项式轮数。容量逐位缩放逐位扩大整数容量并修复新单位造成的失衡;费用缩放则保持原容量,以逐步收紧的约化费用误差驱动局部放电。三者最后都交付本页的容量、供需及全残量可行势证书。
参考资料
- Ravindra K. Ahuja、Thomas L. Magnanti、James B. Orlin,Network Flows,Prentice Hall,1993,最小费用流、残量最优性与节点势。
- Norbert Zeh,Algorithms II,§6.1.3 Negative Cycles,Lemma6.3;注意该教材的势符号与本页相反。
- MIT6.854,David Karger,Minimum Cost Flow Algorithms,Lecture14,§§14.1–14.3:最短增广路、负费用环的初始化与费用环流。