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

博文

子句消去法求任意SAT的满足解

已有 2303 次阅读 2016-1-10 16:41 |个人分类:SAT问题|系统分类:科研笔记| 子句消去法, SAT求解

子句消去法求任意SAT的满足解

姜咏江

SAT问题中可以有1k个逻辑变量形成子句。如何用子句消去法求这样一般SAT的满足解?说起来方法十分简单,那就是先确定低阶子句的解,后确定高阶子句的解。

1.              举例说明

举例k=5CNF如下:

CNF=x1(x’1+x2)(x’1+x’2+x5)(x’1+x’2+x’3+x4+x’5)(x’1+x’2+x’3+x’4+x’5)(x1+x’2+x’3+x’4+x’5) (x’1+x2+x’3+x’4+x’5) (x1+x2+x3+x4+x5),求CNF=1的解。

操作顺序如表1至表4(绿色表示选择变量值后,欲消去的那些子句),最后求出SAT的满足解为:X1X2X3X4X5=110*1,其中“*”表示可以取值01

 

1  先选一阶子句

1

1

 

 

 

X1

X2

X3

X4

X5

1

 

 

 

 

0

1

 

 

 

0

0

 

 

1

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

1

1

1

1

1

 

2  后选2阶子句

1

1

 

 

 

X1

X2

X3

X4

X5

0

1

 

 

 

0

0

 

 

1

0

0

0

1

0

0

0

0

0

0

0

1

0

0

0

 

3  再选3阶子句

1

1

 

 

1

X1

X2

X3

X4

X5

0

0

 

 

1

0

0

0

1

0

0

0

0

0

0

 

4  最后选k阶子句

1

1

0

 

1

X1

X2

X3

X4

X5

0

0

0

1

0

0

0

0

0

0

2.              总结

(1)       将变量正反都在同一个子句的子句全部消去,因为这样不改变SAT的满足解。

(2)       将低阶子句放到前面,高阶子句放到后面,按照先求低阶子句块和关联段的满足解,再求剩余高阶子句块和关联段满足解。

(3)       不论高低阶子句,求解中具有相同变量的变量值子句一律消去,最终nn>=k)个变量值设定完成,无剩余子句,则所设值为SAT的解。

3.              子句消去法参考

http://blog.sciencenet.cn/blog-340399-947707.html

 

2016-1-10




https://wap.sciencenet.cn/blog-340399-949434.html

上一篇:昔日繁华隆福寺今日如同垃圾场
下一篇:这个60个结点的哈密顿图求回路要多少时间?
收藏 IP: 221.194.176.*| 热度|

0

该博文允许实名用户评论 评论 (0 个评论)

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

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

GMT+8, 2024-5-20 00:23

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部