合取范式的可满足性完备算法研究与实现

合取范式的可满足性完备算法研究与实现

ID:31358814

大小:106.50 KB

页数:6页

时间:2019-01-09

合取范式的可满足性完备算法研究与实现_第1页
合取范式的可满足性完备算法研究与实现_第2页
合取范式的可满足性完备算法研究与实现_第3页
合取范式的可满足性完备算法研究与实现_第4页
合取范式的可满足性完备算法研究与实现_第5页
资源描述:

《合取范式的可满足性完备算法研究与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、合取范式的可满足性完备算法研究与实现  摘要:把可满足性算法应用到合取范式中并加以分析,借助改进的数据结构实现该算法。在四色图着色中应用该算法找出一组图着色方案,并与DPLL算法进行了性能比较。  关键词:合取范式;可满足性;布尔约束推导;冲突分析  DOIDOI:10.11907/rjdk.161162  中图分类号:TP312  文献标识码:A文章编号:16727800(2016)010003203  0引言  合取范式的可满足性问题(SAT)是理论计算机科学和人工智能中的著名问题。寻求其有效算

2、法一直都是计算机理论及实际应用的重要任务。SAT算法又分为完备算法和不完备算法两大类。1960年,Davis和Putnam[1]提出的DPLL算法是最早提出的完备算法,它有变量决策、赋值过程、回溯过程等几个主要机制。此后提出的SAT算法大都基于DPLL算法[23],从变量决策和回溯机制来提高算法的性能[4]。此外,为了减少回溯次数,提出了一种冲突分析机制[5],可满足性完备算法即由这几个部分组成[6]。  目前SAT以完备算法为主,算法有两种:一是1960年由Davis和Putnam提出的DPLL算

3、法以及改进版;另一个是Bart6Selman提出的贪婪搜索算法。以上算法都只停留在算法思想上,难于实际应用。SAT算法的改进对计算机科学的发展有着重要作用。  本文研究了基于DPLL的SAT算法,采用改进的数据结构实现了DPLL算法的几个主要机制。运用这几个机制实现了基于CNF的可满足性问题完备算法,并将该算法应用到地图着色问题中,与原DPLL算法相比,效率有所提高。  1基于CNF的SAT算法  1.1算法总体框架  基于CNF的SAT算法主要有读取文件、变量决策、回溯过程、冲突分析等几个过程,算

4、法框架如图1所示。SAT算法的实现包含5个关键机制,分别为分支决策算法decide()、冲突分析算法diagnose()、布尔约束推导deduce()、回溯机制backtrace()和判定计算compute(),它们共同影响着整个算法效率。其中,判定计算是算法的核心。  SAT算法中的决策变量选择直接影响着BCP过程,进而影响算法的效率。常用的SAT算法在决策变量的选择上有多种方法,如动态排序、最短子句出现频率最大JW策略和动态筛选策略等。6  本算法使用动态筛选策略。动态筛选策略的核心思想是:对每

5、个变量打分,以分数最高的变量作分支决策变量。打分规则为:在CNFa中对变量p打分。在CNFa中对p赋值为真,得到CNFh;对CNFh使用单子句规则降维,直至不能再降为止,最后结果记为CNFd。在CNFa中对p赋值为假,得到CNFc;对CNFc使用单子句规则降维,直至不能再降为止,最后结果记为CNFd。改进规则为:如果当前节点是根节点,那么对每个变元用上述的打分规则打分,直至打分完毕;否则对每个变元考虑是否照抄它在当前的结点父节点的得分。当变元在父节点对p打的分数小于一个绝对常数时,就照抄在父节点对p

6、打的分数,否则在当前节点对它重打分。  回溯函数backtrace的设计使用基于冲突学习的非同步回溯,是一种智能回溯机制。  判定计算函数是整个算法的框架,它把各个算法机制联系起来,控制着整个算法的调度。通过冲突分析和分支决策,把决策变量选取后,利用DPLL算法的单子句规则和分裂规则化简合取范式,对决策变量赋值,并存放在EV中。结果集合包含限制集合中的某一组集合,也就是发生冲突时需要调用回溯函数,回溯到第0层且集合为空,此时问题是不可满足的;或者限制集合中的每个元素都被计算过且没有发生冲突,此时问题

7、是可满足的。流程如图2所示。  1.2决策策略算法  决策策略算法与传统的SAT算法不同之处在于其使用的是动态筛选策略。动态筛选策略能快速筛选出绝大多数的高价值变量,并将这些变量限定在很小的范围内。无论规模大小,这种策略都能使算法性能提高。  查找分支决策变量是SAT算法的关键问题之一,它由限制集合CT中的每一个元素与结果集合的补集所决定。这是一个循环过程,循环次数由当前限制集合中活跃子句的数目确定。不断循环这个过程,直到找到最小的补集,在该补集中选择一个决策变量。如果出现补集为空则需要回溯。分支决

8、策实现流程如图3所示。  1.3改进的BCP过程6  BCP就是变量不断被赋值,子句中未赋值的变量数不断减少。由于BCP过程占用了整个算法执行过程的80%以上,所以BCP过程对于算法效率有着显著的影响。  传统的BCP方法是:给一个变量赋值时,用穷举法搜索所有子句,找出由于该变量的赋值而变为单子句的子句,记录它索引指针并对其赋值。本算法使用改进的BCP过程,它是一种动态筛选过程,在CT中确定了决策变量p后,只需要将MN[p]放入EV中即可,这样能快速选出待赋值变量。 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。