跳转至

最大割问题⚓︎

约 2355 个字 8 行代码 预计阅读时间 8 分钟 总阅读量

1. Max-Cut 问题是什么?模型如何表示?⚓︎

问题定义:

给定一个无向图 \(G=(V, E)\),其中 \(V=\{1, ..., n\}\) 是顶点集,\(E\) 是边集,每条边 \((i, j)\) 有权重 \(w_{ij}\)。 MAX-CUT 问题的目标是找到一个顶点子集 \(S \subset V\),将顶点划分为两个集合 \((S, \bar{S})\)(其中 \(\bar{S} = V \setminus S\)),使得连接这两个集合的所有边的权重之和最大化。

这个问题可以被建模成一个: 整数二次规划(Integer Quadratic Programming) formulation:

  • 目标函数: $$ \max \frac{1}{2} \sum_{1 \le i < j \le n} w_{ij}(1 - y_i y_j) $$
  • 约束条件: $$ y_i \in {-1, 1}, \quad \forall i \in V $$

变量含义:

  • \(y_i = 1\) 表示顶点 \(i\) 属于集合 \(S\)
  • \(y_i = -1\) 表示顶点 \(i\) 属于集合 \(\bar{S}\)
  • 如果 \(y_i \neq y_j\)(即一个为 1,一个为 -1),则边 \((i, j)\) 跨越了割,\((1 - y_i y_j)\) 为 2,贡献权重 \(w_{ij}\);否则贡献为 0。

背景: NP-hard。应用领域包括 VLSI 设计(超大规模集成电路)和统计物理学(如自旋玻璃模型)。


2. 随机启发式算法⚓︎

基于论文 RANDOMIZED HEURISTICS FOR THE MAX-CUT PROBLEM

6 种随机启发式算法。这些算法基于三种主要的元启发式策略及其混合:GRASPVNSPath-Relinking (PR)

核心策略: 1. GRASP (Greedy Randomized Adaptive Search Procedure): * 构造阶段: 使用自适应贪婪函数。对于每个未分配的顶点 \(v\),计算将其放入 \(S\)\(\bar{S}\) 能增加的权重。根据贪婪值构建“受限候选列表 (RCL)",从中随机选择一个顶点加入解中。 * 局部搜索阶段: 尝试移动单个顶点到另一个集合,如果能使割权重增加(\(\delta(v) > 0\)),则移动,直到无法改进。 2. VNS (Variable Neighborhood Search): * 通过动态改变邻域结构来跳出局部最优。 * 定义 \(k\) 阶邻域:同时移动 \(k\) 个顶点到另一个集合。如果在当前邻域找不到改进解,则增加 \(k\) 值(扩大搜索范围)。 3. Path-Relinking (PR): * 一种强化策略。在找到一个局部最优解后,将其与一个“精英解池 (Elite Set)"中的解进行路径连接。 * 通过逐步翻转变量,使当前解向精英解靠拢,并在路径上寻找更好的解。

提出的 6 种具体算法:

  1. g (Pure GRASP): 纯 GRASP 算法。
  2. gpr (GRASP + PR): GRASP 加上路径重连强化。
  3. vns (Pure VNS): 纯 VNS 算法。
  4. vnspr (VNS + PR): VNS 加上路径重连强化。
  5. gvns (GRASP + VNS): 使用 VNS 代替 GRASP 中的局部搜索阶段。
  6. gvnspr (GRASP + VNS + PR): 上述混合再加上路径重连。

在实现和实验过程中,有几个关键的技术细节决定了算法的性能:

  • 贪婪函数与 RCL 参数 \(\alpha\)
    • 在 GRASP 构造阶段,定义截断值 \(\mu = w_{min} + \alpha \cdot (w_{max} - w_{min})\)
    • 只有贪婪函数值 \(\ge \mu\) 的顶点才能进入候选列表。
    • 细节: 在实验中,\(\alpha\) 不是固定的,而是在每次 GRASP 迭代中从 \([0, 1]\) 均匀分布中随机选择。这增加了构造解的多样性。
  • 精英解池 (Elite Set) 管理:
    • 用于 Path-Relinking。最大容量设为 30。
    • 替换策略: 如果新解比池中最差解好但不如最好解,它必须与池中所有解的特征向量差异超过 1%,才能替换掉最差解。这保证了精英解的多样性,防止早熟收敛。
  • VNS 的邻域参数 \(k_{max}\)
    • 纯 VNS 中,\(k_{max} = 100\)(搜索更彻底,但慢)。
    • 在 GRASP+VNS 混合中,为了加速,\(k_{max}\) 减小为 15。
  • 对比基准的选择:
    • 作者没有主要对比经典的 Goemans-Williamson (GW) 随机算法(近似比 0.87856)。
    • 原因: Burer, Monteiro, and Zhang 提出的 circut 算法(基于 rank-2 松弛启发式)在实践中比 GW 算法产生更高质量的解且速度更快。因此,作者主要将自己的启发式算法与 circut 进行对比。
  • 时间 - 目标值分布 (Time-to-Target):
    • 作者不仅看最终结果,还分析了“找到特定质量解所需时间”的概率分布。发现 GRASP+PR (gpr) 在寻找次优解时收敛最快,适合并行化。

2.1 近似算法⚓︎

Rank-Two Relaxation Heuristics for Max-Cut and Other Binary Quadratic Programs,2002.

作者:Samuel Burer, Renato D.C. Monteiro, Yin Zhang

核心贡献:提出一种基于秩二松弛(rank-two relaxation) 的连续优化启发式算法,用于高效求解Max-Cut等二元二次规划问题。

目前在解决同类问题效果很好。

3. 系统的数值试验与梳理⚓︎

针对最大割问题,What Works Best When? A Systematic Evaluation of Heuristics for Max-Cut and QUBO 参考这篇论文的报告。这里的 QUBO 指的是 Quadratic Unconstrained Binary Optimization,存在简单的变换可以将 QUBO 实例转化为 Max-Cut 实例,QUBO 目标是在二元变量(0 或 1)上优化(最大化或最小化)一个二次函数,且没有显式的约束条件(除了变量本身的二元性)。

\[ \max_{x \in \{0,1\}^n} x^T Q x \]

其中:

  • \(x\) 是一个包含 \(n\) 个变量的向量,每个变量 \(x_i \in \{0, 1\}\)
  • \(Q\) 是一个 \(n \times n\) 的实数矩阵(通常是对称矩阵或上三角矩阵),包含了线性项和二次项的系数。
  • 目标函数展开后包含形如 \(q_{ii}x_i\) 的线性项和形如 \(q_{ij}x_i x_j\) 的二次交互项。

主要特点

  • 二元性:变量只能取 0 或 1,这使得解空间是离散的(大小为 \(2^n\))。
  • 无约束:问题本身没有额外的线性或非线性约束(如 \(Ax=b\))。如果有约束,通常通过惩罚项(Penalty Method)加入到目标函数矩阵 \(Q\) 中转化为无约束形式。
  • 计算复杂度:QUBO 是 NP-hard 问题。论文中提到它与 Max-Cut 问题可以通过简单的变换相互归约(reduce to each other),而 Max-Cut 是 Karp 的 21 个 NP 完全问题之一。
项目 内容
标题 What Works Best When? A Systematic Evaluation of Heuristics for Max-Cut and QUBO
作者 Iain Dunning, Swati Gupta, John Silberholz
机构 MIT Operations Research Center
关键词 计算测试、可重复研究、启发式算法、二元二次优化、Max-Cut、超启发式、测试床、可解释机器学习

现有启发式算法评估的三大缺陷

  1. 可重复性差
  2. 4% 的 Max-Cut/QUBO 启发式论文公开源代码
  3. 20% 未报告处理器信息,87% 未报告编译器标志

  4. 比较不公平、范围窄

  5. 86% 的比较使用不同的终止条件,难以判断性能差异来源
  6. 中位数仅比较 3 种先前算法,无人比较超过 10 种

  7. 测试实例同质化

  8. 标准库仅含 231 个随机生成实例,缺乏真实场景代表性
  9. Max-Cut 库仅含稀疏图,QUBO 库仅含稠密矩阵

研究目标⚓︎

构建可复现、公平、大规模的启发式算法评估框架,回答"什么算法在什么情况下最有效"这一实践者核心问题。


┌─────────────────────────────────────┐
│  1. 扩展实例库 (Section 2)           │
│  • 3,296 个实例(2,153 真实 + 1,143 随机)│
│  • 覆盖多种图结构、密度、权重分布      │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│  2. 开源启发式实现 (Section 3)        │
│  • 系统综述筛选 95 篇论文              │
│  • 实现 37 种启发式算法(10 Max-Cut + 27 QUBO)│
│  • 统一 C++ 代码框架,共享数据结构      │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│  3. 云端大规模评估 (Section 4)        │
│  • 60 台 AWS EC2 实例并行计算          │
│  • 统一终止条件:生成 1500 个随机解 + 局部搜索 │
│  • 每种算法×每种实例×5 次随机种子        │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│  4. 可解释性分析 (Section 5)          │
│  • CART 回归树识别算法性能与实例特征关系  │
│  • 分析启发式思想(如进化算法、禁忌搜索)适用场景│
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│  5. 算法组合构建 (Section 6)          │
│  • 随机森林预测最优启发式              │
│  • 构建超启发式(hyper-heuristic)选择器  │
└─────────────────────────────────────┘

📊 数值试验设计⚓︎

  • 数据库
类型 数量 来源
标准库实例 231 G-set, Spin Glass, Biq Mac, OR-Lib 等
真实世界实例 ~2,000 VLSI 设计、电信网络、生物网络分析等
随机生成实例 1,143 Erdős-Rényi, Barabási-Albert, Watts-Strogatz 等
总计 3,296 公开于 GitHub: MQLib/MQLib
  • 评估指标(7 项)
# 核心指标定义(以启发式 h 在实例集 I 上为例)
- WD(h): 最差解平均偏差5 次运行中最差
- MD(h): 平均解平均偏差
- BD(h): 最优解平均偏差  
- FE(h): "并列第一"实例百分比
- FS(h): "严格第一"实例百分比
- BA(h): 至少一次达到最优的实例百分比
- AR(h): 平均排名1=最佳37=最差
  • 总计算量:2.0 CPU-年(每算法 20.1 CPU-天)
  • 墙钟时间:12.4 天(60 台机器并行)
  • 云成本:$1,196(每算法 $32.3)

🎯 结论⚓︎

排名 算法 类型 FE(%) FS(%) MD(%) AR
1 BUR02 Max-Cut 非线性优化+局部搜索 22.9 16.2 0.3 10.7
2 FES02GP GRASP+路径重连 21.3 4.1 0.5 10.1
3 GVP GRASP+VNS+路径重连 19.4 2.3 0.6 7.5
4 PAL04T3 禁忌搜索+GRASP 19.3 5.5 0.7 14.2
5 FES02GV GRASP+VNS 局部搜索 18.0 1.5 0.7 11.2

🔑 关键发现:无单一算法在所有实例上最优,30/37 算法在至少一个实例上表现最佳。

标准库评估结果 → 扩展库评估结果
• 23 种算法在标准库上"严格第一"率为 0,但在扩展库上 >0
• 其中 3 种算法在扩展库上"严格第一"率 >5%
• 例:MER99LS(遗传算法)在扩展库上排名从 23/37 升至 3/37
启发式类别 适用实例特征 不适用实例特征
进化算法 稀疏/稠密中等规模图 超大规模实例
禁忌搜索 稠密图 稀疏图
  1. 方法论贡献
  2. 首次实现 Max-Cut/QUBO 启发式的大规模公平比较
  3. 开源代码库 MQLib 促进可重复研究
  4. 统一终止条件 + 云计算确保结果可比性

  5. 实践指导价值

  6. 无"万能算法",需根据实例特征选择启发式
  7. 算法组合(portfolio)显著优于单一算法
  8. 可解释模型帮助理解"何时用什么算法"

  9. 领域启示

  10. 标准测试库的同质化严重限制结论泛化性
  11. 真实世界实例对评估启发式鲁棒性至关重要
  12. 机器学习方法可有效辅助算法选择

4 关于二次规划⚓︎

二次优化就是目标函数为二次型、约束通常为线性的优化问题,形式可写成 \(\min \frac12x^TPx+q^Tx\),约束一般线性。

判断难度关键看矩阵 \(P\):若 \(P\) 半正定,问题是凸二次规划,属于凸优化,只有全局最优,可用内点法、有效集法等在多项式时间精确求解;若 \(P\) 不定或负定,就是非凸二次优化,存在大量局部最优,属于NP-hard,无法高效求精确解。

最大割 Max Cut 就可以写成非凸二次 0‑1 规划,也是 NP‑hard。实际求解里,凸 QP 直接用求解器快速算出最优解,非凸 QP 一般用 SDP 松弛、启发式算法求近似解,很难得到全局最优。