吝啬SAT问题是这样的:给定一组子句(每个子句都是其中文字的析取)和整数k,求一个最多有k个变量为true的满足赋值——如果该赋值存在。证明吝啬问题是NP-完全问题。
这道题,我的思路是:首先证明吝啬SAT问题是是NP问题,然后用归约的方法:由已知的NP完全问题(SAT问题)归约到该问题,并证明归约的过程的时间复杂度为多项式时间复杂度。
证明过程:
我们假设(f,k)为吝啬SAT的一个实例,x为一组赋值,也就是说,f是SAT的一个实例(包含k个变量)。因为吝啬SAT问题是SAT问题的一个变种,而且任何一个解都可以在多项式的时间内求解,所以吝啬SAT问题是NP问题 。
要证SAT规约到吝啬SAT,即证: x是f的解 当且仅当 x是(f,k)的解
如果x是f的解,则至多有k个变量为真,x赋给(f,k)也为真,所以x是(f,k)的解
如果x是(f,k)的解,该吝啬SAT问题解中值为true的变量的数量也小于等于k,所以x也是f的解
综上所述,吝啬SAT问题是NP-完全问题。