二元决策图(Binary Decision Diagrams - BDD) (一)

在形式化验证、数字系统的设计和验证中,许多任务都涉及大型命题逻辑公式的运算。二元决策图(BDD)已经成为许多应用的首选表示方法。1986年,Bryant发表论文指出归约有序的二元决策图是布尔函数的规范表示。

几个基本概念:

布尔函数(Boolean function)描述如何基于对布尔输入的某种逻辑计算确定布尔值输出,它们在复杂性理论的问题和数字计算机的芯片设计中扮演基础角色。比如下面的逻辑电路:

 可以使用布尔函数:(x_1\oplus x_2)\oplus (x_3\oplus x_4)来表示。

有 个变量的布尔函数 为:

F:\{0,1\}^n \to \{0,1\}

函数有2^n个不同的可能输入,输出为一个True或False的布尔值,我们使用1或0来表示。

我们定义新的具有 n-1 个变量的布尔函数:

F_{x_1}(x_2,...,x_n) =F(1,x_2,x_3,...,x_n)

F_{x_1^{'}}(x_2,...,x_n)=F(0,x_2,x_3,...,x_n)

F_{x_1}F_{x_1^{'}}'称为 F 的余因子(cofactor)。F_{x_1}为正因子,F_{x_1^{'}}为否定因子。

香农展开(Shannon's expansion),或称香农分解(Shannon decomposition)是对布尔函数的一种变换方式。它可以将任意布尔函数表达为其中任何一个变量乘以一个子函数,加上这个变量的反变量乘以另一个子函数,即:

F(x_1,...,x_n )=x_i F_{x_i}+x_i^{'} F_{x_i^{'}}

INF范式(If-then-else Normal Form – INF)

If-then-else运算符表示为x\to y_0,y_1,则INF运算符定义为:

 x\to y_0,y_1=(x\land y_0 )\lor (\lnot x \land y_1 )

即,如果x值为1,则结果为y0,否则结果为y1

所有逻辑运算符都可以仅使用 if-then-else 运算符和常量0和1表达。此外,if-then-else运算可以这样实现,即所有的测试都只在(未取反的)变量上进行,变量不会出现在其他地方。比如,¬x就是x→0,1。这样,if-then-else算子产生了一种新的范式 – INF范式(If-then-else Normal Form – INF)。

INF范式是完全由 if-then-else 运算符和常量构建的布尔表达式,因此仅需要对变量执行测试。

t[0/x]表示将 中的变量 赋值为 0 得到的布尔表达式,得到以下等式:

这个就是表达式 t 对变量 的香农展开。这个简单的方程有很多有用的应用。第一个是可以从任何表达式 t 生成一个 INF。 如果 t

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值