《算法概论》8.3

来源:互联网 发布:应聘淘宝小二客服 编辑:程序博客网 时间:2024/06/10 06:51

题目:

STINGY SET 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 SET is NP-complete.

解答:

**【翻译过来】:**STINGY SET问题是如下的问题:提供了一个clauses集合以及一个整数k,寻找到一个答案使得至多k个变量都是true,如果这样的答案存在。证明STINGY SET是NP完全问题。
解答:

1. 首先,可以依次判断每一个clauses里面的变量数是否小于等于k,这个操作是需要通过多项式计算次数完成的,因此可属于NP完全问题;

2. 其次,可以考虑将SAT规约到STINGY SET问题。

  • 给出一个SAT的实例I。那么当k是SAT实例I中所有变量总数的时候,(I, k)是STINGY SAT的一个问题实例。那么我们需要证明:I是SAT的一个实例当且仅当(I, k)是STINGY SAT的一个实例。
  • 假设I有一个答案S,那么S中不超过k个变量是true,因为变量的总数是k,因此S对于(I, k)同样成立。
  • 当(I, k)有一个答案S的时候,显然S也是I的的答案。

因此,可以将SAT规约到STINGY SAT,因此STINGY SAT问题是一个NP完全问题。