算法第八章NP完全问题作业

算法第八章NP完全问题作业

8.14

prove that the following problem is NP-complete: given an undirected graph G = (V,E) and an integer k, return a clique of size k as well as an independent set of size k, provided both exist.

题目中提到了团集问题独立集问题,这两个问题本来就能互相归约,所以解题的想法自然是把上面的问题往团集和独立集上靠。

归约方法:
任意给出一幅图G = (V, E),
在G上添加|V|个孤立点,组成一幅新图H(H是不连通的)

这样在G中能找到size=k的团集能够规约成在H中能找到size=k的团集与size=k的独立集

证明:
如果在G中能找到size=k的团集是正确的,即可以在G中找到size=k的团集,那么H中也能找到size=k的团集(H包含G),另外显然能找到size = k的独立集,因为有|V|个孤立点

反过来,如果在H中能找到size=k的团集与size=k的独立集是正确的,那么由于团集不可能包含任何一个孤立点,所以团集一定是包含在G中的

这就证明了在G中能找到size=k的团集能够规约成在H中能找到size=k的团集与size=k的独立集,前者是一个已知的NPC问题,所以后者是一个NPC,或者NP-hard问题

要确定后者是一个NPC问题,还需要证明它是一个NP问题,这是显然的,任意给出一个解,我们都能在多项式时间内验证它

综上,题目中的问题是一个NPC问题

最后梳理一下,
为方便起见,把任意给出一幅图H,在H中能找到size=k的团集与size=k的独立集这类问题设为B类问题,把任意给出一幅图G,在G中能找到size=k的团集这类问题设为A类问题。
如果B类问题有多项式复杂度的算法,那么我们可以按照上面的方法,把每一个A类问题都规约成一个特殊的B类问题(因为B类问题的定义中是任意一幅图,并不是任意一幅图都与我们的构造相符合,所以说是特殊的),然后用解决B类问题的算法来解决每一个特殊的B类问题,然后由归约的方法就能得出A类问题的解,这样A类问题就有了多项式时间的算法,着是不太可能的

你可能感兴趣的:(算法分析与设计)