证明EXACT 4SAT问题是NP完全问题
1.概念:
P类问题:多项式时间内可以解决的问题。确切得来说,这些问题可以在时间O(N^k)内解决。
NP类问题:在多项式时间内可以被证明的问题。即如果已知一个问题的解的证书,那么可以证明此问题在该输入规模下能在多项式时间内解决。
NP完全问题:非形式的,如果一个NP问题和其他任何NP问题一样“不易解决”,那么我们认为这一类问题是NPC或NP完全问题。
所有的P类问题也是NP类问题。
2.问题详情:
在精确的4SAT(EXACT4SAT)问题中,输入为一组子句,每个子句都是恰好4个文字的析取,且每个变量最多在每个子句中出现一次。目标是求它的满足赋值——如果该赋值存在。证明精确的4SAT是NP-完全问题。
3.解题方法:
第一步:
4SAT问题是NP类问题。假设共有k个变量,我们对这k个变量赋值,能在多项式时间内检验这组赋值是否满足此布尔表达式。所以4SAT问题显然是NP类问题。
第二步:
证明3SAT问题能归约到EXCACT 4SAT来证明EXCACT 4SAT的NP完全性(因为3SAT问题是NP完全问题)
对任意一个3SAT实例,如果其中某个子句中包含了同一个文字多次,那么可以缩减为一次;如果包含了某个变量的肯定和否定,则可以将这个变量去掉;最后在每个子句中可以添加一些没有用的辅助变量;这样就可以将每个子句所包含的文字数目扩充到四个,这样一个3SAT实例就转化成了一个EXACT EXACT 4SAT问题,即如果4SAT问题有解则3SAT问题也有解。
例如:
最开始的3SAT实例和最后的EXACT 4SAT实例有相同的解。