📜  图论中的独立集是NP完全的证明

📅  最后修改于: 2021-05-08 17:39:43             🧑  作者: Mango

先决条件: NP完成度,独立集。

G =(V,E)的独立集S是一组顶点,使得S中没有两个顶点彼此相邻。它由不相邻的顶点组成。

问题:给定一个图G(V,E)和一个整数k,问题在于确定该图是否包含大小> = k的独立顶点集。
解释:
问题的一个实例是为问题指定的输入。独立集问题的一个实例是图G(V,E)和一个正整数k,问题是检查G中是否存在大小为k的独立集。在NP和NP困难中都存在的问题,证明问题是NP-Complete的陈述的证明包括两个部分:

  1. 问题本身在NP类中。
  2. NP类中的所有其他问题都可以用多项式时间简化。
    (B是可简化为C的多项式时间,表示为B$\leqslant_P$C )

如果仅满足第二个条件,则该问题称为NP-Hard

但是不可能始终将每个NP问题都简化为另一个NP问题以显示其NP完整性。这就是为什么如果我们想证明问题是NP-Complete,我们只是证明问题在NP中,并且任何NP-Complete问题都可归结为NP,那么我们就完成了,即,如果B是NP-Complete且B$\leqslant_P$C对于NP中的C,则C为NP-Complete。

  1. 独立集是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 don’t
        have an edge between them
        If there is an edge,
        set flag to false and break
    If flag is true:
        Solution is correct
    Else:
        Solution is incorrect
    
  2. 独立集是NP-Hard。
    为了证明独立集问题是NP-Hard,我们将从已知的NP-Hard问题简化为该问题。我们将进行简化,从中可以将派系问题简化为独立集问题。
    由图G(V,E)和整数k组成的集团问题的每个实例都可以转换为独立集问题的所需图G’(V’,E’)和k’。我们将通过以下方式构造图G’:

    图G’是G的互补图。计算互补图G’所需的时间需要遍历所有顶点和边缘。其时间复杂度为O(V + E)。
    现在我们将证明,计算独立集的问题确实可以归结为集团的计算。减少可以通过以下两个命题证明:

    • 让我们假设图G包含大小为k的集团。团的存在意味着G中有k个顶点,其中每个顶点通过边与其余顶点相连。这进一步表明,由于这些边缘包含在G中,因此它们不会出现在G’中。结果,这k个顶点在G’中彼此不相邻,因此形成了大小为k的独立集。
    • 我们假设互补图G’具有大小为k’的一组独立顶点。这些顶点均不与任何其他顶点共享边。当我们补充图以获得G时,这k个顶点将共享一条边,因此彼此相邻。因此,图G将具有大小为k的集团。


因此,我们可以说,如果在G’(互补图)中有一个大小为k的团簇,则在图G中有一个独立的大小为k的集合。因此,独立集合问题的任何实例都可以简化为集团问题的实例。因此,独立集合是NP-Hard。

结论:
由于独立集问题既是NP又是NP-Hard,因此它是一个NP-完全问题。