“网络单纯形法利用流网络基的生成树结构专门求最小费用流,枢轴和可行性维护不同于通用稠密表。LP 松弛与舍入则先用 LP 值作上下界,再把分数解转成离散解并分析 integrality gap;…”
形式陈述
最小费用流基
沿用最小费用流的有限有向网络模型,每条有身份的弧
先消去固定界
网络单纯形法把有界变量单纯形法的一个基具体化为生成树。工作分量在上述预处理之后确定:若剩余网络弱连通,删去一条冗余平衡等式,关联矩阵秩为节点数减一;若剩余网络有
每个分量选出的基弧覆盖其全部节点,忽略方向和弧身份后恰给出普通简单生成树;树的每条边再附上被选中的那条原弧身份及方向,便恢复网络基。平行或反向候选弧始终各有身份,同一基树不会同时选择同端点的两条弧。加入一条非基平行弧时,仍以它和原树弧的两个不同身份构成两边基本环,不能先把这些候选合并成一条边。
树弧的流量由节点平衡和非树弧状态唯一确定。每条非树弧固定在下界或上界;树弧允许位于界内,也可能因退化恰好落在某个界上。工程实现常另加人工根与高费用人工弧来构造初始可行树,找到可行解后再移除其影响。
势与约化费用
给每个节点势
沿树从根传播势,使所有树弧的约化费用为 0。对最小化问题,处在下界的非树弧要求
违反符号条件的非树弧可选为改进方向。下界弧且
约化费用计入了维持平衡所需的整环变化,原费用
直觉
生成树给出一组恰好能由节点平衡确定的基弧;加入一条非树弧会形成唯一基本环,因此所有维持守恒的流量变化都沿这条环发生。约化费用判断该方向是否改善目标,ratio test 决定能沿这个方向走多远,以及随后是换树边还是只翻转一个非基弧的边界状态。
例子与边界
一个完整 pivot
设节点
初始可行流为
令
非树弧
把
沿
增广后
三条弧在这个步长同时碰到界;选
入选弧自己先到界
只把上例的
状态更新不变量
一次换基或 bound flip 后都必须保持三项条件:流量平衡不变,所有弧仍在上下界内,基弧仍构成生成树。fundamental cycle 上的正负方向由入基弧方向决定;若把整条环都加同一符号,内部节点会产生净流入。
Ratio test 包含入选非基弧自身:沿环各弧离其即将碰到的界还有多少余量,取最小值。最小者为树弧时选择它离基;最小者仅为入选弧时执行 bound flip。多条弧同时到界时发生退化,
势只需在 pivot 后相对调整新树某一侧,使新入基弧约化费用变为 0。树数据结构要支持找 fundamental cycle、求瓶颈、换边和对子树势加常数;这些接口决定大型实例上的实际效率。
entering arc 规则
Dantzig 规则可选违反最严重的约化费用,first-eligible 规则按扫描顺序选第一条,工程求解器还会组合候选列表、块搜索和退化处理。规则影响每轮扫描成本与 pivot 数。
这些启发式常使网络单纯形在运输、指派和最小费用流实例上很快,但不能据此宣称经典 pivot 规则具有一般多项式轮数。已知构造能让某些规则经历指数级 pivot;理论最坏界与工程表现应分开陈述。
推论与应用
与其他最小费用流算法对照
逐次最短路每轮按剩余网络最短路增广,cost scaling 通过
费用缩放的局部版本把误差减半后先饱和负约化费用记录,再通过Push/Relabel清除正负超额;其许可图无环和相对阶段起点的价格降幅支付操作次数。阶段中不维护生成树基,也不使用本页的bound flip条件。
供需不平衡会使可行性失败,应先检查各分量的净需求。在本页有限容量模型中,负残量费用环表示仍可改进,目标仍有有限下界;扩展到无穷容量时,完全无容量阻挡的负环才可能使费用无界。整数输入下基树 pivot 保持整数流,但浮点费用会让约化费用比较和退化判定需要容差;容差策略不属于抽象精确算术证明。
参考资料
- George B. Dantzig, Application of the Simplex Method to a Transportation Problem, in Activity Analysis of Production and Allocation, 1951.
- Ravindra K. Ahuja, Thomas L. Magnanti and James B. Orlin, Network Flows: Theory, Algorithms, and Applications, Prentice Hall, 1993.
- NetworkX,network_simplex 源码,2026年10月查阅:主循环仅在入选与离开弧不同的时候改动基树;固定零容量弧与自环另行处理。其势符号与本页相反。
- James B. Orlin, A Polynomial Time Primal Network Simplex Algorithm for Minimum Cost Flows, Mathematical Programming, 1997.