形式陈述
三种输出,不能只返回一个点
输入有理数半平面 a i x + b i y ≤ d i 和目标 c x x + c y y ,求二维线性规划 理路 线性规划 Linear programming · LP 在线性等式和不等式约束下优化线性目标函数的问题。 的最大值。允许没有约束、重复约束、平行边界、零法向量,以及退化成直线、线段或单点的可行域。输出分别是:
infeasible:原系统无可行点,同时给出至多三条已矛盾的输入约束 ID;
optimal:一个满足原系统的点及有限最优目标值;
unbounded:可行起点 p 和方向 v ,满足 a i v x + b i v y ≤ 0 且 c ⋅ v > 0 ,所以 p + t v 对所有 t ≥ 0 可行并持续改进。
可行域无界并不意味着目标无界,例如 x ≤ 0 上最大化 x ,最优值仍为零。算法必须按照目标方向分类。
不选“大数”,保留形式参数
先研究额外受 [ − M , M ] 2 限制的问题,其中 M 是趋于正无穷的形式参数。每个中间坐标写成
u + M v , 只保存两个有理系数。比较 u 1 + M v 1 与 u 2 + M v 2 ,先比较 v 1 , v 2 ,相同才比较 u 1 , u 2 ,这恰是对所有充分大 M 的数值次序。没有把某个有限机器数冒充无穷。
在可行区域中按 ( c ⋅ p , p x , p y ) 的字典序取最大点。这使每个约束集合都有唯一规范答案;目标并列时再取最大的 x 、再取最大的 y 。字典序只规定输出选择,不移动输入半平面。形式框保证每个有限 M 的问题不是不可行就是取得规范最优点。[1, §2 与 Appendix]
随机增量与一维修复
把约束 ID 均匀随机排列。尚无约束时,形式框的最优角点可由目标两个系数的符号得到:正系数取 M ,负系数取 − M ,零系数按坐标并列规则取 M 。保持当前点是已处理前缀的规范最优点。
读入半平面 h : a x + b y ≤ d 。若当前点满足它,答案不变;若违反,则新的最优点一定在直线 a x + b y = d 上。取该线一个有理点 p 0 和非零方向 v = ( − b , a ) ,写
p ( t ) = p 0 + t v . 每条旧半平面 α x + β y ≤ γ 化为
( α v x + β v y ) t ≤ γ − α ( p 0 ) x − β ( p 0 ) y . 系数为正给上界,为负给下界,为零则检查右端非负。还要加入形式框的四条约束;它们的右端含 M ,所得上下界仍是仿射式。扫描求最大的下界 ℓ ( M ) 、最小的上界 u ( M ) 。若 ℓ > u 或出现矛盾常数行,就返回不可行;否则看
( c ⋅ v , v x , v y ) 中首个非零分量的符号:正则取上端,负则取下端。方向 v ≠ 0 ,所以总能作出选择。这样一次二维失败只需一遍一维边界扫描,不必构造整个多边形。
直觉
为什么只需在新边界上找
旧最优点 z 违反新约束。假如新最优点 z ′ 严格位于新半平面内部,沿 z ′ 朝 z 移动一小段仍满足新约束;旧约束和框也因凸性保持满足。z 的字典序目标优于 z ′ ,而每个比较分量都是线性的,所以这段移动会严格改进第一个不同的分量,矛盾。
证明可先对每个足够大的有限 M 作出,再用仿射式的最终次序实现。它并不要求新的可行域有正面积:若交集只剩点或线段,区间上下界相等的情况仍被保留。
图片加载失败 违反后的边界修复 把符号答案变回真实点
设最终形式点为 p ( M ) = u + M w 。对每条原约束 a i ⋅ p ≤ d i ,记
s i = a i ⋅ w , r i = a i ⋅ u − d i . 最终可行性保证 s i ≤ 0 ,且 s i = 0 时 r i ≤ 0 。对 s i < 0 的行,只需 M ≥ r i / ( − s i ) 。因此可取
M 0 = ⌈ max ( 1 , max s i < 0 r i − s i ) ⌉ , p 0 = u + M 0 w . 这个 p 0 对全部原约束真实可行。即使目标不随 M 增长,也不能直接返回 u :某些约束可能正是靠 M 0 w 才得到满足。
若 c ⋅ w > 0 ,p 0 , w 就给出严格改进射线。若 c ⋅ w = 0 ,目标恒为 c ⋅ u ,而任意原系统可行点在充分大的框中都出现,故其目标不超过这个值;p 0 达到该值,证明有限最优。c ⋅ w < 0 不会出现,因为扩大框不会降低最优目标。判断依据是 c ⋅ w ,不是 w 是否为零。
例子与边界
三次修复到达 ( 3 , 2 )
最大化 3 x + 2 y ,约束为
x ≤ 4 , y ≤ 3 , x ≥ 0 , y ≥ 0 , x + y ≤ 5 , 2 x + y ≤ 8. 按输入 ID 从零编号。附件种子7给出顺序 [ 4 , 0 , 5 , 3 , 1 , 2 ] 。初始点为 ( M , M ) ,前三次修复如下:
新约束
降维后的选择
新规范最优点
x + y ≤ 5
在线上最大化 x + 10 ,取框允许的最大 x
( M , 5 − M )
x ≤ 4
在 x = 4 上取最大 y ≤ 1
( 4 , 1 )
2 x + y ≤ 8
令 y = 8 − 2 x ,目标 16 − x ,由 x + y ≤ 5 得 x ≥ 3
( 3 , 2 )
最后三个约束都已满足。最优值为 13 ;把 x + y ≤ 5 与 2 x + y ≤ 8 各乘一后相加,得到 3 x + 2 y ≤ 13 ,而 ( 3 , 2 ) 取等号。这份两行对偶证书可脱离随机轨迹单独核验。
w ≠ 0 ,目标仍有限
约束 x ≤ 0 , y ≥ 100 ,目标最大化 x 。规范形式答案是 ( 0 , M ) ,故 u = ( 0 , 0 ) , w = ( 0 , 1 ) 。这里 u 违反 y ≥ 100 ;按全部约束计算得到 M 0 = 100 ,输出真实最优点 ( 0 , 100 ) ,目标为零。
若没有任何约束且目标为零,形式答案为 ( M , M ) ,w 同样非零,但任意点的目标都是零。若改成最大化 x ,同一形式方向的目标斜率变为一,才得到无界。这两个测试能直接抓出“见到非零 w 就报无界”的错误。
空集、平行与低维
零法向量约束 0 x + 0 y ≤ d 在 d ≥ 0 时恒真,在 d < 0 时单独证明不可行。x ≤ 0 与 x ≥ 1 是两条平行矛盾约束;x ≤ 0 与 x ≥ 0 却只是把可行域压成直线,不能因为平行就报空。
三条 x ≤ 0 , y ≤ 0 , x + y ≥ 1 共同不可行,任意两条都可行,展示了为何一般二维不可行证书可能需要三条。边界扫描发现上下界矛盾时,返回当前边界与两条产生冲突界的约束;若涉及形式框,只保留其中的原输入行。为什么把当前边界等式改回原不等式后仍然矛盾?旧规范点满足那两条旧行,却违反当前半平面;如果保留的原行还有一个新可行点,两点间的线段必在当前边界上相交,并仍满足两条旧行,反而得到被区间检查排除的边界可行点。若涉及形式框,先取足够大的 M ,让假定的新可行点也在框内;旧规范点本就在框内,同一线段论证仍成立。
推论与应用
修复很贵,为什么总期望仍线性
在一个固定的可行前缀集合里,规范最优点可以由至多两条原约束加固定背景框决定。退化时基可能不唯一,但任何删除后会改变答案的约束必须属于每一份基,所以至多两条。不可行前缀则由 Helly 定理 理路 Helly 定理 Helly theorem 欧氏 d 维空间中有限凸集族的全局非空交可由至多 d 加一个集合的局部交保证。 得到至多三条原约束的矛盾证书;任何删除后恢复可行的约束也必须在该证书中。
把进入第 i 项之后的前缀集固定,其最后一个 ID 均匀分布于这 i 项。触发昂贵修复时,删去最后一项会改变规范答案或可行状态,所以概率至多 3 / i 。一次修复扫描 i − 1 条旧约束及四条框约束,因而
边 界 扫 描 工 作 E [ 边界扫描工作 ] ≤ C ∑ i = 1 n 3 i ( i + 3 ) = O ( n + 1 ) . 加上打乱、普通违反测试和计算 M 0 ,二维核心期望为 O ( n + 1 ) 次算术操作,存储为 O ( n + 1 ) 。遇到不可行立即停止只会减少成本;分析时可以把此后状态视为一直不可行。随机性只改变工作量,返回的三类结果都满足精确规格,这是 Las Vegas 算法 理路 随机化算法 Randomized algorithm 把随机比特作为额外输入并分析输出正确率或运行时间分布的算法。 。
在一般 d 维中,违反一条约束后进入 d − 1 维,经典分析出现 d / i 的概率因子及递归求解成本,固定维数期望线性的常数呈阶乘量级。[1, Theorem 1] 本页实际执行器只实现二维,不能把二维的区间扫描直接当作任意维的常数时间子程序。
核心、证书提取与位成本分别计
不可行时的小矛盾 ID 在边界扫描中直接留下;无界射线直接来自 w 。有限最优值还可另求非负乘子 λ i ,使 ∑ λ i ( a i , b i ) = c 且 ∑ λ i d i = c ⋅ p 0 。附件的额外证书器枚举最优点处的单条/成对紧法向量,最坏 O ( n 2 ) 次算术操作;这项可选的通用提取不能藏进线性核心时间里。
所有分支采用 精确有理谓词 理路 精确几何计算 Exact geometric computation · EGC 让组合控制流由数学上正确的几何谓词符号驱动,并把近似构造与精确判定分离。 。每个候选点由至多两条原边界或形式框边界求交得到,二维公式与每条原行的比较只涉及常数个输入系数。输入每数至多 L 位时,约分后的几何数、形式系数和 M 0 都为 O ( L ) 位;若含约分的有理运算成本为 A ( L ) ,核心期望几何成本为 O ( ( n + 1 ) A ( L ) ) ,还须计 ID、打乱和随机位操作。
完整执行器 附有直接枚举形式框顶点的独立小实例解法。其三重枚举和逐前缀审计用于检查,均没有包含在核心线性界中。终结任务 要求同时交出有限目标、空集和严格改进射线实例,而不是只测一个漂亮多边形。
参考资料
Raimund Seidel,“Small-Dimensional Linear Programming and Convex Hulls Made Easy” ,Discrete & Computational Geometry 6,1991,§2 印刷 pp.424–426;Appendix pp.432–433:随机约束降维、规范选择及仿射符号框。本文最终分类显式核目标斜率,并扫描原约束构造有限可行起点。
Kenneth L. Clarkson,“Las Vegas Algorithms for Linear and Integer Programming When the Dimension Is Small” ,1995,§2.1,印刷 pp.489–490:可行性、规范解与无界射线需分别定义。