关于Set Cover的以下变化是什么?


15

机套的以下变化称为什么?

给定集合S,S的子集和正整数K的集合C,C中是否存在K个集合,使得S的每一对元素都位于所选子集中的一个子集中。

注意:不难看出这个问题是NP完全的:给定正常的集合覆盖问题(S,C,K),请制作S的三个副本,例如S',S''和S''',然后将您的子集创建为S''',| S | 形式为{a'} U {x in S''|的子集| x!= a} U {a'''},| S | 形式为{a''} U {x在S'| |中的子集 x!= a} U {a'''},{a',a''| C_i}中的一个}。然后我们可以用K个子集解决集合覆盖问题,前提是我们可以用K +1 + 2 | S |解决对覆盖问题。子集。

这一般可扩展为三倍,依此类推。我希望不能浪费半页来证明这一点,而且可能还不够明显,以至于认为它是微不足道的。有人证明它肯定是有用的,但我不知道是谁或在哪里。

另外,是否有很好的地方可以找到Garey和Johnson所没有的NP-Completeness结果?

Answers:


7

为了回答您的第二个问题,NP硬度结果Kahn-Crescenzi纲要是获得硬度结果的宝贵资料,并且涵盖了G&J核心问题的许多变体。Ť 他的集合覆盖项就是一个很好的例子。


2
我以前曾经看到过,是的,它确实有用,但是它甚至还没有开始刮擦已被证实的NP-Complete的表面。再举一个例子,我花了更长的时间才能找到Uehara的证明,即Vertex Cover在3个相连的立方平面图上是NP完全的,而不是我花了很多时间才能证明这一点。(她的证据比我的证据干净得多。)
定义了2010年

7

听起来您正在概括集合覆盖,不仅要考虑S的元素,还要考虑S的每个大小为M的子集。我们可以更一般地说明问题:

“给定一个集合S,一个S子集的集合C和一个正整数m,C的元素的最小数量是多少,以使得S的每个大小M子集都位于C的所选元素之一中?”

实际上,这让我感到震惊,因为它是对集合覆盖率的一种相当明显的概括,而不是您需要花费时间证明NP完全性超出一行的人。毕竟,选择m = 1可以恢复原始的设置覆盖问题。也许这种更笼统的表述足以满足您的目的,而无需赘述?


关于更新的NP完整性结果集的问题是一个很好的问题,值得您提出自己的问题。Crescenzi和Kann 在这里在线整理了一个有用的纲要。

其次,它几乎无处不在,但是史蒂文·斯基埃纳(Steven Skiena)编写的《算法设计手册》通常是处理大量问题的有用的第一站,并且可以部分在线获取。


我只对m = 2感兴趣。可能有一个单行证明,但所说的证明对我不利。我相信我在问题的第二句话中明确指出了这一点。
deinst 2010年

道歉; 我并不是要暗示在成对情况下有一个简短的证明!我建议的单行证明仅在问题的一般版本中:“ m = 1的特殊情况将恢复标准集的覆盖范围”。正如您所指出的那样,成对情况下的证明是显而易见的(引入虚拟元素并将其设置为标准集合覆盖以生成成对的集合覆盖),但是是的,将需要几行来证明它是形式化的。我将看看是否能在文献中找到对此的任何引用。
阿南德·库尔卡尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.