基于线性规划的图最小支配集问题求解示例
题目描述
最小支配集问题是图论中的一个经典NP难问题。给定一个无向图 \(G = (V, E)\),其中 \(V\) 是顶点集(\(|V| = n\)),\(E\) 是边集。支配集是指一个顶点子集 \(S \subseteq V\),使得图中任意顶点要么在 \(S\) 中,要么与 \(S\) 中的至少一个顶点相邻。最小支配集的目标是找到规模最小的支配集。虽然该问题是NP难的,但可以通过整数规划建模,并利用线性规划的松弛与舍入策略设计近似解。本题要求将最小支配集转化为线性规划模型,并解释求解过程。
解题过程
1. 问题建模
- 对每个顶点 \(i \in V\),定义二进制变量 \(x_i \in \{0, 1\}\):
\(x_i = 1\) 表示顶点 \(i\) 被选入支配集 \(S\),否则为 0。 - 目标函数:最小化支配集规模,即 \(\min \sum_{i \in V} x_i\)。
- 约束条件:每个顶点必须被自身或其邻居支配。对任意顶点 \(i\),需满足:
\[ x_i + \sum_{j \in N(i)} x_j \geq 1, \]
其中 \(N(i)\) 表示顶点 \(i\) 的邻居集合(不包括自身)。
- 整数规划模型为:
\[ \begin{align*} \min \quad & \sum_{i \in V} x_i \\ \text{s.t.} \quad & x_i + \sum_{j \in N(i)} x_j \geq 1, \quad \forall i \in V, \\ & x_i \in \{0, 1\}, \quad \forall i \in V. \end{align*} \]
2. 线性规划松弛
将整数约束松弛为连续约束:
\[x_i \in [0, 1], \quad \forall i \in V. \]
松弛后的线性规划问题可在多项式时间内求解,得到最优解 \(x^*\)。但 \(x^*\) 可能是分数解,需进一步处理。
3. 舍入策略
采用阈值舍入法构造整数解:
- 设定阈值 \(\theta \in (0, 1]\)(常用 \(\theta = 0.5\))。
- 对每个顶点 \(i\),若 \(x_i^* \geq \theta\),则令 \(x_i = 1\)(选入支配集);否则令 \(x_i = 0\)。
- 舍入后得到整数解 \(\hat{x}\),对应的集合 \(\hat{S} = \{ i \mid \hat{x}_i = 1 \}\)。
4. 可行性验证
需证明 \(\hat{S}\) 是支配集:
- 对任意顶点 \(i\),若其自身或某个邻居的 \(x_j^* \geq \theta\),则 \(i\) 被支配。
- 若所有 \(x_j^* < \theta\)(\(j \in \{i\} \cup N(i)\)),则约束 \(\sum_{j \in \{i\} \cup N(i)} x_j^* \geq 1\) 无法成立(因每个 \(x_j^* < \theta\) 且邻居数有限),矛盾。故舍入后必满足支配条件。
5. 近似比分析
- 设整数最优解规模为 \(\mathrm{OPT}\),松弛解目标值为 \(\mathrm{LP}^*\)。显然 \(\mathrm{LP}^* \leq \mathrm{OPT}\)。
- 舍入后,每个 \(x_i = 1\) 对应 \(x_i^* \geq \theta\),故 \(|\hat{S}| \leq \frac{1}{\theta} \mathrm{LP}^* \leq \frac{1}{\theta} \mathrm{OPT}\)。
- 当 \(\theta = 0.5\) 时,近似比为 2。实际应用中可通过调整阈值或随机舍入改进。
6. 算法总结
步骤:
- 建立整数规划模型并松弛为线性规划;
- 求解线性规划得分数解 \(x^*\);
- 对 \(x^*\) 进行阈值舍入得到整数解 \(\hat{x}\);
- 验证 \(\hat{S}\) 为支配集,并输出结果。
该方法在线性规划基础上提供了理论保证的近似解,适用于大规模图的最小支配集问题。