Primal Dual Method

Posted on May 4, 2022 by Yu Cong
Tags:

看了这本书 The primal-dual method for approximation algorithms and its application to network design problems

1 intro

考虑一个线性规划问题

mincTxs.t.Axbx0 \begin{align*} \min \quad &c^Tx\\ s.t. \quad Ax&\geq b\\ x&\geq 0 \end{align*}

他的对偶:

maxbTys.t.ATycy0 \begin{align*} \max \quad &b^Ty\\ s.t. \quad A^Ty&\leq c\\ y&\geq 0 \end{align*}

根据原问题的 kkt 条件中的互补松弛条件(叫做对偶问题的互补松弛条件):

yT(Axb)=0 y^T(Ax-b)=0

同样根据对偶问题的 kkt 的互补松弛条件(叫做原问题的互补松弛条件),有

xT(ATyc)=0 x^T(A^Ty-c)=0

primal dual 方法首先有一个对偶问题的可行解yy,如果能找到一个原问题的可行解xx满足互补松弛条件, 那么xxyy就是原问题和对偶问题的最优解,但是yy如果并非最优解,就找不到可行解xx满足互补松弛条件。于是希望 引入一个新问题,最小化原问题可行解xx对互补松弛条件的违反。首先引入下标集I={i|yi=0},J={j|Ajy=c}I= \{ i|y_i=0 \} ,J= \{j |A^jy=c \},其中 AiA_i表示AA的第ii行,AjA^j表示AA的第jj列(写成行向量),下面是 restricted primal problems:

miniIsi+jJxjs.t.AxibiiIAxisi=biiIx0s0 \begin{align*} \min \quad \sum_{i\notin I} s_i&+\sum_{j\notin J} x_j \\ s.t. \quad Ax_i&\geq b_i & i\in I\\ \quad Ax_i-s_i&= b_i & i\notin I\\ x&\geq 0\\ s&\geq 0 \end{align*}

其中si(iI)s_i(i\notin I)是对对偶问题的互补松弛条件的惩罚项,yi0Aix=biy_i\not ={0}\rightarrow A_ix=b_i; xj(jJ)x_j(j\notin J)是对原问题互补松弛条件的惩罚,Ajycjxj=0A^jy\not ={c_j}\rightarrow x_j=0;

如果 restricted primal problem 的最优解是 0,那么说明找到了原问题的一个完全满足互补松弛条件的可行解xxxxyy应该是原问题和对偶问题的最优解; 如果最优解不是 0,说明yy并非最优解,需要改进(在例子中需要变大)。我们首先考虑 restricted primal problem 的对偶:

maxbTys.t.Ajy0jJAjy1jJyi1iIyi0iI \begin{align*} \max \quad &b^Ty'\\ s.t. \quad A^jy'&\leq 0 & j\in J\\ A^jy'&\leq 1 & j\notin J\\ y'_i&\geq -1 & i\notin I\\ y'_i&\geq 0 & i\in I \end{align*}

这里得说说拉格朗日函数,kkt,线性规划对偶的关系,考虑一个线性规划问题:

mincTxs.t.Axbx0\begin{align*} \min \quad &c^Tx\\ s.t. \quad Ax&\geq b\\ x&\geq 0 \end{align*}

把他当成一个约束优化问题,写出拉格朗日函数:

L(x,λ)=cTxλT(Axb) L(x,\lambda)=c^Tx-\lambda^T(Ax-b)

Axb0Ax-b\geq 0,所以有cTxL(x,λ)c^Tx\geq L(x,\lambda),然后考虑拉格朗日函数的下确界:

L(x,λ)=λTb(cTλTA)x L(x,\lambda)=\lambda^Tb-(c^T-\lambda^TA)x

如果cTλTA>0c^T-\lambda^TA> 0,下界是inf-\inf,如果cTλTA0c^T-\lambda^TA\leq 0,下确界显然是λTb\lambda^Tb.

第二种情况就是线性规划的对偶问题了。cTxL(x,λ)λTbc^Tx\geq L(x,\lambda) \geq \lambda^Tb

继续考虑 restricted primal problem 的对偶,首先由于 restricted primal problem 的最优解是大于 0 的, 上面那个对偶问题一定存在一个解y>0y'>0(线性规划对偶都满足强对偶定理),利用原问题的对偶的可行解yy 和上面的对偶问题的可行解yy'构造一个新的对偶问题的可行解y=y+ϵyy'' =y+\epsilon y',并且显然bTy>bTyb^Ty'' >b^Ty,(ϵ>0\epsilon >0

这样可以得到一个更接近最优解的对偶问题可行解。

为了保证 $y’’ $ 是一个对偶问题的可行解,要满足两个条件 1. y0y'' \geq 0. 这需要ϵminyi<0yiyi\epsilon \leq \min_{y'_i<0}\frac{-y_i}{y'_i} 2. ATycA^Ty'' \leq c,这需要ϵminAjy>0cjAjyAjy\epsilon \leq \min_{A^jy'>0}\frac{c_j-A^jy}{A^jy'}

得到 $y’’ $ 之后重复上面的步骤,每次都能得到一个更接近最优解的对偶问题可行解.

2 an example

assignment problem (minimum-weight perfect matching problem in bipartite graphs)

integer program:
example_IP

可以证明 IP 的线性松弛最优解是整数解。

dual of LP relaxation:
example_dual_LP

primal-dual 要从一个对偶问题的可行解开始。取u=v=0u=v=0

restricted primal:
rp

I=,J={(a,b)E:ua+vb=cab}I=\emptyset,J=\{(a,b)\in E: u_a+v_b=c_{ab}\}

实际上可以证明 restricted primal 的基本可行解中的变量只能取 0,1. 发现这是在求G=(A,B,J)G=(A,B,J)上的最大匹配。

那么对于任意一个对偶问题的解,我们都能写出 restricted primal 问题,而 restriced primal 问题就是求一个二分图的最大匹配。 如果找到的最大匹配是一个完美匹配,可以发现 restricted primal 的目标函数值为 0,说明找到了最优解,否则,继续写出 restricted primal 的对偶:
dualofrp

二分图上 Maximum matching 的对偶实际上是 vertex cover, 在这里 u 取 -1 表示选择了这个点,取 1 表示没选这个点,max u 恰好是在求最小顶点覆盖

上面对于 assignment problem primal-dual 方法给出了一个精确算法,但是过程中有两个条件难以满足: 1. 问题是由整数规划描述的,线性松弛的最优解恰好是整数解 2. 找到 restricted primal problem 之后直接发现了图上的对应问题,有已知的算法来解决这个问题

满足不了这两个条件,得到的就是一个近似算法。

整数规划一般不满足强对偶定理,因此对偶问题的最优解一般与原问题最优解不相等;restricted primal problem 不一定容易解决,那么就放松互补松弛条件 >the central modification made to the primal-dual method is to enforce the primal complementary slackness conditions and relax the dual conditions

primal-dual 方法是对偶问题的可行解出发,看是否有能同时满足互补松弛条件和原问题约束的原问题的解,现在由于条件 2 无法满足, restricted primal 及其对偶难解, 我们就只能根据 primal complementary slackness conditions ,从对偶解来计算原问题的解,而对于 dual conditions,原问题约束有可能未被满足,有可能取等,有可能不取等,对于对偶问题变量是否取 0 未必有影响,因此只根据未被满足的原问题约束来想办法更新对偶解。

我觉得他的思路大概是这样的。

3 design rules

(不是记录 design rules,是想搞清楚 design rules 是怎么来的)

原问题一般都能写成这样的整数规划:

mineEcexes.t.eδ(S)xef(S)xe{0,1} \begin{align*} \min \quad \sum_{e\in E}&c_ex_e\\ s.t. \quad \sum_{e\in \delta(S)}x_e&\geq f(S)\\ x_e&\in \{0,1\} \end{align*}

δ(S)\delta(S)是把VV分成S,VSS,V-S的一个割,f(S):2|V|𝐍f(S):2^{|V|}\rightarrow \mathbf{N}

书中是以 hitting set problem 为例讲解的 design rules,如果f(S):2|V|{0,1}f(S):2^{|V|}\rightarrow \{0,1\},那么这就是 hitting set problem 了

hitting set problem:

Hitting set is an equivalent reformulation of Set Cover.(放到二分图上,分别是选左边和选右边)

NP-Complete.

Given subsets T1,,TpT_1,\ldots,T_p of a ground set EE and given a nonnegative cost cec_e for every element in EE, find a minimum-cost subset AA s.t. ATiA\cap T_i\not ={\emptyset} for i=1,,pi=1,\ldots,p.

hitting set problem 既然是 NP-Complete 问题,很多常见问题都能建立 hitting set 的模型,上面的 IP 是把 ground set 当成图的所有割,需要 hit 的 subsets 当成 f(S)=1f(S)=1的那些割δ(S)\delta(S)

方便起见定义一些符号: * A={e:xe=1}A=\{e:x_e=1\} * yy: dual variable * T1,,TpT_1,\ldots,T_p sets to be hit

根据 part 2 中的 force primal complementary slackness conditions relax dual CSCs 的方法,
  1. y0y\rightarrow 0
  2. AA\rightarrow \emptyset
  3. While k\exists k : ATk=A\cap T_k=\emptyset
  4. \quadIncrease yky_k until eTk:i:eTiyi=ce\exists e\in T_k : \sum_{i:e\in T_i} y_i=c_e
  5. \quad AA{e}A\rightarrow A\cup \{e\}

首先在3中,如何选择TkT_k, 如果存在多个TkT_k怎么选?

这要根据问题来确定。如果找到了多个TkT_k(称为一个 violated set),我们可以同时增加对应的对偶变量yky_k,直到eA:i:eTiyi=ce\exists e\notin A : \sum_{i:e\in T_i} y_i=c_e.

由于整数规划的描述或者 violation oracle 可能没有严格返回f(S)=1f(S)=1的 cut 等问题(比如整数规划的约束是\leq,对于正权无向图的 s-t 最短路来说最短路一定和每个 s-t cut 的交集正好都是一条边,然而换成\leq会让结果 变成单源最短路),AA中的边可能会选的过多,去掉某些边也可能是可行解。由此可以在最后加入一个删边的过程,按照某种顺序(比如加入边的顺序)测试删掉某条边后AA是否 仍是可行解,如果是就删掉这条边。
fig4.3

4 evaluate the performance guarantee

c(A)=eAce=eAi:eTiyi=i=1p|ATi|yi \begin{align*} c(A)&=\sum_{e\in A} c_e\\ &=\sum_{e\in A}\sum_{i:e\in T_i}y_i\\ &=\sum_{i=1}^p|A\cap T_i|y_i \end{align*}

(2th -> 3th line: exchanging the two summations)

α=max{|ATi|}\alpha=\max\{|A\cap T_i|\},根据yiOPT\sum y_i\leq OPT容易得到

c(A)αOPT c(A)\leq \alpha OPT

这种计算近似比的方法必须要得到 A 之后才能算出α\alpha,有些不便,引入一个 minimal augmentation set BB.(BBAA加上极少数量的边从而成为一个可行解,从BB中去掉任何一条边都不是可行解) 由于 design rules 中最后删边的过程,|AfTi||BTi||A_f\cap T_i|\leq |B\cap T_i|AfA_f是最终结果),那么对于任意当前解AA,我们找出对应的BB,分析最大的|BTi||B\cap T_i|(记为β\beta), c(A)βOPTc(A)\leq \beta OPT。尽管 minimal augmentation set 听起来很复杂,这样可以在算法的执行过程中分析。

再考虑 design rules 中的 violated set. 如果考虑每次取出的 violated set 𝒱j\mathcal{V}_j,有

yi=j:Ti𝒱jϵjy_i=\sum_{j:T_i\in \mathcal{V}_j}\epsilon_j

那么

i=1pyi=i=1pj:Ti𝒱jϵj=j=1l|𝒱j|ϵj \begin{align*} \sum_{i=1}^p y_i&=\sum_{i=1}^p\sum_{j:T_i\in \mathcal{V}_j}\epsilon_j\\ &=\sum_{j=1}^{l} |\mathcal{V}_j|\epsilon_j \end{align*}

i=1p|AfTi|yi=i=1p|AfTi|j:Ti𝒱jϵj=j=1l(Ti𝒱j|AfTi|)ϵj \begin{align*} \sum_{i=1}^p|A_f\cap T_i|y_i&=\sum_{i=1}^p|A_f\cap T_i|\sum_{j:T_i\in \mathcal{V}_j}\epsilon_j\\ &=\sum_{j=1}^l(\sum_{T_i\in \mathcal{V}_j}|A_f\cap T_i|)\epsilon_j \end{align*}

比较j=1l(Ti𝒱j|AfTi|)ϵj\sum_{j=1}^l(\sum_{T_i\in \mathcal{V}_j}|A_f\cap T_i|)\epsilon_jj=1l|𝒱j|ϵj\sum_{j=1}^{l} |\mathcal{V}_j|\epsilon_j,

if, for all j[l]j\in[l],

i=1p|AfTi|γ|𝒱j| \sum_{i=1}^p |A_f\cap T_i|\leq \gamma|\mathcal{V}_j|

then

i=1p|AfTi|yi=i=1p|AfTi|j:Ti𝒱jϵj=j=1l(Ti𝒱j|AfTi|)ϵjj=1lγ|𝒱j|ϵj=γi=1pyi \begin{align} \sum_{i=1}^p|A_f\cap T_i|y_i&=\sum_{i=1}^p|A_f\cap T_i|\sum_{j:T_i\in \mathcal{V}_j}\epsilon_j\\ &=\sum_{j=1}^l(\sum_{T_i\in \mathcal{V}_j}|A_f\cap T_i|)\epsilon_j\\ &\leq \sum_{j=1}^l\gamma|\mathcal{V}_j|\epsilon_j\\ &=\gamma\sum_{i=1}^p y_i \end{align}

这还是需要先计算出AfA_f,现在结合上 minimal augmentation set BB

i=1p|AfTi|Ti𝒱(A)|BTi|γ|𝒱j| \sum_{i=1}^p |A_f\cap T_i|\leq \sum_{T_i\in \mathcal{V}(A)}|B\cap T_i| \leq \gamma|\mathcal{V}_j|

同上,γ\gamma就是近似比。

再进一步考虑如果 violation oracle 返回的𝒱\mathcal{V}中有f(S)=0f(S)=0的 cut,那么与上文类似,

Ti𝒱(A)|BTi|γc \sum_{T_i\in \mathcal{V}(A)}|B\cap T_i| \leq \gamma c

cc𝒱(A)\mathcal{V}(A)f(S)=1f(S)=1的 cut 的数量。

design rules 并不是一定最优,只是对于某些问题这样做挺好,对于这些 design rules 现在都有办法通过分析设计出的近似算法的过程来确定近似比了。

5 notes

后来在读 the design of approximation algorithms 中的 chap 7.

首先 Theorem 7.1 的定理f=max|{j:eiSj}|f=\max{|\{j:e_i\in S_j\}|}是近似比,就是 part3 中的 evaluate the performance guarantee 部分第一个定理(参数是α\alpha那个)

对于 part2 中说到的近似算法放松互补松弛条件(CSC),这里又更详细的解释: - enforce primal CSC 意味着如果xi>0x_i>0xix_i在对偶问题里对应的不等式取等。 - relax dual CSC 如果某个对偶变量yi>0y_i>0,在原问题里对应的约束不等式却未必取等。

求近似比的部分中f=max|{j:eiSj}|=j:eiSjxjf=\max{|\{j:e_i\in S_j\}|}=\sum_{j:e_i\in S_j}x_j 也就是yi>0y_i>0在原问题中对应的约束不等式左侧。

因此 relax dual CSC 保证了近似比,而 enforce primal CSC 提供了通过对偶构造原问题可行解的方法。

整数规划的对偶应该是什么样的?对于同一个问题,不同的整数规划建模的对偶最优解都相同吗?

整数规划没有严格意义上的对偶,但是有个叫拉格朗日对偶的东西。

对于同一个问题不同整数规划建模对偶的最优解是不一样的,不同建模的线性松弛最优解都不一样。

拉格朗日对偶大概是这样的东西:(看了知乎上某人的 integer programming 翻译,我推了一下,但基本上变成 latex 公式输入练习了。。。) part1 中有一点拉格朗日函数和对偶的部分,那里用的原问题是一个线性规划, 把他变成整数规划,加入一个xXZx\in X\subset Z的约束,然后求maxλminxλTb(cTλTA)x\max_{\lambda}\min_{x}\lambda^Tb-(c^T-\lambda^TA)x (在xXZx\in X\subset Z的约束下)实际上也就是通过调整λ\lambda,让拉格朗日函数的下确界尽量大。

我总觉得这里拉格朗日函数的最小值就是原来的整数规划最优解,但是实际上不是,拉格朗日函数已经是原问题的松弛了,因为在拉格朗日函数中,扔掉了Axb0Ax-b\geq 0这个 约束,后面的过程根本没有考虑过Axb0Ax-b\geq 0这个约束

IP:

mincTxs.t.Axbx0xZ \begin{align*} \min \quad &c^Tx\\ s.t. \quad Ax&\geq b\\ x&\geq 0\\ x&\in Z \end{align*}

构造f(x)=cTxμT(Axb)cTxf(x)=c^Tx-\mu^T(Ax-b)\leq c^Tx(let μ0\mu\leq 0)

f(x)f(x)的下确界尽量大:g(μ)=maxμminx(cTμTA)x+μTbg(\mu)=\max_{\mu}\min_{x}(c^T-\mu^TA)x+\mu^Tb

写成线性规划的形式:

minηs.t.(cTμTA)x1+μTbη(cTμTA)x2+μTbη(cTμTA)xn+μTbημ0ηR \begin{align*} \min \quad &\eta\\ s.t. \quad (c^T-\mu^TA)x_1+\mu^Tb&\geq \eta\\ (c^T-\mu^TA)x_2+\mu^Tb&\geq \eta\\ &\ldots\\ (c^T-\mu^TA)x_n+\mu^Tb&\geq \eta\\ \mu &\geq 0\\ \eta &\in R \end{align*}

然后写出上面的线性规划的对偶:

mini=1nλi(cTxi)s.t.i=1nλi(Axib)0i=1nλi=1λ0 \begin{align*} \min \quad \sum_{i=1}^n \lambda_i(c^Tx_i)&\\ s.t. \quad \sum_{i=1}^n \lambda_i (Ax_i-b)&\geq 0\\ \sum_{i=1}^n \lambda_i &= 1\\ \lambda &\geq 0 \end{align*}

把此处的xiZx_i\in Z放大为xiRx_i\in R, 由于xiR,xi0x_i\in R, x_i\geq 0是凸集,所以x=i=1nλixiRx=\sum_{i=1}^n \lambda_i x_i\in R,上面的对偶可以直接改写为整数规划的线性松弛。

这说明了通过调整乘子来让拉格朗日函数的下确界最大的这种这种方法获得的解要比线性松弛的解更好,因为上面有一个把xZx\in Z放大到xRx\in R的过程。

然后我就发现了一个问题,观察g(μ)=maxμminx(cTμTA)x+μTbg(\mu)=\max_{\mu}\min_{x}(c^T-\mu^TA)x+\mu^Tb,发现如果取某个μ\mu使得cTμTAc^T-\mu^TA的某一项是小于 0 的, 由于xx在这里的范围是0xZ0\leq x \in Z,为了取到min\minxx对应分量就会取正无穷,那么下确界也就是负无穷了,无法得到一个有效的对偶,因此 取μ\mu必须满足(cTμTA)0(c^T-\mu^TA)\geq 0,这样一来xx一定会取到𝟎\mathbf{0},下确界也就是μTb\mu^Tb,写成一个线性规划问题竟然和原来的整数规划的 线性松弛的对偶一样,但是根据刚刚的证明拉格朗日函数下确界的这种方法应该比线性松弛获得的解更好。

我觉得问题在于:上一段的简单分析应该是没有错误的,这也是为什么 integer programming 中讲拉格朗日对偶只是把一部分约束放入函数中。在处理的过程中, AxbAx-b被扔到了目标函数里面去,而xx的取值范围并没有保证Axb0Ax-b\geq 0。实际上如果把所有约束都放到目标函数内的话拉格朗日对偶就是和线性松弛的对偶一样的。 观察上面xiZx_i\in Z放大为xiRx_i\in R的部分,实际上xix_i是各个分量大于等于 0 的所有 n 维整数向量,他们构成的凸包和xiRx_i\in R构成的完全一样。

6 random thoughts

从寒假开始也算是看了两本书关于 primal-dual 方法的章节。

大多数问题的建模都是整数规划,primal-dual 用的是线性松弛的对偶,找到的可行解也不会比线性松弛的最优解更好, 只有线性松弛的解和整数规划相比比较接近才有很好的近似比,如果像是 feedback vertex set 用 hitting set 建模的整数规划,这种线性松弛最优解近似比是 logn 级别, primal-dual 近似比最好也只能做到 logn 级别了,但是最短路的 hitting set 建模线性松弛最优解和整数规划最优解相等,primal-dual 甚至能得出精确算法(dijkstra), 同样的问题,不同的整数规划建模方法,就有不同的线性松弛,就有不同的近似比。

为什么不直接解线性松弛而要用 primal-dual?我觉得主要原因是原来的整数规划约束个数可能是指数级别,解线性规划会解不出, 但是 primal-dual 有时候(Violation Oracle 能很快给出还没满足的约束)需要维护的对偶变量数量只是多项式级别的。

要用 primal-dual 方法解决一个问题,需要考虑 - 用什么方法来写出整数规划,是否能找出一个能用的 Violation Oracle,线性松弛是否有一个好的近似比 - 根据具体问题是否有好用的 design rules,按照什么方法和顺序找 violated set 等,复杂度又如何 - 怎么分析近似比,能不能做到线性松弛的近似比一样的级别

我发现大概这个整数规划约束有指数多个,一般整数规划和线性松弛差的不大。

对比 The primal-dual method for approximation algorithms and its application to network design problems, chapter 4 这个章节和 The Design of Approximation Algorithms chapter 7, 明显后者更加简单易懂,使用了很多例子,但是我觉得前者要系统很多,而且更加符合逻辑和直觉。首先介绍什么是 classic primal-dual method,从这个方法出发有了设计近似算法的基本框架,如何从整数规划的线性松弛和 LP 的对偶 找到原问题(IP)的可行解,以及后面对用 hitting set 建模抽象出来的函数f(S)f(S)的讨论,而后者通过众多例子介绍了 primal-dual,比较易懂,但是关键部分的近似比证明受例子的影响,没有一般化,感觉很难想到。

根据之前看的两本书,做了 slides.