Page 195 - 《软件学报》2026年第4期
P. 195

1636                                                       软件学报  2026  年第  37  卷第  4  期


                    本文在   3  个代表性的   CDCL  求解器上实现了本文的冷重启技术. 3            个求解器分别为      CaDiCaL-watch-sat  [27] 、
                 MapleLCMDistChronoBT-DL [28] 和  kissat-MAB [29] . 实验结果表明, 结合冷重启和热重启可以帮助改进     CDCL  求解
                 器, 甚至有时可以获得显著的提高. FO          和  FP  策略可以帮助同时改进      CDCL  求解器的可满足性求解能力和不可满
                 足性求解能力, 可使基础求解器分别整体多求解出                6.5  和  5.3  个实例. FC  策略主要可以改进  CDCL  求解器的可满
                 足性求解能力, 但会使不可满足性求解能力显著下降. 考虑了多种冷重启的复合策略在可满足实例上, 可平均多求
                 解  7.3  个实例, 且最优策略几乎均为      FO+FC. 通过对于遗忘子句      LBD  加以约束, 只遗忘    LBD  大于给定阈值的学习
                 子句, 我们发现, 当求解目标为提高可满足性实例的求解能力时, 我们应该将该阈值设置得尽可能小. 通过对                                3  种
                 技术的组合测试, 本文发现        FO  有最优的综合提高能力.
                    进一步, 本文在具有最优性能的串行冷重启技术                FO  上, 实现了其并行版本, 并集成于两个代表性的并行求解
                 器  (P-mcomsps  [30] 和  PaKis [31] ) 中, 实验表明并行  FO  技术可以帮助提高并行  CDCL  求解器的性能. 并行  FO  可以更
                 好地利用   CDCL  在不同搜索顺序下的运行时间差异. 为了更深入探索并行冷重启技术的提升潜力, 本文基于                            kissat-
                 MAB  求解器和并行     FO  技术, 形成的并行求解器即可拥有令人吃惊的可满足性求解能力和加速比, 如                       PaKis 求解
                 器可满足性实例的       PAR2  打分平均改进了     41.81%. 此外, 基于串行  FC  冷重启相关的分析, 本文设计了一种简单的
                 子句共享机制, 只在线程间共享          LBD≤2  的学习子句, 从而形成了一个可以在可满足性求解能力上超过主流求解
                 器的算法. 本文提出的并行冷重启方法, 相比于主流的多样性并行方法, 有更好的拓展性. 在                           64  线程的环境以内,
                 该方法的加速比效率持续提升.
                    本文围绕    CDCL  算法的冷重启技术提出了如下          3  个研究问题   (RQ).
                    RQ1: 对主流的热重启 CDCL 求解器的启发式进行扰动, 其运行时间是否存在剧烈的扰动?
                    RQ2: 重启之后的搜索信息是否应该被保留?
                    RQ3: 是否可以借助冷重启的互补优势, 设计一套高效的并行求解器?
                    本文第   1  节介绍相关基础知识. 第      2  节对现存基于热重启的       CDCL  算法的重尾现象进行实证研究. 第          3  节基
                 于上述实验结论, 提出      3  种不同类型的冷重启技术, 并研究多种冷重启技术的混合冷重启技术以及特性. 第                        4  节进
                 一步提出并行冷重启技术并研究相关的信息交互机制. 最后总结全文.
                  1   基础知识


                    本节给出了可满足性问题的基础知识.
                  1.1   可满足性问题与  CDCL  框架
                    给定一组由布尔变元组成的集合            V = {V 1 ,V 2 ,...,V n }, 其中每一个变元只能被赋值为真  ( ⊤) 或者假  ( ⊥). 变元  v
                 的正文字由变元本身表示         v, 负文字则由其否定表示        ¬v. 子句  (clause) 为文字的析取组成. 合取范式      (conjunctive
                 norm form, CNF) 由子句的合取组成. 可满足性问题 (SAT) 为判断给定的命题逻辑公式可满足性的判定问题. SAT
                 求解器是求解     SAT  问题的工具, 一般输入为      CNF  公式.
                    目前主流的     SAT  求解器均基于    CDCL  框架  [2] . CDCL  会迭代地执行布尔约束传播     (BCP) 推理, 并根据推理过
                 程中的冲突归结出新的学习子句用于剪枝和回退. 若冲突出现在原始子句则返回不可满足. 若                              BCP  无法推出矛盾
                 则会进入分支组件, 选择一个未赋值变元并赋值, 然后再重复                   BCP. 若推理无矛盾且所有变元均已赋值则返回可
                 满足. CDCL  是一个回溯算法, 学习子句可以用于剪枝搜索空间, 变元选择顺序和赋值倾向则影响算法的分支搜索
                 顺序. 三者对于    CDCL  算法的性能影响巨大       [1] .
                  1.2   可满足性问题求解技术
                    ● 变元排序启发式. CDCL      的变元分支启发式会根据搜索历史信息, 优先选择近期最有可能产生冲突的未赋
                 值变元  [32] . SAT  求解器为每一个变元维护一个分数, 并采用堆或者优先队列进行排序                  [26] . 变元的打分依据主要为
                 变元参与到冲突的频率和时间. 例如经典的              VSIDS  启发式  [15,33] 会优先选择经常参与最近高质量学习子句中的变
                 元, LRB  启发式  [14] 会优先选择赋值期间参与冲突分析比率           (学习率) 比较高的变元, VMTF      启发式   [34] 会贪心地选
                 择参与最近一次冲突的变元.
   190   191   192   193   194   195   196   197   198   199   200