📜  证明 Clique Decision 问题是 NP-Complete(1)

📅  最后修改于: 2023-12-03 15:28:09.084000             🧑  作者: Mango

证明 Clique Decision 问题是 NP-Complete

什么是 Clique Decision 问题

Clique Decision 问题是一个图论问题,给定一个无向图 G 和一个正整数 k,判断 G 中是否存在一个大小为 k 的团(图中 k 个顶点两两之间都有边相连)。团是一个完全子图,即其中所有顶点都相互连通。

证明 Clique Decision 问题是 NP-Complete

要证明 Clique Decision 问题是 NP-Complete,需要证明两部分内容:

  1. Clique Decision 问题是 NP 问题

判断 Clique Decision 问题的正确性可以通过穷举法实现,时间复杂度为 O(n^k)。因此,可以在多项式时间内验证 Clique Decision 问题的解是正确的,即 Clique Decision 问题是 NP 问题。

  1. Clique Decision 问题是 NP-hard 问题

我们需要找到另一个已知的 NP-hard 问题并证明其可以在多项式时间内归约到 Clique Decision 问题。

我们选择 Vertex Cover 问题。Vertex Cover 问题是给定一个无向图 G 和一个正整数 k,判断 G 是否存在一个大小为 k 的顶点集,使得每一条边都至少有一个端点在这个顶点集中。Vertex Cover 问题是 NP-hard 问题。

接下来证明 Vertex Cover 问题可以在多项式时间内归约到 Clique Decision 问题。具体步骤如下:

  • 给定一个 Vertex Cover 问题的实例 (G, k)。
  • 构造一个新图 G',其中 G' 的顶点集与 G 的顶点集相同,G' 中所有的边都是 G 中不存在的边。
  • 对于 G' 中的每一对不相邻的顶点 u 和 v,添加一条边 (u, v)。
  • 返回 (G', k) 作为 Clique Decision 问题的实例。

上述步骤的时间复杂度为O(n^2),可以在多项式时间内完成。现在证明 (G, k) 是一个 Vertex Cover 问题的解,当且仅当 (G', k) 是一个 Clique Decision 问题的解。

如果 (G, k) 是一个 Vertex Cover 问题的解,则 G 中至少存在 k 个顶点,使得每一条边都至少有一个端点在这些顶点中。因为 G' 中所有的边都是 G 中不存在的边,因此在 G' 中不存在大小为 k 的团。

如果 (G, k) 不是一个 Vertex Cover 问题的解,则 G 中最多存在 k-1 个顶点,使得每一条边都至少有一个端点在这些顶点中。在 G' 中这些顶点之间一定存在大小为 k 的团,因为对于任意两个不相邻的顶点,它们在 G 中至少有一个公共邻居,而在 G' 中这个公共邻居同时是它们之间的边缘顶点,它们可以组成一个大小为 k 的团。

因此,我们证明了 Vertex Cover 问题可以在多项式时间内归约到 Clique Decision 问题,并且可以在多项式时间内将 Clique Decision 问题的解转换为 Vertex Cover 问题的解。由于 Vertex Cover 问题是 NP-hard 问题,因此 Clique Decision 问题也是 NP-hard 问题。

综上所述,我们证明了 Clique Decision 问题是 NP-Complete 问题。

参考文献:

  1. https://en.wikipedia.org/wiki/Clique_problem
  2. https://en.wikipedia.org/wiki/Vertex_cover
  3. Michael R. Garey and David S. Johnson, "Computers and Intractability: A Guide to the Theory of NP-Completeness" (1979).