BDD引导的子句生成技术解析
1. 二进制决策图(BDD)基础
1.1 BDD的定义
二进制决策图(BDD)是一种边标记的无环有向多重图,其节点排列在 (n + 1) 层 (L_1, \ldots, L_{n + 1}) 中。第一层 (L_1) 由一个单一节点(即根节点)组成。BDD 中的每条边都从层 (L_i) 的节点指向层 (L_{i + 1}) 的节点。层 (L_1) 到 (L_n) 中的每个节点都有两条出边,分别标记为“true”和“false”。层 (L_{n + 1}) 中有两个节点,称为汇点或终端,标记为 (\top) 的是真汇点,标记为 (\bot) 的是假汇点。
1.2 BDD 表示布尔函数
BDD 可以表示定义在变量 (x_1, \ldots, x_n) 上的布尔函数 (f)。层 (L_1) 到 (L_n) 分别对应变量 (x_1, \ldots, x_n)。从根节点到汇点的路径对应这些变量的赋值。从层 (L_i) 到层 (L_{i + 1}) 的“true”边对应 (x_i = 1),“false”边对应 (x_i = 0)。如果对应 (x_1, \ldots, x_n) 赋值的路径终止于真汇点,则 (f(x_1, \ldots, x_n) = 1);否则,路径终止于假汇点,(f(x_1, \ldots, x_n) = 0)。
1.3 BDD 与 SAT 问题
布尔可满足性(SAT)问题的实例是一个定义在变量 (x_1, \ldots, x_n) 上的命题公式,以合取范式(CNF)表示,即文字析取的合取。每个析取式称为一个子句。目标是确定是否存在对变量的布尔赋值,使得每个子句同时满足。
超级会员免费看
订阅专栏 解锁全文
16

被折叠的 条评论
为什么被折叠?



