BDD简介---2

由上述我们可以知道,BDD是由1个或2个终端节点(0或1)出度为2(low(u)和high(u))图所组成的,它把BDT从2n 个节点进行裁减,从而减少空间复杂度,然而却增加了时间复杂度,为使其了更有效,我们引入OBDD和R(O)BDD的概念。
OBDD(Ordered Binary Decision Digram)是所有BDD路径都是基于给定线性序列的BDD。如图2 就是 遵循x1<y1<x2<y2的线性序列。
R(O)BDD则满足:a 没有2个不同得节点u,v使之满足 var(u)=var(v),low(u)=low(v),high(u)=high(v)
b 没有节点u拥有相同的后继,即low(u)¹higt(u)
如图3:
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\111.bmp[/img]
R(O)BDD有些有趣的特性,它提供了一种紧凑,高效的布尔表示,对于所有函数
f: Bn à B总有一个R(O)BDD去表述,同时由于R(O)BDD总为真或假,对它的测试也是在有限时间范围内的(NP--完全),它的终端节点总是一个布尔值,非终端节点则是INF表达式,分别表示:
t0 = 0
t1 = 1
tu = var(u)à thigh(u) , tlow(u) ,u是节点变量

另外如果是有序的BDD,我们把与每个节点u有关的函数fu映射到(b1,b2…bn)ÎBn 满足 tu[b1/x1,b2/x2,……bn/xn].我们可以得到以下引理
引理1:对于任何函数 f: Bn à B总有一个ROBDD去表述,u是变量有序的x1<x2…<xn 且 fu = f(x1,x2…xn).
对于变量的有序选择对ROBDD的构建有重要的影响,如我们如果按x1<x2<y1<y2的序列构造(x1<=>y1) ∧(x2<=>y2),可得
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\333.bmp[/img]
有了ROBDD的概念后,就可以使BDD的算法更容易被表述,例还是对(x1<=>y1) ∧(x2<=>y2 按照x1<y1< x2<y2的有序表述(图2),同时对节点u标号,我们可以得到如下表:
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\1.jpg[/img]
由此,我们得到了一个更为简便的BDD表述.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值