线性规划(1):线性规划基础

Last updated on May 20, 2025 am

本文为SJTU-AI2615算法课程的知识点复习,主要复习内容为线性规划概述、LP对偶、LP松弛

线性规划基础

标准型

maximizec1x1+c2x2++cnxnsubject toa11x1+a12x2++a1nxnb1a21x1+a22x2++a2nxnb2am1x1+am2x2++amnxnbmx1,x2,,xn0\begin{align*} \text{maximize} & \quad c_1x_1 + c_2x_2 + \cdots + c_nx_n \\ \text{subject to} &\quad a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n \leq b_1 \\ &\quad a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n \leq b_2 \\ &\quad \vdots \\ &\quad a_{m1}x_1 + a_{m2}x_2 + \cdots + a_{mn}x_n \leq b_m \\ &\quad x_1, x_2, \ldots, x_n \geq 0 \end{align*}

关键特征

  • 可行域是凸集
  • 局部最大值一定是全局最大值
  • 最优解存在且出现在可行域的顶点处

化标准型

其他形式化为标准型的方法

单纯形法

算法步骤

  1. 选择初始顶点:任意可行顶点
  2. 迭代移动:沿边移动到相邻顶点,要求目标函数值增加
    • 将当前顶点作为原点,对目标函数和约束条件换元
  3. 终止条件:无法找到更优的相邻顶点时停止

时间复杂度

  • 最坏情况:(mn)\begin{pmatrix} m \\ n \end{pmatrix}mm 个约束,nn 个变量),指数级
  • 但实际效率高

最大流问题

  • 可建模为 LP 问题
  • Ford-Fulkerson 算法本质是单纯形法的实现

LP 对偶

对偶问题构造

原始问题:

maximizecTxsubject toAxbx0\begin{align*} \text{maximize} &\quad \bm{c}^T\bm{x} \\ \text{subject to} &\quad A\bm{x} \leq \bm{b} \\ &\quad \bm{x} \geq \bm{0} \end{align*}

对偶问题:

minimizebTysubject toATycy0\begin{align*} \text{minimize} &\quad \bm{b}^T\bm{y} \\ \text{subject to} &\quad A^T\bm{y} \geq \bm{c} \\ &\quad \bm{y} \geq \bm{0} \end{align*}

对偶定理

  • 弱对偶定理:对偶问题的目标值始终 \ge 原始问题的目标值
  • 强对偶定理:若两者均有可行解,则最优目标值相等

LP 松弛

整数规划(Integer Programming)

要求变量为整数:

maximizecTxsubject toAxbx0xZn\begin{align*} \text{maximize} &\quad \bm{c}^T\bm{x} \\ \text{subject to} &\quad A\bm{x} \leq \bm{b} \\ &\quad \bm{x} \le \bm{0} \\ &\quad \bm{x} \in \mathbb{Z}^n \end{align*}

  • 即使对于 xi{0,1}x_i \in \{0,1\},整数规划也是 NP 完全问题

LP 松弛策略

  1. 松弛变量:将 xi{0,1}x_i \in \{0,1\} 松弛为 0xi10 \leq x_i \leq 1
  2. 求解 LP:通过求解 LP 获得分数解
  3. 舍入策略:将分数解转换为整数解
  • 我们希望得到的解可行且有近似度保证

顶点覆盖问题

LP 松弛策略

  • 整数规划模型:

minimizevVxvsubject toxu+xv1(u,v)Exv{0,1}vV\begin{align*} \text{minimize} &\quad \sum_{v \in V} x_v \\ \text{subject to} &\quad x_u + x_v \geq 1 &&\quad \forall (u,v) \in E \\ &\quad x_v \in \{0,1\} &&\quad \forall v \in V \end{align*}

  • LP 松弛与舍入
  1. xv{0,1}x_v \in \{0,1\} 松弛为 0xv10 \leq x_v \leq 1
  2. 对解 {xv}vV\{x_v^*\}_{v \in V} 舍入:解 S={vxv12}S = \{v \vert x_v^* \ge \dfrac{1}{2}\}

解的质量

  • 可行:对每条边 (u,v)E(u, v) \in E,有 xu+xv1x_u^* + x_v^* \ge 1,从而 xu12x_u^* \ge \dfrac{1}{2}xv12x_v^* \ge \dfrac{1}{2},即至少有一个点被选中
  • 2-近似S2OPT(LP)2OPT(IP)\vert S \vert \le 2 \mathrm{OPT(LP)} \le 2 \mathrm{OPT(IP)}

Primal Dual 分析

顶点覆盖问题

  • 原始问题

minimizevVxvsubject toxu+xv1(u,v)Exv0vV\begin{align*} \text{minimize} &\quad \sum_{v \in V} x_v \\ \text{subject to} &\quad x_u + x_v \geq 1 &&\quad \forall (u,v) \in E \\ &\quad x_v \ge 0 &&\quad \forall v \in V \end{align*}

  • 对偶问题

minimizeeEyesubject tovN(u)y(u,v)1uVy(u,v)0(u,v)E\begin{align*} \text{minimize} &\quad \sum_{e \in E} y_e \\ \text{subject to} &\quad \sum_{v \in N(u)} y_{(u, v)} \le 1&&\quad \forall u \in V \\ &\quad y_{(u, v)} \ge 0 &&\quad \forall (u, v) \in E \end{align*}

注意到,顶点覆盖问题的对偶问题是最大匹配问题

二分图匹配的贪心算法

  • 策略:按任意顺序将 BB 中的点与未被匹配的邻居匹配
  • 2-近似:对 OPT 中的任意一条边,至少有一个端点被匹配

2-近似的 Primal Dual 证明

  • 同时维护一个 Dual 的解:每选中一条边,即 y(u,v)=1y_{(u, v)} = 1,分摊到顶点 xu=0.5x_u = 0.5xv=0.5x_v = 0.5,从而有 uxu=eye=ALG\sum_u x_u = \sum_e y_e = \mathrm{ALG}
  • 由于 (u,v)E\forall (u, v) \in Exu+xv0.5x_u + x_v \ge 0.5

2ALG=2vxvOPT(Dual)OPT(Primal)OPT(Matching IP)2 \cdot \mathrm{ALG} = 2 \cdot \sum_v x_v \ge \mathrm{OPT(Dual)} \ge \mathrm{OPT(Primal)} \ge \mathrm{OPT(Matching\text{ }IP)}

在线二分图匹配的 Ranking 算法(分数版本)

  • 分配方式dxu=g(wu)dy\mathrm{d}x_u = g(w_u) \mathrm{d}ydxv=(1g(wu))dy\mathrm{d}x_v = (1 - g(w_u)) \mathrm{d}y
  • xu=0wug(y)dyx_u = \int_0^{w_u} g(y) \mathrm{d}yxv1g(wu)x_v \ge 1 - g(w_u)
  • 问题变为

    maxgminwu0wug(y)dy+1g(wu)\max_{g} \min_{w_u} \int_0^{w_u} g(y) \mathrm{d}y + 1 - g(w_u)

    解得最优的 g(y)=ey1g(y) = e^{y - 1}
  • (11e)(1 - \dfrac{1}{e})-competitive

线性规划(1):线性规划基础
https://cny123222.github.io/2025/05/13/线性规划-1-:线性规划基础/
Author
Nuoyan Chen
Posted on
May 13, 2025
Licensed under