论文部分内容阅读
近十多年来随着许多有效的启发式算法的提出以及一系列数据结构和实现方法上的创新使得可满足性问题(SAT)的求解水平取得了突飞猛进的提高。尽管目前可满足性问题还属于NP问题,目前还没有任何一种算法能实现在最差情况下的多项式时间复杂度,但当前的SAT问题求解器以能够轻松解决含有几万个甚至几十万个变量的可满足性问题。由于可满足性问题求解水平的巨大进步,SAT的应用范围已越来越大,从形式验证到人工智能等许多领域均以SAT求解器作为其核心计算引擎。可满足性问题的研究已经从一个计算机理论学界的纯学术问题逐渐发展成为当前许多计算机领域中具有很大应用价值的计算问题。
本论文的贡献在于总结和分析了那些推动SAT问题发展的最主要的启发式算法和技术,并在此基础上提出了两点创新。其一,提出了一种新的正向推理技术:对称扩展的一元子句推导。与传统的一元子句推导技术相比,本文的方法通过在一元子句推导过程中添加对称的蕴涵关系从而能够推导出更多的一元子句。基于这项技术本文实现了一个可满足性问题预处理器Snowball。实验结果验证了这项新的正向推理技术的有效性,并表明该预处理器Snowball能够有效地化简SAT问题的规模并减少解决SAT问题的时间,特别是对不满足问题有不少例子可直接得到结果。其二,本文首次提出了一种采用双变量决策策略的可满足性问题DPLL算法以及其完整的实现方式描述。采用双变量决策策略能在理论上减少决策级数,进而能有效地减少SAT问题的搜索空间,加速SAT问题的求解。该双变量决策SAT算法的实现是以Minisat解决器为蓝本的。在其较完善的DPLL算法框架内本文对其中的各个主要的功能模块均进行了改造,使得改造后的SAT解决器首次具有了双变量决策功能,并与其中主要的软件模块:变量决策模块,蕴含推理模块,冲突分析和回溯模块相互配合,协调一致。实验结果验证了算法的正确性。