每周算法题(十七)
题目: 8.15最大公共子图
已知G1 = (V1, E1), G2 = (V2, E2),正整数b,G1,G2分别删除部分节点后剩下的至少b个节点构成的子图要相同。
证明最大公共子图问题是NP完全问题。
证明过程
首先这是个多项式时间内能检验是否正确的问题,即NP问题。
并且已知独立集问题是NP完全问题。如果能将独立集问题归约到本问题,则证明了最大公共子图问题是NP完全问题。
令G1=(V, E),G2=(V, ∅),则G2中没有边,任意点集能构成独立集。
若G1中存在大小为b的独立集,那么只要从G2中取出相同点集,就能构成大小为b的公共子图。即若独立集问题有解,最大公共子图问题也有解。
反过来,若已知G1和G2存在一个大小为b的公共子图,假设G1的公共子图中存在一条边,那么G2中对应的公共子图中也会有这条边,但因为G2没有边,故该假设不成立,即公共子图中不存在任何边,也就是说,公共子图的点集均为G1和G2的独立集。