证明精确4SAT问题为NP完全问题
2016-11-20 17:16
232 查看
精确4SAT问题是这样的问题。输入为一组子句,每个子句都是析取式,恰好有4个变量,并且每个变量在每个子句中最多出现一次。
现在要证明精确4SAT问题是NP完全问题。首先4SAT问题显然是NP问题,因为验证一个解是否正确的时间复杂度和SAT问题相同。现在我们要把SAT问题归约到精确4SAT问题。
可以参考SAT问题归约到3SAT问题的思路。对于SAT问题的一个子句A=(a1 or a2 or ...... or an),假设a1到an是不同的变量(若有相同的变量只保留一个即可)。当n>=4时,将这个子句化为B=(a1 or a2 or a3 or 'y1)&(y1 or a4 or a5 or 'y2)&(y2 or a6 or a7 or 'y3)......。转化后的这组子句的最后一个子句可能有两个变量an-1和an(n为奇数的时候),也可能只有一个变量为an(n为偶数的时候)。对于后者,只要再加一个y变量就行了,B为一个精确4SAT问题的子句组。这样,如果B为真,那么a1到an中一定有一个变量为真,此时A也为真。当n<4时,在子句中增加若干哑变量即可。综上,精确4SAT问题的每一组解都使得对应的SAT问题有解,从而有归约SAT->精确4SAT。证明了4SAT问题是NP完全问题。
现在要证明精确4SAT问题是NP完全问题。首先4SAT问题显然是NP问题,因为验证一个解是否正确的时间复杂度和SAT问题相同。现在我们要把SAT问题归约到精确4SAT问题。
可以参考SAT问题归约到3SAT问题的思路。对于SAT问题的一个子句A=(a1 or a2 or ...... or an),假设a1到an是不同的变量(若有相同的变量只保留一个即可)。当n>=4时,将这个子句化为B=(a1 or a2 or a3 or 'y1)&(y1 or a4 or a5 or 'y2)&(y2 or a6 or a7 or 'y3)......。转化后的这组子句的最后一个子句可能有两个变量an-1和an(n为奇数的时候),也可能只有一个变量为an(n为偶数的时候)。对于后者,只要再加一个y变量就行了,B为一个精确4SAT问题的子句组。这样,如果B为真,那么a1到an中一定有一个变量为真,此时A也为真。当n<4时,在子句中增加若干哑变量即可。综上,精确4SAT问题的每一组解都使得对应的SAT问题有解,从而有归约SAT->精确4SAT。证明了4SAT问题是NP完全问题。
相关文章推荐
- 8.8 证明精确4SAT是NP完全问题
- 证明精确的4SAT是NP-完全问题
- 证明精确4SAT问题是NPC问题
- 算法概论习题8.8——证明精确的4SAT是NP-完全问题
- 证明EXACT 4SAT问题是NP完全问题-[算法概论8.8]
- 8.8 精确4SAT问题证明
- NP问题——证明EXACT 4SAT问题是NP完全问题(算法概论习题8.8)
- EXACT 4SAT问题是NP完全问题的证明
- 证明精确的4SAT是NP_完全问题
- 【算法习题】证明吝啬SAT问题为NP完全问题
- 证明最大公共子图问题是NP完全问题
- 证明k-生成树问题是NP完全问题
- 8.8 精确4SAT问题
- Exact 4SAT问题是NP完全的证明
- 《算法设计》第8.8题 证明4SAT是NP-C问题
- 吝啬SAT问题是NP完全问题的证明
- 证明支配集问题是NP完全问题
- 课本8.3证明 吝啬SAT问题是NP完全问题
- 【算法期末作业】课本8.19 kite问题的NP完全问题证明
- 证明碰撞集(HITTING SET)问题是NP完全问题