8.8 精确4SAT问题证明

来源:互联网 发布:周琦体测数据 编辑:程序博客网 时间:2024/05/18 17:39

思路:
若一个问题为NP问题,要证明该问题是NPC问题,只需要将一个已知的NPC问题规约为该问题即可。
规约过程分两步:

  1. 将已知的NPC问题的实例转化为该问题的实例。
  2. 将该问题的解映射到NPC问题的解。
  3. 若该问题无解,则NPC问题也无解。

已知3SAT问题是NPC问题,所以 利用3SAT问题进行规约证明。
证明过程:

  1. 精确4SAT问题跟3SAT问题都是NP问题

  2. 规约过程:
    给定一个3SAT问题的实例:X={x1,x2,...,xn}C={C1,C2,...,Cm}, Ct=zt,1zt,2zt,3,然后将该问题的实例转换为4精确SAT问题的实例X,C

  3. 证明该规约是多项式时间的:
    对于每个子句 CC 多了1个变量,因此总体问题实例多了m个子句和m个变量,因此该规约仍是多项式时间的。

  4. 对于3SAT问题,如果存在一个真值赋值t,那么其中的Ct必为真,也就是其中必有一个文字为真值赋值,即Ct=zt,1zt,2zt,3中必有一个变量为真值,那么对应于Ct=(zt,1zt,2zt,3yt,4)(zt,1zt,2zt,3¬yt,4)也必为真,因此对应于4精确SAT问题也真值赋值t

  5. 对于真值赋值t,我们可以知道其中的Ct=(zt,1zt,2zt,3yt,4)(zt,1zt,2zt,3¬yt,4)为真。分两种情况对其中的赋值进行考虑,
    case 1 : 设yt,4为false值,则由(zt,1zt,2zt,3yt,4)可知,(zt,1zt,2zt,3)为真,此赋值即t的赋值。
    case 2 : 设yt,4为true值,则由(zt,1zt,2zt,3¬yt,4)可知,(zt,1zt,2zt,3)为真,此赋值即t的赋值。
    所以由t赋值可以得到t的赋值。

  6. 若真值赋值t不存在,也就是所有的Ct不能同时为真,同样使用第五步的方法即可证明,此时所有的Ct不能同时为真,所以当X无解时,X也无解。

综上所述,精确4SAT问题是NPC问题。

原创粉丝点击