高效算法II

线性规划(LP)

Standard Form

input: number \(a_{ij},c_j,b_j\)

output: numbers \(x_j\)

\(n = \#decision variables, m=\#conatrains\)

\(\begin{aligned} & \max \sum_{j=1}^n c_j x_j \\ & \text { s.t. } \sum_{j=1}^n a_{i j} x_j=b_i \quad 1 \leq i \leq m \\ & x_j \geq 0 \quad 1 \leq j \leq n \\ & \end{aligned}\)

也可以用矩阵的写法

\(\begin{array}{rr}\max & c^T x \\ \text { s.t. } \quad A x=b \\ & x \geq 0\end{array}\)

转换成Standard Form

  • 小于等于

    \(a-3b+5c\le 12\) 变成 \(a-3b+5c+s=12,s \ge 0\)

  • 大于等于

    \(a-3b+5c\ge 12\) 变成 \(a-3b+5c-s=12,s \ge 0\)

  • min to max:

    \(\min a-3b+5c\) 变成 \(\max -a+4b-5c\)

我们也可以从 Standard Form 变成小于等于或者大于等于

\(a-3b+5c=12\) 变成

  • \(a-3b+5c\le 12\)
  • \(-a+3b-5c\le12\)

如果 \(x\) 要求无限制

  • \(x=x^+-x^-,x^+\ge0,x^-\ge0\)

定义1 线性规划(LP)

\(A \in \mathbb{Q}^{m \times n}, b \in \mathbb{Q}^m, c \in \mathbb{Q}^n, \alpha \in \mathbb{Q}\) , 是否存在 \(x \in \mathbb{Q}^n\) 使得 \(A x=b, x \geq 0, c^T x \geq \alpha\)

插入一段复习:

NP问题和co-NP问题:

Given a solution to an NP problem, the "yes" solution can be verified in polynomial time.

A problem is in co-NP if its "no" instances can be verified in polynomial time.

一般问题要么是P要么是NP-complete, 而NP和co-NP的交集是包含P不包含NP-complete的

有下列问题

  • Is LP in NP?

    answer

    Yes. 因为给定 \(B\) 我们可以计算 associated basic solution \(A_B^{-1} b\) 在多项式复杂度. 答案肯定是有理数,不是无理数.

  • Is LP in co-NP?

    answer

    Yes. 因为反例也可以快速代入验证

  • Is LP in P?

    answer

    Yes.

一些基本定义

对于一个Standard Form 的 LP: \(P=\{x \mid A x=b, x \geq 0\}\)

  • \(P\) 是 feasible region
  • A point \(x\in P\) is feasible point
  • \(P\ne \emptyset\) 那么 LP 是 feasible的,否则就 infeasible
  • LP 是 bounded 若它是feasible且答案不会到无穷大

定义2 linear combination

对于vector \(x_1, \ldots, x_k \in \mathbb{R}^n, \sum \lambda_i x_i\)

  • linear combination, 若 \(\lambda_i \in \mathbb{R}\)
  • affine combination, 若 \(\lambda_i \in \mathbb{R}, \sum_i \lambda_i = 1\),是直线
  • convex combination, 若 \(\lambda_i \in \mathbb{R}, \sum_i \lambda_i = 1, \lambda_i \ge 0\), 是线段
  • conic combination, 若 \(\lambda_i \in \mathbb{R}, \lambda_i \ge 0\), 是一个cone

可以画图理解它们

定义3 Linear space

集合 $X ^n $

  • linear space 若 closed under linear combination
  • affine space 若 closed under affine combination
  • convex 若 closed under convex combination
  • convex cone 若 closed under conic combination

注意,affine space 不是 vector space

定义4 span

对于 \(X \in \mathbb{R}^n\)

  • \(span(X)\)\(X\) 中 linear combination 的集合 (linear hull)
  • \(aff(X)\)\(X\) 中 affine combination 的集合 (affine hull)
  • \(conv(X)\)\(X\) 中 convex combination 的集合 (convex hull)
  • \(cone(X)\)\(X\) 中 conic combination 的集合 (coinc hull)

定义 5 convex function

一个函数 \(f: \mathbb{R}^n \rightarrow \mathbb{R}\) 是 convex 若对于 \(x,y\in \mathbb{R}^n\)\(\lambda \in [0,1]\)

\[ f(\lambda x+(1-\lambda) y) \leq \lambda f(x)+(1-\lambda) f(y) \]

Lemma 6 convex P

\(P\subseteq \mathbb{R}^n\)\(f: \mathbb{R}^n \rightarrow \mathbb{R}\) 是convex,那么下面也是

\[ Q=\{x \in P \mid f(x) \leq t\} \]

?

定义 7 affine subspace

affine subspace \(A\)\(\dim(A)\) 是 vector space \(\{x-a|x\in A\}\) 的维度

定义 8 convex set

convex set \(X\)\(\dim(X)\) 是它的 affine hull \(aff(X)\) 的维度

定义 9 hyperplane

集合 \(H\subseteq \mathbb{R}^n\) 是 hyperplane 若 \(H=\left\{x \mid a^T x=b\right\}\), for \(a \neq 0\).

定义 10 halfspace

集合 \(H'\subseteq \mathbb{R}^n\) 是 (closed) halfspace 若 if \(H=\left\{x \mid a^T x \leq b\right\}\), for \(a\ne 0\).

定义 11 polytop

Polytop \(P\subseteq \mathbb{R}^n\) 是 有限点的 convex hull 的集合 \(P = conv(X)\)

定义 12 Polyhedron

Polyhedron是 有限 half-spaces 的交集 \(\left\{H\left(a_1, b_1\right), \ldots, H\left(a_m, b_m\right)\right\}\) 其中,

\[ H\left(a_i, b_i\right)=\left\{x \in \mathbb{R}^n \mid a_i x \leq b_i\right\} \]

定义 13 Bounded Polyhedron

一个 Polyhedron 是 bounded 若存在 \(B\) 使得 \(\forall x\in P. \|x\|_2 \leq B\)

定理 14 polytop and polyhedron

\(P\) is a bounded polyhedron iff \(P\) is a Polytop.

?

定义 15 supporting hyperplane

\(P\subseteq \mathbb{R}^n,a\in \mathbb{R}^n,b\in \mathbb{R}\) 那么 hyperplane

\[ H(a, b)=\left\{x \in \mathbb{R}^n \mid a^T x=b\right\} \]

\(P\) 的 supporting hyperplane 若 \(\max \left\{a^T x \mid x \in P\right\}=b\)

如果不是的话, \(\max{a^Tx}\) 要么小于 \(b\) 要么大于 \(b\) 不会等于 \(b\)

定义 16 Face

\(P\subseteq \mathbb{R}^n\) \(F\)\(P\) 的 face 若 $F=P $ 或者 \(F = P\cap H\) 对于某些 hyperplane \(H\)

边界上的一部分

定义 17 edge and facet

\(P\subseteq \mathbb{R}^n\)

  • a face \(v\) is vertex 若 \(\{v\}\)\(P\) 的 face
  • a face \(e\) is an edge 若 \(e\) is face and \(\dim(e)=1\)
  • a face \(F\) is a facet 若 \(F\) is face and \(\dim(F)=\dim(P)-1\)

定义 18 等价定义 vertex

给定 polyhedron \(P\). 点 \(x\in P\) 是 vetex 若存在 \(c\in \mathbb{R}^n\) 使得对于 \(\forall y\in P,y\ne x\)\(c^T y<c^T x\)

c 是 hyperplane

定义 19 extreme point

给定 polyhedron \(P\). 点 \(x\in P\) 是 extreme point 若 \(\nexists a, b \neq x, a, b \in P\), with \(\lambda a+(1-\lambda) b=x\) for \(\lambda \in[0,1]\).

不存在 a,b 把 x 夹在中间

Lemma 20 vertex and extreme point

A vertex is also an extreme point

Observation

The feasible region of an LP is a Polyhedron.

Convex Set

定理 21 答案在端点

若存在LP的最优解,那么存在一个最优解是extreme point.

不存在最优解的情况是 infeasible 或者 答案无穷大

证明

假设 \(x\) 是最优解但不是extreme point,那么存在一个方向 \(d\) 使得 \(x \pm d \in P\) (Definition 19) 然后由于\(A(x \pm d)=b\) (feasible 满足LP定义) 通过两个方程加减得到 \(Ad=0\). 不妨假设 \(c^T d \geq 0\) (如果是负数就换一个方向)

  • Case 1 $ j.$ s.t. \(d_j<0\) 存在某一列是小于0的

    增加 \(\lambda\)\(\lambda '\) 使得第一个 \(x+\lambda d\) 的某一项到0. 因为\(x+\lambda' d\) 是 feasible 所以\(A\left(x+\lambda^{\prime} d\right)=b, x+\lambda^{\prime} d \ge 0\) 所以 \(c^T x^{\prime}=c^T\left(x+\lambda^{\prime} d\right)=c^T x+\lambda^{\prime} c^T d \geq c^T x\) 其中 \(\lambda '>0\) 是移动的步长, \(c^Td\ge 0\) 根据假设.

  • Case 2. \(d_j \ge 0\)\(c^Td>0\)

    因为如果 \(c^Td=0\) 那么我们可以换一个 \(d\) 的方向,这样可以归到Case1里面. 然后 \(x+\lambda d\) 是 feasible 的 因为 \(A(x+\lambda d)=Ax+\lambda Ad=Ax=b\) 所以只要\(x+\lambda d \ge 0\) 就能 feasible.

    所以我们可以把 \(\lambda\) 变成无穷大, 因为\(c^T d>0\) 所以 \(c^T(x+\lambda d) \rightarrow \infty\) 答案就变成无穷大了.

记号 Submatrix

\(B \subseteq\{1 \ldots n\}\) 是列的下标集合,那么定义 \(A_B\)\(A\) 的所有 \(B\) 中列的子集矩阵.

定理 22 extreme point

\(P=\{x \mid A x=b, x \geq 0\}\) 对于 \(x\in P\)\(B=\left\{j \mid x_j>0\right\}\) 那么 \(x\) 是 extreme point iff \(A_B\) 有 linearly independent columns.

Recap1: 测试 independent vectors \(v_1,v_2...\) 就是把他们列在一起,解方程 \(v_1x_1+v_2x_2..=0\) 的解是否是 \(x_i=0\) 是就是 independent. 也即是 \(Ax=0\) 的解是否是 \(x=0\), 其中 \(A\) 是这些向量的列组成的矩阵

Recap2: \(Ax = v_1 x_1+v_2x_2+...\) 其中 \(v_i\) 是列

证明

(\(\Leftarrow\))

\(x\) 不是extreme point. 那么存在方向 \(d\) 使得 \(x \pm d \in P\) 于是 \(Ad=0\) 然后我们定义 \(B^{\prime}=\left\{j \mid d_j \neq 0\right\}\) 那么 \(A_{B'}\) 有 linearly dependent column 因为 \(Ad=0\) . 因为 \(d_j=0\) 的列不影响 \(Ad\) 的计算结果. 如果 \(x_j=0\)那么有\(d_j=0\),因为如果\(d_j\ne 0\) 那么可以改变方向使得 \(x_j\) infeasible而我们假设存在这个方向 \(d\) 是feasible的. 由于 \(B' \subseteq B\) 所有 \(A_B\) 是dependent的

(\(\Rightarrow\))

\(A_B\) 有dependent column那么 \(\exists d\ne 0. A_Bd=0\) 于是扩展 \(d\)\(\mathbb{R}^n\)\(x_j=0\) 的时候 \(d_j=0\) 那么对于足够小的 \(\lambda\) 我们有 \(x \pm \lambda d \in P\) 所以 \(x\) 不是 extreme point.

定理 23 vertex

\(P=\{x \mid A x=b, x \geq 0\}\) 设点 \(x \in P\)\(B=\left\{j \mid x_j>0\right\}\) $A_B $ 有 independent column (extreme point) 那么 \(x\) 是 vertex.

证明 构造一个hyperplane \(c_j= \begin{cases}0 & j \in B \\ -1 & j \notin B\end{cases}\) 所以 \(c^T x=0\) 对于 \(x\) , 那么对于 \(y\in P, y\ne x\) \(c^T y \leq 0\) 接下来证明唯一性,假设 \(c^Ty=0\) 那么 对于所有 \(j \notin B\)\(y_j=0\) 然后 \(b=A y=A_B y_B=A x=A_B x_B\) 然后变形\(A_B\left(x_B-y_B\right)=0\) 以为 \(A_B\) 有 independent column 所以 \(x_B -y_B = 0\) 所以 \(x_B=y_B\) 所以 \(x=y\)

Observation

对于一个 LP 我们可以不妨假设 \(\operatorname{rank}(A)=m\) , 也就是满秩

解释

假设 \(\operatorname{rank}(A)<m\) 那么可以不妨假设 \(A_1=\sum_{i=2}^m \lambda_i \cdot A_i\) 也就是 \(A_1\) 可以表示为其他行的线性组合

  • \(b_1=\sum_{i=2}^m \lambda_i \cdot b_i\) 那么 \(A_1\) 就没用了,就把第一行去掉
  • \(b_1 \neq \sum_{i=2}^m \lambda_i \cdot b_i\) 这种情况LP是infeasible的

定理 24 Basis

给定 LP \(P=\{x \mid A x=b, x \geq 0\}\)\(x\) 是 extreme point 等价于 存在 \(B \subseteq\{1, \ldots, n\}\) with \(|B|=m\) 我们叫 \(B\) 是一个 Basis

  • \(A_B\) is non-singular
  • \(x_B=A_B^{-1} b \geq 0\)
  • \(x_N=0\)

其中 \(N=\{1, \ldots, n\} \backslash B\)

对于任意矩阵, 行秩等于列秩

证明

(\(\Leftarrow\))

\(A_B\) non-singular 就是有 linearly independent columns, 那么把 \(x_j=0\) 的列踢掉,也是independent的, 所以是extreme point.

(\(\Rightarrow\))

首先extreme point 可以推出 设 \(B=\left\{j \mid x_j>0\right\}\) 那么 \(x\) 是 extreme point iff \(A_B\) 有 linearly independent columns. 首先因为行秩是 \(m\) , 列秩也是 \(m\). 所以如果 \(|B|< m\) , 加一些可以加列进去之后仍然是 linearly independent 把 \(m\) 列补齐,构造出满足条件 1 的 \(B\) . 所以 \(A_Bx_B=b\) 推出 \(x_B=A_B^{-1} b \geq 0\) 然后条件3显然满足.

定义 Basic Feasible Solutions

\(\mathcal{x} \in \mathbb{R}^n\) 是 basic solution 若 \(Ax=b\)\(\operatorname{rank}\left(A_J\right)=|J|\) where \(J=\left\{j \mid x_j \neq 0\right\}\)

\(x\) 是 basic feasible solution (BFS) 若还 \(x\ge 0\)

\(x\) 是 basic solution associated to basis \(B\), 若 \(A_B x_B=b\) and \(x_j=0\) 对于所有 \(j \notin B\)

定义 25 basic feasible solution

对于 general LP \(\max \left\{c^T x \mid A x \leq b\right\}\)\(x\) 是BFS 若 \(x\) 是 feasible 且存在 \(n\) 个linearly independent constraints is tight. (以等于号满足)

解释

一个BFS 满足 \(m\) 个equality constraint 就是 \(A\) 的所有行, 此外至少 \(n-m\)\(x_i\)\(0\) 满足 $x $ 是以等于号成立.

所以至少 \(n\) 个 constraint 是以等于号满足的

然后可以回答之前的问题: Is LP in NP?

对于 LP 我们可以便利所有 bases 然后计算,如果 LP 是unbounded 我们可以把 \(c^T x \le \alpha\) 加入constraint, 这样一定是bounded了.

Simplex Algorithm

BFS 移动到相邻的 BFS 来计算最优解.

  • 选择一个 coefficient 大于零的作为进入的variable
  • 增大 \(b\) 并且使得constraint 满足
  • \(\theta=\min \{480 / 15,160 / 4,1190 / 20\}\) 选自最小的步长
  • 变成 \(0\) 的出来.

知道没有可以换的时候结束

\[ \begin{array}{rlrl}\max 13 a+23 b & & \\ \text { s.t. } \quad 5 a+15 b+s_c & =480 \\ 4 a+4 b+s_h & =160 \\ 35 a+20 b+s_m & =1190 \\ a, b, s_c, s_h, s_m & \geq 0\end{array} \]

最后是

image-20230430113252418

这样子 \(Z=800-s_C-2 s_h, s_C \geq 0, s_h \geq 0\)

矩阵表示法

\[ \begin{array}{rlrl} c_B^T x_B+c_N^T x_N & =Z \\ A_B x_B+A_N x_N & =b \\ x_B, x_N \geq 0 \end{array} \]

simplex tableaux是

\[ \begin{aligned} I\left(c_N^T-c_B^T A_B^{-1} A_N\right) x_N & =Z-c_B^T A_B^{-1} b \\ I x_B+A_B^{-1} A_N x_N & =A_B^{-1} b \\ x_B, & \geq 0 \end{aligned} \]

就是看这是怎么用矩阵算出来的

Algebraic Definition of Pivoting

给定Basis \(B\) with BFS \(x^*\) 选择 \(j \notin B\) 使得 increase \(x_j^*\) from 0 to \(\theta>0\)

Go from \(x^*\) to \(x^*+\theta \cdot d\)

然后需要满足

  • \(d_j=1\) normalization
  • \(d_{\ell}=0, \ell \notin B, \ell \neq j\)
  • \(A\left(x^*+\theta d\right)=b\) must hold. Hence \(A d=0\).
  • \(A_B d_B+A_{* j}=A d=0\) 所以 \(d_B=-A_B^{-1} A_{* j}\)

定义 26 j-th basic direction

其中的 \(d_B=-A_B^{-1} A_{* j}\) 是 j-th basic direction, 然后从 \(x^*\) 走到 \(x^*+\theta \cdot d\) , 目标函数会增加

\[ \theta \cdot c^T d=\theta\left(c_j-c_B^T A_B^{-1} A_{* j}\right) \]

定义 27 Reduced Cost

对于 \(B\)

\[ \tilde{c}_j=c_j-c_B^T A_B^{-1} A_{* j} \]

是对于 \(x_j\) 的reduced cost, 其实是增加的cost

其实是 \(c_N^T-c_B^T A_B^{-1} A_N\) 的第 \(j\)

Min Ratio Test

如果所有 \(\theta\) 是负的,那么是unbounded

定义 28 Degeneracy

如果 \(x_l=0, l\in B\) 那么目标函数可能不会增大. 多点重合的情况.

BFS \(x^*\) 是 degenerate 若 \(J=\left\{j \mid x_j^*>0\right\}\)\(|J| < m\)

所以这种情况,算法可能会无限循环.

Two Phase Algorithm得出初始可行解

如果 \(A x \leq b, x \geq 0\), and \(\boldsymbol{b} \geq \mathbf{0}\). 那么我们可以令 \(x=0\)

令slack variable 等于右边

如果没有的话就要用 TWO PHASE ALGORITHM

  • \(b_i<0\) 的行乘 \(-1\)

  • maximize \(-\sum_i v_i\) 使得 \(A x+I v=b, x \geq 0, v \geq 0\) using Simplex

    我们要尽可能不使用 \(v\), 也就是令 \(v=0\)

  • 如果 \(\sum_i v_i>0\) 那么就是infeasible

    否则你就有一个初始的可行解

Lemma 29 最优解判定条件

Let \(B\) be a basis and \(x^*\) a BFS corresponding to basis \(B . \tilde{c} \leq 0\) implies that \(x^*\) is an optimum solution to the LP.

怎样得到解的上界

\[ \begin{aligned} \max 13 a+23 b & \\ \text { s.t. } 5 a+15 b &\leq 480 \\ 4 a+4 b &\leq 160 \\ 35 a+20 b &\leq 1190 \\ a, b &\geq 0 \\ \end{aligned} \]

可以构造一个不等式的 conic combination 比如1行乘以2再加2行

Duality

定义 30 Dual problem

对于LP \(z=\max \left\{c^T x \mid A x \leq b, x \geq 0\right\}\) 的dual problem就是构造最小的上界

\[ w=\min \left\{b^T y \mid A^T y \geq c, y \geq 0\right\} \]

Lemma 31

The dual problem of the dual problem is the primal problem

证明

\(w=\min \left\{b^T y \mid A^T y \geq c, y \geq 0\right\}\) 对于这个再dual一次,都乘个符号变成max

\(w=-\max \left\{-b^T y \mid-A^T y \leq-c, y \geq 0\right\}\) 然后再dual 就变成 \(z=-\min \left\{-c^T x \mid-A x \geq-b, x \geq 0\right\}\) 再转成min就是 \(z=\max \left\{c^T x \mid A x \leq b, x \geq 0\right\}\)

Weak duality

Let \(\hat{x}\) be primal feasible 就是再primal problem 里面是feasible的, \(\hat{y}\) be dual feasible. Then

\[ c^T \hat{x} \leq z \leq w \leq b^T \hat{y} \]

证明

\(A^T \hat{y} \geq c \Rightarrow \hat{x}^T A^T \hat{y} \geq \hat{x}^T c (\hat{x}\ge 0)\) 左右乘个 \(\hat{x}^T\) \(A \hat{x} \leq b \Rightarrow y^T A \hat{x} \leq \hat{y}^T b(\hat{y} \geq 0)\) , 然后呢因为scalar来说转置不改变结果,所以

\[ c^T \hat{x} \leq \hat{y}^T A \hat{x} \leq b^T \hat{y} \]

因为他们是feasible的,所以存在 \(c^T \hat{x}=z\) 使得他们两个分别可以达到最优解所以 \(z \leq w\)

Simplex 的dual form

\[ \begin{aligned} z & =\max \left\{c^T x \mid A x=b, x \geq 0\right\} \\ w & =\min \left\{b^T y \mid A^T y \geq c\right\} \end{aligned} \]
证明

\[ \begin{aligned} \max & \left\{c^T x \mid A x=b, x \geq 0\right\} \\ & =\max \left\{c^T x \mid A x \leq b,-A x \leq-b, x \geq 0\right\} \\ & =\max \left\{c^T x \mid\left[\begin{array}{c} A \\ -A \end{array}\right] x \leq\left[\begin{array}{c} b \\ -b \end{array}\right], x \geq 0\right\} \end{aligned} \]

把等于号拆成2个小于等于,然后写成矩阵,然后求dual

\[ \begin{aligned} \min & \left\{\left[b^T-b^T\right] y \mid\left[A^T-A^T\right] y \geq c, y \geq 0\right\} \\ & =\min \left\{\left[b^T-b^T\right] \cdot\left[\begin{array}{c} y^{+} \\ y^{-} \end{array}\right] \mid\left[A^T-A^T\right] \cdot\left[\begin{array}{c} y^{+} \\ y^{-} \end{array}\right] \geq c, y^{-} \geq 0, y^{+} \geq 0\right\} \\ & =\min \left\{b^T \cdot\left(y^{+}-y^{-}\right) \mid A^T \cdot\left(y^{+}-y^{-}\right) \geq c, y^{-} \geq 0, y^{+} \geq 0\right\} \\ & =\min \left\{b^T y^{\prime} \mid A^T y^{\prime} \geq c\right\} \end{aligned} \]

Proof of Optimality Criterion for Simplex

首先由 reduced cost \(\tilde{c}=c^T-c_B^T A_B^{-1} A \leq 0\) 然后求个转置

\[ A^T\left(A_B^{-1}\right)^T c_B \geq c \]

所以 \(\mathcal{Y}^*=\left(A_B^{-1}\right)^T c_B\) 是一个是dual problem的解,然后代入dual定义

\[ \begin{aligned} b^T y^* & =\left(A x^*\right)^T y^*=\left(A_B x_B^*\right)^T y^* \\ & =\left(A_B x_B^*\right)^T\left(A_B^{-1}\right)^T c_B=\left(x_B^*\right)^T A_B^T\left(A_B^{-1}\right)^T c_B \\ & =c^T x^* \end{aligned} \]

\(x^*\) 是你当前求出来的最优解

Strong Duality

首先如果我们有min的LP,我们也可以写Dual 也就是 \[ D=\min \left\{\bar{b}^T y \mid \bar{A}^T y=c, y \geq 0\right\} \] 和下面这个是一组 \[ \bar{P}=\max \left\{c^T x \mid \bar{A} x \leq \bar{b}\right\} \]