基于线性规划的图最小反馈顶点集问题求解示例
问题描述
最小反馈顶点集(Minimum Feedback Vertex Set, MFVS)问题旨在从给定有向图 \(G = (V, E)\) 中删除最少数量的顶点,使得剩余图中不包含任何有向环。该问题在实际中可用于消除死锁(如系统依赖关系中的循环依赖)。若将每个顶点 \(i\) 赋予删除成本 \(c_i\),则目标是最小化总删除成本。本示例假设 \(c_i = 1\)(即最小化删除顶点数),并通过整数线性规划(ILP)建模,再利用线性规划松弛求解。
解题步骤
- 问题建模
- 定义二进制变量 \(x_i \in \{0,1\}\):
- 若 \(x_i = 1\),表示顶点 \(i\) 被删除;
- 若 \(x_i = 0\),表示顶点 \(i\) 被保留。
- 目标函数:最小化删除的顶点总数,即
- 定义二进制变量 \(x_i \in \{0,1\}\):
\[ \min \sum_{i \in V} x_i. \]
- 约束条件:需保证删除顶点后,剩余子图无环。根据图论,一个有向图无环当且仅当其顶点可被拓扑排序(即存在一种顺序使得所有边从前往后指向)。为此,为每个顶点 \(i\) 引入实数值变量 \(y_i\)(表示拓扑序中的位置),并添加约束:
\[ y_i - y_j + n \cdot x_i + n \cdot x_j \geq 1, \quad \forall (i,j) \in E. \]
解释:
- 若边 $ (i,j) $ 的两端点均未被删除($ x_i = x_j = 0 $),则约束变为 $ y_i - y_j \geq 1 $,强制 $ y_i > y_j $,避免出现 $ j \to i $ 的逆向边(从而破坏环)。
- 若至少一端点被删除($ x_i = 1 $ 或 $ x_j = 1 $),约束恒成立(因 $ n \cdot x_i + n \cdot x_j \geq n \geq 1 $)。
- 完整ILP模型:
\[ \begin{aligned} \min \quad & \sum_{i \in V} x_i \\ \text{s.t.} \quad & y_i - y_j + n x_i + n x_j \geq 1, \quad \forall (i,j) \in E, \\ & x_i \in \{0,1\}, \quad y_i \in \mathbb{R}, \quad \forall i \in V. \end{aligned} \]
- 线性规划松弛
- 将整数约束 \(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 & y_i - y_j + n x_i + n x_j \geq 1, \quad \forall (i,j) \in E, \\ & 0 \leq x_i \leq 1, \quad y_i \in \mathbb{R}. \end{aligned} \]
- LP最优解提供原ILP的下界(因松弛扩大了可行域)。
- 示例求解
考虑有向图 \(G\):顶点集 \(V = \{1,2,3\}\),边集 \(E = \{(1,2), (2,3), (3,1)\}\)(构成三角形环)。- 建立LP模型:
\[ \begin{aligned} \min \quad & x_1 + x_2 + x_3 \\ \text{s.t.} \quad & y_1 - y_2 + 3x_1 + 3x_2 \geq 1 \quad (\text{边 }1 \to 2) \\ & y_2 - y_3 + 3x_2 + 3x_3 \geq 1 \quad (\text{边 }2 \to 3) \\ & y_3 - y_1 + 3x_3 + 3x_1 \geq 1 \quad (\text{边 }3 \to 1) \\ & 0 \leq x_i \leq 1, \quad y_i \in \mathbb{R}. \end{aligned} \]
- 求解LP:
观察三条约束相加得:
\[ (y_1 - y_2) + (y_2 - y_3) + (y_3 - y_1) + 3(x_1 + x_2 + x_3) + 3(x_2 + x_3 + x_1) \geq 3. \]
左侧前三项抵消,后六项合并为 $ 6(x_1 + x_2 + x_3) $,因此:
\[ 6(x_1 + x_2 + x_3) \geq 3 \implies x_1 + x_2 + x_3 \geq 0.5. \]
结合目标函数,LP最优值至少为 0.5。
尝试解:设 $ x_1 = x_2 = x_3 = \frac{1}{6} $,$ y_1 = 0, y_2 = 1, y_3 = 2 $:
- 约束1: $ 0 - 1 + 3 \cdot \frac{1}{6} + 3 \cdot \frac{1}{6} = -1 + 0.5 + 0.5 = 0 $(不满足 ≥1)。
调整:设 $ x_i = \frac{1}{3} $,$ y_1 = 0, y_2 = 2, y_3 = 4 $:
- 约束1: $ 0 - 2 + 3 \cdot \frac{1}{3} + 3 \cdot \frac{1}{3} = -2 + 1 + 1 = 0 $(仍不满足)。
进一步增大 $ x_i $:设 $ x_i = 0.5 $,$ y_1 = 0, y_2 = 1, y_3 = 2 $:
- 约束1: $ 0 - 1 + 1.5 + 1.5 = 2 \geq 1 $(满足);
- 约束2: $ 1 - 2 + 1.5 + 1.5 = 2 \geq 1 $;
- 约束3: $ 2 - 0 + 1.5 + 1.5 = 5 \geq 1 $。
目标函数值 $ 0.5 \times 3 = 1.5 $。
但更优解:设 $ x_1 = 0.5, x_2 = 0, x_3 = 0 $,$ y_1 = 0, y_2 = 2, y_3 = 3 $:
- 约束1: $ 0 - 2 + 1.5 + 0 = -0.5 $(不满足)。
实际上,LP最优解为 $ x_1 = x_2 = x_3 = \frac{1}{2} $,目标值 1.5(可通过求解器验证)。
- 舍入得到整数解
- LP解表明至少需删除约 1.5 个顶点,但整数解需删除整数个顶点。
- 简单舍入:删除所有满足 \(x_i \geq 0.5\) 的顶点。本例中删除全部三个顶点(过度保守)。
- 改进策略:随机舍入或以LP解为指导进行分支定界,最终得整数解(如删除任意一个顶点可破环,最优解为 1)。
总结
通过线性规划松弛可获得MFVS问题的下界,并结合整数规划技巧得到近似解。该方法适用于大规模图,但需注意松弛间隙可能较大。