NP问题——证明EXACT 4SAT问题是NP完全问题(算法概论习题8.8)

证明EXACT 4SAT问题是NP完全问题

1.概念:

P类问题:多项式时间内可以解决的问题。确切得来说,这些问题可以在时间O(N^k)内解决。

NP类问题:在多项式时间内可以被证明的问题。即如果已知一个问题的解的证书,那么可以证明此问题在该输入规模下能在多项式时间内解决。

NP完全问题:非形式的,如果一个NP问题和其他任何NP问题一样“不易解决”,那么我们认为这一类问题是NPCNP完全问题。

所有的P类问题也是NP类问题。


2.问题详情:

在精确的4SATEXACT4SAT)问题中,输入为一组子句,每个子句都是恰好4个文字的析取,且每个变量最多在每个子句中出现一次。目标是求它的满足赋值——如果该赋值存在。证明精确的4SATNP-完全问题。


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实例有相同的解。





猜你喜欢

转载自blog.csdn.net/weixin_40085482/article/details/78940867