Appearance
Linear Programming, Duality, and LP Relaxation
这一讲介绍 Linear Programming,也就是线性规划。主线是:
- 什么是 LP,以及 LP 的几何直觉;
- Simplex Method 的 high-level idea;
- LP 的标准型和多项式时间可解性;
- LP Duality,包括 weak duality 和 strong duality;
- LP-Relaxation:用 LP 设计 approximation algorithm;
- Vertex Cover 和 online matching 中的 primal-dual analysis。
Linear Program
一个 linear program (LP) 由两部分组成:
- 一组线性的等式或不等式约束;
- 一个需要 maximize 或 minimize 的线性目标函数。
标准的 maximization 形式可以写成:
用矩阵形式写就是:
Factory Example
假设一个工厂可以生产两种产品:
- sugar:每吨 profit 是
; - oil:每吨 profit 是
。
资源限制:
- sugar 最多生产
吨; - oil 最多生产
吨; - 总重量最多
吨。
令:
表示 sugar 的产量; 表示 oil 的产量。
那么 LP 是:
Feasible Region
所有满足约束的点
几何上,每个线性不等式都是一个 half-plane;所有 half-plane 的交集就是 feasible region。
在二维中,它是一个多边形;在高维中,它是一个 convex polyhedron。如果这个区域有界,也叫 polytope。
Maximizing the Objective
目标函数:
是一族平行直线。我们希望把这条直线往 objective value 增大的方向移动,直到它最后一次接触 feasible region。
在这个例子中,最优点是:
objective value 是:
Important Observations
对于 LP,有几个重要的几何事实。
Optimum at a Vertex
如果 LP feasible、bounded,并且最优解存在,那么总存在一个最优解位于 feasible region 的某个 vertex 上。
直观理解:
线性目标函数是一族平行 hyperplanes。
当 hyperplane 被推到最大值时,它最后接触 feasible region 的地方可以选在 vertex。
注意:最优解不一定唯一;如果一整条边都最优,那么这条边的两个端点也是最优解。
Convexity
LP 的 feasible region 是 convex 的。
原因是:
- 每个线性约束对应一个 half-space;
- half-space 是 convex 的;
- convex set 的交集仍然是 convex 的。
Local Maximum Is Global Maximum
由于 feasible region 是 convex 的,线性目标函数没有“坏的局部最优”。
关键结论:
对 LP 来说,只要一个 feasible point 在所有相邻方向上都不能改进 objective,它就是 global optimum。
这也是 Simplex Method 能工作的几何直觉。
Simplex Method
Simplex Method 的 high-level idea:
- 找一个起始 vertex;
- 如果存在相邻 vertex 能提高 objective,就沿着 edge 走过去;
- 重复这个过程;
- 到达一个 local maximum 时停止。
由于 LP 的 local maximum 也是 global maximum,算法停止时得到最优解。
What Is a Vertex?
在
例如二维中,一个 vertex 是两条边界直线的交点;三维中,一个 vertex 是三个平面的交点。
What Is an Edge?
在
Simplex 从一个 vertex 走到相邻 vertex,本质上是:
- 放松当前 tight 的某个约束;
- 让另一个约束变 tight;
- 解一个新的线性方程组,得到新的 vertex。
Example Path
在 factory example 中,Simplex 可以从原点
每一步都移动到一个相邻 vertex,并且 objective value 变大。到达
Missing Details
真实的 Simplex Method 还需要处理很多细节:
- 如何找到一个起始 vertex;
- 如何选择 pivot rule,也就是选哪个相邻 vertex;
- degenerate vertex:超过
个 constraints 同时 tight; - feasible region unbounded;
- LP infeasible;
- 数值误差和实现问题。
实际编程时,一般不手写 LP solver,而是使用成熟工具:
- GLPK;
- Gurobi;
- CPLEX;
- OR-Tools 等。
Time Complexity of Simplex
Simplex Method 在实践中非常快,也是最常用的 LP 算法之一。
但是 worst-case running time 是 exponential 的。
如果有
不同 pivot rule 可能产生非常不同的表现。很多自然的策略,例如每次选择 objective 增加最多的邻居,也仍然可能在 worst case 下很慢。
一个重要结果是 Spielman 和 Teng 的 smoothed analysis:
如果对 constraints 加入轻微随机噪声,Simplex 的 average behavior 是 polynomial 的。
Polynomial-Time Algorithms for LP
虽然 Simplex worst-case exponential,但 LP 本身是 polynomial-time solvable 的。
经典的 polynomial-time LP algorithms 包括:
- Ellipsoid Method;
- Interior Point Method。
关键结论:
Linear Programming 可以在多项式时间内求解。
如果一个问题可以被 formulation 成 LP,那么它就是 polynomial-time solvable。
Standard Form LP
本讲使用的 standard form 是:
也就是说:
- objective 是 maximization;
- constraints 都是
; - variables 都是 non-negative。
很多其它形式都可以转成 standard form。
Minimization to Maximization
Greater-Than Constraints
Equality Constraints
等式可以拆成两个不等式:
也可以通过 slack variable 把不等式转成等式:
Variables with Unrestricted Sign
如果变量
其中:
这样就把 unrestricted variable 转成了两个 non-negative variables。
Maximum Flow as LP
Maximum Flow 也可以 formulation 成 LP。
给定 directed graph
令
LP formulation:
这正是 maximum flow 的定义:
- capacity constraint;
- flow conservation;
- maximize total flow leaving source。
一个有趣的观点:
Ford-Fulkerson Method 可以看作 Simplex Method 在 max-flow LP 上的特殊实现。
LP Duality
LP duality 的核心问题是:
如果 primal LP 是在找最优解,那么 dual LP 是在找什么?
直观地说:
- primal 在寻找一个 feasible solution,让 objective 尽量大;
- dual 在寻找一个 certificate,证明 primal 的 objective 不可能超过某个上界;
- strong duality 说明:最好的上界刚好等于 primal optimum。
Motivation for Dual
回到 factory example:
我们已经知道最优值是
可以把约束线性组合起来。
例如,把
这说明 objective 不可能超过
更好的组合是:
倍 ; - 加上
。
得到:
也就是:
而我们已经有 feasible solution
关键想法:
dual variables 就是在给 primal constraints 分配权重,用这些 constraints 组合出 objective 的上界。
Deriving a Dual Program
考虑三变量例子:
给四个 constraints 分别乘上非负权重:
把它们加起来,右边变成:
左边中
为了让这个线性组合成为 objective 的 upper bound,需要:
然后我们希望 upper bound 尽可能小,所以 dual LP 是:
这里,原问题叫 primal program,新构造的问题叫 dual program。
General Dual Program
对于 standard form primal:
它的 dual 是:
也可以写成:
对应关系:
- primal 是 max,dual 是 min;
- primal 的每个 constraint 对应一个 dual variable;
- primal 的每个 variable 对应一个 dual constraint;
- matrix 从
变成 。
Weak Duality Theorem
Weak Duality Theorem:
如果是 primal feasible solution, 是 dual feasible solution,那么
证明非常短:
因为 primal feasible:
因为
因为 dual feasible:
又因为
合起来:
关键结论:
任意 dual feasible solution 都给出 primal optimum 的一个 upper bound。
Strong Duality Theorem
Strong Duality Theorem:
如果 primal 和 dual 都有 optimal solution,设它们分别为和 ,那么
也就是说,weak duality 中的 gap 在最优解处一定 closed。
直观理解:
primal 在找最好的 feasible solution;
dual 在找最紧的 upper bound;
strong duality 说明这两个值相等。
Strong duality 有很多重要应用:
- Max-Flow-Min-Cut Theorem;
- Minimax Theorem;
- Kőnig-Egerváry Theorem;
- approximation algorithms 中的 dual fitting;
- primal-dual schema;
- resource allocation 的经济解释。
Economic Interpretation of Duality
可以把 duality 理解成 resource pricing。
假设有三种资源:
需要 单位; 需要 单位; 需要 单位。
我们要给每种资源定价:
目标是 maximize revenue:
但是资源不是直接卖,而是通过产品组合体现价格:
- Product 1 使用
,市场价格是 ; - Product 2 使用
,市场价格是 。
为了避免“资源成本超过产品价格”,需要:
所以 primal 是:
dual 是:
解释:
- primal:资源拥有者如何给资源定价,使总收入最大;
- dual:购买者如何购买产品组合,满足资源需求并使成本最小。
Weak duality:
因为每个产品的市场价格至少覆盖资源价格,所以购买者的成本一定不小于资源拥有者的收入。
Strong duality:
最优资源定价收入 = 最优产品购买成本。
Proof Idea of Strong Duality
Slides 中用 Farkas Lemma 证明 strong duality。这里记录核心思路。
Farkas Lemma
Farkas Lemma:
对矩阵和向量 ,下面两个命题恰好有一个成立:
- 存在
,满足 且
- 存在
,满足 且
几何理解:
with 形成由 的列向量生成的 cone。
Farkas Lemma 说:要么在这个 cone 里,要么存在一个 hyperplane 把 和这个 cone 分开。
Corollary
一个常用推论是:
对矩阵
和向量 ,下面两个命题恰好有一个成立:
- 存在
,使得
- 存在
,使得 且
这个推论可以通过给
然后对
Strong Duality Proof Sketch
已知 weak duality:
对所有 primal feasible
假设 strong duality 不成立,即 primal 最优值严格小于 dual 最优值:
那么不存在
和:
把它改写成一个
这两种情况都矛盾。因此 strong duality 成立。
这里最重要的不是记住代数细节,而是理解:
strong duality 本质上来自 separating hyperplane 的思想:
如果最优值之间有 gap,就能构造出一个更好的 dual certificate,从而矛盾。
Integer Program
如果在线性规划中要求变量必须是整数,就得到 integer program (IP) 或 integer linear program (ILP)。
标准形式:
很多 combinatorial optimization problems 都可以写成 IP。
但是:
Integer Programming 是 NP-complete 的。
即使是的 0-1 IP,也已经很难。
LP Relaxation
LP-relaxation 的基本思路:
- 先把问题写成 integer program;
- 放松整数约束,例如把
放松成:
- 解这个 LP,得到 fractional solution;
- 把 fractional solution rounding 成 integral solution;
- 证明 rounding 后仍然 feasible,并且 objective 不会变差太多。
关键点:
LP 比 IP 容易,因为 LP 多项式时间可解;
但 LP 的 feasible region 更大,所以 LP optimum 往往只是 IP optimum 的 optimistic bound。
对于 minimization problem:
对于 maximization problem:
LP-Relaxation Example: Vertex Cover
给定无向图
一个 vertex cover 是点集
Minimum Vertex Cover 问题:
找到 size 最小的 vertex cover。
Integer Program
对每个 vertex
IP formulation:
约束
LP Relaxation
把
因为 LP 的 feasible region 包含 IP 的 feasible region,所以:
A 2-Approximation for Vertex Cover
算法:
- 解 LP relaxation,得到最优解
; - 返回:
Correctness
需要证明
考虑任意边
所以
因此
因为任意边都成立,所以
Approximation Ratio
要证明:
由于:
只需要证明:
对 LP 最优解:
而所有被选入
因此:
关键结论:
LP rounding 给出了 Minimum Vertex Cover 的
-approximation。
补充:如果 Unique Games Conjecture 为真,Vertex Cover 不能被近似到小于
Dual of Vertex Cover LP
为了写 dual,通常把 vertex cover LP 中的上界
Primal:
Dual:
这个 dual 可以理解成 fractional matching:
- 每条边
有一个权重 ; - 每个点 incident 的边权重总和最多是
。
如果再要求
Primal-Dual Analysis for Greedy Matching
考虑一个简单 greedy matching algorithm:
- 按某个顺序处理右侧点
; - 每次把当前点匹配给任意一个尚未匹配的 neighbor;
- 如果没有 unmatched neighbor,就跳过。
这个 greedy 结果是一个 maximal matching。它不一定 maximum,但可以证明是
Gain Sharing
对 greedy 找到的每条 matched edge
因此:
因为 matching 中每个点最多出现一次,所以每个
Almost Feasible Vertex Cover
由于 greedy matching 是 maximal matching,任意一条边
否则,如果
因此对于任意边
所以
于是:
由 weak duality,任意 matching 的大小都不超过任意 vertex cover 的大小,特别是:
更直接地,
因此:
关键结论:
greedy maximal matching 是 maximum matching 的
-approximation;
换成 minimization 的说法,它对应一个-approximation 的 bound。
Ranking Algorithm for Online Bipartite Matching
Ranking Algorithm 是 Karp, Vazirani, and Vazirani 在 1990 年提出的 online matching algorithm。
问题设置:
- 左侧点
一开始已知; - 右侧点
按 online order 一个个到来; - 当一个
到来时,必须立即决定是否把它匹配给某个 unmatched neighbor; - 决定之后不能修改。
Greedy 可能只得到
Ranking 的做法:
- 对所有
随机生成一个 rank:
- 当
到来时,把它匹配给所有 unmatched neighbors 中 rank 最小的那个。
关键结论:
Ranking Algorithm 是
-competitive。
也就是说:
Primal-Dual View
Ranking 的经典分析比较复杂,但可以用 primal-dual gain sharing 简化。
当 algorithm 匹配边
把这条 matched edge 的
总 gain 仍然是:
所以:
目标是证明对任意 edge
如果成立,那么把期望 gain 放大:
就得到一个 feasible fractional vertex cover。于是:
等价于:
Gain Lower Bound
固定一条边
考虑在删除
Case 1:
把
因为
Case 2:
如果把
并且:
所以:
代入
因此两种情况都得到:
最终:
Summary
本讲的核心结论:
- LP 是线性 objective 加线性 constraints 的优化问题;
- bounded feasible LP 的最优解可以在 vertex 上取得;
- Simplex Method 在实践中很快,但 worst case 是 exponential;
- LP 可以在 polynomial time 内求解;
- standard form 是
- primal-dual pair 满足 weak duality:
- strong duality 说明最优 primal value 等于最优 dual value;
- LP-relaxation 可以把 NP-hard 的 IP 放松成 LP,再通过 rounding 得到 approximation algorithm;
- Minimum Vertex Cover 的 LP rounding 给出
-approximation; - primal-dual analysis 可以用 dual certificate 解释 matching 和 online matching 的 approximation/competitive ratio。