最小顶点覆盖问题

最小顶点覆盖问题是指:给定边集、顶点集及其权重,求权重最小的顶点集,使每条边至少有一个顶点在集合中。

它的整数规划可以写为:

$$
\begin{align*}
\min \sum^n_{i=1} &w_ix_i \\
\mathbf{s.t.}\ \ x_i + x_j \ge 1 &,\forall(i,j)\in E
\\ x_{ij} \in& {0,1}
\end{align*}
$$

线性规划 Rounding

可以将整数规划问题 $IP$ 转化为线性规划问题 $LP$ 。对于最小化问题,线性规划的最优解 $C_{LP} $ 小于等于整数规划的最优解 $ C_{IP}$ 。此时,若对线性规划的最优解进行 rounding 从而得到一个可行解,若知道 rounding 的近似比为 $\alpha$,则可以得到该算法的近似比:

$$
\frac{C_{\mathrm{appro}}}{C_{IP}} \le \frac{C_{\mathrm{appro}}}{C_{LP}} \le \alpha
$$

顶点覆盖问题为例

可以将上述整数规划转化为线性规划问题

$$
\begin{align*}
\min \ &\sum^n_{i=1} w_ix_i \\
\mathbf{s.t.}\ \ x_i + x_j \ge 1 &,\forall(i,j)\in E \\
x_{ij} &\ge 0
\end{align*}
$$

对线性规划的最优解进行简单的 rounding:设 $x^*$ 为线性规划的最优解,
$$
\begin{align*}
x^*=\left[ \begin{array}{}x_1^*\\…\\x_n^* \end{array} \right]\rightarrow \mathbf{rounding}\rightarrow \bar{x}=\left[ \begin{array}{}\ 1\\\ 0\\…\\\ 1 \end{array} \right],\bar{x} _i = \begin{cases}1, &x _ i^*\ge\frac{1}{2}\\0,&x _ i^*<\frac{1}{2}\end{cases}
\end{align*}
$$

此时有:
$$
\begin{align*}
C _ {LP} &= \sum _ {i=1}^n w_ix_i^* \\
C _ {appro} &= \sum _ {i=1}^n w_i\bar x_i \le 2 \sum_{i=1}^n w_ix_i^* =2 C _ {LP}\\
\frac{C _ {\mathrm{appro}}}{C _ {IP}} &\le \frac{C _ {\mathrm{appro}}}{C _ {LP}} \le 2
\end{align*}
$$

因此,该算法的近似比为 2 。

但是,解线性规划太麻烦了。。。

原始对偶方法

回忆一下之前学的原始对偶方法:考虑原问题($LP$) 为:

$$
\begin{align*}
\min_x \sum _ {j=1}^nc_jx_j \\
\mathbf{s.t.}\ \ \sum _ {j=1}^na_{ij}x_j\ge b_i \\
x_j \ge 0
\end{align*}
$$

对偶问题 ($DLP$)为

$$
\begin{align*}
\max_y \sum _ {i=1}^m b_iy_i \\
\mathbf{s.t.}\ \ \sum _ {i=1}^m y_ia_{ij} \le c_j\\
y_i\ge 0
\end{align*}
$$

互补松弛条件:设 $x$ 和 $y$ 分别为原线性规划和对偶问题的可行解, $x$ 和 $y$ 为最优解当且仅当原问题的可行解 $x$ 与 $y$ 满足:
(PCS : primer complementary slackness; DCS: Dual complementary slackness)

$$
\begin{align*}
\mathbf{PCS}:\left(c_j-\sum _ {i=1}^my_ia_{ij}\right)x_j = 0\\
\mathbf{DCS}:\left(b_i-\sum _ {j=1}^na_{ij}x_j\right)y_i = 0
\end{align*}
$$

线性规划的原始对偶算法为:

  1. 从可行的对偶问题解和非可行的原问题解开始;
  2. 迭代修改对偶解,在满足互补松弛性的前提下修改原始解,使原始解逐步可行;
  3. 当互补松弛性条件和可行性同时满足时,即得到最优的原问题解和对偶问题解

松弛的互补松弛条件:设 $x$ 和 $y$ 分别为原线性规划和对偶问题的可行解,$\alpha\ge 1, \beta \ge 1$

$$
\begin{align*}
\alpha -松弛:x_j = 0 \quad \mathbf{or}\quad \frac{c_j}{\alpha}\le\sum _ {i=1}^my_ia_{ij}\le c_j\\
\beta -松弛:y_i = 0 \quad \mathbf{or}\quad b_i\le\sum _ {j=1}^nx_ja_{ij}\le \beta\cdot b_i
\end{align*}
$$

原始对偶方法近似算法为:

  1. 从可行的对偶问题解和非可行的原问题整数解开始;
  2. 迭代修改对偶解,在满足松弛的互补松弛性与整数性的前提下,使原始解逐步可行;
  3. 当 $( \alpha , \beta )$ 互补松弛性条件和可行性同时满足时,即得到最优的原问题的一个近似解

定理: 满足 $( \alpha , \beta )$ 互补松弛性条件原始对偶方案近似算法的近似比不超过 $\alpha \beta $ 。

$$
\begin{align*}
C_{\mathrm{appro}} &= \sum_{j=1}^nc_jx_j\\
&\le \alpha\cdot \sum_{j=1}^n\left( \sum_{i=1}^ma_{ij}y_i\right)x_j\quad(\mathrm{if}\ x_j\neq 0, c_j\le \alpha\cdot\left( \sum_{i=1}^ma_{ij}y_i\right))\\
&=\alpha \cdot\sum_{i=1}^m\left( \sum_{j=1}^na_{ij}x_j\right)y_i\\
&\le \alpha\cdot\beta\cdot \sum_{i=1}^m b_iy_i\quad(\mathrm{if}\ y_i\neq 0, \sum_{j=1}^na_{ij}x_j\le \beta\cdot b_i)\\
&\le \alpha\cdot\beta\cdot C_{LP} \quad(弱对偶定理)\\
&\le \alpha\cdot\beta\cdot C_{IP}
\end{align*}
$$

顶点覆盖问题为例

顶点覆盖问题的对偶问题为:

$$
\begin{align*}
\max &\sum_{e\in E}y_e\\
\mathbf{s.t.}\quad \sum_{i\in e}y_e&\le w_i,\forall i \in V\
y_e &\ge 0
\end{align*}
$$

互补松弛条件为:

$$
\begin{align*}
x_i(w_i-\sum_{i\in e}y_e) = 0\\
y_e(x_i+x_j-1) = 0
\end{align*}
$$

可以将互补松弛条件松弛为:

$$
\begin{align*}
x_i = 0 \quad \mathbf{or}\quad w_i=\sum_{i\in e} y_e\\
y_e = 0 \quad \mathbf{or}\quad 1\le x_i+x_j\le 2
\end{align*}
$$

此时 $\alpha= 2, \beta = 1$ ,因此,若找到满足以上条件的可行整数解,近似比为 2

迭代算法

  1. [从可行的对偶问题解和非可行的原问题整数解开始]
    $ x = 0, y = 0$, 所有边未标记
  2. [ 修改对偶解,满足松弛的互补松弛条件]
    任选⼀条未标记的边 $e$ ,提升 $y_e$, 直⾄其某⼀端顶点的约束变紧: $w_i-\sum_{i\in e}y_e= 0$
  3. [修改原始解,使原始解逐步可行]
    $ x_i = 1$ , 表示将顶点 i 加入覆盖,将与顶点 i 相连的边标记
  4. 重复步骤 2.3 直至所有的边标记

所有的边都被标记表示得到了一个顶点覆盖集合, 由于 a) $ x_i = 1$ 时 $w_i-\sum_{i\in e}y_e= 0$ 成立; b) 一条边只连接两个顶点, $1\le x_i+x_j\le 2$ 。此时满足松弛的互补松弛条件, 因此该算法的近似比为 2 。

image-20200209120337756

算法 2

  1. $ x = 0, y = 0$, 所有边未标记
  2. 提升所有未标记的边 $y_e$, 直⾄其某⼀顶点的约束变紧: $w_i-\sum_{i\in e}y_e= 0$
  3. $ x_i = 1$ , 表示将顶点 i 加入覆盖,将与顶点 i 相连的边标记
  4. 重复步骤 2.3 直至所有的边标记

分析同理