“网络单纯形法利用流网络基的生成树结构专门求最小费用流,枢轴和可行性维护不同于通用稠密表。LP 松弛与舍入则先用 LP 值作上下界,再把分数解转成离散解并分析 integrality gap;…”
形式陈述 ​
最小费用流基 ​
在有向网络上,每条弧
网络单纯形法把单纯形法的一个基具体化为覆盖所有节点的生成树。
树弧的流量由节点平衡和非树弧状态唯一确定。每条非树弧固定在下界或上界;树弧允许位于界内,也可能因退化恰好落在某个界上。工程实现常另加人工根与高费用人工弧来构造初始可行树,找到可行解后再移除其影响。
势与约化费用 ​
给每个节点势
沿树从根传播势,使所有树弧的约化费用为 0。对最小化问题,处在下界的非树弧要求
违反符号条件的非树弧可以入基。下界弧且
直觉
生成树给出一组恰好能由节点平衡确定的基弧;加入一条非树弧会形成唯一基本环,因此所有维持守恒的流量变化都沿这条环发生。约化费用判断该方向是否改善目标,ratio test 则找到第一条触碰容量界并离基的弧。
例子与边界
一个完整 pivot ​
设节点
初始可行流为
令
非树弧
把
沿
增广后
状态更新不变量 ​
一次 pivot 后必须同时恢复三项条件:流量平衡不变,所有弧仍在上下界内,基弧仍构成生成树。fundamental cycle 上的正负方向由入基弧方向决定;若把整条环都加同一符号,内部节点会产生净流入。
离基弧由 ratio test 决定:沿环各弧离其即将碰到的界还有多少余量,取最小值。多条弧同时到界时发生退化,
势只需在 pivot 后相对调整新树某一侧,使新入基弧约化费用变为 0。树数据结构要支持找 fundamental cycle、求瓶颈、换边和对子树势加常数;这些接口决定大型实例上的实际效率。
entering arc 规则 ​
Dantzig 规则可选违反最严重的约化费用,first-eligible 规则按扫描顺序选第一条,工程求解器还会组合候选列表、块搜索和退化处理。规则影响每轮扫描成本与 pivot 数。
这些启发式常使网络单纯形在运输、指派和最小费用流实例上很快,但不能据此宣称经典 pivot 规则具有一般多项式轮数。已知构造能让某些规则经历指数级 pivot;理论最坏界与工程表现应分开陈述。
推论与应用
与其他最小费用流算法对照 ​
逐次最短路每轮按剩余网络最短路增广,cost scaling 通过
容量无穷、供需不平衡或负费用环会影响可行性与有界性,预处理必须先检查。整数输入下基树 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.
- James B. Orlin, A Polynomial Time Primal Network Simplex Algorithm for Minimum Cost Flows, Mathematical Programming, 1997.