算法概论习题8.14
题目描述
证明如下问题是NP-完全的:给定一个无向图G(V,E)
和整数k
,求G
的一个规模为k
的团以及一个规模为k
的独立集,假设二者都是存在的。
试解
可以将
3SAT
问题归约到求无向图G
的规模为k
的团。
证:考虑一个有k
个子句的3SAT
实例,每个字句包含不超过3个文字。可以构造一个无向图G
,每个属于3SAT
公式中的文字对应G
中的一个节点。在3SAT
公式中属于一个子句的结点在图G
中视为同一个分组的。如果u∈V
,v∈V
是图G
中属于不同分组的结点,且这两个结点不代表相反的文字的话,就在这两个结点间构造一条边。可以在多项式时间内由3SAT
公式构造出这样的图G
。
那么在图G
中如果找到一个规模为k
的团,就意味着原3SAT
公式是可满足的:这是因为这个规模为k
的团含有k
个顶点,令这k
个顶点代表的文字赋值为真,由于它们属于不同的子句(根据构造过程,代表同一个子句中文字的结点在G
中没有相连的边),则原3SAT
公式中所有子句都可以得到满足,即3SAT
是可满足的。
如果在规模为k
的3SAT
公式存在真值赋值,就可以推出图G
中存在规模为k
的团:这是因为如果C1∧C2∧C3∧……∧Ck
为真,其中Ci
是含有3个文字的子句,那么每一个子句中都必然存在至少一个值为真的文字,这里至少有k
个文字,且两两不是相反的文字,从每个子句中选择一个值为真的文字,这k
个文字对应了图G中属于不同分组的顶点,而且由于这k
个文字两两不相反,根据之前的定义,图G
中这k
个顶点两两相连,所以图G
中存在一个规模为k
的团。综上所述,可以把一个
3SAT
问题归约到找无向图中规模为k
的团问题,由于3SAT
问题是NP-完全问题,所以求取无向图G(V,E)
的规模为k
的团问题也是NP-完全问题。- 在(1中构造的图
G
中,求出G
的补图G'
,则G'
中的规模为k
的独立集就是图G中规模为K的团。当求出一个图G规模为K的团之后,可以在多项式时间内求出图G
的规模为k
的独立集。 由(1)的结论可以知道,3SAT
问题也可以归约到求图G
中的规模为k
的独立集问题上。即求无向图G(V,E)
的规模为K的独立集是NP-完全问题。
综合(1)、(2)可以知道3SAT
问题可以归约到求一个无向图G(V,E)
的规模为k
的团和规模为k
的独立集上,所以这个问题是NP-完全的。
PS:可以将最大团问题归约到此问题。假设要求任意图G(V,E)
中大小为 k
的团,可以在图G
中添加k
个相互独立的顶点,得到新图G'
。这新加的k
个顶点保证了图G '
存在大小为k
的独立集,同时又不影响到原图的团。