子图同构(Subgraph isomorphism problem)问题的描述如下。给定两个图 G_1 G_2 ,判断 G_1 是否与 G_2 的一个子图同构。首先假如我们得到了 G_1 G_2 和对应的解(即 G_2 的子图 G_s 使得 G_s G_1 同构),我们只需要遍历解中的点和每一个与这个点相连接的边,检查是否与 G_1 对应即可验证解的正确性。所以这个问题首先显然是一个 NP 问题。

为了证明这个问题同时也是一个 NP 难问题,我们将 分团问题 规约到 子图同构问题上来。具体地,假设我们现在有一个有解的分团问题 % <![CDATA[ <G,k> %]]> ,即 G 中存在 k 个点可以构成团(即这 k 个点相互连接,即构成一个 k -完全图)。那么我们构造一个 G_1 k -完全图,构造 G_2 = G 。显然上述两个图的构造是可以在多项式时间内完成的。

考虑有一个算法 $A_s$ 可以在多项式时间内解决子图同构问题的话,那么我们对于一个分团问题,我们只需要按照上述构造,在多项式时间内通过分团问题的 k G 构造出 G_1 G_2 ,然后将 G_1 G_2 拿给子图同构问题的算法 A_s 解,即可在多项式时间内得知 G_1 是否是 G_2 子图的一个同构,即 k -完全图是否包含在 G 中,即在多项时间内解出了分团问题

由于我们已知分团问题是 NP 完全的,所以上述的算法 A_s 不存在,所以子图同构问题为 NP 难问题。综上所述,子图同构问题是 NP 完全的。



发现存在错别字或者事实错误?请麻烦您点击 这里 汇报。谢谢您!