有 \(n\) 个变量 \(x_1, x_2, \dots, x_n\),有若干条限制,形如:
-
\(f(x_1, x_2, \dots, x_n) \le b\)
-
\(f(x_1, x_2, \dots, x_n) = b\)
-
\(f(x_1, x_2, \dots, x_n) \ge b\)
三种不同形式(注意不能取小于或大于号),可称这些限制是线性的。同时,需要最大化 \(\sum\limits_{i = 1} ^ n c_i x_i\)。
标准型
标准型线性规划的限制只能用 \(f(x_1, x_2, \dots, x_n) \le b\) 来表示。
具体而言,可以表示为
不难发现:
-
\(f(x_1, x_2, \dots, x_n) = b \quad \Rightarrow \quad f(x_1, x_2, \dots, x_n) \le b \land -f(x_1, x_2, \dots, x_n) \le -b\)。
-
\(f(x_1, x_2, \dots, x_n) \ge b \quad \Rightarrow \quad -f(x_1, x_2, \dots, x_n) \le -b\)。
-
\(\{x_1 - x_2 | x_1,x_2 \ge 0\} = \mathbf R\)
所以任何线性规划的形式都可以转化为标准型线性规划。
进一步地,可以表示为
对偶
考虑用 \(m\) 个限制向量拼出向量 \(\mathbf c\)。具体的,给每个限制向量赋一个系数 \(y_1, y_2, \dots, y_m\),然后拼出 \(c'_i = \sum\limits_{j = 1} ^ m y_j a_{j, i}\) 即 \(\mathbf c' = A^T \mathbf y\),满足 \(\mathbf c'\ge \mathbf c\) 且尽量接近 \(\mathbf c\)。
此时,可以得到 \(\mathbf c^T \mathbf x \le \mathbf c'^T \mathbf x \le \sum\limits_{i = 1} ^ m b_iy_i = \mathbf b^T \mathbf y\)。
此时我们相当于最小化 \(\mathbf b^T \mathbf y\) 的值,可以看作另一种线性规划:
称该线性规划为原始线性规划的对偶。不难发现,原始线性规划和其对偶具有高对称性,其对偶的对偶就是其原始形式。
-
线性规划弱对偶性:对于任意 \((x_1, x_2, \dots, x_n), (y_1, y_2, \dots, y_n)\) 都有 \(\mathbf c^T \mathbf x \le \mathbf b^T \mathbf y\)。
-
线性规划对偶性:一定存在一组 \((x_1, x_2, \dots, x_n), (y_1, y_2, \dots, y_n)\) 取到 \(\mathbf c^T \mathbf x = \mathbf b^T \mathbf y\)。
最大流最小割
网络流其实也是一种线性规划,以最大流为例(默认存在一条 \(t\to s\) 的边):
事实上其对偶是最小割,进而可以证明最大流 - 最小割定理,下面我们求解其对偶线性规划。
注意到限制 \(\sum_{(v, u) \in E} f_{v, u} - \sum_{(u, v) \in E} f_{u, v} \le 0\) 其 \(b\) 值为 \(0\),所以对最值没有影响。
有影响的应该是 \(\mathbf y\ge 0\) 这一条。具体的,设 \(p_u\) 为点 \(u\) 对应限制的系数(相当于上面的 \(y\)),\(d_{u, v}\) 为边 \((u, v)\) 对应的限制的系数。
那么对偶为
令 \(w_{t, s} = + \infty\),那么 \(d_{t, s}\) 只能取 \(0\),所以 \(p_s - p_t \ge 1\)。不难发现,\(p_u \ge 2\) 一定不优,根据 \(p_u = 0 / 1\) 可以将图割成两部分,即为最小割。
最大费用循环流
即是求最大费用。由于没有源汇,所以不需要最大化流量。
形式:
和最大流类似,对偶线性规划为
但此时可能 \(p_u\ge 2\)。有些题目可能出现下面的形式的线性规划,可以对偶成上面的最大费用循环流。