这个问题被称为非常类似于Feedback Vertex Set,不幸的是它是NP-hard。根据 Wikipedia 页面,最知名的近似算法的 approximation ratio 为 2:Becker, Ann; Geiger, Dan (1996), "Optimization of Pearl's method of conditioning and greedy-like approximation algorithms for the vertex feedback set problem."。
“连接反馈顶点集”的 NP 硬度证明
我忽略了结果图需要连接的条件,反馈顶点集(FVS)不是这种情况。下面我将展示您的问题,我将其称为连接反馈顶点集 (CVFS),但仍然是 NP-hard。
给定一个 FVS 的实例 (G = (V, E), k),我们需要构造一个具有 (G, k) 是 FVS 的 YES 实例当且仅当 (G', k') 是 CFVS 的 YES 实例。非正式地,这个 G' 看起来像 G 的“一堆副本”,带有一些额外的顶点和边。让我们这样做:
对于 V 中的每个顶点 v_i,创建一个 |V| 的路径(不是一个团,正如我最初在 cmets 中所说的...) V' 中的顶点 v'_i_j,1
对于 E 中的每条边 (v_i, v_j),创建所有 |V| G' 中对应顶点之间的对应“平行”边——即创建边 (v'_i_1, v'_j_1), (v'_i_2, v'_j_2), ..., (v'_i_|V |, v'_j_|V|)。 (这些边都连接同一层的顶点。)
对于 V 中的每个顶点 v_i,还要在 V' 中创建一个额外的“骨架顶点”u'_i。使这个 u'_i 与 v'_i_1 相邻。
将另一个顶点r添加到V',并使其与每个骨架顶点u'_i相邻。
最后,设置 k' = |V|*k + |V| - 1.
首先,我将证明如果 FVS 实例 (G, k) 是 YES 实例,那么 (G', k') 就是您的问题的 YES 实例。令 X 是 FVS 实例 (G, k) 的任何解(即删除的顶点集),它使 G 的至少 1 个顶点未被删除(这样的解必须存在,因为 1 顶点图不包含环);那么我们可以为您的问题实例构造一个解决方案 X',如下所示:
- 对于FVS解X中删除的每个顶点v_i,我们可以删除对应的路径v_i_1, ..., v_i_|V|从 G' 中以至多 |V|*k 的总成本(删除每条路径的成本为 |V| 顶点删除,并且 X 最多从 G 中删除 k 个顶点)。这保证了 G'-X' 中不会存在仅由肉顶点组成的循环(如果存在,这将与 FVS 解 X 到 (G, k) 的可行性相矛盾)。
- 对于 FVS 解 X 中的每个连通分量,我们可以删除 G' 中除 1 个对应的骨架顶点之外的所有顶点。我们在 G' 中剩下的是一堆 |V| FVS 解决方案 G-X 的副本,加上该解决方案的每个组件的单个骨架顶点,加上根顶点 r。因为我们只有从每个连接的组件到 r 的单一路径(通过每个组件的单个骨架顶点),所以 G' 中不可能有循环。由于 G-X 至少包含 1 个连通分量,这可能涉及最多 |V|-1 个删除,所以最多 |V|*k + |V| - 总共需要 1 次删除,因此构建的 CFVS 实例 (G', k') 的答案是肯定的。
其次,我将证明,如果您的问题的构造实例 (G', k') 是 YES 实例,那么 FVS 的原始实例 (G, k) 是 YES 实例。
令 X' 是构造的 CFVS 实例 (G', k') 的任何解(即删除的顶点集)。考虑 G'-X' 中每一层肉顶点所引出的子图:有 |V|这样的层。一般来说,不同的层可能包含不同数量的删除。选择任何包含最少删除数量的层 j;因为 G'-X' 是无环的,所以每个诱导子图也是无环的,尤其包括第 j 层。第 j 层的删除数量最多为 k'/|V|,因为否则(通过 j 的最小选择)总体上将严格超过 k' 个删除,这是一个矛盾。但任何整数
(G, k) 是 FVS 的 YES 实例意味着 (G', k') 是 CFVS 的 YES 实例,反之亦然,因此 (G, k) 是 FVS 的 NO 实例意味着 ( G', k') 是 CFVS 的 NO 实例,因此问题实例是等价的。显然 (G', k') 可以在多项式时间内从 (G, k) 构造,因此可以得出 CVFS 是 NP-hard 的。这显然也是 NP 完全的,因为可以在 O(|V|+|E|) 时间内使用单个 DFS 检查 YES 实例的解决方案的正确性(即无循环性和连通性)。