支配集是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完全的证明的主要内容,如果未能解决你的问题,请参考以下文章