问题描述:
Maxmum common subgraph:
Input: Two graphs G1 = (V1,E1) and G2 = (V2,E2); a budget b.
Output: Two set of nodes V1' ∈V1 and V2' ∈ V2 whose deletion leaves at least b nodes in each graph, and makes two graphs identical.
证明:
由题意所述,最大公共子图问题,就是对输入的两个图G1和G2,各自移除若干个节点,使得图G1和G2在剩余的节点数不少于b的限制下,两个图的结构完全相同,即此为两个图的最大公共个子图。而求最大公共子图的问题,其实可以从求独立集的问题中规约而得到。由于囚徒的具有b个定点的独立集的问题是一个NP完全问题,因而,同样也证明了求最大公共子图的问题也是一个NP完全问题。
具体证明如下:
1. 若G1和G2存在节点数为b的最大公共子图,则这b个节点就是图的独立集。反证法可知,假如这b个节点不是独立集,即其中两个节点是相连的,那么在G1的子图中这两点之间必然有边相连,但是G2中边集为空,也就是说这两点没有边相连,这与它们是公共子图矛盾,因此只要G1和G2存在节点数为b的最大公共子图,那么这b个节点就是图的独立集。
2. 若G1有节点数为b的独立集,那么只要G1和G2都只取这b个点作为它们的子图,由于G1中各个点之间都没有边相连,而G2中本来边集就为空,那G1和G2就都是包含了b个节点,并且这b个节点是没有边相连。显然这两个子图是完全相同的,即这两个图也有节点数为b的公共子图。
因此,求图的独立集问题是可以规约到求最大公共子图问题上的,所以最大公共子图问题也是NP完全问题。
Maxmum common subgraph:
Input: Two graphs G1 = (V1,E1) and G2 = (V2,E2); a budget b.
Output: Two set of nodes V1' ∈V1 and V2' ∈ V2 whose deletion leaves at least b nodes in each graph, and makes two graphs identical.
证明:
由题意所述,最大公共子图问题,就是对输入的两个图G1和G2,各自移除若干个节点,使得图G1和G2在剩余的节点数不少于b的限制下,两个图的结构完全相同,即此为两个图的最大公共个子图。而求最大公共子图的问题,其实可以从求独立集的问题中规约而得到。由于囚徒的具有b个定点的独立集的问题是一个NP完全问题,因而,同样也证明了求最大公共子图的问题也是一个NP完全问题。
具体证明如下:
1. 若G1和G2存在节点数为b的最大公共子图,则这b个节点就是图的独立集。反证法可知,假如这b个节点不是独立集,即其中两个节点是相连的,那么在G1的子图中这两点之间必然有边相连,但是G2中边集为空,也就是说这两点没有边相连,这与它们是公共子图矛盾,因此只要G1和G2存在节点数为b的最大公共子图,那么这b个节点就是图的独立集。
2. 若G1有节点数为b的独立集,那么只要G1和G2都只取这b个点作为它们的子图,由于G1中各个点之间都没有边相连,而G2中本来边集就为空,那G1和G2就都是包含了b个节点,并且这b个节点是没有边相连。显然这两个子图是完全相同的,即这两个图也有节点数为b的公共子图。
因此,求图的独立集问题是可以规约到求最大公共子图问题上的,所以最大公共子图问题也是NP完全问题。