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

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

子图同构问题:我们有两个无向图 G 1和 G 2 。问题是检查 G 1是否与 G 2的子图同构。

图同构:如果两个图 A 和 B 具有相同的顶点和边数,则它们彼此同构,并且保持边连通性。图 A 和 B 的顶点集之间存在双射。因此,两个顶点 u, v 在 A 中彼此相邻当且仅当 f(u), f(v) 在 B 中相邻(f 是 a双射)。

为了证明一个问题是 NP-Complete,我们必须证明它属于 NP 和 NP-Hard 类。 (因为 NP-Complete 问题是 NP-Hard 问题,也属于 NP)

子图同构问题属于 NP——如果一个问题属于 NP 类,那么它应该具有多项式时间可验证性。给定证书,我们应该能够在多项式时间内验证它是否是问题的解决方案。

证明:

  1. 证明:令 G 为 G 2的子图。我们也知道 G 1和 G 的顶点之间的映射。
  2. 验证:我们必须检查 G 1是否与 G 同构。 (i) 检查映射是否是双射 (ii) 验证对于 G 1 中的每条边 (u, v) 是否存在 G 中存在的边 (f(u), f(v)) 花费多项式时间.

因此,子图同构问题具有多项式时间可验证性,属于NP类。

子图同构问题属于 NP-Hard –如果每个 NP 问题在多项式时间内都可以归约为 L,则问题 L 属于 NP-Hard。为了证明子图同构问题 (S) 是 NP-Hard 问题,我们尝试将已知的 NP-Hard 问题简化为特定实例的 S。如果这种减少在多项式时间内是可能的,那么 S 也是一个 NP-Hard 问题。因此,让我们将 NP-Complete 的 Clique Decision Problem (C)(因此,NP 中的所有问题都可以在多项式时间内简化为 C)到子图同构问题。如果这种减少在多项式时间内是可能的,那么每个 NP 问题都可以在多项式时间内减少到 S,从而证明 S 是 NP-Hard。

证明:让我们证明集团决策问题在多项式时间内简化为子图同构问题。

让 Clique Decision Problem 的输入为 (G, k)。如果图 G 包含大小为 k 的团(大小为 k 的团是 G 的子图),则输出为真。设 G1 是 k 个顶点的完整图,G 2是 G,其中 G 1 、G 2是子图同构问题的输入。我们观察到 k <=n,其中 n 是 G (=G 2 ) 中的顶点数。如果 k>n,那么大小为 k 的团不能是 G 的子图。创建 G 1所花费的时间是 O(k 2 ) = O(n 2 ) [因为 k<=n] 作为大小为 k = k C 2 = k*(k-1)/2 的完整图。 G 有一个大小为 k 的团,当且仅当 G1 是 G 2的子图(因为 G 1本身是 G 2的子图并且每个图都与自身同构,所以子图同构问题的结果为真。因此, G 1与G 2的子图同构。因此,如果集团决策问题为真,则子图同构问题为真,反之亦然。因此,对于特定实例,可以在多项式时间内将集团决策问题简化为子图同构问题。

因此,子图同构问题是一个 NP-Hard 问题

结论:
子图同构问题是 NP 和 NP-Hard。因此,子图同构问题是 NP-Complete

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