Exactly 4SAT

算法概论第八章习题8.8:证明精确的4SAT为NP完全问题

首先了解精确的4SAT的定义: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. 

对于一系列的clauses,每个都恰好是四个literals的析取,并且每个变量在每个clause里都最多只出现一次,求满足条件的赋值


采用比较常规的证明方法,即由NP完全问题3SAT进行归约

设3SAT实例a1 V a2 V a3

(1)若新增的literal包含了a1、a2、a3的其中之一,以a1为例a1 V a2 V a3 V a1 = a1 V a2 V a3可以缩减一次

(2)若新增的literal包含了~a1、~a2、~a3的其中之一,以~a1为例a1 V a2 V a3 V ~a1 = a2 V a3可以缩减两次

(3)若新增的literal包含了无关变量a4,可通过如下方式进行归约:a1 V a2 V a3 = (a1 V a2 V a3 V a4)(a1 V a2 V a3 V ~a4)

1)若a4为真,则a1 V a2 V a3必须为真,否则a1 V a2 V a3 V ~a4为假

2)若a4为假,则a1 V a2 V a3也必须为真,否则a1 V a2 V a3 V a4为假

反过来,若a1 V a2 V a3为真,则无论a4取何值,a1 V a2 V a3 V a4和a1 V a2 V a3 V ~a4都为真


综上所述,已证明无论第四个变量取何值,精确的4SAT问题都可以归约为3SAT问题。因此,即证出精确的4SAT问题是NP完全问题。

你可能感兴趣的:(Exactly 4SAT)