2009年,当本手册第一版出版时,SAT的进步大多只为专家所知,SAT仅在某些应用中被视为一项关键技术。自那以后,实际应用的数量激增,人们对SAT的普遍实用性也有了更大的认识:在上个世纪,SAT是一个很难解决的问题,而直接解决这个问题似乎是没有希望的。依靠在实际SAT求解中不断取得的改进,现在人们普遍认为,能够将问题编码到SAT中也很可能会得到实际的解决方案。这场“SAT革命”始于上世纪末,并继续产生令人惊叹的新的实践和理论成果。
因此,第二版包含了几项更新,包括对第4章冲突驱动小句学习进行了全面修订。一半的章节被更新或扩展,或者两者兼而有之。Donald Knuth在编写《计算机编程艺术》第4卷“可满足性”一节时收集的评论也被考虑在内。本节作为第6a分册出现,2015年超过300页,是自本手册第一版以来SAT文献中的一个重要里程碑。
本手册第一版中已有三个重要主题,值得单独讨论,现在有足够的篇幅进行详细讨论:新的第7章是关于证明复杂性的,第9章是关于预处理的,以及新的第12章是关于自动配置和解算器选择的。此外,新的第15章涵盖了不可满足性的证明,这是实际SAT求解中最新的主要发展之一。这些证明对于解决长期存在的数学问题至关重要。
除了这四个全新的章节外,还有三个新章节,涵盖了第一版中已经讨论过的主题。这三章侧重于新的方面和新的技术,由对改变当前技术水平做出根本贡献的作者撰写。首先,新的第31章涵盖了有关量化布尔公式的最新发展,包括对证明系统的讨论。第二,新的第24章的重点是基于核心的最大可满足性方法,这些方法大大提高了可伸缩性。最后,最后新的第26章涵盖了具有强大统计保证的实用和近似模型计数的新研究方向。
SAT研究已成为一项充满活力的跨社区工作。除了主要的SAT会议之外,从自动推理、验证、硬件到软件工程、复杂性理论,甚至算法,当然还有人工智能等不同领域的其他主要会议和期刊也涵盖了SAT及其扩展领域。值得一提的是,比赛仍然是一个展示案例,也是该领域的动力。
有人可能会说,SAT现在在这些领域非常普遍。作为一个例子,也许是最引人注目的,是在其他推理学科中采用SAT,当然首先是SMT求解,在约束编程中使用惰性子句生成,以及在一阶定理证明中使用基于SAT的分裂,最后,在直接或间接依赖SAT的高阶逻辑的交互式定理证明中使用锤子。
正如第一版所做的那样,我们希望第二版手册也能为使用SAT或为SAT做出贡献的研究人员和实践者提供服务,并为他们自己的工作提供灵感和丰富的资源。
阿明·比尔
Marijn鞋跟
汉斯·范·马伦
托比·沃尔什