先决条件: NP完成
问题:给定元素的地面集X以及在X可用的子集和整数k的分组集合C,任务是找到X的最小的子集,使得最小的子集,H砸到每个组包括用C。这意味着对于属于C的每个集合S ,H和S的交集为零,大小≤k 。
证明:问题的一个实例是为问题指定的输入。命中集的一个实例是子集的集合C,X中的S和k。根据定义,由于NP完全问题既是NP又是NP-Hard的问题,因此证明问题为NP-Complete的证明或陈述包括两部分:
- 问题本身就是NP-Complete。
- NP类中的所有其他问题都可以用多项式时间简化。 (B可乘以C的倍数)。
如果仅满足第二个条件,则该问题称为NP-Hard。
但是不可能始终将每个NP问题都简化为另一个NP问题以显示其NP完整性。这就是为什么要证明问题是NP完全的,证明问题在NP中并且任何NP完全问题都可以还原为问题,所以我们完成了。因此,可以使用以下命题来验证命中集问题是NP-Complete:
- 命中集在NP中:任何问题都在NP中,然后给出“证书”,它是问题的解决方案和问题的实例(基础集X,集合,子集C,S),我们将能够在多项式时间内验证(检查解决方案是否正确)证书。这可以通过以下方式完成:
提供大小为k的击中集HS,验证它覆盖X的每个集Si中的至少一个元素。
这需要多项式时间,因此在NP中 - 命中集是NP-Hard:为了证明命中集是NP-Hard,我们将进行还原,从该还原可以将顶点覆盖问题简化为“命中集”问题。
在“顶点覆盖”问题中,我们有一个图形G =(V,E)
现在,令X,即地面集= G的顶点。即X = V(G),并且X中子集Si的集合C为S i = {u,v}是图G中的边。
现在,以下属性成立:
- 如果VC是大小为k的图G的顶点覆盖,则意味着对于每个边{u,v} ,u或v都属于VC。因此,由于所有子集都将与VC中的顶点形成交集,因此VC形成了“命中集”。
- 如果HS到达大小为k的X的集合。现在,由于HS与X的每个子集相交,所以每个边{u,v}的至少一个端点必须属于该解。因此,对于每个边缘,它至少跨越一个顶点,从而形成VC。
结论:
命中集问题是NP和NP-Hard 。因此,命中集问题是NP-Complete 。