📜  证明图的主要集合是NP完全的

📅  最后修改于: 2021-04-17 13:23:45             🧑  作者: Mango

先决条件:图的主要集合,NP完全

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

  1. 支配集是NP完整的
    如果NP中有任何问题,那么给定“证明”,它是问题的解决方案和问题的实例(在这种情况下,图形G和正整数k),我们将能够验证(检查给定的解是否正确)在多项式时间内的证书。
    证书是在图中形成支配集的一系列顶点。我们可以通过检查所有顶点都属于图的顶点并且所有不属于该序列的顶点都与该集合中的某些顶点相邻来验证此解决方案。这可以使用以下策略在多项式时间内完成,即O(V + E):
    flag=true
    for every vertex v in V:
      if v doesn't belong to Dominating Set:
         verify the set of edges 
         corresponding to v 
         if v is not adjacent 
            to any of the vertices in DS, 
            set flag=False and break
    if (flag)
       solution is correct
    else
       solution is incorrect
    
  2. 支配集是NP-硬
    为了证明控制集是NP-Hard,我们必须将已知的NP-Hard问题简化为该问题。我们将从“顶点覆盖”问题简化为“支配集”问题。
    顶点覆盖问题的每个实例都包含一个图G =(V,E)和一个包含顶点子集的整数k,因为输入可以转换为包含图G’=(V’,E的支配集问题’) 。我们将通过以下方式构造图G’:
    • E’ =对于图G中包含顶点{u,v}的每个边E,添加一个新顶点{uv}并将其分别连接到新顶点u和v。
    • V’ =将原始图G的所有顶点V相加。

    通过添加与需要O(V + E)时间的新顶点对应的新边,可以在多项式时间内获得新图形G’。可以通过以下两个权利要求来证明这种减少:

    • 让我们假设图G具有大小为k的顶点覆盖VC。 G中的每个边都有一个属于顶点覆盖的顶点。因此,对于每个由顶点{u,v}组成的边e,至少u或v是顶点覆盖的一部分。因此,如果u包含在VC中,则相邻顶点为v,也将被VC中的某些元素覆盖。现在,对于每个边缘的所有新添加的顶点UV,顶点都与u和v相邻,其中一个至少是VC的一部分,如上所述。因此,该VC也覆盖了所有边缘的附加顶点。形成大小为k的顶点覆盖的一组顶点在图形G’中形成支配集。因此,如果G具有顶点覆盖层,则G’具有相同大小的主导集。
    • 我们假设图G’具有大小为k的支配集。可能出现两种可能性,DS中的顶点是原始顶点,或者它属于每个边{u,v}的新添加的顶点UV。在第二种情况下,由于每个新顶点都连接到边的两个顶点u和v,因此可以用u或v替换。由于这三个顶点形成三角形,因此即使替换视图也是如此。使用u或v,我们可以继续覆盖替换之前已覆盖的所有顶点。这将导致消除所有新添加的顶点,同时跨越图形G’的所有边缘。新添加的顶点由修改后的DS主导,并且每个边缘UV至少用u或v覆盖G中的所有边缘。因此,如果G’具有大小为k的支配集,则G将具有最大为k的顶点覆盖。

    在下图中,顶点B在AB和BE中均占主导地位,因此可以轻松地替换它。因此,这两个顶点是多余的。

    因此,我们可以说,图G’包含主导集,而图G’包含顶点覆盖。因此,支配集问题的任何实例都可以简化为顶点覆盖问题的实例。因此,主导集也是NP-Hard。由于顶点覆盖属于NP和NP-Hard类,因此图的主要集合是NP-Complete。