先决条件: NP-完全性,集团问题。
图中的派系是一组顶点,其中每个顶点与其他每个顶点共享一条边。因此,图中的一个团是一个子图,它是一个完整的图。
问题:给定一个图 G(V, E) 和一个整数 K,问题是确定该图是否包含大小为K的团。
解释:
问题的一个实例是为问题指定的输入。 Clique 问题的一个实例是图 G(V, E) 和一个正整数 K,问题是检查 G 中是否存在大小为 K 的团。 由于 NP-Complete 问题,根据定义,是一个问题在 NP 和 NP-hard 中,问题是 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-Completeness。这就是为什么如果我们想证明一个问题是 NP-Complete,我们只需要证明这个问题是NP并且任何NP-Complete问题都可以简化为那个,那么我们就完成了,即如果B是NP-Complete并且对于 NP中的C ,则C是NP-Complete 。
在本文中,我们将借助独立集问题,即 NP-Complete,证明 Clique Detection 问题是 NP-Complete。借助布尔可满足性问题的证明,请参阅证明 Clique Decision 问题是 NP-Complete。
- 派系问题在 NP
如果任何问题在 NP 中,那么,给定一个“证书” ,它是问题的解决方案和问题的一个实例(图 G 和正整数 K,在这种情况下),我们将能够验证(检查给出的解决方案是否正确)多项式时间内的证书。证书是顶点的子集V’ ,它包括属于集团的顶点。我们可以通过检查属于解决方案的每对顶点是否相邻来验证该解决方案,只需验证它们是否共享一条边即可。这可以在多项式时间内完成,即O(V + E)对图 G(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
- Clique 问题是 NP-Hard
为了证明集团问题是 NP-Hard 问题,我们借助一个已经是 NP-Hard 的问题,并证明这个问题可以简化为集团问题。
为此,我们考虑独立集问题,它是NP-Complete (因此也是NP-Hard )。由图 G (V, E)和整数K组成的独立集问题的每个实例都可以转换为 Clique 问题所需的图 G’ (V’, E’)和K’。我们将通过以下修改构建图 G’:
V’ =V,即图 G 的所有顶点都是图 G’ 的一部分
E’ = 边 E 的补集,即原始图 G 中不存在的边。
图G’是 G 的互补图。计算互补图G’所需的时间需要遍历所有顶点和边。
时间复杂度: O (V+E)我们现在将证明计算团的问题确实归结为独立集的计算。归约可以通过以下两个命题来证明:
- 让我们假设图 G 包含一个大小为K的集团。 clique 的存在意味着G中有 K个顶点,其中每个顶点通过一条边与其余顶点连接。这进一步表明,由于这些边包含在G 中,因此它们不能出现在G’ 中。结果,这 K 个顶点在G’ 中彼此不相邻,因此形成大小为K的独立集。
- 我们假设互补图G’有一组独立的大小为K’的顶点。这些顶点都不与任何其他顶点共享一条边。当我们补充图以获得G 时,这K个顶点将共享一条边,因此彼此相邻。因此,图G将有一个大小为K的团。
因此,如果 G’ (补图)中存在大小为K的独立集合,我们可以说图G 中存在大小为 K 的团。因此,团问题的任何实例都可以简化为独立集问题的实例。因此,集团问题是NP-Hard 问题。
结论:
Hence, the Clique Decision problem is NP-Complete
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。