# 最大切问题
最大切问题(Max-Cut Problem)是图论中的一个经典组合优化问题,属于 NP 难问题。通过半正定松弛(Semidefinite Relaxation),可以将这一非凸问题转化为可求解的凸优化问题。
-
半正定松弛 (Semidefinite Relaxation)
非凸优化问题的例子
考虑以下非凸优化问题:
这不是一个凸优化问题(因为约束 不是凸的)。最优解为 。
半正定松弛的基本思想
对于非凸优化问题,特别是二次优化问题,可以通过引入新的变量和约束,将问题松弛为半正定规划(SDP)问题:
- 引入矩阵变量 ,将二次项 替换为
- 添加约束 (半正定约束)
- 添加约束 (秩约束,但通常被忽略以得到凸松弛)
- 忽略秩约束后,问题变为凸的 SDP 问题
-
图论中的切与最大/最小切问题 (Cut in Graph Theory and Max/Min-Cut Problems)
图的定义
设 是一个无向图,其中:
- 是顶点集合
- 是边集合
- 每条边 有权重
切(Cut)的定义
对于图 的一个切(cut)是将顶点集合 划分为两个不相交的子集 和 。
切的大小(Cut Size)
切的大小定义为连接 和 的边的权重之和:
最大切问题(Max-Cut Problem)
最大切问题是在所有可能的切中,找到使切的大小最大的切:
这是一个 NP 难问题。
最小切问题(Min-Cut Problem)
最小切问题是找到使切的大小最小的切:
最小切问题可以在多项式时间内求解(例如使用最大流最小切定理)。
-
通过半正定松弛求解最大切问题 (Max-Cut via Semidefinite Relaxation)
最大切问题的数学表述
对于每个顶点 ,定义变量 :
- 表示顶点 属于集合
- 表示顶点 属于集合
则边 在切中当且仅当 ,即 。
最大切问题可以表述为:
等价地:
半正定松弛
引入矩阵变量 ,其中 。注意到 意味着:
- (半正定)
- (秩为 1)
- (对角线元素为 1)
忽略秩约束 ,得到半正定松弛:
这是一个凸优化问题(半正定规划),可以在多项式时间内求解。
从松弛解恢复原始解
求解 SDP 松弛后,得到矩阵 。由于 可能不满足 ,需要使用舍入(rounding)方法从 恢复原始变量 :
随机舍入方法(Goemans-Williamson 算法):
- 对 进行 Cholesky 分解:,其中
- 随机选择单位向量 (均匀分布在单位球面上)
- 对每个顶点 ,计算 ,其中 是 的第 行
这种方法可以保证得到至少 倍最优值的近似解。
-
半正定松弛的界 (Bounds of Semidefinite Relaxation)
松弛的界
设 是原始最大切问题的最优值, 是半正定松弛的最优值,则:
因为原始问题的可行域是松弛问题可行域的子集。
近似比
Goemans-Williamson 算法可以保证:
即算法得到的解至少是最优解的 。
紧性
在某些情况下,半正定松弛可能是紧的(tight),即 。但在一般情况下,存在松弛间隙(relaxation gap)。
-
最大切问题的应用
- 电路设计:VLSI 布局
- 聚类:数据聚类问题
- 网络分析:社区检测
- 机器学习:半监督学习
-
半正定松弛的一般方法
二次优化问题的半正定松弛
对于一般的二次优化问题:
可以通过以下步骤进行半正定松弛:
- 引入矩阵变量
- 将目标函数中的 替换为
- 将约束中的二次项替换为 的相应元素
- 添加约束 和 (如果 )
- 忽略秩约束
# 数独问题、拼图问题与日历问题
数独、拼图和日历等组合问题可以通过凸优化方法(特别是线性规划和二次规划)来求解。这些方法将组合约束转化为线性或二次约束,从而将离散优化问题转化为连续优化问题。
-
数独问题 (Sudoku Puzzle)
数独规则
数独是一个 的网格,需要填入数字 到 ,满足以下约束:
- 每行包含 到 的每个数字恰好一次
- 每列包含 到 的每个数字恰好一次
- 每个 的子网格包含 到 的每个数字恰好一次
- 某些格子已经预先填入数字(已知值)
优化问题表述
可以使用整数规划或线性规划来表述数独问题:
变量定义:
- 定义二进制变量 ,其中 表示位置, 表示数字
- 表示位置 填入数字
- 表示位置 不填入数字
约束条件:
- 每个位置恰好填入一个数字:
- 每行包含每个数字恰好一次:
- 每列包含每个数字恰好一次:
- 每个 子网格包含每个数字恰好一次:
- 已知值的约束:
目标函数:
由于数独问题主要是可行性问题(找到满足所有约束的解),可以设置任意目标函数,例如:
或使用线性规划求解可行性问题。
求解方法
- 可以使用整数线性规划(ILP)求解器
- 也可以使用线性规划松弛,然后通过舍入或分支定界方法得到整数解
- 对于标准数独,通常有唯一解
-
拼图问题 (Jigsaw Puzzle)
问题描述
拼图问题是将打乱的拼图片段重新组合成完整的图像。这涉及:
- 确定每个片段的位置
- 确定片段之间的邻接关系
- 确保片段之间的边界匹配
优化问题表述
可以使用线性规划或二次规划来表述拼图问题:
变量定义:
- 定义位置变量表示每个片段在最终图像中的位置
- 定义邻接变量表示片段之间的连接关系
- 定义匹配变量表示片段边界的匹配程度
约束条件:
- 位置约束:每个片段有唯一位置
- 邻接约束:相邻片段必须匹配
- 边界约束:边界片段必须位于图像边缘
- 完整性约束:所有片段都必须被使用
目标函数:
最小化片段之间的不匹配程度:
或最大化匹配程度:
求解方法
- 线性规划方法:将拼图问题转化为线性规划
- 二次规划方法(PSQP):使用二次规划求解拼图问题,考虑片段之间的匹配得分
- 分层循环约束方法:使用分层方法处理大规模拼图
应用
- 图像重建
- 考古学中的碎片重组
- 计算机视觉中的图像拼接
-
日历问题 (Calendar Puzzle)
问题描述
日历拼图是一种特殊的拼图问题,需要将拼图片段组合成特定形状(如日历形状),满足特定的约束条件。
优化问题表述
类似于拼图问题,可以使用线性规划或二次规划来表述:
约束条件:
- 片段位置约束
- 形状约束(最终形状必须符合日历形状)
- 邻接和匹配约束
求解方法
- 使用凸优化方法(线性规划、二次规划)
- 结合启发式方法提高求解效率
-
凸优化在组合问题中的优势
优势
- 将离散组合问题转化为连续优化问题
- 可以利用高效的凸优化算法
- 可以处理大规模问题
- 提供理论保证(如最优性条件)
挑战
- 需要将离散约束转化为连续约束
- 可能需要舍入步骤从连续解得到离散解
- 对于某些问题,松弛可能不够紧
-
相关工具和资源
- CVX-Jigsaw:使用 CVX 求解拼图问题的工具
- 在线日历拼图求解器:https://joinker.oss-cn-shanghai.aliyuncs.com/calendar-puzzle-solver/index.html
- 计算拼图求解:http://icvl.cs.bgu.ac.il/automatic-jigsaw-puzzle-solving/
# MM 算法和 Reweighted L1
MM(Majorization-Minimization)算法和重加权 (Reweighted )方法是求解非凸优化问题的重要技术,通过迭代求解一系列凸优化子问题来逼近原问题的解。
-
MM 算法 (Majorization-Minimization Algorithm)
基本思想
MM 算法是一种迭代优化方法,通过构造代理函数(surrogate function)来简化原问题的求解:
- Majorization(主化):在每次迭代中,构造一个代理函数,该函数在原问题的当前点处与原函数值相等,且在原函数的"上方"(即大于等于原函数)
- Minimization(最小化):最小化代理函数,得到下一个迭代点
算法流程
对于优化问题 :
- 初始化
- 对于 :
- 构造代理函数 ,使得:
- 对所有 成立
- 更新:
- 构造代理函数 ,使得:
- 重复直到收敛
单调性保证
MM 算法保证目标函数在每次迭代中单调递减:
这是因为代理函数在原函数上方,且最小化代理函数会减少目标函数值。
-
重加权 方法 (Reweighted )
问题背景
考虑 最小化问题:
或等价地,考虑对数惩罚函数:
其中 是一个小的常数。
重加权 算法
重加权 算法的关键思想是迭代求解带权重的 最小化问题。
算法步骤:
- 初始化 (例如,使用标准 最小化)
- 对于 :
- 计算权重:
- 求解加权 最小化问题:
- 重复直到收敛
等价形式
引入辅助变量 ,则优化问题可以写为:
消去 后,等价于:
这是一个约束 范数最小化问题,可以使用单纯形算法等方法快速求解。
权重系数的解释
重加权算法得名于目标函数中出现的反比例权重系数 。
直观解释:
- 当 较大时,权重 较小,对 的惩罚较小
- 当 较小时,权重 较大,对 的惩罚较大
- 这迫使潜在解 在 较小的索引处收缩,从而促进稀疏性
参数 的作用
常数 的引入是为了:
- 保证迭代稳定性:防止分母为零
- 允许零值恢复:确保 中零值分量 不会严格禁止下一轮迭代中 变为非零
注意事项:
- 通常在迭代开始时设置为很小的值
- 如果第 个分量 在第 次迭代后变为接近零,对应的权重系数将变为非常大的数
- 这通常阻止我们在第 次迭代后重新考虑将第 个分量 作为非零解的一部分的可能性
- 因此, 的选择需要在稳定性和灵活性之间权衡
-
MM 算法与重加权 的结合
代理函数构造
对于对数惩罚函数 ,可以构造代理函数:
该代理函数满足:
- (由对数函数的凸性)
迭代优化问题
在第 次迭代中,优化问题为:
消去 后,等价于:
-
重加权 的优势
- 比标准 最小化更能促进稀疏性
- 通过迭代改进,逐步逼近 最小化
- 每次迭代只需求解凸优化问题(加权 最小化)
- 计算效率高(可以使用单纯形算法等)
-
应用
- 稀疏信号恢复:从少量观测中恢复稀疏信号
- 压缩感知:改进 最小化的性能
- 特征选择:在机器学习中选择重要特征
# Robust PCA
鲁棒主成分分析(Robust Principal Component Analysis, Robust PCA)旨在从被稀疏噪声污染的数据中恢复低秩结构,是传统 PCA 的鲁棒扩展。
-
问题设定
矩阵分解问题
在许多情况下,我们需要将矩阵 分解为两个矩阵的和:
- 矩阵 具有小秩(low rank)
- 矩阵 是稀疏的(sparse)
即 ,其中 是低秩矩阵, 是稀疏矩阵。
应用场景
- 视频背景建模: 是静态背景(低秩), 是前景物体(稀疏)
- 人脸识别: 是正常光照下的人脸(低秩), 是阴影或遮挡(稀疏)
- 推荐系统: 是用户偏好(低秩), 是异常评分(稀疏)
- 数据去噪:从被稀疏异常值污染的数据中恢复真实信号
-
优化问题表述
原始问题(非凸)
原始优化问题为:
其中:
- 是矩阵 的秩(非零奇异值的个数)
- 是矩阵 的 范数(非零元素的个数)
问题困难性
- 这不是一个凸优化问题
- 和 都是非凸函数
- 直接求解非常困难(NP 难问题)
-
凸松弛:核范数与 范数
凸松弛问题
通过凸松弛,将原问题转化为:
其中:
- 是矩阵 的核范数(nuclear norm),即 的奇异值之和
- 是矩阵 的 范数(元素绝对值之和)
- 是正则化参数,控制低秩性和稀疏性的权衡
核范数的性质
- 核范数是矩阵秩的凸包(在单位球上)
- 核范数是矩阵的 范数在奇异值空间中的推广
- 最小化核范数可以促进低秩性,类似于 范数促进稀疏性
范数的性质
- 范数是 范数的凸包
- 最小化 范数可以促进稀疏性
-
理论保证
精确恢复条件
在满足某些条件下,凸松弛问题可以精确恢复原始的低秩矩阵 和稀疏矩阵 :
- 的秩足够小
- 的稀疏性足够高(非零元素比例足够小)
- 和 满足某些不相干性(incoherence)条件
恢复保证
如果:
其中 是常数, 是 的不相干参数,则凸松弛问题可以以高概率精确恢复 和 。
-
求解方法
算法
Robust PCA 可以使用多种算法求解:
- 增广拉格朗日方法(ALM):将约束 加入拉格朗日函数
- 交替方向乘数法(ADMM):交替更新 和
- 近端梯度方法:使用软阈值算子更新 和
软阈值算子
对于核范数最小化,软阈值算子为:
其中 是 的奇异值分解, 是奇异值, 是阈值参数。
对于 范数最小化,软阈值算子为:
-
Robust PCA 的应用
- 视频背景减除:从视频中分离静态背景和运动前景
- 人脸识别:处理光照变化和遮挡
- 推荐系统:检测异常评分
- 数据清洗:去除稀疏异常值
- 图像处理:图像去噪和修复
-
与标准 PCA 的关系
标准 PCA
标准 PCA 假设数据是低秩的,且噪声是高斯噪声:
其中 是高斯噪声矩阵。
Robust PCA
Robust PCA 假设数据是低秩的,但噪声是稀疏的(可能是任意大的异常值):
其中 是稀疏矩阵(异常值)。
优势
- 对稀疏异常值更鲁棒
- 可以处理任意大的异常值(只要它们是稀疏的)
- 在视频分析、推荐系统等应用中表现优异