Boolean Decision Diagrams

1.      什么是BDD?

BDDBoolean Decision Diagrams,是一种Directed Acyclic Graph, 它是基于Shannon展开的用来表示逻辑表达式的Binary Recursions Tree。它与传统的逻辑表达式表示方式相比,如真值表、卡诺图、sum-of-products,具有以下几个优势:

a)        表达方式唯一。它是一种DirectedReducedCanonical二叉树,这给比较两个逻辑表达式是否表达同一种逻辑带来极大方便。

b)        高效。很多应用在逻辑表达式上的算法,可以拥有polynomial time的事件复杂度。

2.      BDD是怎样表示的?

首先,BDD是按照一定参数的顺序展开的。这个顺序一般就是x1,x2,x3,…, xn,而且在生成BDD树的过程中,这种顺序不能随便改变。但是这儿有个问题,譬如f(x1,x2,x3,x4,x5,x6)=x1x2+x3x4+x5x6f(x1,x2,x3,x4,x5,x6) = x1x3 + x2x5 + x3x6,这两个逻辑函数唯一的不同只是输入的顺序不同,在表达的逻辑上面并没有区别。但是,展开这两个函数时,第一个BDD树的结点要比第二个BDD树的结点少的多。所以,要记住生成BDD树的时候是按照一定顺序展开的,而且输入变量的顺序不同会导致生成的树的结点数目有很大的不同。但是输入变量的顺序如何排列,才能使生成的BDD树结点最少,现在还不知道。

当我们按照顺序生成BDD时,它的叶子的值总是10,其余结点的值就是index(v)=i,两棵子树就是按xiShannon展开,i就是代表你展开的参数,譬如当按x4展开的时候,i=4

为了使BDD的表达是Canonical的,还必须保证它是reduced的。Reduce graph的概念,请参照34

3.      什么是同构?

同构,就是如果两棵逻辑表达式树G1G2,存在一种映射,使得G1通过这种映射和G2相等,即G1的叶子通过映射后和G2相等,G1的结点和相应的左子树和右子树通过这种映射和G2的结点、左子树、右子树相等,那么就称这两棵树同构。它和数学上的同构的概念,应该说是一样的。

4.      什么是Reduced BDD?

如果一个BDD,不存在结点v,使得它的左子树和右子树相等,也不存在两个不同的结点v1v2,使得以它们为根的子树同构,那么就称这棵树是Reduced Graph

5.      什么是Ordered BDD?

如果一个BDD,沿着一条路径走,所经过的结点总是有序的。譬如总是从x1->x2->x3,而不是有的x1->x2->x3,有的路径x1->x3->x2

6.      什么是ROBDD?

ROBDD就是reduced ordered BDD。任何一个逻辑表达式,都有唯一的一种ROBDD的表示。

7.      怎样从ROBDD里读出逻辑表达式?

   只要把所有从根到叶子值为 1 的路径加起来,就是 ROBDD 所表达的逻辑表达式。   但是从 ROBDD 里读出的逻辑表达式并不一定就是最简的。
8. BDD有什么用途?
   BDD的适用范围非常广泛,在EDA领域,主要用来做验证.因为BDD的表示是Canonical 的,也就是唯一的.

Reference:
[1]
Randal E. Bryant," Graph-Based Algorithms for Boolean Function Manipulation".
[2] Guoyong Shi
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值