支配集是NP完全的证明

Posted

技术标签:

【中文标题】支配集是NP完全的证明【英文标题】:Proof that Dominating Set is NP-Complete 【发布时间】:2011-07-15 21:29:55 【问题描述】:

问题来了。我想知道是否有一个清晰有效的证明:

顶点覆盖:输入无向G,整数k > 0。是否有一个子集 顶点 S,|S|

支配集:输入无向G,整数k > 0。是否存在 顶点 S,|S|

一个顶点覆盖它的入射边并支配它的邻居和它自己。

假设VC是NPC,证明DS是NPC。

【问题讨论】:

这可能有助于en.wikipedia.org/wiki/… NP-Complete 的支配集问题是最小尺寸支配集,而不仅仅是一个图是否有支配集。为了证明 NPC 是或否的问题,因此使用连通图中的所有顶点本质上是一个支配集。哪个不是 NPC。 【参考方案1】:

有一个非常好的和众所周知的减少:

给定一个顶点覆盖的实例 (G,k),构建一个支配集 (H,k) 的实例,其中 H 取 G,删除所有孤立的顶点,并为每条边 (u,v) 添加一个额外的顶点 x 连接到 u 和 v。

首先认识到 G 的顶点覆盖是 H 的支配集:它是 G 的 DS(去除孤立的顶点之后),并且新的顶点也是支配的。所以如果 G 有一个更小的 VC,那么 H 有一个更小的 k。

反过来,考虑 D,H 的支配集。

请注意,如果新顶点之一在 D 中,我们可以用它的两个邻居中的一个替换它,仍然得到一个支配集:它的唯一邻居是两个原始顶点并且它们也是连接的 - 一切 x 可以可能的主宰也被u或v主宰。

所以我们可以假设 D 只包含来自 G 的顶点。现在对于 G 中的每条边 (u,v),新顶点 x 都由 D 支配,因此 u 或 v 在 D 中。但这意味着 D 是G的顶点覆盖。

我们有它:当且仅当 H 有一个更小的支配集 k 时,G 有一个更小的顶点覆盖。

【讨论】:

为什么我们要为每条边添加一个新的顶点-x-?我的意思是,如果我们不添加这些顶点,是什么导致这个证明失败? 没有新的顶点就不能确定支配集 D 也是一个顶点覆盖。【参考方案2】:

取自:

CMSC 651 高级算法,讲师 Samir Khuller

【讨论】:

【参考方案3】:

我认为第二个问题不是 NP。 让我们试试下面的算法。

1. Get the original Graph
2. Run any algorithm which checks if a graph is connected or not.
3. mark all used edges of step 2
4. if the graph is connected then return the set of marked edges otherwise there is no such a set.

如果我理解正确你的问题,那么它不是 NP Complete。

【讨论】:

教科书CLRS,应该是NPC,:( CLRS中的NPC是什么问题? 参见en.wikipedia.org/wiki/Connectivity_(graph_theory) 了解贪婪连接算法。 顶点覆盖是 CLRS 中的 NPC,第 34 章 @Luixv,经过深思熟虑,我想也许你是对的,因为我曾经解决过“使用贪婪算法找到最小尺寸支配集”的问题,感到困惑

以上是关于支配集是NP完全的证明的主要内容,如果未能解决你的问题,请参考以下文章

证明CLIQUE(团问题)是NP完全

算法概论课后习题8.8

8.3吝啬SAT问题

所有的 NP 问题也是 NP 完全的吗?

MAS 714笔记: NP完全问题

算法概论第八章课后习题8.3