题目:
在精确的4SAT(EXACT 4SAT)问题中,输入为一组自居,每个字句都是恰好4个文字的析取,且每个变量最多在每个字句中出现一次。目标是求它的满足赋值——如果该赋值存在。证明精确的4SAT是NP完全问题。
证明:
用归约来证明:如果问题A可以归约到问题B,记作A->B,如果A是NP完全问题,则通过归约证明B也是NP完全问题。即问题的难度是通过箭头的方向传递的。
现在要证明EXACT 4SAT问题是NP完全问题,8.3节已经证明3SAT问题是NP完全问题,则:只要证明3SAT问题可以归约到EXACT 4SAT问题,就能通过归约公式证明EXACT 4SAT问题也是NP完全问题。
下面将3SAT问题归约到EXACT 4SAT问题:
给定3SAT的实例I,对I中的每个字句,包含的文字不超过3个,假设I=(a1∨a2∨a3)(a4∨a5∨a6)…(ak-2∨ak-1∨ak)。由于EXACT 4SAT要求每个变量最多在每个字句中出现一次,先对I中的字句去重(保证每个变量在字句中只出现一次)。对I中的字句i,如果i中存在相等的变量:
- i中存在s和t,使得as=at,则原字句i=(as∨at∨aw)=(as∨aw)。
- i中存在s和t,使得as等于at的反相,则原字句i=(as∨at∨aw)=true,对I的可满足性,可直接不考虑i,相当于将i消去。
去重后,对I中的每个字句,每个变量只在字句中出现一次,但是,每个字句的变量都不超过3,为每个字句增加不同的变量,添加变量x使字句(a1∨a2∨a3)变成(a1∨a2∨a3∨x),添加变量x,y使字句(a1∨a2)变成(a1∨a2∨x∨y)……逐个对每个字句添加变量使得它们都拥有不同的4个变量。这样,3SAT问题就归约为EXACT 4SAT问题。去重和添加变量的过程能在多项式时间内完成。因此,3SAT问题可以在多项式时间内归约为EXACT 4SAT问题,由于3SAT问题是NP完全问题,所以EXACT 4SAT问题也是NP完全问题。
以上,证明完毕。