“DPLL 的搜索树与树形归结有紧密对应:无学习回溯反复证明各分支冲突,不能跨分支复用已导出的子句。这一对应可把某些证明大小下界转成特定 DPLL 模型的运行时间下界,但不能约束拥有学习、预处…”
形式陈述 ​
一份归结反驳可画成从初始子句指向 resolvent 的有向无环依赖图。若每个导出子句至多作为一次后续推理的前提,且把重复出现的同一初始子句也看作不同叶副本,依赖图从空子句反向展开为一棵二叉树,就称为树形归结。树根是空子句,内节点是两个孩子在某个 pivot 上的 resolvent,叶是输入 CNF 的子句。
证明大小通常计树节点总数或内节点数,两者只差叶数的线性关系;总文字数是更细的编码度量。关键限制是使用次数而非子句内容:同一个子句可以在不同分支重新推导多次,但每个具体副本只能向父节点流动一次。树形归结因此是一般归结的语法受限特例,并与允许共享的DAG 形归结形成镜像对照。
直觉
树形证明像一段没有 memoization 的递归程序。某个中间结论即使在两个分支都需要,也必须各算一遍;证明树不会保存一个节点供多个调用者引用。从根向叶反读时,每次 pivot 都把当前目标分成两个条件分支,这与回溯式 SAT 搜索的决策树很接近。相反,学习到的公共冲突子句若能跨分支复用,就自然产生 DAG。
“树形”不表示每个变量只分支一次,也不表示子句宽度小。沿不同路径可以反复选择同一变量;一个内节点也可能含很多文字。它只规定证明依赖的拓扑形状。因此树深、树大小、子句宽度是三个独立资源:平衡树可有对数深度而节点很多,窄子句也可能因重复推导形成巨大树。
例子与边界
令
前两项归结得
在
树形限制应施加于子句实例。若只按文字集合去重,两个独立叶上同名的初始子句会被错误合并,树立即变成 DAG。反过来,把一份 DAG 逐路径展开总能得到树形证明,但输出大小可能按路径数爆炸,所以“语义上都能反驳”不等于多项式模拟。对 DPLL 的对应也需固定模型:纯回溯、是否允许 clause learning、restarts 和动态子句删除都会改变所对应的证明系统。
推论与应用
任何树形证明都可原样登记为 DAG 证明,故 DAG 归结以线性翻译 p-模拟树形归结。反向的直接展开没有多项式保证;确有显式公式族展示一般归结相对树形归结的指数级优势,但结论依赖具体大小度量和公式族,并不是从“图看起来更紧凑”一句话自动推出。近最优分离结果把这种重复计算现象定量化。
树形归结是分析无学习回溯搜索的标准桥梁。对给定变量分支树,每个叶若被某个初始子句证伪,可自底向上解析两个子树的冲突子句,得到树形反驳;反向也可从证明提取搜索结构。这个联系让证明大小下界转化为一类算法运行时间下界,但只约束与该证明模型吻合的算法,不能据此排除使用学习、代数推理或更强预处理的 SAT 求解器。
参考资料
- Eli Ben-Sasson, Russell Impagliazzo, and Avi Wigderson, “Near Optimal Separation of Tree-Like and General Resolution,” Combinatorica 24(4), 2004, pp. 585–603.
- Paul Beame, Russell Impagliazzo, Toniann Pitassi, and Nathan Segerlind, “Memoization and DPLL: Formula Caching Proof Systems,” Computational Complexity 19(2), 2010, pp. 293–348, §2 on tree-like resolution and search.
- Jan Krajíček, Proof Complexity, Cambridge University Press, 2019, Chapter 4, tree-like versus dag-like resolution.