Skip to content

DAG 形归结

DAG-like resolution · General resolution

允许已导出子句被多个后续步骤共享的一般归结证明表示。

条目类型
模型

形式陈述

DAG 形归结把一份归结反驳表示成有限有向无环图:源节点标记输入 CNF 的初始子句;每个非源节点有两个入边,标记为其父子句在某个 pivot 上的 resolvent;唯一需要到达的汇节点标记空子句。一个节点可以有任意多个出边,表示该子句作为已证引理被后续多次引用。按拓扑序列出节点,就得到通常教科书中的“逐行一般归结证明”。

若大小按不同子句推导节点计,重复引用只增加边或父行编号,而不复制子证明。编码大小仍要包含每个子句的文字和引用,因此在高出度情况下,节点数、边数与总比特数必须注明。DAG 形系统与树形归结使用完全相同的局部 resolution 规则,差别只在是否允许共享;把这种结构差别描述成新逻辑规则会掩盖真正的资源来源。

直觉

DAG 形证明相当于给递归论证加入缓存。第一次推出引理 C 后,任何后续分支都可以引用节点编号而不重做 C 的全部祖先。一个短证明因而可以把局部矛盾压缩成可重用的 clause,逐步建立一张冲突知识库。现代 SAT 求解中的 clause learning 正是这种思路的算法化版本,不过实际求解器还涉及学习子句选择、遗忘、restart 与预处理,不能不加条件地与某个静态 DAG 完全等同。

共享只压缩重复结构,不会让错误推理变真。每个非源节点仍需由两个已出现子句和一个 pivot 局部验证;拓扑序排除了循环论证。若允许节点引用自己或未来节点,验证者就不能用简单归纳保证每行都是初始 CNF 的逻辑后果,因此“有向无环”不是绘图偏好,而是可靠性证明的一部分。

例子与边界

对公式

F=(ax)(¬ax)(¬xy)(¬xz)(¬y¬z),

建立节点序列

C6=x由 C1,C2 在 a 上归结,C7=y由 C6,C3 在 x 上归结,C8=z由 C6,C4 在 x 上归结,C9=¬z由 C7,C5 在 y 上归结,C10=由 C8,C9 在 z 上归结.

C6 的出度为 2,整份证明只推导一次 x。逐条代入即可核对五次推理;树形展开则必须复制产生 C6 的两叶子证明。这个例子展示压缩机制,却不能用常数差距证明渐近分离;渐近结论需要一个随参数增长的公式族和严格计数。

若按上述编号计,证明有五个初始节点、五个导出节点和十条父引用边;若只计推理步则大小为五。两种数值都正确,但必须随定义报告。把同一子句 x 在表格中抄写两行而仍让两行引用同一个祖先,不会恢复树形性;判断标准是依赖边,不是打印文本是否重复。

允许共享也不等于允许 extension variable。DAG 节点只能保存由归结推出的子句,不能随意为一个大公式命名。若加入新变量及定义子句,得到的是扩展归结等更强模型,输入编码与可靠性条件随之改变。另一个边界是 clause deletion:从静态证书中删去不再使用的节点不会改变可证性,但在线求解时删除过早会影响未来搜索,空间复杂度需另行计量。

推论与应用

一般所说的 resolution size 下界通常针对 DAG 形归结,因为它允许最充分的子句复用;这样的下界自动适用于受限的树形系统。归结宽度规模—宽度权衡也以一般归结为主要口径:即使 DAG 可以共享,若任何反驳都必须经过很宽的“瓶颈子句”,证明仍会被迫拥有很多不同节点。

从算法角度,DAG 证书可用父行索引流式检查,并通过引用计数释放不再需要的子句;这区分了证明大小与 proof space。一个证明可能节点总数很大但任一时刻只保留少量子句,也可能很短却需要同时保存多个宽引理。共享解决的是时间式重复,不自动解决内存、宽度或寻找下一条引理的难题。

参考资料
  • Armin Haken, “The Intractability of Resolution,” Theoretical Computer Science 39, 1985, pp. 297–308, general resolution model.
  • Eli Ben-Sasson, Russell Impagliazzo, and Avi Wigderson, “Near Optimal Separation of Tree-Like and General Resolution,” Combinatorica 24(4), 2004, pp. 585–603.
  • Jan Krajíček, Proof Complexity, Cambridge University Press, 2019, Chapter 4, general resolution and proof DAGs.
关系图谱3 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:分类

分类位置

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。

类型化关系