基于线性规划的图最大权独立集问题的对偶上升算法求解示例
我将为您讲解图论中一个经典问题——最大权独立集问题(Maximum Weight Independent Set, MWIS)的线性规划建模及其对偶上升算法求解过程。这是一个NP难问题,通过对偶上升算法可以高效求解其线性规划松弛,并可用于设计近似算法或作为精确算法的下界。
问题描述
给定一个无向图 \(G = (V, E)\),其中每个顶点 \(v \in V\) 有一个非负权重 \(w_v \geq 0\)。独立集是指顶点集合的一个子集,使得其中任意两个顶点在图中都不相邻(即没有边直接连接)。最大权独立集问题的目标是找到一个独立集 \(I \subseteq V\),使得其总权重 \(\sum_{v \in I} w_v\) 最大化。
举例说明
考虑一个简单图:顶点集 \(V = \{1, 2, 3\}\),边集 \(E = \{(1,2), (2,3)\}\),权重分别为 \(w_1 = 3, w_2 = 2, w_3 = 2\)。独立集可以是:空集(权重0)、{1}(权重3)、{2}(权重2)、{3}(权重2)、{1,3}(权重5)。由于顶点1和3不相邻,{1,3}是最大权独立集,权重和为5。
线性规划建模
整数规划模型
对每个顶点 \(v\),定义二进制变量 \(x_v \in \{0,1\}\),其中 \(x_v = 1\) 表示顶点 \(v\) 被选入独立集。约束条件要求每条边 \((u,v) \in E\) 的两个顶点不能同时被选(即 \(x_u + x_v \leq 1\))。目标函数为最大化总权重:
\[\begin{aligned} \max \quad & \sum_{v \in V} w_v x_v \\ \text{s.t.} \quad & x_u + x_v \leq 1, \quad \forall (u,v) \in E, \\ & x_v \in \{0,1\}, \quad \forall v \in V. \end{aligned} \]
这是一个整数规划问题。
线性规划松弛
将整数约束 \(x_v \in \{0,1\}\) 松弛为 \(0 \leq x_v \leq 1\),得到线性规划松弛模型(LPR):
\[\begin{aligned} \max \quad & \sum_{v \in V} w_v x_v \\ \text{s.t.} \quad & x_u + x_v \leq 1, \quad \forall (u,v) \in E, \\ & 0 \leq x_v \leq 1, \quad \forall v \in V. \end{aligned} \]
由于 \(x_v \leq 1\) 已隐含在边约束中(当邻接顶点权重足够大时),可简化为:
\[\begin{aligned} \max \quad & \sum_{v \in V} w_v x_v \\ \text{s.t.} \quad & x_u + x_v \leq 1, \quad \forall (u,v) \in E, \\ & x_v \geq 0, \quad \forall v \in V. \end{aligned} \]
该线性规划的最优值提供了原整数规划最优值的上界。
对偶问题
为应用对偶上升算法,我们考虑上述线性规划的对偶问题。每条边约束 \(x_u + x_v \leq 1\) 对应一个对偶变量 \(y_{uv} \geq 0\)。目标函数 \(\sum_v w_v x_v\) 中的每个系数 \(w_v\) 对应对偶约束:对每个顶点 \(v\),与其关联的所有边 \(e \in \delta(v)\) 的对偶变量之和不超过 \(w_v\)。对偶问题为:
\[\begin{aligned} \min \quad & \sum_{e \in E} y_e \\ \text{s.t.} \quad & \sum_{e \in \delta(v)} y_e \geq w_v, \quad \forall v \in V, \\ & y_e \geq 0, \quad \forall e \in E. \end{aligned} \]
其中 \(\delta(v)\) 表示与顶点 \(v\) 关联的边集。
对偶上升算法原理
对偶上升算法是一种迭代方法,用于求解上述对偶问题。其核心思想是:从对偶变量 \(y = 0\) 开始,逐步增加 \(y_e\) 的值,直到所有对偶约束 \(\sum_{e \in \delta(v)} y_e \geq w_v\) 被满足,同时保持目标函数 \(\sum y_e\) 尽可能小。算法结束时,对偶解是可行的(即满足所有约束),且目标值提供一个原问题最优值的下界(由于弱对偶性,原问题最优值 ≤ 对偶问题最优值,但这里是最大化原问题,对偶提供上界;实际上,在标准形式下,对偶上升得到对偶可行解,其目标值是原问题的一个下界)。
互补松弛条件
根据线性规划对偶理论,原问题和对偶问题的最优解满足互补松弛条件:
- 若 \(x_v > 0\),则对应对偶约束取等号:\(\sum_{e \in \delta(v)} y_e = w_v\)。
- 若 \(y_e > 0\),则对应原约束取等号:\(x_u + x_v = 1\)。
算法步骤详解
步骤1:初始化
- 设置所有对偶变量 \(y_e = 0\)(\(e \in E\))。
- 计算每个顶点 \(v\) 的对偶约束松弛量 \(s_v = w_v - \sum_{e \in \delta(v)} y_e\),初始 \(s_v = w_v\)。
步骤2:迭代提升对偶变量
- 只要存在顶点 \(v\) 满足 \(s_v > 0\)(即对偶约束未满足),则进行迭代。
- 在每次迭代中,选择一个未满足约束的顶点 \(v\)(即 \(s_v > 0\))。
- 增加与其关联的所有边 \(e \in \delta(v)\) 的对偶变量 \(y_e\),增加量 \(\Delta = s_v / |\delta(v)|\)。
- 更新相关顶点的松弛量:
- 对于顶点 \(v\) 本身,更新后 \(s_v\) 变为 0(因为增加了 \(|\delta(v)| \cdot \Delta = s_v\))。
- 对于 \(v\) 的每个邻居 \(u\),由于共享边 \((u,v)\) 的 \(y_e\) 增加,\(s_u\) 减少 \(\Delta\)(因为 \(s_u = w_u - \sum_{e \in \delta(u)} y_e\),其中包含边 \((u,v)\) 的贡献)。
- 重复此过程,直到所有 \(s_v \leq 0\),即所有对偶约束满足。
步骤3:构造原问题可行解
根据互补松弛条件,我们可以从对偶解构造原问题可行解:
- 若顶点 \(v\) 的对偶约束取等号(即 \(s_v = 0\)),且 \(v\) 的所有邻接顶点 \(u\) 都满足 \(x_u = 0\),则设置 \(x_v = 1\)。
- 实际上,对偶上升算法自然导出一个贪心选择策略:在迭代过程中,当一个顶点 \(v\) 的 \(s_v\) 降为 0 时,将 \(v\) 加入独立集,并将其所有邻居排除。
- 更系统的方法是:算法结束后,选择所有对偶约束紧(\(s_v = 0\))且互不相邻的顶点作为独立集。
步骤4:计算目标值
- 对偶目标值:\(\sum_{e \in E} y_e\)。
- 原问题可行解目标值:\(\sum_{v \in I} w_v\)。
由于弱对偶性,对偶目标值 ≥ 原问题最优值(因为原问题是最大化,对偶目标提供上界)。然而,我们构造的独立集不一定是最优的,但其权重给出了一个下界。
实例演示
考虑前述图:顶点集 \(V = \{1,2,3\}\),边 \(E = \{(1,2), (2,3)\}\),权重 \(w_1=3, w_2=2, w_3=2\)。
初始化
- \(y_{12} = 0, y_{23} = 0\)。
- \(s_1 = 3, s_2 = 2, s_3 = 2\)。
迭代1
选择顶点 1(\(s_1=3>0\))。其关联边只有 \(e=(1,2)\),\(|\delta(1)|=1\)。增加 \(\Delta = 3/1 = 3\):
- \(y_{12}\) 增加 3 → \(y_{12}=3\)。
- 更新松弛量:
- \(s_1\) 减少 3 → \(s_1=0\)。
- 邻居顶点 2:\(s_2\) 减少 3 → \(s_2 = 2-3 = -1\)(约束已过满足)。
- 此时 \(s_1=0, s_2=-1, s_3=2\)。
迭代2
选择顶点 3(\(s_3=2>0\))。其关联边只有 \(e=(2,3)\),\(|\delta(3)|=1\)。增加 \(\Delta = 2/1 = 2\):
- \(y_{23}\) 增加 2 → \(y_{23}=2\)。
- 更新松弛量:
- \(s_3\) 减少 2 → \(s_3=0\)。
- 邻居顶点 2:\(s_2\) 减少 2 → \(s_2 = -1-2 = -3\)。
- 所有 \(s_v \leq 0\),算法停止。
对偶解
- \(y_{12}=3, y_{23}=2\)。
- 对偶目标值:\(3+2=5\)。
构造独立集
- 顶点 1:\(s_1=0\),且其唯一邻居 2 未选(目前未决定),可考虑选 1。
- 顶点 3:\(s_3=0\),且其唯一邻居 2 未选,可考虑选 3。
- 顶点 2:\(s_2<0\),根据互补松弛,\(x_2=0\)。
由于顶点 1 和 3 不相邻,可同时选择。因此独立集 \(I = \{1,3\}\),权重和 \(3+2=5\)。
结果分析
- 对偶目标值 = 5。
- 构造的独立集权重 = 5。
- 因此,该解是最优的(因为对偶值等于原始可行解值,强对偶成立)。
算法性能与扩展
- 该算法在线性规划松弛意义下是精确的,且运行时间与图规模成线性关系。
- 对于一般图,线性规划松弛可能不是整数解(即存在分数解),因此构造的独立集不一定是最优的,但提供了近似解(例如,通过随机舍入或其他技巧可得到近似算法)。
- 对偶上升算法易于实现,且可并行化处理。
- 它也可用于分支定界法中快速计算上界。
总结
您已经了解了最大权独立集问题的线性规划建模、对偶形式、对偶上升算法的逐步迭代过程以及解构造方法。该算法展示了如何通过对偶视角获得原问题的界和可行解,是处理组合优化问题的有力工具。