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

博文

SAT问题去重复子句的时间复杂度是怎样算出来的?

已有 2641 次阅读 2016-11-9 09:36 |个人分类:SAT问题|系统分类:论文交流| SAT问题, 多项式时间复杂度

 

姜咏江

SAT的定义中是不允许出现重复子句的,但在子句消去的过程中,会出现降阶的子句块中有重复的子句。t阶子句块变量唯一解是因为它有2t-1个相同的表现值(1tk)。在消去子句的过程中很难事前知道那些子句会重复,这样证明消去重复子句这一步算法时间复杂度为多项式时间就很困难。不过我们可以从总体上来探讨。

假如SAT子句的最高阶是k,那么子句块的总数不会超过Cnk+Cnk-1+...+ Cn1个。如此有m个变量表现值相同的子句块(1mk-1)最多有Cn-mk-m+Cn-mk-m-1+...+ Cn-m1+1个,那么有m个变量表现值相同的子句块的子句总数不会超过C=2k-m+2k-m-1+ ...+1 个。C是一个有限常数。因此,任何一个剩余的子句块的子句数数,都不会超过这个数。在小于常数C个数中,消去重复数的算法时间复杂度无疑是O(1)。而剩余子句块最多还是Cnk+Cnk-1+...+ Cn1个,所以SAT总体去掉子句块中重复子句的算法时间复杂度是O(nk)

2016-11-9

 



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

上一篇:子句消去法求SAT问题满足解口诀
下一篇:SAT问题满足解详解求解例题
收藏 IP: 120.52.92.*| 热度|

0

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

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

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

GMT+8, 2024-12-22 11:12

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部