算法概论第八章练习题 8.3

来源:互联网 发布:mac死机自动重启 编辑:程序博客网 时间:2024/06/05 12:48

题目:

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-完全问题。


证明:

首先,SAT问题也称为合取范式的可满足问题,一个合取范式形如:A1∧A2∧…∧An,子句Ai(1≤i≤n)形如:a1∨a2∨…∨ak,其中ai为文字,为某一布尔变量或该布尔变量的非。SAT问题是指是否存在一组对所有布尔变量的赋值(TRUE或FALSE),使得整个合取范式取指为真。
另外,给定一组解{x1, x2, …, xn},我们是可以在多项式时间内验证其正确性的,因此STINGY SAT属于NP问题。
接下来我们把SAT规约到STINGY SAT: 
1) SAT是STINGY SAT的一个特例,假设SAT的函数为f,给定n个变量x1, x2, …, xn,最多有n个变量为真,那么(f, n)可以看成是STINGY SAT的实例。 
2) 假设STINGY SAT的实例是(f, n),那么(f, n)的一个真值指派,也一定是SAT函数f的一个真值指派,即f是SAT的实例

以上可把SAT规约到STINGY SAT,由于SAT是NP完全问题,所以STINGY SAT也是NP完全问题。

原创粉丝点击