Skip to content

冲突驱动子句学习

Conflict-driven clause learning · CDCL · Clause-learning SAT solving

从传播冲突中推导原公式蕴涵的新子句,并据此非时序回跳和继续搜索的 SAT 算法。

条目类型
算法

形式陈述

CDCL 延续DPLL 的 trail 与单位传播,却在冲突后不只翻转最近决策。Trail 中每个文字带决策层;传播文字还带 reason clause。若子句 C 的所有文字都被当前 trail 证伪,冲突分析从 C 出发,按 trail 逆序用传播文字的 reason 逐步归结,得到学习子句 L。每一步都是命题归结,所以

FL.

学习 L 不会删除 F 的任何模型。若 L 只含一个来自当前冲突层的文字,令 b 为其余文字中最高的决策层;撤销所有高于 b 的赋值后,L 成为单位子句并立即传播。这个 b 是 assertion level,回到它称为非时序回跳。根层冲突则表示输入与所有学习子句共同不可满足;由于学习子句均由输入蕴涵,这也就是输入 UNSAT。

一套完整状态机还需规定决策、传播、冲突分析、子句删除与 restart 的调度。可靠性只要求每个传播理由和学习子句有效;终止或完备性还要求搜索取得进展。例如,若保留新学习子句且不重复无限学习同一信息,有限变量上可用有限子句空间证明终止。实际允许删除和重启时,则需无界搜索预算、公平分支或等价的进展条件;“任何 restart 都保持完备”并不成立。

直觉

DPLL 只记得“这条路失败”,CDCL 试图回答“哪些较早选择共同造成失败”。冲突子句是终点,reason clauses 是可追溯的因果边;把当前层的中间后果逐个消去后,剩下的学习子句直接描述一组不能再次同时成立的边界条件。回跳由这条子句的层级结构决定,而不是固定退回一层。

学习的价值在复用。一个冲突可能发生在很深的位置,但导出的子句可在另一条搜索路径上提前传播。它把原本树形重复的局部证明保存成 DAG 中可共享的引理。子句越短不必越好:推导成本、传播频率、活动决策层数和数据库占用共同影响效益,而逻辑有效性只是不可让步的底线。

例子与边界

考虑子句

C1=(¬pq),C2=(rs),C3=(¬ab),C4=(¬ac),C5=(¬b¬cd),C6=(¬q¬de),C7=(¬q¬df),C8=(¬e¬f).

决策 p=1@1 传播 q=1@1;决策 r=1@2 只满足 C2;决策 a=1@3 依次传播 b,c,d,e,f,最后 C8 冲突。对应的CDCL 蕴含图显示 d 是离冲突最近的当前层必经点。采用First-UIP 学习,先以 e 归结 C8,C6

(¬q¬d¬f),

再与 C7f 归结,得到

L=(¬q¬d).

Ld 在层 3,q 在层 1,所以回跳到层 1,越过无关的层 2;此时 q=1L 立即传播 d=0。每一步都能用两个父子句复算,学习结果不是从图形直觉猜出的剪枝条件。

边界之一是预处理和理论推理。若 reason 来自变量消去、异或模块或 SMT theory lemma,最终证书必须包含相应可检查依据;“求解器内部说它有效”不能替代蕴涵证明。子句删除不会损害可靠性,因为删除已学引理只减弱数据库,但可能破坏某个依赖保留全部学习信息的终止论证。

推论与应用

高性能实现常用双监视文字维护传播队列,用VSIDS选择下一决策变量,并按SAT 重启策略周期性清空非根 trail。这三者分别改变索引、搜索顺序和搜索阶段,不参与学习子句可靠性的证明;换掉其中任何一个,CDCL 的逻辑内核仍可成立。

CDCL 是增量验证的重要后端。assumption literals 允许多次查询共享一份子句数据库,同时把某次查询的临时前提限制在可撤销层;unsat core 可从依赖这些 assumptions 的冲突证明中提取。共享必须遵守作用域:含已撤销局部定义的子句若未正确提升,可能污染下一次查询。证明日志与独立 checker 把“学习均有效”的巨大信任面压缩成逐步验证。

参考资料
  • João P. Marques-Silva and Karem A. Sakallah, “GRASP: A Search Algorithm for Propositional Satisfiability,” IEEE Transactions on Computers 48(5), 1999, pp. 506–521。
  • Jasmin Christian Blanchette, Mathias Fleury, Peter Lammich, and Christoph Weidenbach, “A Verified SAT Solver Framework with Learn, Forget, Restart, and Incrementality,” Journal of Automated Reasoning 61, 2018, pp. 333–365。
  • Armin Biere, Marijn Heule, Hans van Maaren, and Toby Walsh, eds., Handbook of Satisfiability, 2nd ed., IOS Press, 2021, Chapters 4–5。
关系图谱10 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系