好的,我们开始学习一个新的运筹学词条。
半正定规划
我会从最基础的概念开始,循序渐进地为您讲解。
第一步:从线性规划到更一般的优化问题
您已经非常熟悉线性规划。它的标准形式是:
最小化一个线性目标函数 \(\mathbf{c}^\top \mathbf{x}\)。
同时满足一组线性等式约束 \(A\mathbf{x} = \mathbf{b}\) 和线性不等式约束 \(\mathbf{x} \geq 0\)(即每个变量非负)。
这里的决策变量 \(\mathbf{x}\) 是一个向量。现在,我们考虑一个更复杂的情况:如果我们的决策变量不是一个向量,而是一个矩阵,并且对这个矩阵有特殊的“非负”要求,会怎么样?这就引出了半正定规划。
第二步:理解“半正定矩阵”
这是半正定规划的核心概念。一个对称矩阵 \(X\)(即 \(X = X^\top\))被称为半正定矩阵,如果它满足以下等价条件之一:
- 对于所有的非零向量 \(\mathbf{z}\),都有 \(\mathbf{z}^\top X \mathbf{z} \geq 0\)。
- 矩阵 \(X\) 的所有特征值都是非负的(大于等于零)。
- 矩阵 \(X\) 可以分解为 \(X = V V^\top\) 的形式。
直观上,您可以将半正定矩阵看作是向量空间中“非负数”概念在矩阵世界中的推广。就像标量中的 \(x \geq 0\) 一样,我们记作 \(X \succeq 0\) 来表示矩阵 \(X\) 是半正定的。
简单例子:
- 单位矩阵 \(I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}\) 是半正定的,因为对于任何 \(\mathbf{z} = [z_1, z_2]^\top\),有 \(\mathbf{z}^\top I \mathbf{z} = z_1^2 + z_2^2 \geq 0\)。
- 矩阵 \(\begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}\) 也是半正定的(它的特征值是1和3)。
第三步:定义半正定规划
现在,我们可以正式定义半正定规划了。它的标准形式如下:
\[\begin{aligned} & \underset{X}{\text{minimize}} & & \mathbf{C} \bullet X \\ & \text{subject to} & & \mathbf{A}_i \bullet X = b_i, \quad i = 1, \dots, m \\ & & & X \succeq 0 \end{aligned} \]
这里:
- 决策变量 \(X\) 是一个 \(n \times n\) 的对称矩阵,而不再是一个向量。
- 目标函数使用了一个新的运算“\(\bullet\)”,称为弗罗贝尼乌斯内积。它的定义是 \(\mathbf{C} \bullet X = \sum_{i=1}^n \sum_{j=1}^n C_{ij} X_{ij}\)。简单来说,就是两个矩阵对应位置元素相乘再求和。这实际上是线性函数 \(\mathbf{c}^\top \mathbf{x}\) 在矩阵形式下的自然推广。
- 约束条件包含两部分:
- \(m\) 个线性等式约束,同样用弗罗贝尼乌斯内积表示。每个约束要求矩阵 \(X\) 与另一个给定矩阵 \(\mathbf{A}_i\) 的内积等于一个标量 \(b_i\)。
- 一个半正定约束 \(X \succeq 0\)。这就是对矩阵变量 \(X\) 的“非负”要求,它取代了线性规划中的 \(\mathbf{x} \geq 0\)。
第四步:半正定规划的重要特性
- 凸优化:半正定规划是一类特殊的凸优化问题。这意味着它的任何局部最优解都是全局最优解,并且有成熟的算法(如内点法,您已经学过)可以高效地求解。
- 强大的表达能力:许多非线性的、非凸的优化问题,都可以通过巧妙的变换,转化为等价的半正定规划问题。这使得SDP成为一个非常强大的建模工具。
- 线性规划和二次规划的统一框架:您所熟悉的线性规划和二次规划,都可以看作是半正定规划的特例。这意味着SDP是比它们更一般、更强大的模型。
第五步:一个经典应用举例——最大割问题的近似求解
为了展示SDP的威力,我们看一个图论中的经典难题:最大割问题。
- 问题描述:给定一个无向图,将顶点分成两个集合,使得连接这两个集合的边的权重之和最大。
- 问题难度:最大割问题是NP难问题,意味着没有已知的多项式时间算法能精确求解它。
然而,利用半正定规划,我们可以为它找到一个非常高质量的近似解。步骤如下:
- 建立整数规划模型:为每个顶点定义一个变量 \(x_i\),取值为 \(+1\) 或 \(-1\),表示它属于哪个集合。可以建立一个二次整数规划模型。
- 松弛为SDP:这个整数规划模型是极难求解的。关键的一步是将其“松弛”为一个半正定规划。我们引入一个矩阵变量 \(Y\),其中每个元素 \(Y_{ij}\) 对应于 \(x_i x_j\) 的期望。整数约束 \(x_i^2 = 1\) 被松弛为 \(Y_{ii} = 1\),而矩阵 \(Y\) 被要求是半正定的。
- 求解SDP:这个松弛后的SDP模型是凸的,可以用内点法等算法高效求解,得到一个最优解矩阵 \(Y^*\)。
- 随机化舍入:得到 \(Y^*\) 后,我们使用一种称为“随机超平面舍入”的技巧,将矩阵解 \(Y^*\) 转换回原问题的一个可行的顶点划分方案。
这个由SDP导出的近似算法,能够保证找到的解的值至少是最优解值的约0.878倍。这是一个非常著名的结果,展示了SDP在解决组合优化问题中的强大能力。
总结
半正定规划将线性规划的概念推广到了矩阵空间,通过引入半正定矩阵约束,极大地扩展了可建模和求解的问题范围。它是凸优化的一个重要分支,能够统一处理线性规划和二次规划,并广泛应用于组合优化、控制系统、统计学和机器学习等领域。其核心思想在于,通过将难题“松弛”为一个更易处理的凸优化问题,来寻找高质量的近似解或边界。