📜  3-着色是 NP 完成

📅  最后修改于: 2021-10-25 03:19:08             🧑  作者: Mango

先决条件: NP-完全性,图形着色

图 K 着色问题无向图的 K 着色问题是将颜色分配给图的节点,使得没有两个相邻的顶点具有相同的颜色,并且最多使用 K种颜色来完成图的着色。

问题陈述给定一个图G(V, E)和一个整数 K = 3,任务是确定该图是否可以使用最多 3种颜色进行着色,以便没有两个相邻的顶点被赋予相同的颜色。

说明
问题的一个实例是为问题指定的输入。 3-coloring 问题的一个例子是无向图G (V, E) ,任务是检查是否有可能为每个顶点V分配颜色,仅使用 3 种不同的颜色,每个相邻的颜色都不同。由于 NP-Complete 问题是一个既属于NP又属于NP-hard的问题,因此问题是 NP-Complete 的证明由两部分组成:

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

但是不可能将每个 NP 问题都化简为另一个 NP 问题以始终显示其 NP-Completeness。因此,要证明一个问题是 NP-Complete,那么证明该问题在NP 中并且任何NP-Complete 问题都可以简化为,即如果 B 是 NP-Complete 并且 B≤P C那么对于 NP 中的 C,则 C是 NP 完全的。因此,使用以下两个命题可以得出结论,图 K 着色问题是 NP 完全问题

3-着色问题在 NP 中:
如果在 NP 中有任何问题,那么,给定一个证书,它是问题的解决方案和问题的实例(图G(V, E)和颜色分配{c 1 , c 2 , c 3 }其中每个顶点都从这三种颜色中分配了一种颜色{c 1 , c 2 , c 3 } ),然后可以在多项式时间内验证(检查给出的解决方案是否正确)证书。这可以通过以下方式完成:

因此,可以在图形的多项式时间内检查分配的正确性,该时间相对于其边 O(V+E)。

3-着色问题是NP-Hard:
为了证明 3-着色问题是 NP-Hard 问题,将已知的 NP-Hard 问题简化为该问题。进行一个简化,从中可以将 3-SAT 问题简化为 3-着色问题。让我们假设 3-SAT 问题有一个 3-SAT 公式,该公式包含 n 个变量上的 m 个子句,由x 1 , x 2 , …, x n 表示。然后可以通过以下方式根据公式构建图形:

  1. 对于每个变量x i在图中构造一个顶点v i和一个顶点v i’表示变量x i的否定。
  2. 对于 m 中的每个子句 c,添加对应于值 c1、c1、…、c5 的 5 个顶点。
  3. 另外添加了三个不同颜色的顶点以分别表示值 True、False 和 Base (T, F, B)。
  4. 在这三个附加顶点T、F、B之间添加边以形成三角形。
  5. 在顶点v iv i’以及底 (B) 之间添加边以形成三角形。

对于图 G,以下约束条件为真:

  1. 对于每对顶点v iv i’ ,其中一个被分配一个 TRUE 值,另一个被分配 FALSE。
  2. 对于 m 个子句中的每个子句 c,至少有一个字面量必须保持 TRUE 值才能为真。

因此,可以通过输入节点 u、v、w 为公式中的每个子句c = (u V v V w)构建一个小的 OR-gadget 图,并将 gadget 的输出节点连接到 False 和 Base 特殊节点。

让我们考虑公式f = (u’ V v V w’) AND (u V v V w’)

现在可以通过以下两个命题证明归约:
让我们假设 3-SAT 公式有一个令人满意的赋值,那么在每个子句中,至少有一个字面量x i必须为真,因此,相应的v i可以分配给一个 TRUE 颜色,而v i’为错误的。现在,扩展这一点,对于每个子句,相应的 OR-gadget 图可以是 3 色的。因此,该图可以是 3 色的。

让我们考虑图 G 是 3-colorable 的,所以如果顶点 vi 被赋值为真颜色,那么变量 x i相应地被赋值为真。这将形成一个合法的真理分配。此外,对于任何子句C j = (x V y V z) ,不可能所有三个字面量x, y, z 都是假的。因为在这种情况下, C j的 OR-gadget 图的输出必须着色为 False。这是一个矛盾,因为输出连接到 Base 和 False。因此,存在对 3-SAT 子句的令人满意的赋值。

结论因此,3-着色是一个NP-完全问题。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程