问题:给定一个地面集合X ,一个整数k以及X的子集S i的集合,问题是要确定是否存在一个集合的集合,这些子集的联合为X,且大小最大为k 。
证明:问题的一个实例是为问题指定的输入。集覆盖问题的一个实例是地面集X,整数k和由X组成的子集Si的集合。根据定义,由于NP完全问题既是NP又是NP-Hard的问题,因此证明问题为NP-Complete的证明或陈述包括两部分:
- 问题本身就是NP-Complete。
- NP类中的所有其他问题都可以用多项式时间简化。 (B可乘以C的倍数)。
如果仅满足第二个条件,则该问题称为NP-Hard。但是不可能始终将每个NP问题都简化为另一个NP问题以显示其NP完整性。这就是为什么如果我们要证明一个问题是NP完全的,请证明该问题在NP中,并且任何NP-Complete问题都可以解决。因此,可以使用以下命题来验证集合覆盖问题是NP-Complete:
- 集封面是NP:如果有任何问题是NP,然后给出一个“证书”,这是解决问题的办法和问题(子集的集合,大小为k C)的情况下,我们将能够在多项式时间内识别(解决方案是否正确)证书。这可以通过以下方式完成:
提供大小为k的子集的集合C ,我们可以遍历集合子集中的每个元素并标记X中被覆盖的元素。最后,X中不应包含任何元素。
相对于X中子集的数量,这需要多项式时间。因此,Set Cover在NP中。 - 集覆盖为NP-Hard:为了证明集覆盖为NP Hard,我们将从已知的NP-Hard问题(即顶点覆盖到集覆盖问题)进行简化,对于顶点覆盖问题,我们将其作为输入图G =(V,E)和整数k。现在,让地面开始
- X = E,即G中的一组边。
- 子集S u代表每个顶点u V中,包含了边缘入射到u。
现在,以下两个命题成立:
- 让我们考虑k个集合S u1 ,S u2 ……S uk覆盖地面集合X ,然后E中的每个边e都与u1…uk的至少一个顶点相邻,因此形成了大小为k的顶点覆盖。
- 让我们考虑顶点u1…uk形成一个顶点覆盖,然后Su1覆盖入射到u1的所有边。因此,集合S u1 ,S u2 …S uk的集合形成了覆盖X的集合。
结论:
封面是NP和NP-Hard 。因此,设置封面是NP-Complete 。