8.8 证明精确4SAT是NP完全问题

8.8 证明精确4SAT是NP完全问题

  • 8 证明精确4SAT是NP完全问题
    • 题目描述
    • 证明过程
      • 证明3SAT规约到精确4SAT是多项式时间的
      • 证明3SAT的解一定是精确4SAT的解
      • 证明精确4SAT的解一定是3SAT的解

题目描述

In the EXACT 4SAT problem, the input is a set of clauses, each of which is a disjunction of exactly four 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.

证明过程

已知3SAT是NP完全的,将3SAT规约为精确4SAT即可证明精确4SAT是NP完全的

证明3SAT规约到精确4SAT是多项式时间的

对3SAT做如下规约:
- 若子句中有3项,设其为 (xyz) ,则创建1个变量:
(xyza)(xyza¯)
- 若子句中有2项,设其为 (xy) ,则创建2个变量:
(xyab)(xyab¯)(xya¯b)(xya¯b¯)
- 若子句中有1项,设其为 (x) ,则创建3个变量:
(xabc)(xabc¯)(xab¯c)(xab¯c¯)(xa¯bc)(xa¯bc¯)(xa¯b¯c)(xa¯b¯c¯)

由此规约过程可以看出是在多项式时间内完成的

证明3SAT的解一定是精确4SAT的解

若3SAT存在一组解,那么其中的每个子句必为真
由以上规约过程可以看出,若原有项为真,那么添加变量后仍为真,所以3SAT的解一定是精确4SAT的解

证明精确4SAT的解一定是3SAT的解

若精确4SAT存在一组解,那么其中的每个子句必为真
以子句中有1项扩充后的为例,其余同理:
(xabc)(xabc¯)(xab¯c)(xab¯c¯)(xa¯bc)(xa¯bc¯)(xa¯b¯c)(xa¯b¯c¯) 为真
因为这里取遍了a、b、c的所有自身以及取反后组合的情况,所以其中一定存在一个子句使得除x外的其他3项全为假,那么x必为真,所以精确4SAT的解一定是3SAT的解

你可能感兴趣的:(8.8 证明精确4SAT是NP完全问题)