算法概论习题

8.3. STINGY SAT is the following problem: given a set of clauses (each a disjunction of literals) and an integer k, and a satisfying assignment in which at most k variables are true, if such an assignment exists. Prove that STINGY SAT is NP-complete.

由题意可以知道,STINGY SAT就是在原本SAT的要求下(每一个clause都有一个literal为True),另外要求最多只能有k个变量为true。比如一个合取范式的变量有x,y,z三个,k=2,那么就只能在x,y,z中选最多两个变量为整,然后在这种前提下,assignment能否满足SAT。

按照书上第二节给出的定义,我们的证明需要两个大步骤,就可以说明STINGY SAT是一个NP-完全问题。第一步证明STINGY SAT是一个NP问题,第二步证明STINGY SAT能够规约到SAT上,因为SAT本身是一个NP-完全问题。以下给出证明:

Step1:假设(f,k)为吝啬SAT的一个实例,x为一组赋值,也就是说,f是SAT的一个实例(包含k个变量),由于x是否可以使(f,k)为真的解是可在多项式时间内验证的,所以STINGY SAT是NP问题。
Step2:SAT规约到STINGY SAT,即证:
x是f的解 当且仅当 x是(f,k)的解。
Step3:假设x是f的解,则至多有k个变量为真,x赋给(f,k)也为真,所以x是(f,k)的解
Step4:假设x是(f,k)的解,显然x也是f的解。
证毕。

STINGY SAT是NP-完全问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值