算法概论 课后习题 8.3 证明

EX 8.3
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

题目大意:定义一个STINGY SAT问题:给定一组子句(由文字通过逻辑或连接起来)和一个整数k,是否存在一个真值指派使得最多只有k个变量为真。证明这个问题是NP完全问题。

证明

  1. 首先说明一下SAT,SAT又叫可满足性问题,描述的是给定一个合取范式(CNF),要么给出它的一个真值指派,要么报告它不存在真值指派。
  2. 另外,给定一组解{x1, x2, …, xn},我们是可以在多项式时间内验证其正确性的,因此STINGY SAT属于NP问题。
  3. 接下来我们把SAT规约到STINGY SAT:
    i) SAT是STINGY SAT的一个特例,假设SAT的函数为f,给定n个变量x1, x2, …, xn,最多有n个变量为真,那么(f, n)可以看成是STINGY SAT的实例。
    ii) 假设STINGY SAT的实例是(f, n),那么(f, n)的一个真值指派,也一定是SAT函数f的一个真值指派,即f是SAT的实例

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

点赞