📜  证明子图同构问题是 NP-Complete(1)

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

证明子图同构问题是 NP-Complete

子图同构问题是指给定两个无向图G和H,判断它们是否同构,即是否存在一个点的映射将G中的点映射到H中的点,使得G中两个点的连通性与它们在H中的对应点的连通性相同。虽然该问题可以在多项式时间内解决,但是它是被证明为 NP-Complete 的。

NP-Complete

NP-Complete 是指问题能够被非确定性图灵机在多项式时间内解决,同时也可以在多项式时间内归约任何一个 NP 问题到它,即 NP 中的所有问题都可以归约到 NP-Complete 中的任意一个问题。

证明

首先需要证明子图同构问题是 NP 的。我们可以给定可能的解,例如 H 中各点到 G 中各点的映射,然后在多项式时间内验证这些映射是否真的构成了一张同构的子图。

接下来需要证明子图同构问题能够归约到 NP-Complete 中的某个问题,例如 3-SAT。假设我们想要解决一个子图同构问题,给定无向图 G 和 H。我们可以构造一个 3-SAT 问题,使得它有解当且仅当 G 和 H 是同构的。

具体构造方法如下:

  1. 为 G 中每个点 x 创建一个布尔变量 $b_x$,在 3-SAT 中将其对应为 $x$。
  2. 对于 G 的任意一对没有边相连的点 $x_i$ 和 $x_j$,在 3-SAT 中添加子句 $(\lnot b_{x_i} \lor \lnot b_{x_j})$,表示它们不能映射到 H 的同一点上。
  3. 对于 G 中的每条边 $(x_i,x_j)$,在 H 中必须存在一条对应的边 $(y_i,y_j)$,否则 G 和 H 不同构。我们可以为每个可能的边对都添加一个子句 $(b_{x_i} \land b_{x_j}) \rightarrow (b_{y_i} \land b_{y_j})$,表示如果 $x_i$ 和 $x_j$ 都被映射到了 H 中的 $y_i$ 和 $y_j$,那么它们之间也必须要存在一条边。换言之,如果一个解中同时满足所有这些子句,那么 G 和 H 是同构的。

由于以上构造过程的多项式复杂度,子图同构问题能够归约到 3-SAT 问题。由于 3-SAT 是 NP-Complete 的,所以子图同构问题也是 NP-Complete 的。

总结

子图同构问题是 NP-Complete 的,这是因为它能够以多项式时间归约到 NP-Complete 中的某个问题,例如 3-SAT。这个证明方法可以推广到其他许多问题,例如哈密顿回路和图着色问题。这个结论在计算机科学领域中具有广泛的应用。