《算法设计》第8.8题 证明4SAT是NP-C问题

证明:

1.首先证明4SAT是NP问题:假设现在有一个包含N个变量,M个子句的4SAT实例INS和一个变量的赋值ASS,当把这个ASS应用上去后,显然是可以在多项式时间内知道这个ASS能不能满足INS为真的。所以4SAT是NP问题。


2.证明4SAT是NP-C问题。一个办法是用3SAT问题规约为4SAT问题。

假设现在有一个3SAT的实例INS3,那么转化的4SAT的实例INS4可以用如下方法:

——设INS3的所有变量为S,那么INS4中加入一个新变量K,所以INS4的变量集合为S ∪ {K}。

——对INS3的所有子句C(不妨设Ci = Xi ∨ Yi ∨ Zi),在INS4的子句中加入(Xi ∨ Yi ∨ Zi ∨ K)∧ (Xi ∨ Yi ∨ Zi ∨ ¬K)。

如果INS3可满足,那么不管K取什么值,(Xi ∨ Yi ∨ Zi ∨ K)∧ (Xi ∨ Yi ∨ Zi ∨ ¬K)一定等于(Xi ∨ Yi ∨ Zi),所以用了INS3的变量的值之后,再随便设一个K的值,这样的变量值的集合组成一个解,一定能满足INS4。

如果INS4可满足,那么因为不管K取什么值,(Xi ∨ Yi ∨ Zi ∨ K)∧ (Xi ∨ Yi ∨ Zi ∨ ¬K)一定等于(Xi ∨ Yi ∨ Zi),所以直接把满足INS4的解中除了K的变量都应用于INS3,INS3一定能被满足。


综上,3SAT可以被规约到4SAT问题。


又因为3SAT是NP-C问题,所以4SAT是NP-C问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值