LP-duality 定理

LP-duality 定理:线性规划问题的对偶定理。

【线性规划问题的标准形式】

给定矩阵 \(A,b,c\),其中 \(b,c\) 都是只有一列的矩阵(可以当作列向量看)。

问题 1: 求向量(一组数)\(\vec{x}\),要求 \(A\cdot \vec{x}\le \vec{b}\)
\(\vec{x}\ge 0\),使得 \(c^T\cdot \vec{x}\) 最大。

\[\begin{cases}A\cdot\vec{x}\le \vec{b}\\\vec{x}\ge 0\end{cases},\max\{c^T\cdot \vec{x}\} \]

问题 2: 求向量(一组数)\(\vec{y}\),要求 \(A^T\cdot \vec{y}\ge \vec{c}\)\(\vec{y}\ge 0\),使得 \(b^T\cdot \vec{y}\) 最小。

\[\begin{cases}A^T\cdot \vec{y}\ge \vec{c}\\\vec{y}\ge 0\end{cases},\min\{b^T\cdot \vec{y}\} \]

【定理内容】

用于将线性规划问题转化为对偶问题,然后用算法解决。

这两个问题是 "对偶" 的,根据定理,它们满足这两个性质:
弱对偶性:记问题 1 的任一组可行解 \(\vec{X}\) 和问题 2 的任一组可行解 \(\vec{Y}\),则 \(c^T\cdot\vec{X}\le b^T\cdot\vec{Y}\)

强对偶性:如果问题 1,2 都是有解的,则 1 的最优解(最大值)和 2 的最优解(最大值)相等。

【一些观察】

线性规划问题其实可以看做给出一大堆不等式,求条件极值。

观察发现,LP 定理的问题 2 的变量个数(\(\vec{y}\) 的元素个数)恰好等于问题 1 的约束个数(\(A\) 的行数)

【定理应用其一:最大流最小割定理】

网络流问题就是天生的一类线性规划问题。

这里将用 LP-duality 定理粗略证明 MF=MC 定理。拿个例子。

\(e_1\sim e_5\) 是每条边的标号。\(x_1\sim x_5\) 表示各边的流量。令 \(cap_i\) 表示 \(e_i\) 的容量(图中未写)。

先把最大流问题改造成线性规划模式。

\[\begin{cases} x_i\le cap_i\\ x_1-x_3-x_4=0\\ x_2+x_3-x_5=0\\ \end{cases} \]

第一条不等式就是每条边不能流超过容量的,后两条等式满足 \(1,2\) 流量守恒。
目标是 \(\max x_1+x_2\)

虽然是等式,但其实我们可以把它拆成两个不等式。

\[\begin{cases} x_i\le cap_i\\ x_1-x_3-x_4\le 0\\ -x_1+x_3+x_4\le 0\\ x_2+x_3-x_5\le 0\\ -x_2-x_3+x_5\le 0\\ \end{cases} ,\max\{x_1+x_2\} \]

这就是一个标准的线性规划问题的形式。为什么?改成矩阵形式看看。

\[\vec{x}=\begin{pmatrix}x_1\\x_2\\x_3\\x_4\\x_5\end{pmatrix} \]

\[A=\begin{pmatrix}1&0&0&0&0\\0&1&0&0&0\\0&0&1&0&0\\0&0&0&1&0\\0&0&0&0&1\\1&0&-1&-1&0\\-1&0&1&1&0\\0&1&1&0&-1\\0&-1&-1&0&1\\ \end{pmatrix}\]

\[b=\begin{pmatrix}cap_1\\cap_2\\cap_3\\cap_4\\cap_5\\0\\0\\0\\0\\\end{pmatrix} \]

\[c=\begin{pmatrix}1\\1\\0\\0\\0\\\end{pmatrix} \]

通过 LP 定理,我们等价于求:

\[\begin{cases}A^T\cdot \vec{y}\ge \vec{c}\\\vec{y}\ge 0\end{cases},\min\{b^T\cdot \vec{y}\} \]

那这是什么呢?

\[A^T=\begin{pmatrix}1&0&0&0&0&1&-1&0&0\\0&1&0&0&0&0&0&1&-1\\0&0&1&0&0&-1&1&1&-1\\0&0&0&1&0&-1&1&0&0\\0&0&0&0&1&0&0&-1&1\\ \end{pmatrix} \]

而我们的 \(\vec{y}\) 应当是一个包含 \(y_1\sim y_9\) 的列向量。搭配上 \(\vec{c}\),写成不等式看看。

\[\begin{cases} y_1+y_6-y_7\ge 1\\ y_2+y_8-y_9\ge 1\\ y_3-y_6+y_7+y_8-y_9\ge 0\\ y_4-y_6+y_7\ge 0\\ y_5-y_8+y_9\ge 0\\ y_i\ge 0 \end{cases} ,\min\{cap_1y_1+cap_2y_2+cap_3y_3+cap_4y_4+cap_5y_5\} \]

观察发现 \(y_6,y_7\)\(y_8,y_9\) 都是成对以差的形式出现。不如令 \(z_1=y_6-y_7,z_2=y_8-y_9\),换元。而且注意 \(z_1,z_2\) 是没有 \(\ge 0\) 限制的。

\[\begin{cases} y_1\ge 1-z_1\\ y_2\ge 1-z_2\\ y_3\ge z_2-z_1\\ y_4\ge z_1-0\\ y_5\ge z_2-0\\ y_i\ge 0 \end{cases},\min\{cap_1y_1+cap_2y_2+cap_3y_3+cap_4y_4+cap_5y_5\}\]

然后我们会用到几个引理:

引理 1\(z_1,z_2\in [0,1]\)

如果不在 \([0,1]\) 内,容易发现,总可以将不在 \([0,1]\) 的变量调整,更靠近 \([0,1]\) 且使得原本的 \(\vec{y}\) 依然是合法解。

引理 1.5:给定数组 \(d_1\sim d_n\)(可正可负),要求设置 \(n\) 个变量 \(0\le z_1\le z_2\le\dots\le z_n\le 1\),使 \(\sum d_iz_i\) 取最小值。则 \(z_1\sim z_n\in \{0,1\}\)

\(z_1\sim z_n\) 视作数轴上 \([0,1]\) 内顺次排列的 \(n\) 个点。从 \(i=1\) 开始,如果 \(d_i>0\),就向左移到极限;否则向右移到极限。容易发现每次移动之后,\(z_i\) 要么 \(=0\) 了,要么和 \(z_{i+1}\) 重合(可以和 \(z_{i+1}\) 同步移动)。

引理 2\(z_1,z_2\in \{0,1\}\)

如果方程里的 \(z_1,z_2\) 的大小顺序确定了,显然每个 \(y_i\) 都能取到一个最小值(而这个最小值要么是 \(0\),要么可以表示为 \(z_i\) 们的线性组合)。那么 \(\min\{cap_1y_1+cap_2y_2+cap_3y_3+cap_4y_4+cap_5y_5\}\) 就可以写成 \(\min(P\cdot z_1+Q\cdot z_2)\) 的形式。更一般地,可以归约到 引理 1.5 的问题形式。

因为对于每种大小顺序,都能归约到 引理 1.5;而只要是 引理 1.5,就必然有 \(z_i\in \{0,1\}\)。所以可得:\(z_i\in \{0,1\}\)

引理 3:不等式只有三种类型,\(\ge 1-z_i,\ge z_i-z_j,\ge z_k-0\)

其实就是在考虑 \(A^T\) 中的第 \(6\sim 9\) 列,其实对应了 \(A\) 的对应行,也就是点的出入均衡条件。

\(A\) 的一行的某一列如果是 \(1,-1\),表示这一行所对应的点有对应的出或者入边(如果是 \(1\) 就是这个列对应的边是入)。

众所周知,一条边恰好从一个点出,向一个点入。所以在 \(A\) 的某一列上最多出现 \(1,-1\) 各一次(如果是与 \(S\) 或者 \(T\) 相连的边,就只会有 \(1\)\(-1\) 中的一个)。

\(A\) 的一列对应 \(A^T\) 的一行,所以 \(A^T\) 的一行按理应该只出现 \(1,-1\) 各一个;结合我们为了等式而拆出来了两个不等式(两个对应不等式其实对应了一个 \(z\)),\(A^T\) 的每一行最多出现 \(4\)\(\pm 1\),也就是最多对应两个 \(z\)


下面根据引理 2,3 来证明求 \(y_1\sim y_5,z_1,z_2\) 就是在求最小割。

因为 \(z_1,z_2\in \{0,1\}\),而不等式只有三种类型:\(\ge 1-z_i,\ge z_i-z_j,\ge z_k-0\),所以显然 \(y_i\in \{0,1\}\)

\(y_i=0/1\) 视作第 \(i\) 条边是否割掉;将 \(z_i=0/1\) 视作第 \(i\) 个点是否与 \(S\) 连通。可以发现这就是求最小割。

posted @ 2024-06-23 22:03  FLY_lai  阅读(62)  评论(1编辑  收藏  举报