【算法概论】第八章课后习题

8.3 证明吝啬SAT问题为NP完全问题

STINGY SAT is the following problem:given a set of clauses(each a disjunction of literals) and an integer k,find a satisfying assignment in which at most k variables are true,if such an assignment exists.Prove that STINGY SAT is NP-complete.
吝啬SAT问题是这样的:给定一组子句(每个子句都是其中文字的析取)和整数k,求一个最多有k个变量为true的满足赋值——如果该赋值存在。证明吝啬SAT是NP-完全问题。

要证明一个问题是NP-完全问题,需要证明以下两点:
1. 它是一个NP问题 ;
2. 其他属于NP的问题都可归约成它。

若已知某个与吝啬SAT问题变量对应的真值集合,可在多项式时间内将该集合带入吝啬SAT问题验证是否为解。故吝啬SAT问题为NP问题。

而对于第二点,由于已知所有的NP问题都可以被归约为SAT问题,因此我们只需要证明SAT问题可以被归约为吝啬SAT问题即可得证。

假设I是SAT的一个实例,若I中变量的总数为k,则(I, K)是吝啬SAT问题的一个实例。给定(I, K)的一个解S,则若S中至多有k个变量为true,则S也是I的解。因此,吝啬SAT的解也是SAT的解。从而,SAT问题归约为吝啬SAT问题。最终,证明吝啬SAT问题是一个NP完全问题。

猜你喜欢

转载自blog.csdn.net/qq_38121300/article/details/78957169