半正定规划(Semi-Definite Programming, SDP)是一类凸优化问题
,它的目标函数和约束条件都是半正定矩阵的线性函数
。
SDP问题通常出现在信号处理、控制理论、组合优化、量子计算等多个领域,因为它们能够处理一些其他类型优化问题无法直接处理的复杂约束。
SDP的标准形式
一个SDP问题可以被表述为:
min ⟨ C , X ⟩ s.t. ⟨ A i , X ⟩ = b i , i = 1 , … , m X ⪰ 0 , \begin{align*} \min\ & \langle C, X \rangle \\ \text{s.t.}\ & \langle A_i, X \rangle = b_i, \quad i = 1,\ldots,m \\ & X \succeq 0, \end{align*} min s.t. ⟨C,X⟩⟨Ai,X⟩=bi,i=1,…,mX⪰0,
这里的符号意义如下:
-
C
∈
S
n
C \in S^n
C∈Sn :是一个固定的
半正定矩阵
,表示目标函数中的成本矩阵。
-
X
∈
S
n
X \in S^n
X∈Sn :是
决策变量,即我们试图找到的半正定矩阵。
-
A
i
∈
S
n
A_i \in S^n
Ai∈Sn :是第
i
i
i 个
线性约束的矩阵
,其中 i = 1 , … , m i = 1,\ldots,m i=1,…,m 。 -
b
i
b_i
bi :是第
i
i
i 个
线性约束的标量
,其中 i = 1 , … , m i = 1,\ldots,m i=1,…,m 。 - S n S^n Sn :表示所有 n × n n \times n n×n 实对称矩阵的集合。
-
⟨
⋅
,
⋅
⟩
\langle \cdot, \cdot \rangle
⟨⋅,⋅⟩ :表示
矩阵的Frobenius内积
,即 ⟨ A , B ⟩ = ∑ i = 1 n ∑ j = 1 n A i j B i j \langle A, B \rangle = \sum_{i=1}^n \sum_{j=1}^n A_{ij}B_{ij} ⟨A,B⟩=∑i=1n∑j=1nAijBij。 -
X
⪰
0
X \succeq 0
X⪰0 :表示
X
X
X 是
半正定
的,这意味着对于所有的非零向量 v v v ,有 v T X v ≥ 0 v^T X v \geq 0 vTXv≥0 。
解释:
-
目标函数: min ⟨ C , X ⟩ \min\ \langle C, X \rangle min ⟨C,X⟩ 意味着我们要最小化矩阵 C C C 和决策矩阵 X X X 之间的
Frobenius内积
。这个内积实际上是矩阵 C C C 和 X X X 元素的乘积之和。 -
线性约束: ⟨ A i , X ⟩ = b i \langle A_i, X \rangle = b_i ⟨Ai,X⟩=bi 表示对于每一个 i i i ,矩阵 A i A_i Ai 和决策矩阵 X X X
之间的内积必须等于给定的标量
b i b_i bi 。这些是线性约束,因为它们涉及矩阵的线性组合。 -
半正定约束: X ⪰ 0 X \succeq 0 X⪰0 确保了决策矩阵 X X X 是
半正定的
。这是SDP的关键特性,也是它名字的来源。
SDP的特点:
-
凸性:SDP问题是
凸优化
问题的一种,这意味着如果存在解,那么找到的解将是全局最优解。
-
高效求解:现代算法,如内点法,可以有效地解决大规模的SDP问题。
-
应用广泛:SDP问题可以用来放松或近似一些NP-hard的组合优化问题,比如图着色、最大割等问题。
示例:
假设我们有一个SDP问题,其中目标函数是通过矩阵 C C C 和决策矩阵 X X X 的Frobenius内积给出的,而约束条件则是通过一系列矩阵 A i A_i Ai 和对应的标量 b i b_i bi 给出的。
我们的目标是找到一个半正定矩阵
X
X
X ,它最小化目标函数的同时满足所有线性约束。
在SDP问题中,矩阵的大小 n n n 和约束的数量 m m m 可以很大,但这并不妨碍我们使用适当的算法找到解决方案。
例如,如果我们有3个约束,我们就可以写出相应的SDP问题:
min ⟨ ( 1 0 0 1 ) , X ⟩ s.t. ⟨ ( 1 0 0 0 ) , X ⟩ = 1 ⟨ ( 0 1 1 0 ) , X ⟩ = 0 ⟨ ( 0 0 0 1 ) , X ⟩ = 1 X ⪰ 0. \begin{align*} \min\ & \langle \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}, X \rangle \\ \text{s.t.}\ & \langle \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}, X \rangle = 1 \\ & \langle \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}, X \rangle = 0 \\ & \langle \begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}, X \rangle = 1 \\ & X \succeq 0. \end{align*} min s.t. ⟨(1001),X⟩⟨(1000),X⟩=1⟨(0110),X⟩=0⟨(0001),X⟩=1X⪰0.