Soptq

Soptq

Probably a full-stack, mainly focusing on Distributed System / Consensus / Privacy-preserving Tech etc. Decentralization is a trend, privacy must be protected.
twitter
github
bilibili

子图同构问题 NP-Complete 证明

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

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

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

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

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。