Loading

线性规划对偶小记

\(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\) 来表示。

具体而言,可以表示为

\[\begin{align*} &\max. \quad \sum_{i = 1} ^ n c_ix_i \\ \text{s.t.} &\quad \sum_{j = 1} ^ n a_{i, j} x_j \le b_i & i = 1, 2,\dots, m \\ &\quad x_i \ge 0 & i = 1, 2, \dots, n \end{align*} \]

不难发现:

  • \(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\)

所以任何线性规划的形式都可以转化为标准型线性规划。

进一步地,可以表示为

\[\begin{align*} &\max. \quad \mathbf c^T\mathbf x \\ \text{s.t.} &\quad A\mathbf x \le \mathbf b\\ &\quad \mathbf x \ge 0 \end{align*} \]

对偶

考虑用 \(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\) 的值,可以看作另一种线性规划:

\[\begin{align*} &\min. \quad \mathbf b^T\mathbf y \\ \text{s.t.} &\quad A^T\mathbf y \ge \mathbf c\\ &\quad \mathbf y \ge 0 \end{align*} \]

称该线性规划为原始线性规划的对偶。不难发现,原始线性规划和其对偶具有高对称性,其对偶的对偶就是其原始形式。

  • 线性规划弱对偶性:对于任意 \((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\) 的边):

\[\begin{align*} &\max. \quad f_{t, s} \\ \text{s.t.} &\quad f_{u, v} \le w_{u, v} & (u, v) \in E\\ &\quad \sum_{(v, u) \in E} f_{v, u} - \sum_{(u, v) \in E} f_{u, v} \le 0 & u = 1, 2, \dots, n \\ &\quad f_{u, v} \ge 0 & (u, v) \in E \end{align*} \]

事实上其对偶是最小割,进而可以证明最大流 - 最小割定理,下面我们求解其对偶线性规划。

注意到限制 \(\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)\) 对应的限制的系数。

那么对偶为

\[\begin{align*} &\min. \quad \sum_{(u, v) \in E} w_{u, v}d_{u, v} \\ \text{s.t.} &\quad d_{t, s} + p_s - p_t \ge 1\\ &\quad d_{u, v} + p_v - p_u \ge 0 & (u, v) \in E \\ &\quad d_{u, v} \ge 0 & (u, v) \in E \end{align*} \]

\(w_{t, s} = + \infty\),那么 \(d_{t, s}\) 只能取 \(0\),所以 \(p_s - p_t \ge 1\)。不难发现,\(p_u \ge 2\) 一定不优,根据 \(p_u = 0 / 1\) 可以将图割成两部分,即为最小割。

最大费用循环流

即是求最大费用。由于没有源汇,所以不需要最大化流量。

形式:

\[\begin{align*} &\max. \quad \sum_{(u, v) \in E} c_{u, v} f_{u, v} \\ \text{s.t.} &\quad f_{u, v} \le w_{u, v} & (u, v) \in E\\ &\quad \sum_{(v, u) \in E} f_{v, u} - \sum_{(u, v) \in E} f_{u, v} \le 0 & u = 1, 2, \dots, n \\ &\quad f_{u, v} \ge 0 & (u, v) \in E \end{align*} \]

和最大流类似,对偶线性规划为

\[\begin{align*} &\min. \quad \sum_{(u, v) \in E} w_{u, v}d_{u, v} \\ \text{s.t.} &\quad d_{u, v} + p_v - p_u \ge c_{u, v} & (u, v) \in E\\ &\quad d_{u, v} \ge 0 & (u, v) \in E \end{align*} \]

但此时可能 \(p_u\ge 2\)。有些题目可能出现下面的形式的线性规划,可以对偶成上面的最大费用循环流。

posted @ 2025-01-07 19:21  Lgx_Q  阅读(10)  评论(0编辑  收藏  举报