Author: Sijin Yu
本文基本只作简单的翻译工作. 未经作者授权不得转载.
线性规划可以表示为
min c ⋅ x subject to A x ≥ b \begin{align*} \min ~~~& c\cdot x\\ \text{subject to }~~& Ax\geq b \end{align*} min subject to c⋅xAx≥b
其中, n n n 为变量个数 ( x x x 的维度), m m m 为非平凡约束的个数.
则:
min c ⋅ x subject to A x ≥ b \begin{align*} \min ~~~& c\cdot x\\ \text{subject to }~~& Ax\geq b \end{align*} min subject to c⋅xAx≥b
基: A A A 中 n n n 列向量组成的线性无关的可逆矩阵 (就是 B B B).
基向量: 基 B B B 中任意一个列向量.
基本解: B x = b B Bx=b_B Bx=bB 的解.
可行解: 在多面体 A x ≥ b Ax\geq b Ax≥b 中的解.
基本可行解: 同时是基本解和可行解的解.
设 x x x 为一个基本可行解, 令 supp ( x ) : = { i : x i > 0 } \text{supp}(x):=\{i:x_i>0\} supp(x):={i:xi>0}.
定理: 对于一个凸集 k k k 与凸集外一点 x x x, 总存在超平面使得 k k k 与 x x x 分居两侧.
Separation Oracle: 给定一个点 x x x, 其关于凸集合 k k k 的 separation oracle 为: 要么说明 x ∈ k x\in k x∈k, 要么返回一个分割 x x x 与 k k k 的超平面.
椭球算法是一个在多项式时间内解决线性规划问题的算法.
Step 1 猜想一个可能的 M M M, 判断 c ⋅ x ≤ M c \cdot x\leq M c⋅x≤M 和约束 A x ≥ b Ax\geq b Ax≥b 是否满足.
经过有限次迭代, M M M 趋于取最优解时 c ⋅ x c\cdot x c⋅x 的值.
Step 1 的判断本质上是将 c ⋅ x ≤ M c\cdot x\leq M c⋅x≤M 放入约束中, 并针对 x x x 和新约束对应的多面体执行 Separation Oracle 算法.
当线性规划的解只能取整数解时, 即原 LP 问题变为:
min c ⋅ x subject to A x ≥ b x j ∈ N , ∀ j ∈ [ n ] \begin{align*} \min ~~~& c\cdot x\\ \text{subject to }~~& Ax\geq b\\ & x_j \in \mathbb{N}, \forall j\in[n] \end{align*} min subject to c⋅xAx≥bxj∈N,∀j∈[n]
则, 从线性规划变为整数规划, 问题从多项式变为 NP-hard.
现在考虑 0-1 规划问题, 即 x j ∈ { 0 , 1 } , ∀ j ∈ [ n ] x_j \in \{0,1\}, \forall j\in[n] xj∈{0,1},∀j∈[n].
线性松弛: 将整数约束 x j ∈ { 0 , 1 } x_j \in \{0,1\} xj∈{0,1} 用分数约束 0 ≤ x j ≤ 1 0\leq x_j \leq1 0≤xj≤1 替代, 在多项式时间内可解得分数约束下的最优解. 然后使用 pipage rounding 将分数下的最优解 “round” 到整数下, 可以证明这样的解是一个近似最优.
记 P \mathcal{P} P 为一 n n n 维多面体. 一个 0-1 规划问题为:
max { F ( x ) : x ∈ P ∩ { 0 , 1 } n } \max\{F(x): ~~~x\in\mathcal{P}\cap\{0,1\}^n\} max{F(x): x∈P∩{0,1}n}
其中, F ( x ) F(x) F(x) 为目标函数, P \mathcal P P 为约束条件.
则, 存在 pipage rounding 的方法,使: 给定任意的分数向量 x ∈ P x\in\mathcal P x∈P, 总能找到整数向量 x int ∈ P x^{\text{int}}\in\mathcal P xint∈P, 使得 F ( x int ) ≥ F ( x ) F(x^{\text{int}})\geq F(x) F(xint)≥F(x) 成立.
记 P : = { x ∈ [ 0 , 1 ] n : ∑ j = 1 n x j = k } \mathcal P:=\{x\in[0,1]^n: \sum_{j=1}^n x_j=k\} P:={x∈[0,1]n:∑j=1nxj=k}.
假设 x x x 是 P \mathcal P P 中的非整数向量, 则至少存在两个分数坐标, 记为 x p x_p xp 和 x q x_q xq.
令 e p e_p ep 和 e q e_q eq 为 x p x_p xp 和 x q x_q xq 分量方向上的单位向量. 即 e p e_p ep 在第 p p p 个坐标为 1 1 1, 其它坐标为 0 0 0, e q e_q eq 同理.
令 v x = e p − e q v_x=e_p-e_q vx=ep−eq, 令 α x = min ( 1 − x p , x q ) \alpha_x=\min(1-x_p,x_q) αx=min(1−xp,xq), 令 β x = min ( 1 − x q , x p ) \beta_x=\min(1-x_q,x_p) βx=min(1−xq,xp).
则 x + α x v x x+\alpha_x v_x x+αxvx 和 x − β x v x x-\beta_x v_x x−βxvx 总是能在第 p p p 和 q q q 分量上取整数, 且由于 F ( x ) F(x) F(x) 在 v x v_x vx 是凸的, 则必有 F ( x + α x v x ) ≥ F ( x ) F(x+\alpha_x v_x)\geq F(x) F(x+αxvx)≥F(x) 和 F ( x − β x v x ) ≥ F ( x ) F(x-\beta_x v_x)\geq F(x) F(x−βxvx)≥F(x) 成立.
满足上假设时, 存在 Pipage Rounding 的算法, 将一个线性规划的最优解转化为整数规划的近似最优解 (在 Pipage Rouning 下整数规划也是最优解).
若 Pipage Rounding 是可应用的, 必然存在: P \mathcal P P 是整数的多面体.
对于集函数 f : 2 U → Z ≥ 0 f:2^U\to \mathbb Z_{\geq 0} f:2U→Z≥0 而言:
次模 (submodular): (子模) f f f 是次模的, 若 ∀ A , B ⊆ U \forall A,B \subseteq U ∀A,B⊆U, 总有 f ( A ) + f ( B ) ≥ f ( A ∪ B ) + f ( A ∩ B ) f(A)+f(B)\geq f(A\cup B)+f(A\cap B) f(A)+f(B)≥f(A∪B)+f(A∩B).
单调 (monotone): f f f 是单调的, 若 ∀ A ⊆ B \forall A\subseteq B ∀A⊆B, 总有 f ( A ) ≤ f ( B ) f(A)\leq f(B) f(A)≤f(B).
I \mathcal I I 被称为独立集 (independent sets).
基 (base): T T T 是拟阵 M M M 的基, 若 T ∈ I T\in\mathcal I T∈I 且 I \mathcal I I 中没有势大于 ∣ T ∣ |T| ∣T∣ 的独立集.
凸包 (convex hull): 给定一个集合 X X X, 所有包含 X X X 的凸集的交集 S S S 称为 X X X 的凸包.
X X X 的凸包可以用 X X X 内所有点的凸组合来构造. 在二维欧式空间中, 一些点的凸包可以想象为将它们刚好包围起来的多边形(顶点为这些点构成)的内部所有点.
特征向量 (characteristic vector): 给定一个集合 S ∈ I S\in\mathcal I S∈I, S S S 的特征向量为一个 { 0 , 1 } n \{0,1\}^n {0,1}n 内的向量, 其第 i i i 个分量为 1 1 1 若 i ∈ S i\in S i∈S.
秩 (rank): 给定一个集合 S ⊆ U S\subseteq U S⊆U, S S S 的秩 r M ( S ) r_M(S) rM(S) 为 S S S 的最大独立子集的势.
拟阵多面体 (matroid polytope): 拟阵多面体 P \mathcal P P 被定义为:
P : = { x ∈ [ 0 , 1 ] n : ∑ i ∈ S x i ≤ r M ( S ) , ∀ S ⊆ [ n ] } . \mathcal P:=\{x\in[0,1]^n:~~~\sum_{i\in S}x_i\leq r_M(S),\forall S\subseteq[n]\}. P:={x∈[0,1]n: i∈S∑xi≤rM(S),∀S⊆[n]}.
可被抽象为最大生成树问题的拟阵为可图拟阵 (graphic matroid).
令 G = ( V , E ) G=(V,E) G=(V,E) 为简单图, 拟阵 M : = ( E , I ) M:=(E,\mathcal I) M:=(E,I), 其中 I \mathcal I I 为 G G G 的全体无圈子图. 拟阵 M M M 的一个基 T T T 表示图 G G G 的一个最大生成树. 其中次模函数 f f f 为 f ( S ) = ∣ S ∣ f(S)=|S| f(S)=∣S∣. 给定一个边集 S ⊆ E S\subseteq E S⊆E, S S S 的秩 r M ( S ) r_M(S) rM(S) 为 S S S 中最大无圈子图的边数.
则拟阵多面体为 P : = { x ∈ [ 0 , 1 ] ∣ E ∣ : ∑ i ∈ S x i ≤ r M ( S ) , ∀ S ⊆ 2 E } \mathcal P:=\{x\in[0,1]^{|E|}:~~~\sum_{i\in S}x_i\leq r_M(S),\forall S\subseteq 2^E\} P:={x∈[0,1]∣E∣: ∑i∈Sxi≤rM(S),∀S⊆2E}.
目标函数为 max f ( x ) = ∑ i x i \max f(x)=\sum_{i}x_i maxf(x)=∑ixi.
给定次模函数 f f f, 定义 F : [ 0 , 1 ] n → R ≥ 0 F:[0,1]^n\to\mathbb{R}_{\geq 0} F:[0,1]n→R≥0 如下:
F ( x 1 , . . . , x n ) : = ∑ S ⊆ [ n ] ( f ( S ) ∏ i ∈ S x i ∏ i ∉ S ( 1 − x i ) ) F(x_1,...,x_n):=\sum_{S\subseteq[n]}\left(f(S)\prod_{i\in S}x_i\prod_{i\notin S}(1-x_i)\right) F(x1,...,xn):=S⊆[n]∑⎝ ⎛f(S)i∈S∏xii∈/S∏(1−xi)⎠ ⎞
且:
F ( x 1 , . . . , x n ) F(x_1,...,x_n) F(x1,...,xn) 可以看作是 f ( S ) f(S) f(S) 的期望值, 其中 S S S 由对各元素 i i i 以独立的概率 x i x_i xi 采样获得.
若 F ( x 1 , . . . , x n ) F(x_1,...,x_n) F(x1,...,xn) 满足上述要求, 且 ∇ F \nabla F ∇F 可知, 则有:
若给定向量 v ∈ P v\in\mathcal P v∈P 与各分量权重 w j w_j wj, max ∑ j w j v j \max\sum_{j}w_j v_j max∑jwjvj 可在多项式时间内被找到, 则对于优化问题 max F ( x ) : x ∈ P \max F(x):x\in \mathcal P maxF(x):x∈P, 存在一个随机的 1 − 1 e 1-\frac{1}{e} 1−e1 近似算法.
一个图 G = ( V , E ) G=(V,E) G=(V,E) 的匹配 (matching) 是一个边的集合, 其中任意两条边没有公共顶点.
令 f ( e ) = 1 f(e)=1 f(e)=1, 若 e e e 在匹配中; 否则 f ( e ) = 0 f(e)=0 f(e)=0.
整数匹配问题目标函数是 max ∑ e ∈ E f ( e ) \max \sum_{e\in E} f(e) max∑e∈Ef(e).
约束条件是 ∀ v ∈ V , ∑ e ∋ v f ( e ) ≤ 1 , f ( e ) ∈ { 0 , 1 } \forall v\in V,\sum_{e\ni v}f(e)\leq 1, f(e)\in\{0,1\} ∀v∈V,∑e∋vf(e)≤1,f(e)∈{0,1}.
匈牙利算法可在多项式时间内求解整数匹配问题.
在分数匹配中, 将整数匹配的 f ( e ) ∈ { 0 , 1 } f(e)\in\{0,1\} f(e)∈{0,1} 整数限制改为分数限制 f ( e ) ∈ [ 0 , 1 ] f(e)\in[0,1] f(e)∈[0,1].
给定一个图 G = ( V , E ) G=(V,E) G=(V,E), 分数函数 f : E → [ 0 , 1 ] f:E\to [0,1] f:E→[0,1], 且对于每个 v ∈ V v\in V v∈V, 以 v v v 为顶点的各边分数之和至多为 1 1 1.
分数匹配的目标函数是 max ∑ e ∈ E f ( e ) \max \sum_{e\in E} f(e) max∑e∈Ef(e).
约束条件是 ∀ v ∈ V , ∑ e ∋ v f ( e ) ≤ 1 , f ( e ) ∈ [ 0 , 1 ] \forall v\in V,\sum_{e\ni v}f(e)\leq 1, f(e)\in[0,1] ∀v∈V,∑e∋vf(e)≤1,f(e)∈[0,1].
令 x ( e ) = f ( e ) x(e)=f(e) x(e)=f(e), 拟阵多面体为 P : = { x ∈ [ 0 , 1 ] ∣ E ∣ : ∑ e ∋ v x ( e ) ≤ 1 , ∀ v ∈ V , ∀ e ∈ E } \mathcal P:=\{x\in[0,1]^{|E|}:~~~\sum_{e\ni v}x(e)\leq1,\forall v\in V,\forall e\in E\} P:={x∈[0,1]∣E∣: ∑e∋vx(e)≤1,∀v∈V,∀e∈E}. 拟阵的一个基为 T T T.
目标: 给定一个分数点 x x x, 将其 round 到一个基 T T T 上.
tight: 一个集合 S ⊆ E S\subseteq E S⊆E 关于分数点 x x x 是 tight 的, 若 x ( S ) = r M ( S ) x(S)=r_M(S) x(S)=rM(S).
若两个有交集的集合 S , T ⊆ E S,T\subseteq E S,T⊆E 关于 x x x 都是 tight 的, 则 S ∩ T , S ∪ T S\cap T,S\cup T S∩T,S∪T 都是 tight 的.
Step 1: 给定非整数点 x x x, 选择一个尽量小的 tight 的集合 T T T. 注意, x x x 至少有两个非整数点 0 < x ( e ) < 1 , 0 < x ( f ) < 1 0
Step 2: 过点 x x x 画一条直线, 记往 x ( e ) x(e) x(e) 递增方向为 + 1 +1 +1, 往 x ( f ) x(f) x(f) 递增方向为 − 1 -1 −1. 保持 x ( e ) + x ( f ) x(e)+x(f) x(e)+x(f) 不变, 随机地在该直线上移动, 直到碰到多面体的表面.
记 x 1 x_1 x1 和 x 2 x_2 x2 分别为直线在 + 1 +1 +1 和 − 1 -1 −1 方向上与拟阵多面体的交点, 我们以概率 p p p 从 x x x 到达 x 1 x_1 x1, 以概率 1 − p 1-p 1−p 从 x x x 到达 x 2 x_2 x2. p p p 取 p x 1 + ( 1 − p ) x 2 = x px_1+(1-p)x_2=x px1+(1−p)x2=x 的解.
这一做法得到得到一个 tight 的集合 S S S.
Step 3: 令 x ← x 1 x\gets x_1 x←x1 (或 x 2 x_2 x2), T ← S ∩ T T\gets S\cap T T←S∩T, 重复 Step 1, 直到 x x x 为整数点.
算法至多需要 ∣ E ∣ ⋅ r M ( E ) |E|\cdot r_M(E) ∣E∣⋅rM(E) 次迭代.
P [ S ⊆ T ] ≤ ∏ e ∈ T x ( e ) . \mathbb P[S\subseteq T]\leq\prod_{e\in T}x(e). P[S⊆T]≤e∈T∏x(e).
一个二部图的最小代价完美匹配问题 (min-cost perfect matching problem) 描述如下:
给定一个二部图 G = ( A , B , E ) G=(A,B,E) G=(A,B,E),
min ∑ e ∈ E c e x e subject to x ( δ ( a ) ) = 1 ∀ a ∈ A x ( δ ( b ) ) = 1 ∀ b ∈ B 0 ≤ x e ≤ 1 ∀ e ∈ E \begin{align*} \min ~~~& \sum_{e\in E}c_e x_e\\ \text{subject to }~~& x(\delta(a))=1 && \forall a\in A\\ & x(\delta(b))=1 && \forall b\in B\\ & 0\leq x_e\leq1 && \forall e\in E \end{align*} min subject to e∈E∑cexex(δ(a))=1x(δ(b))=10≤xe≤1∀a∈A∀b∈B∀e∈E
令 x ∗ x^* x∗ 是一个最优解 (松弛情况).
定理: 对于任意一个 x ∗ x^* x∗, 存在一个边 e e e, 使 x e ∗ = 0 x_e^*=0 xe∗=0 或 x e ∗ = 1 x_e^*=1 xe∗=1.
使用反证法, 若对所有 e ∈ E e\in E e∈E 都有 0 < x e < 1 0
Rounding: 如果 x e ∗ = 0 x_e^*=0 xe∗=0, 我们删除 e e e. 如果 x e ∗ = 1 x_e^*=1 xe∗=1, 我们把这条边放入 matching 里, 并移除这条边的两个端点. 然后, 我们得到了全新的 min-cost perfect matching 问题, 应用同样的方法, 直到得到整数解为止.
记 F ⊆ E F\subseteq E F⊆E 为分数边集合. 若 F = ∅ F=\emptyset F=∅, 则完成. 否则, 在子图 ( A , B , F ) (A,B,F) (A,B,F) 中找到 (在线性时间内) 极大路径 P P P. 并将边集 P P P 分为两个匹配 M 1 M_1 M1 和 M 2 M_2 M2. 并且定义:
α = min { γ > 0 : ( ( ∃ e ∈ M 1 : x e + γ = 1 ) ∨ ( ∃ e ∈ M 2 : x e − γ = 0 ) ) ; } β = min { γ > 0 : ( ( ∃ e ∈ M 1 : x e − γ = 1 ) ∨ ( ∃ e ∈ M 2 : x e + γ = 0 ) ) ; } \begin{align*} \alpha=\min\{ \gamma>0:((\exists e\in M_1:x_e+\gamma=1 )\vee(\exists e\in M_2:x_e-\gamma=0)); \}\\ \beta =\min\{ \gamma>0:((\exists e\in M_1:x_e-\gamma=1 )\vee(\exists e\in M_2:x_e+\gamma=0));\} \end{align*} α=min{γ>0:((∃e∈M1:xe+γ=1)∨(∃e∈M2:xe−γ=0));}β=min{γ>0:((∃e∈M1:xe−γ=1)∨(∃e∈M2:xe+γ=0));}
以概率 α α + β \frac{\alpha}{\alpha+\beta} α+βα, 对于所有 e ∈ M 1 e\in M_1 e∈M1, 置 x e : = x e + α x_e:=x_e+\alpha xe:=xe+α; 对所有 e ∈ M 2 e\in M_2 e∈M2, 置 x e : = x e − α x_e:=x_e-\alpha xe:=xe−α.
以概率 β α + β \frac{\beta}{\alpha+\beta} α+ββ, 对于所有 e ∈ M 1 e\in M_1 e∈M1, 置 x e : = x e − β x_e:=x_e-\beta xe:=xe−β; 对所有 e ∈ M 2 e\in M_2 e∈M2, 置 x e : = x e + β x_e:=x_e+\beta xe:=xe+β.
对新获得的图, 执行一样的算法, 直到获得整数解.
[1] Lecture Notes, CSE 599: Recent Developments in Approximation Algorithms.
[2] Lecture Notes, CIS800: Techniques in Approximation Algorithms, Fall 2010.
[3] Gandhi R, Khuller S, Parthasarathy S, et al. Dependent rounding in bipartite graphs[C]//The 43rd Annual IEEE Symposium on Foundations of Computer Science, 2002. Proceedings. IEEE, 2002: 323-332.