⇑ ⇑ ⇑ ⇑ ⇑ \Uparrow\Uparrow\Uparrow\Uparrow\Uparrow ⇑⇑⇑⇑⇑ 上方专栏内有更多内容 ⇑ ⇑ ⇑ ⇑ ⇑ \Uparrow\Uparrow\Uparrow\Uparrow\Uparrow ⇑⇑⇑⇑⇑
ZBDD
ZBDD是OBDD的一种扩展,能非常高效的描述和操作稀疏二进制向量。常用于描述组合集合。
对于一个集合
U
=
{
a
1
,
a
2
,
…
,
a
n
}
U=\{a_1,a_2,\dots,a_n\}
U={a1,a2,…,an}若不记顺序地取出任意
r
r
r个元素
(
0
≤
r
≤
n
)
(0\le r\le n)
(0≤r≤n),这些元素就构成一种组合。若把
U
U
U中每个元素
a
i
a_i
ai对应一个二值布尔变量
x
i
x_i
xi,当
a
i
a_i
ai在组合中时
x
i
=
1
x_i=1
xi=1否则
x
i
=
0
x_i=0
xi=0。这样一个组合就可以表达为一个布尔向量
x
⃗
=
⟨
x
1
,
x
2
,
…
,
x
n
⟩
\vec x=\langle x_1,x_2,\dots,x_n \rangle
x=⟨x1,x2,…,xn⟩。则组合的集合就可以表达为一个布尔函数
f
(
x
1
,
x
2
,
…
,
x
n
)
f(x_1,x_2,\dots,x_n)
f(x1,x2,…,xn)。
定义 在有序二叉决策图(OBDD)中,如果内部结点满足:
① 对于结点u, u.high
≠
\neq
= 0;
② 对于u.var= v.var的不同结点 u 和v,则u.low
≠
\neq
= v.low或者u.high
≠
\neq
= v.high或者u.low
≠
\neq
=v.low且u.high
≠
\neq
=v.high。
则称该OBDD为零抑制二叉决策图(ZBDD—Zero-Supppressed Binary Decision Diagram)。
ZBDD化简中采用了OBDD中的合并规则(规则2)和pD-删除规则:
规则1(pD-删除规则) 对于OBDD中的结点u,如果u.high为终结点0,则删除结点u,并将结点u的父结点直接连接至u.low所对应的结点。
对于组合集合,在ZBDD中,终结点0代表的组合集合为空集;终结点1代表只包含一个元素的组合集合,即所有变元都为0的组合。相比而言,如果用OBDD表示组合集合,则终结点0代表空集,终结点1代表所有可能的组合构成的集合,即幂集。
ZBDD 的构造及基本操作:
1、求正余因子(Onset操作)
2、求负余因子(Offset操作)
3、将组合中的给定元素取反(Change操作)
4、组合集合的逻辑复合(交集、并集、差集操作)
1、求正余因子操作Onset(P,v)
从P中选取所有包含元素v的组合,并从该些组合中删除元素v,得到新的组合,由这些新的组合构成新的组合集合R。
例:已知表示集合{00,01}和{01,10,11}的ZBDD P和Q。由一个2元布尔函数f(a,b)表示组合集合,试求解Onset(P,b)和Onset(Q,b)。
2、求负余因子操作Offset(P,v)
从P中选取所有不包含元素v的组合,并由这些组合构成新的组合集合R。
例:已知表示集合{00,01}和{01,10,11}的ZBDD P和Q。由一个2元布尔函数f(a,b)表示组合集合,试求解Offset(P,a)、Offset(P,b)、Offset(Q,a))和Offset(Q,b)。
3、Change(P,v) 对P中的每一个组合进行如下操作:如果组合i包含元素v,那么从该组合中删除元素v,否则,则在该组合中增加元素v。
例:已知表示集合{00,01}和{01,10,11}的ZBDD P和Q。由一个2元布尔函数f(a,b)表示组合集合,试求解Change(P,a), Change(P,b), Change(Q,a)和Change(Q,b).
4、Union操作:对两个以ZBDD表示的组合集合P和Q进行并集操作,操作所得的结果是由属于P或属于Q的组合构成。
5、Intsec操作:对两个以ZBDD表示的组合集合P和Q进行交集操作,操作所得的结果是由属于P且属于Q的组合构成。
6、Diff操作:对两个以ZBDD表示的组合集合P和Q进行差集操作,操作所得的结果是由包含于P但不包含于Q的组合构成。
例:已知表示集合{00,01}和{01,10,11}的ZBDD P和Q。由一个2元布尔函数f(a,b)表示组合集合,试求解Union(P,Q), Intsec(P,Q), Diff(Q,P)
ZBDD的构造
例:构造表示组合集合{011,100}的ZBDD。
例:构造表示组合集合{000,001,010}的ZBDD。