先决条件: NP-完全性,集团问题。
图形中的集团是一组顶点,其中每个顶点与其他每个顶点共享一条边。因此,图中的集团是一个完整的子图。
问题:给定一个图G(V,E)和一个整数K,问题在于确定该图是否包含大小为K的集团。
解释:
问题的一个实例是为问题指定的输入。集团问题的一个实例是图G(V,E)和一个正整数K,问题是检查G中是否存在大小为K的集团。由于NP完全问题,按照定义,是一个问题NP和NP都是硬性的,证明问题是NP-Complete的陈述的证明包括两个部分:
- The problem itself is in NP class
- All other problems in NP class can be polynomial-time reducible to that.
(B is polynomial-time reducible to C is denoted as )
如果仅满足第二个条件,则该问题称为NP-Hard 。
但是不可能始终将每个NP问题都简化为另一个NP问题以显示其NP完整性。这就是为什么如果我们要证明问题是NP-Complete,我们只是证明问题在NP中,并且任何NP-Complete问题都可归结为NP,那么我们就完成了,即,如果B是NP-Complete且对于NP中的C ,则C为NP-Complete 。
在本文中,我们将借助独立集问题即NP完全证明群体检测问题是NP完全的。有关布尔可满足性问题的证明,请参见证明集团决策问题是NP-完全的证明。
- 派系问题在NP中
如果NP中存在任何问题,则给定“证书” ,该证书可以解决问题和问题的实例(在这种情况下为图G和正整数K),我们将能够验证(检查给定的解是否正确)在多项式时间内的证书。证书是顶点的子集V’ ,其包括属于集团的顶点。我们可以通过检查属于该解决方案的每对顶点是否相邻来验证此解决方案,只需简单地验证它们彼此共享一条边即可。可以使用多项式G(V,E)的以下策略在多项式时间内完成,即O(V + E):
flag=true For every pair {u, v} in the subset V’: Check that these two vertices {u, v} share an edge If there is no edge, set flag to false and break If flag is true: Solution is correct Else: Solution is incorrect
- 派系问题是NP-Hard
为了证明派系问题是NP-Hard,我们借助已经是NP-Hard的问题,证明该问题可以简化为派系问题。
为此,我们考虑独立集问题,它是NP-Complete (因此是NP-Hard )。由图G(V,E)和整数K组成的独立集合问题的每个实例都可以转换为集团问题的要求图G’(V’,E’)和K’。我们将通过以下修改来构造图G’:
V’= V,即图G的所有顶点都是图G’的一部分
E’ =边缘E的补码,即原始图形G中不存在的边缘。
图G’是G的互补图。计算互补图G’所需的时间需要遍历所有顶点和边缘。
时间复杂度: O(V + E)现在我们将证明,计算集团的问题确实可以归结为独立集合的计算。减少可以通过以下两个命题证明:
- 让我们假设图G包含大小为K的集团。团的存在意味着G中有K个顶点,其中每个顶点通过边与其余顶点相连。这进一步表明,由于这些边缘包含在G中,因此它们不会出现在G’中。结果,这些K个顶点在G’中彼此不相邻,因此形成了大小为K的独立集。
- 我们假设互补图G’具有大小为K’的一组独立顶点。这些顶点均不与任何其他顶点共享边。当我们对图进行补充以获得G时,这K个顶点将共享一条边,因此彼此相邻。因此,图G将具有大小为K的集团。
因此,我们可以说,有在图G大小K的集团,如果有一组独立的尺寸K的G”(补图)的。因此,集团问题的任何实例都可以简化为独立集问题的实例。因此,集团问题是NP-Hard。
结论:
Hence, the Clique Decision problem is NP-Complete