知经 KNOWECON · 卓越的经济金融统计数学学习平台

互补松弛性

# 互补松弛性 (Complementary Slackness)

**互补松弛性** (Complementary Slackness) 是 {{{优化理论}}} (Optimization Theory),特别是 {{{线性规划}}} (Linear Programming, LP) 中的一个基本定理。它深刻地揭示了 {{{ primal problem}}} (原问题) 和其对应的 {{{dual problem}}} (对偶问题) 在最优解上的内在联系。

从本质上讲,互补松弛性定理提供了一套必要且充分的条件,用以判断一组原问题的可行解和对偶问题的可行解是否同时为它们各自的最优解。这个定理不仅是许多线性规划算法(如 {{{单纯形法}}})的理论基石,更提供了极其重要的 {{{经济学}}} 直觉,尤其是在解读 {{{影子价格}}} (Shadow Price) 时。互补松弛性可以被看作是更广义的 {{{非线性规划}}} 中 {{{Karush-Kuhn-Tucker (KKT) 条件}}} 在线性规划领域的具体体现。

## 原问题与对偶问题的设定

为了准确理解互补松弛性,我们首先需要定义一对标准的原问题和对偶问题。

假设我们有以下 **原问题 (Primal Problem, P)**,形式为一个最大化问题:

$$ \begin{aligned} \text{Maximize} \quad & \mathbf{c}^T \mathbf{x} \\ \text{Subject to} \quad & A \mathbf{x} \le \mathbf{b} \\ & \mathbf{x} \ge \mathbf{0} \end{aligned} $$

其中: * $\mathbf{x} \in \mathbb{R}^n$ 是 **{{{决策变量}}}** (decision variables) 的向量。 * $\mathbf{c} \in \mathbb{R}^n$ 是 **{{{目标函数}}}** (objective function) 的系数向量。 * $A \in \mathbb{R}^{m \times n}$ 是约束条件的系数矩阵。 * $\mathbf{b} \in \mathbb{R}^m$ 是约束条件的右侧值(资源限制)向量。

每一个原问题都有一个与之对应的 **对偶问题 (Dual Problem, D)**。对于上述标准形式的原问题,其对偶问题是一个最小化问题:

$$ \begin{aligned} \text{Minimize} \quad & \mathbf{b}^T \mathbf{y} \\ \text{Subject to} \quad & A^T \mathbf{y} \ge \mathbf{c} \\ & \mathbf{y} \ge \mathbf{0} \end{aligned} $$

其中: * $\mathbf{y} \in \mathbb{R}^m$ 是 **{{{对偶变量}}}** (dual variables) 的向量,在经济学上常常解释为资源的 **{{{影子价格}}}**。

## 互补松弛性定理

**互补松弛性定理** 指出:

> 设 $\mathbf{x}^*$ 是原问题 (P) 的一个可行解, $\mathbf{y}^*$ 是对偶问题 (D) 的一个可行解。那么, $\mathbf{x}^*$ 和 $\mathbf{y}^*$ 分别是其对应问题的最优解的 **充要条件** 是,以下两组条件同时成立:

#### 1. 原问题约束与对偶变量的互补关系

对于原问题中的每一个约束 $i$ (从 1 到 $m$): $$ y_i^* \cdot (b_i - (A\mathbf{x}^*)_i) = 0 $$

这里的 $(A\mathbf{x}^*)_i$ 是矩阵 $A$ 的第 $i$ 行与向量 $\mathbf{x}^*$ 的点积。表达式 $b_i - (A\mathbf{x}^*)_i$ 代表了原问题第 $i$ 个约束的"松弛量"(slack)。我们可以引入 {{{slack variable}}} (松弛变量) $s_i = b_i - (A\mathbf{x})_i \ge 0$,那么该条件可以更简洁地写为: $$ y_i^* \cdot s_i^* = 0 \quad \text{for } i = 1, \dots, m $$

这个条件的含义是:

* 如果一个原问题约束是 **非紧的** (non-binding),即它有多余的量 (slack > 0, $(A\mathbf{x}^*)_i < b_i$),那么其对应的对偶变量必须为零 ($y_i^* = 0$)。 * 反之,如果一个对偶变量是 **正的** ($y_i^* > 0$),那么其对应的原问题约束必须是 **紧的** (binding),即该约束必须以等式成立 ($(A\mathbf{x}^*)_i = b_i$)。

#### 2. 对偶问题约束与原问题变量的互补关系

对于对偶问题中的每一个约束 $j$ (从 1 到 $n$): $$ x_j^* \cdot ((A^T\mathbf{y}^*)_j - c_j) = 0 $$

这里的 $(A^T\mathbf{y}^*)_j$ 是矩阵 $A^T$ 的第 $j$ 行与向量 $\mathbf{y}^*$ 的点积。表达式 $(A^T\mathbf{y}^*)_j - c_j$ 代表了对偶问题第 $j$ 个约束的"剩余量"(surplus)。我们可以引入 {{{surplus variable}}} (剩余变量) $e_j = (A^T\mathbf{y})_j - c_j \ge 0$,那么该条件可以更简洁地写为: $$ x_j^* \cdot e_j^* = 0 \quad \text{for } j = 1, \dots, n $$

这个条件的含义是:

* 如果一个对偶问题约束是 **非紧的** (non-binding),即它有多余的量 (surplus > 0, $(A^T\mathbf{y}^*)_j > c_j$),那么其对应的原问题变量必须为零 ($x_j^* = 0$)。 * 反之,如果一个原问题变量是 **正的** ($x_j^* > 0$),那么其对应的对偶问题约束必须是 **紧的** (binding),即该约束必须以等式成立 ($(A^T\mathbf{y}^*)_j = c_j$)。

## 数学推导过程

互补松弛性定理可以通过 {{{强对偶定理}}} (Strong Duality Theorem) 推导出来。

1. 根据 {{{弱对偶定理}}} (Weak Duality Theorem),对于任意一组原问题可行解 $\mathbf{x}$ 和对偶问题可行解 $\mathbf{y}$,总有 $\mathbf{c}^T \mathbf{x} \le \mathbf{b}^T \mathbf{y}$。 2. 而 **强对偶定理** 指出,如果原问题和对偶问题都存在最优解(分别记为 $\mathbf{x}^*$ 和 $\mathbf{y}^*$),那么它们的目标函数值相等,即"对偶间隙"为零: $$ \mathbf{c}^T \mathbf{x}^* = \mathbf{b}^T \mathbf{y}^* $$ 3. 我们从原问题的约束 $A \mathbf{x}^* \le \mathbf{b}$ 开始。由于 $\mathbf{y}^* \ge \mathbf{0}$,我们可以用 $(\mathbf{y}^*)^T$ 左乘不等式两边而不改变方向: $$ (\mathbf{y}^*)^T A \mathbf{x}^* \le (\mathbf{y}^*)^T \mathbf{b} $$ 因为 $(\mathbf{y}^*)^T \mathbf{b} = \mathbf{b}^T \mathbf{y}^*$, 所以我们有 $(\mathbf{y}^*)^T A \mathbf{x}^* \le \mathbf{b}^T \mathbf{y}^*$。 4. 同样,我们从对偶问题的约束 $A^T \mathbf{y}^* \ge \mathbf{c}$ 开始。由于 $\mathbf{x}^* \ge \mathbf{0}$,我们可以用 $(\mathbf{x}^*)^T$ 左乘不等式两边: $$ (\mathbf{x}^*)^T A^T \mathbf{y}^* \ge (\mathbf{x}^*)^T \mathbf{c} $$ 两边转置,得到 $\mathbf{c}^T \mathbf{x}^* \le (\mathbf{y}^*)^T A \mathbf{x}^*$。 5. 将上述结果串联起来,我们得到一个不等式链: $$ \mathbf{c}^T \mathbf{x}^* \le (\mathbf{y}^*)^T A \mathbf{x}^* \le \mathbf{b}^T \mathbf{y}^* $$ 6. 根据强对偶定理,这个不等式链的起点和终点是相等的 ($\mathbf{c}^T \mathbf{x}^* = \mathbf{b}^T \mathbf{y}^*$)。因此,链中的所有不等号都必须取等号: $$ \mathbf{c}^T \mathbf{x}^* = (\mathbf{y}^*)^T A \mathbf{x}^* \quad \text{和} \quad (\mathbf{y}^*)^T A \mathbf{x}^* = \mathbf{b}^T \mathbf{y}^* $$ 7. 我们来分析这两个等式: * 从第二个等式 $(\mathbf{y}^*)^T A \mathbf{x}^* = \mathbf{b}^T \mathbf{y}^*$ 出发,移项得: $$ \mathbf{b}^T \mathbf{y}^* - (\mathbf{y}^*)^T A \mathbf{x}^* = (\mathbf{y}^*)^T (\mathbf{b} - A\mathbf{x}^*) = 0 $$ 写成求和形式就是 $\sum_{i=1}^m y_i^* (b_i - (A\mathbf{x}^*)_i) = 0$。由于可行性条件保证了每一项 $y_i^* \ge 0$ 和 $(b_i - (A\mathbf{x}^*)_i) \ge 0$,要使总和为零,每一项必须为零。这就导出了第一个互补松弛条件:$y_i^*(b_i - (A\mathbf{x}^*)_i) = 0$。

* 从第一个等式 $\mathbf{c}^T \mathbf{x}^* = (\mathbf{y}^*)^T A \mathbf{x}^*$ 出发,移项得: $$ ((\mathbf{y}^*)^T A - \mathbf{c}^T) \mathbf{x}^* = 0 $$ 写成求和形式就是 $\sum_{j=1}^n ((A^T\mathbf{y}^*)_j - c_j) x_j^* = 0$。同样,可行性条件保证了每一项 $x_j^* \ge 0$ 和 $((A^T\mathbf{y}^*)_j - c_j) \ge 0$,要使总和为零,每一项必须为零。这就导出了第二个互补松弛条件:$x_j^*((A^T\mathbf{y}^*)_j - c_j) = 0$。

至此,推导完成。

## 具体例子

假设一家家具公司生产桌子 ($x_1$) 和椅子 ($x_2$) 来最大化利润。

**原问题 (P):** * **目标:** 最大化利润 $Z = 8x_1 + 5x_2$ (每张桌子利润 8 USD, 每张椅子利润 5 USD)。 * **约束:** 1. 木材: $2x_1 + x_2 \le 10$ (单位:木方) 2. 工时: $x_1 + 2x_2 \le 8$ (单位:小时) * **非负约束:** $x_1, x_2 \ge 0$

通过求解方程组 $2x_1 + x_2 = 10$ 和 $x_1 + 2x_2 = 8$,我们可以得到最优解为 $x_1^* = 4$ (桌子),$x_2^* = 2$ (椅子)。最大利润 $Z^* = 8(4) + 5(2) = 42$ USD。

**对偶问题 (D):** * **目标:** 最小化资源的总机会成本 $W = 10y_1 + 8y_2$。$y_1$ 是木材的影子价格,$y_2$ 是工时的影子价格。 * **约束:** 1. $2y_1 + y_2 \ge 8$ (生产一张桌子所用资源的影子价值至少等于其利润) 2. $y_1 + 2y_2 \ge 5$ (生产一张椅子所用资源的影子价值至少等于其利润) * **非负约束:** $y_1, y_2 \ge 0$

现在,我们利用互补松弛性来求解对偶问题:

1. **分析原问题变量:** * $x_1^* = 4 > 0$,这意味着我们决定生产桌子。根据互补松弛性,对应的对偶约束必须是紧的(取等号): $$ 2y_1 + y_2 = 8 $$ * $x_2^* = 2 > 0$,这意味着我们决定生产椅子。对应的对偶约束也必须是紧的: $$ y_1 + 2y_2 = 5 $$

2. **求解对偶变量:** 我们得到了一个关于 $y_1, y_2$ 的二元一次方程组。解这个方程组得到: $y_1^* = 11/3$ (约 3.67) $y_2^* = 2/3$ (约 0.67)

3. **分析原问题约束:** * 木材约束: $2(4) + (2) = 10$。约束是紧的 ($10-10=0$)。根据互补松弛性,其对应的对偶变量 $y_1$ 可以为正,而我们求出的 $y_1^* = 11/3 > 0$,符合条件。 * 工时约束: $1(4) + 2(2) = 8$。约束是紧的 ($8-8=0$)。其对应的对偶变量 $y_2$ 可以为正,而我们求出的 $y_2^* = 2/3 > 0$,符合条件。

所有互补松弛条件都得到满足。我们可以验证对偶问题的最优值: $W^* = 10(11/3) + 8(2/3) = 110/3 + 16/3 = 126/3 = 42$ USD。 原问题和对偶问题的最优值相等 ($Z^* = W^* = 42$),验证了我们的解是最优的。

## 经济学直觉

互补松弛性提供了深刻的经济学解释:

1. **资源利用与影子价格 ($y_i^* \cdot s_i^* = 0$)** * **直觉**:"有剩余的资源不值钱"。 * 如果一种资源在最优生产计划中没有被用完 (即 $s_i^* > 0$),那么这种资源就不是生产的瓶颈。额外增加一单位这种资源也不会提高总利润。因此,这种资源的 **{{{影子价格}}}** (或边际价值) 为零 ($y_i^* = 0$)。 * 反过来,如果一种资源的影子价格为正 ($y_i^* > 0$),说明它是稀缺的、有价值的。为了达到最大利润,这种资源一定被完全用尽了 ($s_i^* = 0$)。在我们的例子中,木材和工时都被用完,所以它们的影子价格 $y_1^*$ 和 $y_2^*$ 都是正数。

2. **产品生产与机会成本 ($x_j^* \cdot e_j^* = 0$)** * **直觉**:"只生产划算的商品"。 * 对偶约束 $(A^T\mathbf{y})_j \ge c_j$ 的经济含义是,生产一单位产品 $j$ 所消耗资源的 **{{{机会成本}}}** (Opportunity Cost) 至少要等于它带来的利润 $c_j$。差额 $e_j^* = (A^T\mathbf{y}^*)_j - c_j$ 可以看作是生产该产品的"净亏损"。 * 互补松弛性表明,如果最优决策是生产某种产品 ($x_j^* > 0$),那么生产该产品必须是"刚刚好划算"的,即其利润恰好等于其资源机会成本 ($e_j^* = 0$)。 * 反之,如果生产某种产品的资源机会成本严格高于其利润 ($e_j^* > 0$),那么生产这种产品是"不划算"的。理性的决策者自然不会生产它,即 $x_j^* = 0$。在我们的例子中,桌子和椅子都被生产,因此它们的利润恰好等于其消耗资源的影子价值总和。

总之,互补松弛性是连接 {{{数学规划}}} 理论与经济决策直觉的桥梁。它使得我们不仅能找到最优解,还能深刻理解为什么这个解是最优的。