半正定规划(Semi-Definite Programming, SDP)是一类凸优化问题
,它的目标函数和约束条件都是半正定矩阵的线性函数
。
SDP问题通常出现在信号处理、控制理论、组合优化、量子计算等多个领域,因为它们能够处理一些其他类型优化问题无法直接处理的复杂约束。
SDP的标准形式
一个SDP问题可以被表述为:
这里的符号意义如下:
- :是一个固定的
半正定矩阵
,表示目标函数中的成本矩阵。
- :是
决策变量,即我们试图找到的半正定矩阵。
- :是第 个
线性约束的矩阵
,其中 - :是第 个
线性约束的标量
,其中 - :表示所有
- :表示
矩阵的Frobenius内积
,即 。 - :表示 是
半正定
的,这意味着对于所有的非零向量 ,有
解释:
- 目标函数: 意味着我们要最小化矩阵 和决策矩阵 之间的
Frobenius内积
。这个内积实际上是矩阵 和 - 线性约束: 表示对于每一个 ,矩阵 和决策矩阵
之间的内积必须等于给定的标量
- 半正定约束: 确保了决策矩阵 是
半正定的
。这是SDP的关键特性,也是它名字的来源。
SDP的特点:
- 凸性:SDP问题是
凸优化
问题的一种,这意味着如果存在解,那么找到的解将是全局最优解。
- 高效求解:现代算法,如内点法,可以有效地解决大规模的SDP问题。
- 应用广泛:SDP问题可以用来放松或近似一些NP-hard的组合优化问题,比如图着色、最大割等问题。
示例:
假设我们有一个SDP问题,其中目标函数是通过矩阵 和决策矩阵 的Frobenius内积给出的,而约束条件则是通过一系列矩阵 和对应的标量
我们的目标是找到一个半正定矩阵
在SDP问题中,矩阵的大小 和约束的数量
例如,如果我们有3个约束,我们就可以写出相应的SDP问题: