Boolean Decision Diagrams

来源:互联网 发布:php环境配置教程 编辑:程序博客网 时间:2024/06/06 16:33

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
原创粉丝点击