Skip to content

CDCL 蕴含图

CDCL implication graph · Conflict implication graph

把一次 CDCL trail 中的决策、传播原因和冲突表示成按时间有向的无环依赖图。

条目类型
定义

形式陈述 ​

对一份CNF 和当前 trail M,CDCL 蕴含图的普通顶点是 M 中已经取真的文字,每个顶点标注其决策层。决策文字没有入边;若传播文字 ℓ 的 reason clause 为

C=(ℓ∨l1∨⋯∨lk),

则 M 中分别使 l1,…,lk 为假的文字 ¬l1,…,¬lk 指向 ℓ。若 conflict clause D=(d1∨⋯∨dt) 被全部证伪,就加入冲突节点 κ,并从 ¬d1,…,¬dt 向 κ 连边。

Reason 的其他文字在传播发生前已经为假,故所有普通边都从 trail 中较早位置指向较晚位置,冲突边最后到达 κ;图因此是 DAG。它依赖具体 trail、传播顺序和 reason 选择,同一 CNF 在另一轮搜索中可得到不同图。

给定一个把所有决策顶点置于 reason side、把 κ 置于 conflict side 的 cut,取 reason side 中所有向 conflict side 发边的前沿顶点 u1,…,uj。Conflict side 的普通顶点必须都有有效 reason,才能反向消去;只有把当前层决策放在外面还不够,因为较早层的无理由决策同样不能被凭空消去。Cut clause 是

¬u1∨⋯∨¬uj.

从冲突子句出发,按 trail 的逆序消去 conflict side 中实际出现在当前子句里的传播文字,所得归结子句只含前沿文字的否定。它可能只是上述完整 cut clause 的子句:与冲突无关的支路不会自动进入归结过程。若要输出整个前沿子句,可再用一次弱化,加入缺少的文字;由 C 推出 C∨D 是可靠的。因此 cut clause 仍由输入蕴涵,但不能把“蕴涵”一概说成“纯归结恰好生成全部前沿”。

直觉

Trail 告诉我们“先后发生了什么”,蕴含图进一步说明“后一个赋值为什么不得不发生”。一个传播节点可能有多个父节点,因为只有若干前提同时为真时,reason clause 才只剩它一个出口。冲突节点则把一条被完全关闭的子句变成共同终点。

Cut 像在因果网络上截取边界。边界内的传播细节可以通过归结消去,边界外只保留足以再次触发同类冲突的条件。选择不同 cut 会得到不同学习子句;因此图不自动指定“最好”的学习结果,它只使候选结果与原始原因之间的证明路径可见。

CDCL 蕴含图与 cut
例子与边界

沿一次 CDCL 轨迹,设 p=1@1 由 (¬p∨q) 传播 q=1@1;r=1@2 是与冲突无关的决策;a=1@3 分别由 (¬a∨b)、(¬a∨c) 传播 b,c,再由 (¬b∨¬c∨d) 传播 d。子句

(¬q∨¬d∨e),(¬q∨¬d∨f)

传播 e,f,而 (¬e∨¬f) 产生冲突。边集为

p→q,a→b, a→c,b,c→d,q,d→e, q,d→f,e,f→κ.

r 在图中是没有通往冲突的孤立决策。把 q,d 及其所有前驱留在 reason side、把 e,f,κ 放到 conflict side,cut frontier 为 {q,d}。先将冲突子句 ¬e∨¬f 与 e 的 reason 归结,得到 ¬q∨¬d∨¬f;再用 f 的 reason 消去 f,得到 ¬q∨¬d。两次归结明确展示了学习子句的来源。

该子句中 q 在层 1、d 在层 3。回跳到层 1 后,q 仍真而 d 已撤销,学习子句立即传播 ¬d;层 2 的 r 与层 3 的其他赋值一起撤销。若误把学习子句写成 q∨d,它在原冲突赋值下反而已经满足,既不能排除冲突,也没有上述归结证明。

若另外由 (¬r∨z) 传播 z,并把 z 放到 conflict side,完整前沿就增加了 r,但 z 没有通往冲突的路径。前面的两次归结仍只得到 ¬q∨¬d;要写成 ¬q∨¬d∨¬r,须补弱化。这条更长子句是可靠的,却保留了无关条件,通常不如原子句有用。

“蕴含图”一名也用于 2-SAT 中由每个二元子句静态建立的图;那张图的顶点是正负文字、边表达材料蕴含,并用于强连通分量判定。这里的图只描述一次动态 trail,含决策层、reason 和冲突节点,二者不能共享未限定的结论。理论传播还可能引入来自理论解释的超边式原因,必须先将解释写成有效子句再接入此图。

推论与应用

CDCL用蕴含图定位非时序依赖:若冲突只依赖层 1 与层 3 的前沿,层 2 决策就不应阻止算法直接回到层 1。图也支持可视化诊断,显示哪些原子句和传播链真正参与了失败,而不是把整条 trail 都误报为核心。

唯一蕴含点是 cut 的一种结构化选择。First-UIP 让学习子句恰含一个当前层文字,从而在回跳后立即传播;其他 cut 仍可可靠,却可能不具 asserting 性。归结证书可记录父子句与 pivot,而无须保存整张图;如果最终子句还用了弱化,证书和检查器也必须支持并记录这一步。

参考资料
  • 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。
  • Lintao Zhang, Conor F. Madigan, Matthew W. Moskewicz, and Sharad Malik, “Efficient Conflict Driven Learning in a Boolean Satisfiability Solver,” ICCAD, 2001, pp. 279–285。
  • Paul Beame, Henry Kautz, and Ashish Sabharwal, “Towards Understanding and Harnessing the Potential of Clause Learning,” Journal of Artificial Intelligence Research 22, 2004, pp. 319–351。
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

被这些条目使用