合取范式可满足性完备算法探讨与实现.docVIP

合取范式可满足性完备算法探讨与实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合取范式可满足性完备算法探讨与实现

合取范式的可满足性完备算法研究与实现   摘要:把可满足性算法应用到合取范式中并加以分析,借助改进的数据结构实现该算法。在四色图着色中应用该算法找出一组图着色方案,并与DPLL算法进行了性能比较 关键词:合取范式;可满足性;布尔约束推导;冲突分析 DOIDOI:10.11907/rjdk.161162 中图分类号:TP312 文献标识码:A文章编号2016)010003203 0引言 合取范式的可满足性问题(SAT)是理论计算机科学和人工智能中的著名问题。寻求其有效算法一直都是计算机理论及实际应用的重要任务。SAT算法又分为完备算法和不完备算法两大类。1960年,Davis和Putnam[1]提出的DPLL算法是最早提出的完备算法,它有变量决策、赋值过程、回溯过程等几个主要机制。此后提出的SAT算法大都基于DPLL算法[23],从变量决策和回溯机制来提高算法的性能[4]。此外,为了减少回溯次数,提出了一种冲突分析机制[5],可满足性完备算法即由这几个部分组成[6] 目前SAT以完备算法为主,算法有两种:一是1960年由Davis和Putnam提出的DPLL算法以及改进版;另一个是Bart Selman提出的贪婪搜索算法。以上算法都只停留在算法思想上,难于实际应用。SAT算法的改进对计算机科学的发展有着重要作用 本文研究了基于DPLL的SAT算法,采用改进的数据结构实现了DPLL算法的几个主要机制。运用这几个机制实现了基于CNF的可满足性问题完备算法,并将该算法应用到地图着色问题中,与原DPLL算法相比,效率有所提高 1基于CNF的SAT算法 1.1算法总体框架 基于CNF的SAT算法主要有读取文件、变量决策、回溯过程、冲突分析等几个过程,算法框架如图1所示。SAT算法的实现包含5个关键机制,分别为分支决策算法decide()、冲突分析算法diagnose()、布尔约束推导deduce()、回溯机制backtrace()和判定计算compute(),它们共同影响着整个算法效率。其中,判定计算是算法的核心 SAT算法中的决策变量选择直接影响着BCP过程,进而影响算法的效率。常用的SAT算法在决策变量的选择上有多种方法,如动态排序、最短子句出现频率最大JW策略和动态筛选策略等 本算法使用动态筛选策略。动态筛选策略的核心思想是:对每个变量打分,以分数最高的变量作分支决策变量。打分规则为:在CNFa中对变量p打分。在CNFa中对p赋值为真,得到CNFh;对CNFh使用单子句规则降维,直至不能再降为止,最后结果记为CNFd。在CNFa中对p赋值为假,得到CNFc;对CNFc使用单子句规则降维,直至不能再降为止,最后结果记为CNFd。改进规则为:如果当前节点是根节点,那么对每个变元用上述的打分规则打分,直至打分完毕;否则对每个变元考虑是否照抄它在当前的结点父节点的得分。当变元在父节点对p打的分数小于一个绝对常数时,就照抄在父节点对p打的分数,否则在当前节点对它重打分 回溯函数backtrace的设计使用基于冲突学习的非同步回溯,是一种智能回溯机制 判定计算函数是整个算法的框架,它把各个算法机制联系起来,控制着整个算法的调度。通过冲突分析和分支决策,把决策变量选取后,利用DPLL算法的单子句规则和分裂规则化简合取范式,对决策变量赋值,并存放在EV中。结果集合包含限制集合中的某一组集合,也就是发生冲突时需要调用回溯函数,回溯到第0层且集合为空,此时问题是不可满足的;或者限制集合中的每个元素都被计算过且没有发生冲突,此时问题是可满足的。流程如图2所示 1.2决策策略算法 决策策略算法与传统的SAT算法不同之处在于其使用的是动态筛选策略。动态筛选策略能快速筛选出绝大多数的高价值变量,并将这些变量限定在很小的范围内。无论规模大小,这种策略都能使算法性能提高 查找分支决策变量是SAT算法的关键问题之一,它由限制集合CT中的每一个元素与结果集合的补集所决定。这是一个循环过程,循环次数由当前限制集合中活跃子句的数目确定。不断循环这个过程,直到找到最小的补集,在该补集中选择一个决策变量。如果出现补集为空则需要回溯。分支决策实现流程如图3所示 1.3改进的BCP过程 BCP就是变量不断被赋值,子句中未赋值的变量数不断减少。由于BCP过程占用了整个算法执行过程的80%以上,所以BCP过程对于算法效率有着显著的影响 传统的BCP方法是:给一个变量赋值时,用穷举法搜索所有子句,找出由于该变量的赋值而变为单子句的子句,记录它索引指针并对其赋值。本算法使用改进的BCP过程,它是一种动态筛选过程,在CT中确定了决策变量p后,只需要将MN[p]放入EV中

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档