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

博文

子句消去法求k-SAT满足解的基本思路和练习

已有 2894 次阅读 2016-10-18 05:27 |个人分类:k-SAT求解|系统分类:科研笔记| k-SAT求解练习

姜咏江

子句消去法能够一次性求出k-SAT的满足解,基本思路十分简单。如果按照穷举法的思路,每一个逻辑变量都有01两个可能解值,因而n个变量组合到一起所成的k-SAT就要有2n个可能解,这样就会在最坏的情况下,要验证2n次才能够得到有解与无解的结果。

子句消去法的思路:假如k-SAT有解,那么每个变量的取值01,就都有可能使k-SAT有解或无解。能不能先确定哪些只能取唯一值变量?如果先将唯一值变量的相关子句都消去,那么剩下的子句就可以都是2个可选解了,即任选其中一个变量的01,再考察剩余的部分,进而可以得到剩余的SAT有满足解。

子句消去法的可选解是经过“唯一解”消去的判断方法确定的。这要用到我找到的子句块特有的结构规律,即用限位数理论确定的“k阶子句块中一个变量有2k-1个相同表现值,不选这个值k-SAT就无解”。

判断变量有唯一解或有解也是通过子句消去法降阶操作完成的。方法是设定一个变量的01值,运用子句消去法逐步检查消去后得到的剩余子句块是唯一解、无解还是多解。如果是唯一解,就继续运用子句消去法,直至无解或多解。这样就可以认定设定的01是否是可选解。再去考察设定这个变量的另一个值。如果01都是其可选解就标记。然后去考查另外的变量。如果某个变量有唯一可选解,那么就可以实际运用子句消去法将k-SAT进行化简,对剩余的k-SAT继续这种方法,直到剩余的变量都有2个可选解。

当剩余的k-SAT每个变量都有2个可选解的时候,任选一个变量的一个值并施行唯一解消去法,就可以得到其关联段的一组解。不相关的另外的变量也施行此法,最终就可以得到所有变量使k-SAT成立的确定值。

    总结一句话:先选变量唯一解,变量全多可选解时,任意选一个值,仍然通过唯一解消去法确定其他变量值

为了让有兴趣的网友能够真正理解子句消去法,并能够实际应用,附上论文和实际练习的简单例子。


2016子句消去法求k-SAT满足解.pdf

子句消去法求SAT满足解(例题).pdf

全例题.xls


2016-10-18




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

上一篇:子句消去法求k-SAT满足解(正式发表),附件是正式版
下一篇:求出SAT全部解的验证小程序
收藏 IP: 120.52.92.*| 热度|

0

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

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

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

GMT+8, 2024-12-22 09:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部