算法概论(注释版)习题8.8

习题8.8


题目要求:
In the Exact 4SAT problem, the input is a set of clauses, each of which is a dijunction of exactly foour literals, and such that each variable occurs at most once in each clause. The goal is to find a satisfying assignment, if one exists. Prove that Exact 4SAT is NP-complete.

答:SAT->4SAT
设SAT:a1 ∨ a2 ∨ a3 ∨ a4 ∨ a5 ∨ … ∨ an
则该SAT可变为4SAT:(a1 ∨ a2 ∨ a3 ∨ x1) ^ (~x1 ∨ a4 ∨ a5 ∨ x2) ^ … ^ (~x( (n-6)/2 ) ∨ a(n-4) ∨ a (n-3) ∨ x( (n-4)/2 ) ) ^ (~x( (n-4)/2 ) ∨ a(n-2) ∨ a(n-1) ∨ an)。

  1. 当存在一个真值指派使得该4SAT为真时,也存在一个真值指派使得SAT为真。假设所有ai均为假,1 <= i <= n,则x1,x2,…,x( (n-4)/2 )和~x( (n-4)/2 )必为真。但是所以x( (n-4)/2 )和~x( (n-4)/2 )不可能同时为真,所以至少有一个ai为真,此时SAT为真。所以,当存在一个真值指派使得该4SAT为真时,SAT也为真。
  2. 当不存在一个真值指派使得该SAT为真时,也不存在一个真值指派使得该4SAT为真。要证明这个命题,我们可以证明它的逆否命题:存在一个真值指派使得该4SAT为真时,也存在一个真值指派使得该SAT为真。这个命题就是我们证明的第一个命题,所以它的逆否命题也为真,即:当不存在一个真值指派使得该SAT为真时,也不存在一个真值指派使得该4SAT为真。
  3. 这种转换的时间复杂度为O(n),是线性的。

综上所述, Exact 4SAT* 问题也是NP-complete。

猜你喜欢

转载自blog.csdn.net/m0_37576233/article/details/78960192
8.8