收藏 分享(赏)

OBDD原理及其应用.ppt

上传人:精品资料 文档编号:10700862 上传时间:2019-12-29 格式:PPT 页数:48 大小:3.03MB
下载 相关 举报
OBDD原理及其应用.ppt_第1页
第1页 / 共48页
OBDD原理及其应用.ppt_第2页
第2页 / 共48页
OBDD原理及其应用.ppt_第3页
第3页 / 共48页
OBDD原理及其应用.ppt_第4页
第4页 / 共48页
OBDD原理及其应用.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、古天龙,有序二叉决策图(OBDD)及其应用,2019/12/29,2014全国离散数学年会,1,(1)布尔表达式及其表示 (2)有序二叉决策图(OBDD) (3)符号模型检验,2019/12/29,2014全国离散数学年会,2,(1)布尔表达式及其表示,布尔代数 布尔表达式 布尔函数 二叉决策图 布尔代数是英国数学家George Boole(乔治布尔)十九世纪提出来的将古典逻辑推理转化为抽象符号代数计算的技术。布尔代数是计算技术和自动化技术中逻辑设计的数学基础,因此布尔代数也称为逻辑代数。 布尔代数 对于非空集合B(B中至少包含两个不同元素),以及集合B上的二元运算“”和“+”、一元运算“”,

2、集合B中的元素a,b,cB,称满足下述条件的多元组(B, +, , )为一个布尔代数:交换律 ab =ba ; a+b = b+a .分配律 a (b+c) = (ab)+(ac) ; a+(bc) = (a+b)(a+c).同一律 二元运算“+”存在单位元,称为布尔代数的零元,即存在 0B,使得任意aB,有a+0 = a ; 二元运算“”存在单位元,称为布尔代数的单位元,即存在1B,使得任意aB,有a1=a .互补律 对任意aB,存在aB,满足: aa=0; a+a=1.,2019/12/29,2014全国离散数学年会,3,在布尔代数B中,元素aB所对应的aB称为元素a的补元,用来表示B中任

3、意元素的符号称为布尔变量或者变元,而B中确定的元素称为布尔常元或者常量。 二值逻辑系统是最简单的二元素布尔代数B,它是在B = 0, 1上定义二元运算“”和“+”、以及一元运算“”的布尔代数(B, +, , ),该布尔代数B也称为(二值)开关代数,其中,二元运算分别为“与”/“合取”、“或”/“析取”、“非”。 在n重笛卡尔积Bn(B=0,1)上,对于任何(a1, a2, ,an),(b1, b2, , bn) Bn,这里ai , bi0,1(i = 1,2,n),定义如下运算:(a1, a2, , an) (b1, b2, , bn) = (a1b1, a2b2, , anbn);(a1,

4、a2, , an) + (b1, b2, , bn) = (a1+b1, a2+b2, ,an+bn);(a1, a2, , an) = (a1, a2, , an). 不难证明:(Bn, +, , )是布尔代数,零元为(0, 0, ,0),单位元为(1, 1, ,1),此布尔代数也称为(n维)矢量开关代数。,2019/12/29,2014全国离散数学年会,4,(1)布尔表达式及其表示,布尔表达式是布尔代数上按照一定规则形成的符号串。它是逻辑演算、逻辑电路综合等的有效形式化符号描述。 布尔表达式 对于布尔代数(B, +, , ),令x1, x2, xn是B 上的n个变量,用“”“+”“”把B的

5、元素和变量连接起来的表达式就是布尔表达式。对于布尔代数(B, +, , ),布尔表达式定义为由如下规则构成的有限字符串: B中任意一个元素是一个布尔表达式; B上的任意一个变元是一个布尔表达式; 若x和y是布尔表达式,则xy、x+y和x也是布尔表达式; 只有有限次运用所产生符号串是布尔表达式。n元布尔表达式 对于布尔代数(B, +, , ),一个含有n个互异变量的布尔表 达式,称为含有n元的布尔表达式,简称为n元布尔表达式,记为P(x1, x2, , xn),其中x1, x2, , xn为变量。约定: 一元运算“”的优先级最高、其次是“”、最低的是“+”,这样布尔表达式中可以省去一些括号。,2

6、019/12/29,2014全国离散数学年会,5,(1)布尔表达式及其表示,表达式的值 对于布尔代数(B, +, , )上的n元布尔表达式P(x1, x2, xn),对变量xi(i=1,2, n)在B中取值,并代入布尔表达式P(x1, x2, , xn),即对变量赋值,所计算出的结果,称为n元布尔表达式P(x1, x2, , xn)的值。例如,对于布尔代数(0, 1, +, , )上的布尔表达式 (x+y)(x+y)(y+z),如果变量的一组赋值为x = 1, y = 0, z =1,那么便可求得(1+0)(1+0) (0+1) = 110 = 0.布尔表达式等价 对于布尔代数(B, +, ,

7、 )上的n元布尔表达式P(x1, x2, xn)和Q(x1, x2, xn) ,如果对于n个变量的任意赋值,这两个表达式的值都相同,则称这两个布尔表达式等价,记为P(x1, x2, xn) = Q(x1, x2, xn) 。我们可以利用布尔代数的一些恒等式(性质),将一个布尔表达式简化成为另外一个简单的等价形式。,2019/12/29,2014全国离散数学年会,6,(1)布尔表达式及其表示,对于布尔代数(B, +, , )上的任何一个布尔表达式P(x1, x2, , xn),由于运算“”、“+”和“”在B上的封闭性,所以对于任何n元组(x1, x2, , xn) ,xiB(i=1,2,n)的一

8、组赋值就可以得到布尔表达式P(x1, x2, , xn)对应的一个值,这个值必属于B。由此可见,我们可以说布尔表达式P(x1, x2, , xn)确定了一个由Bn到B的函数。布尔函数 对于布尔代数(B, +, , ),如果一个从Bn到B的映射能够用(B, +, , )上的n元布尔表达式来表示,那么这个映射称为布尔函数。,对于布尔代数(0,1, +, , ),右表所给出的映射f Bn B,可以用B上的布尔表达式 f (x, y, z) = x (y+z) 表示,所以f 是布尔函数。,2019/12/29,2014全国离散数学年会,7,(1)布尔表达式及其表示,对于布尔代数B,从Bn B的映射不一

9、定都能用B上的布尔表达式来表示出来。换言之,任意映射f Bn B不一定都是布尔函数。但是,对于布尔代数(0,1, +, , ),从0,1n到0,1的任一映射都可用(0,1, +, , )上的布尔表达式来表示出来,反之亦然。 定理 对于布尔代数(0,1, +, , ),任何一个从0,1n到0,1的映射都是布尔函数。 对于从0,1n到0,1的n元布尔函数f (x1, x2, , xn),若对其中第i个分量xi 取值1或0,则可得到0,1n1到0,1的布尔函数f (x1, , xi1, 1, xi+1, ,xn)或f (x1, , xi1, 0, xi+1, ,xn),称之为输入模式(x1, , x

10、i1, 1, xi+1, ,xn)或(x1, , xi1, 0, xi+1, ,xn)下的布尔函数,并分别记作fxi或fxi 。 类似地,从0,1 n到0,1的布尔函数f (x1, x2, , xn),若对其中k(kn)个分量取值则可得到0,1nk到0,1的布尔函数。例如,输入模式(x1, 0, 1, x4, 1, x6, , xn)下的布尔函数为f (x1, 0, 1, x4, 1, x6, , xn) ,记为fx2 x3 x5 。 布尔函数的函数族 对于从0,1n到0,1的布尔函数f (x1, x2, , xn),在不同输入模式下的布尔函数形成一个布尔函数集合,称为该布尔函数的函数族,并记

11、为 f (x1, x2, , xn)。,2019/12/29,2014全国离散数学年会,8,(1)布尔表达式及其表示,对于从0,1n到0,1的布尔函数f (x1, x2, , xn)有,0f (x1, x2, , xn),1 f (x1, x2, , xn),f (x1, x2, , xn)f (x1, x2, , xn)。由于不同输入模式下可能具有相同的布尔函数,因此函数族集合f (x1, x2, , xn)中至多包含3个(n=1)或2+3n(n1)元素。例如,对于布尔函数 f (x1, x2, x3) = (x1+x2) x3有fx1= f (1, x2, x3) = x3, fx1 =

12、f (0, x2, x3) = x2x3,fx2 = f (x1, 1, x3) = x3 fx2 = f (x1, 0, x3) = x1x3 , fx3 = f (x1, x2, 1) = x1+x2, fx3= f (x1, x2, 0) = 0fx1x2 = f (1, 1, x3) = x3,fx1x2 = f (1, 0, x3) = x3, fx1x3 = f (1, x2, 1) =1fx1x3 = f (1, x2, 0) =0, fx2x3 = f (x1, 1, 1) = 1, fx2x3 = f (x1, 1, 0) = 0fx2x3 = f (x1, 0, 1) =

13、x1, fx2x3 = f (x1, 0, 0) = 0 可求得布尔函数f (x1, x2, x3) = (x1+x2) x3的函数族为:f (x1, x2, x3) = (x1+x2) x3 ,x2x3,x1x3,x1+x2,x1,x2,x3,0,1。,2019/12/29,2014全国离散数学年会,9,(1)布尔表达式及其表示,对于从0,1n到0,1的布尔函数f (x1, x2, , xn),按照给定变量顺序,对布尔函数f (x1, x2, , xn)中的变量依次取值下的布尔函数形成的布尔函数集合,称为该布尔函数在给定变量序的输入模式下的函数族,并记为 f (x1, x2, , xn)。

14、对于从0,1n到0,1的布尔函数f (x1, x2, , xn),给定变量序的输入模式下的函数族 f (x1, x2, , xn)至多包含(2n+1)个元素。 例如,在变量序:x1 x2 x3下,对于布尔函数f (x1, x2, x3) = (x1+x2) x3有:fx1= f (1, x2, x3) = x3, fx1 = f (0, x2, x3) = x2x3;fx1x2= f (1, 1, x3) = x3,fx1x2=f (1, 0, x3) =x3,fx1x2=f (0,1, x3)=x3, fx1x2=f (0,0, x3) = 0;fx1x2x3= fx1x2x3 = fx1x

15、2x3= 1, fx1x2x3 =fx1x2x3 = fx1x2x3 = 0 由此,布尔函数f (x1, x2, x3) = (x1+x2) x3在给定变量序的输入模式下的函数族为: f (x1, x2, , xn) = (x1+x2) x3, x2x3, x3, 0, 1。,2019/12/29,2014全国离散数学年会,10,(1)布尔表达式及其表示,香农展开定理 在布尔代数(0,1, +, , )上,可对n个变量x1, x2, , xn的布尔函数f (x1, x2, xn)中的任意变量进行如下展开: f (x1, , xi1, xi, xi+1, , xn) = xif (x1, , x

16、i1, 1, xi+1, , xn) + xif (x1, , xi1, 0, xi+1, , xn); f (x1, , xi1, xi, xi+1, , xn) = (xi +f (x1, , xi1, 0, xi+1, , xn) ( xi + f (x1, , xi1, 1, xi+1, , xn). 上述定理中称为布尔函数f (x1, x2, xn)关于变量xi的香农(Shannon展开或分解。布尔函数f (x1, , xi1, 0, xi+1, , xn)或f (x1, , xi1, 1, xi+1, , xn)分别称为布尔函数f (x1, x2, xn)关于变量xi的香农展开的0

17、-分量和1-分量。 例如,布尔代数 (0,1, +, , )上的布尔函数f (x1, x2, x3)=(x1+x2) + x1x3相对于x1的展开为f (x1, x2, x3) = x1f (1, x2, x3)+x1f (0, x2, x3)= x1 (1+ x2)+1x3+x1 (0+ x2)+0x3= x1+x1x2x3 =x1+x2x3f (x1, x2, x3) = x1 +f (0, x2, x3) x1+f (1, x2, x3)= x1 + x2x3 x1+1= x1+x2x3,2019/12/29,2014全国离散数学年会,11,(1)布尔表达式及其表示,树 树是n(n0)个

18、节点的有限集合。当n = 0时,称为空树,否则,在任一非空树中: 有且仅有一个称为该树的根的节点; 除根节点之外的其余节点为m(m0)个互不相交的集合T1,T2,Tm,且其中每一个集合本身又是一棵树,并且称为根的子树。 二叉树 二叉树是有限个节点的集合,这个集合或者是空集,或者是由一个根节点和不多于两棵互不相交的子树组成。也就是说,每个节点有零棵,一棵或两棵子树,这些子树可区分为左子树和右子树,且每棵子树本身也是二叉树。如果一棵二叉树中,任何非叶节点都有左子树和右子树,则称为满二叉树。,2019/12/29,2014全国离散数学年会,12,(1)布尔表达式及其表示,决策树 对于0,1n到0,1

19、的n元布尔函数f (x1, x2, , xn),决策树是用于表示布尔函数族# f (x1, x2, , xn)的一棵满二叉树,它满足: 树的叶节点对应于0或者1,并标记为0或者1,表示布尔常量0或者1; 树的非叶节点对应于某一输入模式下的布尔函数,并标记为所对应布尔函数中的某一变元; 每一非叶节点具有0、1两个分枝。0-分枝子节点对应于该节点布尔函数中节点所标记变元取0值后的布尔函数的内部节点或终节点,1-分枝子节点对应于该节点布尔函数中节点所标记变元取1值后的布尔函数的内部节点或终节点。,布尔函数f=(x1+x2) x3的决策树表示,2019/12/29,2014全国离散数学年会,13,(1

20、)布尔表达式及其表示,在图形表示中,叶节点用方框表示,非叶节点用圆圈表示,节点的0-分枝用虚线弧连接,节点的1-分枝用实线弧连接。,进一步考察布尔函数f=(x1+x2) x3的决策树,不难发现其中存在一些冗余节点。叶节点0和叶节点1代表有相同的含义,可以仅保留一个叶节点0和一个叶节点1;标记为x3的节点存在子节点完全相同的情形,亦即对应相同的布尔函数,这样我们也可以将这些节点合并;标记为x3和x2的一个节点存在0、1分枝子节点完全相同的情形,亦即,该节点的父节点所对应的布尔函数在标记变元的不同取值下得到相同的布尔函数,换言之,该节点的父节点所对应的布尔函数与标记变元无关,这样我们将该节点从图中

21、删除,并不影响原布尔函数的表示效果。显然,这些较之于原图更加紧凑和简单。它们分别使得图中节点数目从15个减少至9个、7个和5个,但是,均都已不再是一棵树。,2019/12/29,2014全国离散数学年会,14,(1)布尔表达式及其表示,根据香农展开定理,可对布尔函数f (x1, x2, , xn)中的变量逐次进行香农展开,并将其展开过程用如下图形的形式表示:根节点表示布尔函数f (x1, x2, , xn)自身,从根节点引出两个分枝,分别表示经过某个变量xi的第一次香农展开后所得到的输入模式(x1, , xi1, 0, xi+1, xn)和(x1, , xi1, 1, xi+1, xn)下的布

22、尔函数f(x1, , xi1, 0, xi+1, xn)和f(x1, , xi1, 1, xi+1, xn) ;布尔函数f(x1, , xi1, 0, xi+1, xn)和f(x1, , xi1, 1, xi+1, xn)可进一步进行香农展开,并将它们和各自所展开得到的0-分量和1-分量连接;类似地,将每次展开所得到的布尔函数再进行进一步的香农展开,必然得到0-分量和1-分量中的一个或者两个同时取常值0或1。基于此,可得到布尔函数的二叉决策图(Binary Decision Diagram,BDD)表示。 Lee于50年代提出了二叉决策程序和Akers于70年代提出了二叉决策图(BDD)概念。

23、 C.Y. Lee, Representation of Switching Circuits by Binary Decision Programs, Bell System Technical Journal, 1959,38: 985-999 S.B. Akers, Binary Decision Diagrams, IEEE Transaction on Computer, 1978,27(6):509-516,2019/12/29,2014全国离散数学年会,15,(1)布尔表达式及其表示,二叉决策图 对于从0,1n到0,1的布尔函数f (x1, x2, , xn),二叉决策图(BDD

24、)是用于表示布尔函数族f (x1, x2, , xn)的一个有向无环图,它满足: BDD中节点分为根节点、终节点和内部节点三类。没有父辈节点或者没有输入弧的节点称为根节点;没有后继子节点或者没有输出弧的节点称为终节点;除根节点和终节点之外的节点或者具有输入和输出弧的节点称为内部节点; 终节点有2个,分别标记为0和1。终节点t具有属性t.val0,1,表示布尔常量0和1; 非终节点u具有四元组属性(fu, var, low, high),其中,fu表示节点u所对应的布尔函数,fu #f (x1, x2, , xn)(如果u是根节点,则fu = f (x1, x2, , xn));var表示节点u

25、的标记变量;low表示u.var = 0(节点u的标记变量var取值为0)时,节点u的0-分枝子节点;high表示u.var = 1(节点u的标记变量var取值为1)时,节点u的1-分枝子节点; 每个非终节点均具有两条输出分枝弧,将它们和各自的两个分枝子节点连接在一起。节点u和u.low 的连接弧称为0-边,节点u和u.high的连接弧称为1-边; BDD的任一有向路径上,布尔函数f (x1, x2, , xn)中的每个变量至多出现一次。 在图形表示中,通常用方框表示终节点,用圆圈表示其它节点,节点之间通过虚线或者实线连接。通常,假设连接弧的方向向下,0-边用虚线表示,1-边用实线表示。,20

26、19/12/29,2014全国离散数学年会,16,(1)布尔表达式及其表示,布尔函数f = (x1+ x2) x3的BDD,布尔函数f=(x1+x2) (x3+x4) (x5+x6) 的BDD,2019/12/29,2014全国离散数学年会,17,(1)布尔表达式及其表示,在布尔函数f=(x1+x2) (x3+x4) (x5+x6)的香农展开过程中,选取不同的变量顺序就会得到不同的BDD,即同一个布尔函数f具有多个BDD描述。事实上,前面图中仅列出了布尔函数f =(x1+x2)(x3+x4)(x5+ x6)所对应的部分BDD,还可以列出更多。 从BDD的定义及图形表示中,可以看出,对于变量的一

27、组赋值,所得到的函数值由从根节点到一个终节点的一条路径决定,这条路径所对应的分枝由变量的这组赋值决定,该分枝的终节点所标识的值就是变量在这组赋值下所对应的函数值。 例如,图中BDD在输入模式(x1, x2, x3, x4, x5, x6)= (1, 1, 1, 1, 0, 1)下的计算路径如图 中的点线所示。函数f=(x1 + x2) (x3+x4) (x5+x6)在这组输入模式下所对应值为1。,2019/12/29,2014全国离散数学年会,18,(1)布尔表达式及其表示,(2)有序二叉决策图(OBDD),OBDD及其规范型 OBDD化简 OBDD操作 OBDD的变量序 有序二叉决策图(Or

28、dered Binary Decision Diagram,OBDD)最早可追溯到二叉决策程序和二叉决策图(BDD)概念。Bryant对BDD附加了变量序和简化约束,使之成为了布尔表达式表述的一种规范型。,2019/12/29,2014全国离散数学年会,19,OBDD是布尔函数的一种有效图形、数学描述技术。OBDD不同于BDD之处在于OBDD中任一从根节点到叶节点的路径上变量出现的顺序保持一致,此外,在OBDD中引入了两条简化规则。这一变量序的限制及简化规则的约束,使得OBDD成为表述布尔函数的规范型。,OBDD,BDD但不是 OBDD,R.E. Bryant, Graph-Based Alg

29、orithms for Boolean Function Manipulation, IEEE Transactions on Computers, 1986, 35(8): 677-691,有序二叉决策图 对于从0,1n到0,1的布尔函数f (x1, x2, , xn)和给定变量序,在表示布尔函数族 f (x1, x2, , xn)的二叉决策图(BDD)中,如果任一有向路径上的变量x1, x2, , xn均以变量序所规定的次序依次出现,则称该BDD为布尔函数f (x1, x2, , xn)的有序二叉决策图。 每个OBDD上的节点u表示了一个从0,1n到0,1的布尔函数fu,满足: 若u是终节

30、点,则fu = u.val; 若u是非终节点,则fu = u.varfu.high + (u.var) fu.low = u.var fuu.var + (u.var) fuu.var =0,其中,fu.high 和fu.low分别表示布尔函数fu中变量u.var取值1和0后所得到的布尔函数,即节点u的子节点u.high和u.low所对应的布尔函数。 可以通过自底向上来计算OBDD各节点所表示的函数。值得一提的是,从香农分解可看出,在分解过程中选择不同的变量将得到函数fu不同的分解方法。为此,对于不同的变量序的同一函数其所得的OBDD也是不同的。,2019/12/29,2014全国离散数学年会

31、,20,(2)有序二叉决策图(OBDD),简化有序二叉决策图 在有序二叉决策图(OBDD)中,如果内部节点满足: 对于节点u, u.low u.high; 对于u.var = v.var的不同节点 u 和v,则u.low v.low或者u.high v.high或者u.low v.low且u.high v.high,称该OBDD为简化有序二叉决策图(Reduced Ordered Binary Decision Diagram,ROBDD)。 对于不满足上述定义中条件的OBDD,我们可以应用简化规则,将OBDD简化为ROBDD。Bryant给出了一种时间复杂度为线性的OBDD的简化算法。事实上

32、,现有算法在生成OBDD的同时,就进行了化简。亦即,生成的就是ROBDD。一个OBDD或者ROBDD对应于一个布尔函数族 f (x1, x2, , xn), 即一系列不同的布尔函数。换个角度理解,一个OBDD或者ROBDD是布尔函数族 f (x1, x2, , xn)中布尔函数的多根图描述,亦即,多个布尔函数的共享图形描述,因此,有些文献上也称OBDD或者ROBDD为共享二叉决策图(Shared Binary Decision Diagram,SBDD)。在有些表述中,多根图中的每一个根节点具有一个指向该根节点的指针,该指针被称为对应布尔函数的函数指针。,2019/12/29,2014全国离散

33、数学年会,21,(2)有序二叉决策图(OBDD),对于布尔函数f (x1, x2, x3) = x1 x2x3,左图所示为该布尔函数在变量序 : x1x2x3下的OBDD,其中后者所示是该布尔函数的一个ROBDD表示。,2019/12/29,2014全国离散数学年会,22,(2)有序二叉决策图(OBDD),对同一个布尔函数f(x1, x2, , xn)具有多个OBDD表示,而对同一个布尔函数 f(x1, x2, , xn)的ROBDD表示,其表示形式是否唯一呢? ROBDD具有一些对于布尔函数表示和运算的极重要性质。首先,它是布尔函数的一种紧凑规范表示;其次,可以有效完成布尔表达式的各种逻辑操

34、作。目前,人们所提起的OBDD,事实上一般都是蕴涵指ROBDD。在以后讨论中,除非特别说明我们就用有序二叉决策图(OBDD)表示简化有序二叉决策图(ROBDD)。,对于从0,1n到0,1的布尔函数f (x1, x2, , xn)和给定变量序,称该布尔函数所对应的变量序下的ROBDD为布尔函数f (x1, x2, , xn)的规范型。 定理 对于从0,1n到0,1的布尔函数f (x1, x2, , xn)和给定变量序,存在布尔函数f (x1, x2, , xn)的唯一ROBDD表示。(证明从略) OBDD的一个重要性质是其是布尔函数的一种等价规范型。规范型是指在给定变量序下,对布尔函数族# f

35、(x1, x2, , xn)内所有布尔函数只有唯一的ROBDD可用来表示。ROBDD是通过对表示布尔函数族# f (x1, x2, , xn)内各布尔函数的OBDD,在给定变量序下,运用一系列的简化规则而得到的。简化规则的主要思想是删除OBDD中的冗余节点,使之符合定义。 OBDD的简化规则有以下两条:规则1(S-删除规则)对于OBDD中的节点u,如果u.low=u.high,则删除节点u,并将节点u的父节点直接连接至u.low所对应的节点。规则2(合并规则)对于OBDD中的节点u和v,如果u.var =v.var、u.low = v.low且u.high =v.high,则删除节点u,并将节

36、点u的父节点直接连接至节点v。,2019/12/29,2014全国离散数学年会,23,(2)有序二叉决策图(OBDD),简化规则如右图所示,图(a)为S-删除规则、图 (b)为合并规则 。 对于节点u,如果它的两条输出边均指向同一个节点w,则可应用S-删除规则删除节点u。因为所有到达节点u的有向边均可到达节点w,且删除节点u后并不改变OBDD所表示的函数。用术语S-删除规则(香农删除规则)是为了区别那些非基于香农分解规则的OBDD扩展结构中所用的删除规则,如零压缩二叉决策图(ZBDD)中的pD-删除规则等。 如果节点u和v具有相同的标记变量,且它们的0-分枝节点和1-分枝节点也分别相同,那么对

37、节点u和v可应用合并规则,删除节点u。因为所有指向节点u的边均可指向节点v,所以删除节点u后并不改变OBDD所表示的函数。,(b) 合并子节点,(a) 删除变量无关节点,2019/12/29,2014全国离散数学年会,24,(2)有序二叉决策图(OBDD),例如,布尔函数f (x1, x2, x3) = (x1+x2) x3在变量序:x1 x2 x3下OBDD的简化过程。图 (a)到图(b)利用合并规则,合并相同标记的终节点;图(b)到图(c) 利用合并规则,合并具有相同标记和相同子节点的内部节点;图(c)到图(d) 利用删除规则,删除具有相同0-分枝子节点和1-分枝子节点的内部节点。图(d)

38、为一个ROBDD。,(a) 未化简情形 (b) 合并叶节点 (c) 合并子节点 (d) 删除变量无关节点,2019/12/29,2014全国离散数学年会,25,(2)有序二叉决策图(OBDD),定理 对于从0,1n到0,1的布尔函数f (x1, x2, , xn)和给定变量序,通过对该布尔函数所对应的变量序下的OBDD不断应用S-删除规则和合并规则,当OBDD中的所有节点均不满足这两条简化规则时,所得到的OBDD即为ROBDD。 (证明从略),OBDD是表示布尔函数的一种等价规范型,这样布尔函数的许多运算都可转换为OBDD的符号操作。有效的OBDD操作是其得到成功应用的重要原因。许多布尔函数的

39、符号运算都能通过OBDD的图形算法来实现,但这些算法必须满足封闭性,即在给定变量序下的OBDD,由这些算法得到的OBDD仍具有同样的变量序。因此,可以用一系列对同一变量序下的OBDD的简单操作来完成一个复杂的操作。 在实际应用中经常用到的有如下基本操作:逻辑复合(Apply操作、ITE操作)求值(Evaluation)置换(Restrict)量化(全称、存在量化)等价性判定可满足性判定 下面的讨论中,除非特别说明,考虑的OBDD的变量序均假定为x1x2xn。,2019/12/29,2014全国离散数学年会,26,(2)有序二叉决策图(OBDD),Apply操作 Apply操作是通过深度优先搜索

40、的方法,对一些已知的布尔函数OBDD表示进行二元布尔运算得到另外一些布尔函数OBDD表示的操作。 对于变量序:x1,依据香农分解规则,函数fg(x1, x2, , xn) = f(x1, x2, , xn)g(x1, x2, , xn) 计算的递归式定义为:fg(x1, x2, , xn) = xi (fxi gxi ) + xi (fxi gxi),2019/12/29,2014全国离散数学年会,27,(2)有序二叉决策图(OBDD),例如,对于函数f (x1, x2, x3, x4) = (x1+x2) x3+x4和g(x1, x2, x3, x4)=x1x3+x4,变量序:x1开始,得到

41、节点和节点;对节点递归求值,得到节点和节点;对节点递归求值,得到节点和节点,分别对应节点0和1;接着,对节点递归求值,得到节点和节点,前者为已求解节点,后者对应节点1;。求解过程示于图(c),图(d)为函数f +g的OBDD。,2019/12/29,2014全国离散数学年会,28,(2)有序二叉决策图(OBDD),(a) 函数f (b) 函数g (c) 求解过程 (d) 函数f+g,ITE操作 ITE操作是一个三元布尔操作符,对于具有相同变量序的三个布尔函数f、g和h,ITE操作可用来实现:if f then g else h。 对于相同变量序:x1x2xn下的布尔函数f、g和h,ITE( f

42、, g, h) = fg + f h 在算法中,常用小写ite来表示ITE。下表中给出了一些二元布尔运算的ITE操作实现。,2019/12/29,2014全国离散数学年会,29,(2)有序二叉决策图(OBDD),根据香农分解规则:f (x1, , xi1, xi, xi+1, , xn) = xif (x1, , xi1, 1, xi+1, , xn) + xif (x1, , xi1, 0, xi+1, , xn) = xi fxi + xi fxi。设f = (xj , T, E),并假设xixj,那么f关于xi的因子为: fxi = f 或T, fxi = f 或E。 下面给出ITE(

43、f, g, h)的递归定义,其中f、g和h为具有相同变量序的布尔函数。设 = ite( f, g, h),并设变量v为f、g和h的最前排序变量,则: = v v + v v= v ( f g + f h)v + v ( f g + f h)v= v ( fvgv + f vhv) + v ( fvgv + f vhv)= ite(v, ite( fv, gv, hv), ite( fv, gv, hv) 当上述表达式递归到: ite(1, f, g) = ite(0, g, f ) = ite( f ,1, 0) = ite(g, f, f ) = f; ite( f, 0, 1) = f 时

44、递归结束,且称条件、为ITE操作的终止状态。,2019/12/29,2014全国离散数学年会,30,(2)有序二叉决策图(OBDD),例如,已知布尔函数f = a + b,g = a c,h = b + d,变量序:abcd。构造一个表示函数I = fg+f h的OBDD。布尔函数f、g和h的OBDD分别如图(a)、(b)和(c)所示。构造一个用于表示函数I = fg+f h的OBDD可由ite( f, g, h)来实现。递归的整个过程如下所示,最终所得的OBDD图如图(d)所示。,(a) 函数f (b) 函数g,(c) 函数h (d) 函数I,2019/12/29,2014全国离散数学年会,

45、31,(2)有序二叉决策图(OBDD),I = ite( f, g, h)= ite(a, ite( fa, ga, ha), ite( fa, ga, ha)= ite(a, ite( 1, q, h), ite( p, 0, h)= ite(a, q, ite(b, ite( pb, 0b, hb), ite(pb, 0b, hb)= ite(a, q, ite(b, ite(1, 0, 1), ite(0, 0, r)= ite(a, q, ite(b, 0, r) = ite(a, q, s),求值操作 求值操作(Evaluation)是指已知布尔函数f的OBDD表示和某个输入模式a,

46、计算f(a)的值。如果a = ,a1、a2、 、an依次对应变量序中的n个变量x1、x2、xn的赋值,其中 ai0,1(i = 1, 2, , n),那么f(a)的计算过程如下:从表示函数f 的OBDD的根节点v开始,如果其标记变元为xi,就沿该节点的ai-边到达下一级子节点,然后类似地,根据该子节点的标记变元取值选择它的下一级子节点,如此反复进行,直到到达终节点。这样就得到了一条始于根节点v,而终止于某个终节点t的路径,f(a)的值即等于终节点t的值。按照上面的方法对表示f的OBDD按照给定的输入模式进行深度优先搜索,容易实现求值操作。,已知布尔函数f的OBDD,输入模式a = (1, 0,

47、 1),求f (a)。 根据函数Evaluation(),在输入模式a = (1, 0, 1)下,求值过程如图中的点线所示,最终所达的终节点为1,故f (a) = 1。,2019/12/29,2014全国离散数学年会,32,(2)有序二叉决策图(OBDD),置换操作 置换(Restrict)包括常量置换和函数置换。常量置换是指已知函数f的OBDD,变量xi和常量c,求函数 f在xi=c下的OBDD表示。常量置换操作,可通过对图G进行深度优先搜索,把所有指向标记变量为xi的节点v的指针重定向。如果c=1,则使之指向v的1-分枝子节点;如果c=0,则使之指向v的0-分枝子节点。函数置换是对于函数f和g的OBDD及变量xi,求函数 f 在xi=g下的OBDD表示。 由香农分解规则知: f (x1, , xi1, g, xi+1, , xn) = g f (x1, , xi1, 1, xi+1, , xn) + g f (x1, , xi1, 0, xi+1, , xn) = g fxi + g fxi 。 由此,函数置换操作可通过常量置换和Apply操作来实现。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报