基于线性规划的图最小顶点覆盖问题求解示例
题目描述
最小顶点覆盖问题是图论中的经典NP难问题:给定一个无向图 \(G = (V, E)\),其中 \(V\) 是顶点集,\(E\) 是边集,目标是找到一个顶点子集 \(S \subseteq V\),使得图中每条边至少有一个端点属于 \(S\),同时最小化 \(S\) 的大小(即顶点数量)。若将问题转化为线性规划(LP)形式,可通过松弛整数约束得到近似解,进而分析其理论性质。
解题过程
- 问题建模
对每个顶点 \(i \in V\),引入二进制变量 \(x_i \in \{0,1\}\):- \(x_i = 1\) 表示顶点 \(i\) 被选入覆盖集 \(S\);
- \(x_i = 0\) 表示未被选中。
目标函数为最小化覆盖集大小:
\[ \min \sum_{i \in V} x_i \]
约束条件要求每条边 \((u,v) \in E\) 至少有一个端点被覆盖:
\[ x_u + x_v \geq 1 \quad \forall (u,v) \in E \]
此时问题是一个整数规划(IP)。
- 线性规划松弛
将整数约束 \(x_i \in \{0,1\}\) 松弛为连续约束 \(0 \leq x_i \leq 1\),得到LP问题:
\[ \begin{aligned} \min \quad & \sum_{i \in V} x_i \\ \text{s.t.} \quad & x_u + x_v \geq 1 \quad \forall (u,v) \in E \\ & 0 \leq x_i \leq 1 \quad \forall i \in V \end{aligned} \]
该LP的最优解提供了原IP问题的下界(因为松弛后可行域扩大)。
-
求解LP与近似算法设计
- 使用单纯形法或内点法求解上述LP,得到最优解 \(x^*\)。
- 设计近似算法:将LP解四舍五入为整数解。具体地,构造覆盖集 \(S = \{ i \in V \mid x_i^* \geq 0.5 \}\)。
- 可行性证明:对任意边 \((u,v)\),因 \(x_u^* + x_v^* \geq 1\),至少有一个端点满足 \(x_i^* \geq 0.5\),故 \(S\) 是合法顶点覆盖。
- 近似比分析:
设LP最优值为 \(\text{OPT}_{\text{LP}}\),整数解的成本为 \(\sum_{i \in S} 1\)。由于 \(x_i^* \geq 0.5\) 的顶点才被选入,有 \(|S| \leq 2 \sum_{i \in V} x_i^* = 2 \cdot \text{OPT}_{\text{LP}}\)。又因 \(\text{OPT}_{\text{LP}} \leq \text{OPT}_{\text{IP}}\)(原问题最优值),故近似比不超过 2。
-
实例演示
考虑图 \(G\) 有顶点集 \(V = \{1,2,3\}\) 和边集 \(E = \{(1,2), (2,3), (1,3)\}\)(三角形图)。- LP模型:
\[ \begin{aligned} \min \quad & x_1 + x_2 + x_3 \\ \text{s.t.} \quad & x_1 + x_2 \geq 1, \quad x_2 + x_3 \geq 1, \quad x_1 + x_3 \geq 1 \\ & 0 \leq x_i \leq 1 \end{aligned} \]
- 求解得最优解 \(x_1^* = x_2^* = x_3^* = 0.5\),目标值 \(\text{OPT}_{\text{LP}} = 1.5\)。
- 四舍五入后得 \(S = \{1,2,3\}\),大小为 3。而实际最小顶点覆盖可为任意两个顶点(如 \(\{1,2\}\)),大小为 2,验证了近似比界限。
总结
通过LP松弛和四舍五入策略,可在多项式时间内得到最小顶点覆盖的2-近似解,体现了线性规划在近似算法设计中的重要作用。