“问题页应把求解路线分开:连续最短路每次在残量网络增广并用势保持非负约化成本;Network Simplex在生成树基之间 pivot,工程行为与最坏理论不同;带下界需求环流先处理可行性和基准…”
残量费用 ​
最小费用流
势与 Dijkstra ​
负费用反向边使 Dijkstra 不能直接使用。维护顶点势
先以 Bellman–Ford 距离初始化,使所有可达残量边约化费用非负;此后用 Dijkstra 得距离
最优性不变量 ​
势的对偶可行性等价于残量网络无负约化边;增广后新反向边的约化费用为零。达到目标流量时若残量网络无负费用环,就不存在保持流量而降低费用的循环调整,流为最优。
例子与边界 ​
先沿一条便宜路径送流后,后续更优组合可能需要走反向边撤销其中一段;反向费用取负正是表达这种修正。按单位容量增广会做
复杂度与起始可行流 ​
若每轮用二叉堆 Dijkstra 为
有下界/需求时应先用可行环流归约找到起始流。若根本无可行流,SSP 不能从零流硬增广后宣称最优;原始可行性和费用最优性是两道证书。
一轮增广的数值核对 ​
假设当前势为
而最短路上的边等号成立。于是下一轮仍可使用 Dijkstra,且新增反向边的约化费用也为零。
一次路径增广量是路径剩余容量与尚缺流量的最小值。若容量整数且每轮至少增广 1,朴素复杂度可写
初始图有负费用边时,零势未必对偶可行;可先用 Bellman–Ford 求初始势,或从已知可行对偶开始。若存在可达负费用环且流量未固定,最优性与有界性问题也要先处理。
参考资料
- Ravindra Ahuja, Thomas Magnanti, James Orlin, Network Flows, 1993.
- Jack Edmonds, Richard Karp, Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems, JACM, 1972.