跳转至

SAT问题

IJCAI_2012_Inprocessing

SAT问题是数学中的一个基础问题,而逻辑学、图论、计算机科学和运筹学等领域中的众多问题都可以转化为SAT问题。为了提高SAT求解器的性能,现代求解器往往会使用多种推理规则对子句进行化简。这些操作在求解过程前被称为预处理,在求解过程中被称为内处理。本文的作者认为混合使用多种化简技术可能存在求解过程不完整的问题,缺乏相关的理论支持。于是作者通过分析现有的技术,提取出其中的关键步骤,绘制出化简技术之间的关系图,随后提出了一个内处理规则框架,并且证明只要遵循该框架就可以保证求解过程的完整性。作者还将被广泛认可的求解技术套用到框架中以证明框架的合理性。我认为这个内处理框架能够为未来SAT求解器的设计提供指导性的帮助。

原论文 幻灯片

TACAS_2021_GPU Inprocessing

SAT问题是数学中的一个基础问题,而逻辑学、图论、计算机科学和运筹学等领域中的众多问题都可以转化为SAT问题。提高SAT求解器的性能,也就相当于提高了一大类问题的求解效率。在本论文中,作者希望通过GPU实现一个性能更高的SAT求解器,但GPU有限的存储空间成为了实现过程中的第一个阻碍。所以作者提出了一种并行回收垃圾存储空间的算法,相较于线性的垃圾回收算法具有极大的性能提升。作者还设计了一种在内处理过程中消除变量依赖的任务分配算法,使得内处理过程具有了一定的并行性。结合三阶段变量消去优化,并行内处理部分有平均1.8倍的性能提升。但是,可能由于该论文没有对CDCL SAT求解器的关键部分——冲突分析过程进行优化,导致GPU求解器对比CPU版本的整体提升并不大。

原论文 幻灯片

HVC_2015_VSIDS

现代SAT求解器中普遍使用VSIDS方法及其变种作为启发式搜索的方法之一,该论文对这个方法的合理性给出了解释,对SAT问题的启发式搜索策略的选择具有指导性的意义。VSIDS方法是优先选择在最近推断过的子句中,出现次数多的变量,在后续的变量枚举时优先枚举。由于子句代表了变量之间的相关性,作者使用图论中的社区结构和桥接变量进行解释。VSIDS高效的原因主要包括:挑选高中心性的桥接变量、倾向于从较小的社区中选择变量和倾向于从最近的社区中选择变量。作者对VSIDS的有效性分析较为完备,对该论文进一步思考,社区结构性强的SAT问题具有良好的可分性,可以通过这种可分性提高SAT问题的并行性。

原论文 幻灯片