CMP设计分享 http://blog.sciencenet.cn/u/accsys 没有逆向思维就没有科技原创。 不自信是科技创新的大敌。

博文

n-CNF-SAT消去法求解

已有 3554 次阅读 2015-6-29 08:54 |个人分类:科研讨论|系统分类:科研笔记| n-CNF-SAT, 消去法求解

 k-CNF-SAT消去法求解

姜咏江

   用真值表的操作完全可以解决求解n-CNF-SAT问题。由于合取范式的变量具有交换律,故而在真值表中将变量按序确定取值并不失一般性。欲求合取范式f(x1,..., xn)=1的解,则每个子句值必须为1。这样可用设定值方式,不断消去为1的子句,最后求得函数f(x1,..., xn)=1的一些解。

   我们通过例子来说明逐步消去法求解的方法。

例子:设f(x1,..., x6)= (x1+x1'+x2')(x2+x3+x4)(x1'+x3'+x4')(x1'+x2+x5')(x2+x3+x6)(x1+x5+x6'),求满足f(x1,..., x6)=1的解。

该例子有多种解法。 可先消去恒为1子句,然后按以下方法求解。

1

1)令x11,消去为值为1的子句,剩(x2+x3+x4)(x1'+x3'+x4')(x1'+x2+x5')(x2+x3+x6)

2)令x21,消去为值为1的子句,剩(x1'+x3'+x4')

3)令x3=0x4=0,则无有剩余子句,于是得解(110***)或(11*0**

注:*表示为0或1。

2

1)令x10(x2+x3+x4) (x2+x3+x6)(x1+x5+x6')

2)令x21(x1+x5+x6')

3)令x51x6=0,其余任意。得解(01**1*)或(01***0)。

显然,从x1xn每个变量都可以这样取01来求值。

逐步消去法到无子句时结束。

2.              讨论

(1)    由于每一逻辑变量可以取值01,故  f(x1,..., xn)的n个变量的值向量最多可有2n个。

(2)       f(x1,..., xn)=1的求解过程,只要前确定值使某子句值为0,则断定前面值向量组成的n元向量不是解。

(3)       f(x1,..., xn)值为1和为0是否各有一半?

(4)   解结果对错可以验证。

(5)  k-CNF-SAT子句最多有C2nk个。

 

(君子所为:个人研究心得,引用请注明出处)

2015-06-29

 



https://blog.sciencenet.cn/blog-340399-901277.html

上一篇:找到了3-CNF-SAT的求解方法
下一篇:谁说P≠NP?中国人的智力要让世界震惊!
收藏 IP: 114.111.166.*| 热度|

1 icgwang

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-7-19 12:54

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部