子图同构问题:我们有两个无向图G 1和G 2 。问题在于检查G 1是否与G 2的子图同构。
图同构:两个图A和B如果顶点和边的数目相同,则彼此同构,并且保留了边的连通性。在图A和B的顶点集之间存在双射。因此,当且仅当f(u),f(v)在B中相邻时,两个顶点u,v在A中彼此相邻(f是a双射)。
为了证明问题是NP-完全的,我们必须证明它属于NP和NP-Hard类。 (由于NP-完全问题是NP-Hard问题,也属于NP)
子图同构问题属于NP –如果问题属于NP类,则它应具有多项式时间可验证性。给定证书,我们应该能够在多项式时间内验证它是否可以解决问题。
证明:
- 证明:设G为G 2的子图。我们也知道G 1和G的顶点之间的映射。
- 验证:我们必须检查G 1是否与G同构。 (i)检查映射是否为双射,并且(ii)验证G 1中每个边(u,v)是否存在边(f(u),f(v))花费多项式时间。
因此,子图同构问题具有多项式时间可验证性,并且属于NP类。
子图同构问题属于NP-Hard –如果在多项式时间内每个NP问题都可简化为L,则问题L属于NP-Hard。为了证明子图同构问题(S)是NP-Hard,我们尝试将特定实例的已知NP-Hard问题简化为S。如果可以在多项式时间内进行这种减少,那么S也是NP-Hard问题。因此,让我们将NP完成的集团决策问题(C)简化为子图同构问题(因此,NP中的所有问题都可以在多项式时间内简化为C)。如果可以在多项式时间内进行这种缩减,则可以将每个NP问题在多项式时间内简化为S,从而证明S为NP-Hard。
证明:让我们证明集团决策问题在多项式时间内归结为子图同构问题。
让“派系决策问题”的输入为(G,k)。如果图G包含大小为k的集团(大小为k的集团是G的子图),则输出为true。令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的完整图。如果且仅当G1是G 2的一个子图时(因为G 1本身是G 2的一个子图,并且每个图都是同构的,所以G的大小为k),因此子图同构问题的结果为真。 G 1与G 2的子图同构。因此,如果集团决策问题为真,则子图同构问题为真,反之亦然。因此,对于特定实例,可以在多项式时间内将集团决策问题简化为子图同构问题。
因此,子图同构问题是NP-Hard问题
结论:
子图同构问题是NP和NP-Hard。因此,子图同构问题是NP-Complete 。