基于线性规划的图最小控制集问题求解示例
问题描述
图最小控制集问题(Minimum Dominating Set, MDS)是图论中的经典NP难问题。给定一个无向图 \(G = (V, E)\),其中 \(V\) 是顶点集合(设 \(|V| = n\)),\(E\) 是边集合。控制集的定义是:若顶点子集 \(D \subseteq V\) 满足图中任意顶点要么属于 \(D\),要么与 \(D\) 中的至少一个顶点相邻,则 \(D\) 称为控制集。最小控制集问题是找到顶点数量最少的控制集。
线性规划建模
- 定义决策变量:对每个顶点 \(i \in V\),引入二进制变量 \(x_i \in \{0,1\}\),其中 \(x_i = 1\) 表示顶点 \(i\) 被选入控制集,否则为 0。
- 目标函数:最小化控制集的顶点数量,即 \(\min \sum_{i \in V} x_i\)。
- 约束条件:对每个顶点 \(j \in V\),要求其自身或至少一个相邻顶点被选中。形式化表示为:
\[ x_j + \sum_{i \in N(j)} x_i \geq 1 \quad \forall j \in V, \]
其中 \(N(j)\) 表示顶点 \(j\) 的邻居集合(不包括 \(j\) 自身)。
4. 问题难点:直接求解整数规划是NP难的,因此可先松弛为线性规划(将 \(x_i \in \{0,1\}\) 松弛为 \(0 \leq x_i \leq 1\)),再通过舍入或其他技巧得到近似解。
求解步骤
- 松弛问题:将二进制变量松弛为连续变量,得到线性规划问题:
\[ \begin{aligned} \min \quad & \sum_{i \in V} x_i \\ \text{s.t.} \quad & x_j + \sum_{i \in N(j)} x_i \geq 1 \quad \forall j \in V, \\ & 0 \leq x_i \leq 1 \quad \forall i \in V. \end{aligned} \]
- 求解线性规划:使用单纯形法或内点法求解松弛问题,得到最优解 \(x^*\)。
- 舍入策略:由于松弛解可能为分数,需将其转化为整数解。常用舍入方法:
- 阈值舍入:设定阈值 \(\theta \in (0,1]\)(如 \(\theta = 0.5\)),若 \(x_i^* \geq \theta\),则令 \(x_i = 1\);否则为 0。
- 随机舍入:以概率 \(x_i^*\) 将顶点 \(i\) 选入控制集。
- 可行性调整:舍后后的解可能不满足控制集条件,需检查并补选顶点:若某顶点 \(j\) 未被覆盖(即 \(x_j = 0\) 且所有邻居 \(x_i = 0\)),则强制将 \(j\) 或其一邻居加入控制集。
实例演示
考虑图 \(G\) 有顶点集 \(V = \{1,2,3\}\),边集 \(E = \{(1,2), (2,3)\}\)。
- 建模:
- 变量:\(x_1, x_2, x_3\)。
- 目标:\(\min x_1 + x_2 + x_3\)。
- 约束:
- 顶点1:\(x_1 + x_2 \geq 1\)(邻居为2);
- 顶点2:\(x_2 + x_1 + x_3 \geq 1\);
- 顶点3:\(x_3 + x_2 \geq 1\)。
- 松弛求解:最优解为 \(x_1 = 0.5, x_2 = 0.5, x_3 = 0.5\),目标值 1.5。
- 舍入:设阈值 \(\theta = 0.5\),所有顶点被选入控制集 \(D = \{1,2,3\}\),但此解非最小。
- 改进:若调整舍入策略(如随机舍入),可能得到更优解,例如 \(D = \{2\}\) 即为最小控制集。
- 理论保证:线性规划松弛提供下界(本例为1.5),实际最小控制集大小为1,说明舍入策略需进一步优化。
总结
线性规划松弛为最小控制集问题提供了近似求解框架,结合舍入策略可得到理论有界的近似解(如对一般图,基于LP舍入的近似比为 \(O(\log n)\))。实际应用中,可结合启发式方法提升解质量。