算法概论课后习题

来源:互联网 发布:c语言进制转换程序 编辑:程序博客网 时间:2024/05/16 13:59

8.8

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

证明:

显然,EXACT 4SAT属于NP问题。
现在通过将3SAT归约到EXACT 4SAT来证明后者的 NP 完全性。
对于任意一个 3SAT 实例,如果其中某个子句中包含了同一个文字多次,那么可以缩减为一次,如果同时包含了某个变量的肯定及否定,那么可以将这个变量去掉。然后,可以再在每个子句中可以添加一些哑变量(即没用的辅助变量),这样就可以将每个子句所包含的文字数目扩充到四个。
至此,即已将该 3SAT 实例转化成了一个 EXACT 4SAT问题。

原创粉丝点击