Exercise 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 true
, if such an assignment exists. Prove that STINGY SAT
is NP-complete.
Proof
可以通过把 STINGY SAT
问题归约成 SAT
问题来进行求解:
假设现在有一个 SAT
问题的实例
I
,令 STINGY SAT
问题的一个实例。我们需要证明的是,当实例
I
有解时,实例
假设实例 I 有一个解
S ,令 s 表示S 中赋值为true
的元素的数目,则必然有 s≤k ,因为 k 是实例I 中的所有变量的总数。此时, S 显然是实例(I,k) 的一个解。假设实例 I 无解,此时可以使用反证法来证明实例
(I,k) 也必定无解。假设实例 (I,k) 有一个解 S ,由于k 是实例 I 中的所有变量的总数,当S 能够满足实例 (I,k) 时,它也一定能够满足实例 I ,因此S 也是实例 I 的一个解,这与 实例I 无解 矛盾。因此当实例 I 无解时,实例(I,k) 也必定无解。
由此我们证明了:STINGY SAT
问题可以归约成 SAT
问题,而由于 SAT
问题是一个 NP-complete 问题,则STINGY SAT
问题也是一个 NP-complete 问题。