⇑ ⇑ ⇑ ⇑ ⇑ \Uparrow\Uparrow\Uparrow\Uparrow\Uparrow ⇑⇑⇑⇑⇑ 上方专栏内有更多内容 ⇑ ⇑ ⇑ ⇑ ⇑ \Uparrow\Uparrow\Uparrow\Uparrow\Uparrow ⇑⇑⇑⇑⇑
ADD
代数决策图(ADD)是一种用于伪布尔函数表示和操作的图形化数据结构。与BDD不同的是BDD只有0,1两个终端节点,但ADD 可以有多个不同终端节点。
n元伪布尔函数:任意一个自变量取值只能是0或1,函数值可为实数的n元函数。
令R表示实数集,B={0,1},那么n元伪布尔函数可表示为:
f
:
B
n
→
R
f : B^n\to R
f:Bn→R。
例如伪布尔函数
f
=
x
1
x
2
+
2
x
3
x
4
f = x_1x_2 + 2x_3x_4
f=x1x2+2x3x4
伪布尔函数
f
=
x
1
x
2
+
2
x
3
x
4
f = x_1x_2 + 2x_3x_4
f=x1x2+2x3x4 在变量序
π
:
x
1
<
x
2
<
x
3
<
x
4
\pi:x_1<x_2<x_3<x_4
π:x1<x2<x3<x4下的ADD为
再有例子:给出一个自动机,把它转换为ADD形式。
将顶点进行编码0:[00],1:[10],2:[01],3:[11]
M
G
=
y
0
y
1
00
10
01
11
00
10
01
11
[
1
2
0
1
0
0
3
0
0
0
0
3
0
2
0
0
]
x
0
x
1
M_G=\begin{matrix} &\begin{matrix}y_0y_1& \quad&\quad&\quad\end{matrix}\\ &\begin{matrix}00&10&01&11\end{matrix}\\ \begin{matrix}00\\10\\01\\11\end{matrix}& \begin{bmatrix}1&2&0&1\\0&0&3&0\\0&0&0&3\\0&2&0&0\end{bmatrix}\\ x_0x_1 \end{matrix}
MG=00100111x0x1y0y100100111⎣⎢⎢⎡1000200203001030⎦⎥⎥⎤
转换为ADD为
伪布尔函数可以看作是布尔函数的扩展,即把布尔函数的值域从{0,1}扩展到整个实数域。同样,伪布尔函数也可以按照类似布尔函数的方式进行展开。
定理 如果
f
(
x
1
,
x
2
,
…
,
x
n
)
f(x_1, x_2, \dots, x_n)
f(x1,x2,…,xn)是伪布尔函数,则对于
∀
x
i
∈
x
1
,
x
2
,
…
,
x
n
\forall x_i\in{x_1, x_2, \dots, x_n}
∀xi∈x1,x2,…,xn有:
f
(
x
1
,
…
,
x
i
−
1
,
x
i
,
x
i
+
1
,
…
,
x
n
)
=
x
i
×
f
(
x
1
,
…
,
x
i
−
1
,
1
,
x
i
+
1
,
…
,
x
n
)
+
(
1
−
x
i
)
×
f
(
x
1
,
…
,
x
i
−
1
,
0
,
x
i
+
1
,
…
,
x
n
)
f (x_1, …,x_{i-1}, x_i, x_{i+1}, …, x_n)= \\x_i \times f (x_1, …,x_{i-1}, 1, x_{i+1}, …, x_n) \\+ (1-x_i) \times f (x_1, …,x_{i-1}, 0, x_{i+1}, …, x_n)
f(x1,…,xi−1,xi,xi+1,…,xn)=xi×f(x1,…,xi−1,1,xi+1,…,xn)+(1−xi)×f(x1,…,xi−1,0,xi+1,…,xn)
其中:“
×
\times
×”、“
+
+
+”和“
−
-
−”分别表示算术运算乘法、加法和减法。
为了便于介绍伪布尔函数的ADD描述,下面用
x
′
x'
x′代表
(
1
−
x
)
(1-x)
(1−x)。
对于任意伪布尔函数
f
(
x
1
,
x
2
,
…
,
x
n
)
f(x_1, x_2, \dots, x_n)
f(x1,x2,…,xn),根据定理有:
f
(
x
1
,
x
2
,
…
,
x
n
)
=
x
1
′
f
(
0
,
x
2
,
…
,
x
n
)
+
x
1
f
(
1
,
x
2
,
…
,
x
n
)
=
x
1
′
x
2
′
f
(
0
,
0
,
x
3
,
…
,
x
n
)
+
x
1
′
x
2
f
(
0
,
1
,
x
3
,
…
,
x
n
)
+
x
1
x
2
′
f
(
1
,
0
,
x
3
,
…
,
x
n
)
+
x
1
x
2
f
(
1
,
1
,
x
3
,
…
,
x
n
)
=
x
1
′
x
2
′
…
x
n
′
f
(
0
,
0
,
…
,
0
)
+
x
1
′
x
2
′
…
x
n
−
1
′
x
n
f
(
0
,
0
,
…
,
0
,
1
)
+
⋯
+
x
1
x
2
…
x
n
f
(
1
,
1
,
…
,
1
)
f(x_1, x_2, \dots, x_n)= x_1' f (0, x_2, \dots, x_n) + x_1 f (1, x_2,\dots, x_n)\\ = x_1' x_2' f (0, 0, x_3, \dots, x_n) + x_1' x_2 f (0, 1, x_3,\dots, x_n) \\\quad+ x_1 x_2' f (1, 0, x_3, \dots, x_n) + x_1 x_2 f (1, 1, x_3,\dots, x_n)\\ = x_1' x_2' \dots x_n' f (0, 0, \dots, 0) + x_1'x_2' \dots x_{n-1}' x_n f (0, 0,…, 0, 1)\\\quad+ \dots+ x_1 x_2 \dots x_n f (1, 1, \dots , 1)
f(x1,x2,…,xn)=x1′f(0,x2,…,xn)+x1f(1,x2,…,xn)=x1′x2′f(0,0,x3,…,xn)+x1′x2f(0,1,x3,…,xn)+x1x2′f(1,0,x3,…,xn)+x1x2f(1,1,x3,…,xn)=x1′x2′…xn′f(0,0,…,0)+x1′x2′…xn−1′xnf(0,0,…,0,1)+⋯+x1x2…xnf(1,1,…,1)
其中,
x
1
′
x
2
′
…
x
n
′
,
…
,
x
1
x
2
…
x
n
x_1'x_2'\dots x_n', \dots , x_1x_2\dots x_n
x1′x2′…xn′,…,x1x2…xn称之为小项,共有2n项;
f
(
0
,
0
,
…
,
0
)
,
…
,
f
(
1
,
1
,
…
,
1
)
f (0, 0, \dots, 0),\dots,f (1, 1, \dots, 1)
f(0,0,…,0),…,f(1,1,…,1)为S中的元素,称之为函数
f
(
x
1
,
x
2
,
…
,
x
n
)
f(x_1, x_2, \dots, x_n)
f(x1,x2,…,xn)对应小项的系数。
ADD可以看做是对小项的隐式列举,所以ADD可以用小项的系数矩阵来表示。
例如,当n=2时,函数f (x1, x2)的小项系数矩阵为:
[
f
(
0
,
0
)
f
(
0
,
1
)
f
(
1
,
0
)
f
(
1
,
1
)
]
\begin{bmatrix}f(0,0)&f(0,1)\\f(1,0)&f(1,1)\end{bmatrix}
[f(0,0)f(1,0)f(0,1)f(1,1)]
ADD基本操作:
1、布尔操作
2、算术操作
3、提取操作(Abstraction Operation)
1、布尔操作--ITE (if-then-else)操作
定义 若已知具有相同变量序
π
:
x
1
<
x
2
<
⋯
<
x
n
\pi:x_1<x_2<\dots<x_n
π:x1<x2<⋯<xn的ADD f,g和h,且f为只具有0和1终结点的ADD,则
I
T
E
(
f
,
g
,
h
)
=
f
⋅
g
+
f
′
⋅
h
{\rm ITE}( f, g, h) = f \cdot g+f'\cdot h
ITE(f,g,h)=f⋅g+f′⋅h。
如果用
D
f
D^f
Df,
D
g
D^g
Dg,
D
h
D^h
Dh和
D
I
D^I
DI分别表示f, g, h和
I
T
E
(
f
,
g
,
h
)
{\rm ITE}( f, g, h)
ITE(f,g,h)的小项系数的集合,则:
D
f
=
{
d
1
f
,
…
,
d
q
f
}
=
{
f
(
0
,
0
,
…
,
0
)
,
f
(
0
,
0
,
…
,
1
)
,
…
,
f
(
1
,
1
,
…
,
1
)
}
D^f=\{d^f_1,\dots,d^f_q\}=\{f(0,0,\dots,0),f(0,0,\dots,1),\dots ,f(1,1,\dots,1)\}
Df={d1f,…,dqf}={f(0,0,…,0),f(0,0,…,1),…,f(1,1,…,1)}
D
g
=
{
d
1
g
,
…
,
d
q
g
}
=
{
g
(
0
,
0
,
…
,
0
)
,
g
(
0
,
0
,
…
,
1
)
,
…
,
g
(
1
,
1
,
…
,
1
)
}
D^g=\{d^g_1,\dots,d^g_q\}=\{g(0,0,\dots,0),g(0,0,\dots,1),\dots ,g(1,1,\dots,1)\}
Dg={d1g,…,dqg}={g(0,0,…,0),g(0,0,…,1),…,g(1,1,…,1)}
D
h
=
{
d
1
h
,
…
,
d
q
h
}
=
{
h
(
0
,
0
,
…
,
0
)
,
h
(
0
,
0
,
…
,
1
)
,
…
,
h
(
1
,
1
,
…
,
1
)
}
D^h=\{d^h_1,\dots,d^h_q\}=\{h(0,0,\dots,0),h(0,0,\dots,1),\dots ,h(1,1,\dots,1)\}
Dh={d1h,…,dqh}={h(0,0,…,0),h(0,0,…,1),…,h(1,1,…,1)}
其中
f
(
⋅
)
∈
{
0
,
1
}
f (\cdot)\in\{0,1\}
f(⋅)∈{0,1},
g
(
⋅
)
∈
S
g(\cdot)\in S
g(⋅)∈S,
h
(
⋅
)
∈
S
,
q
=
2
n
h(\cdot)\in S, q=2n
h(⋅)∈S,q=2n。
D
I
=
{
i
t
e
(
d
1
f
,
d
1
g
,
d
1
h
)
,
i
t
e
(
d
2
f
,
d
2
g
,
d
2
h
)
,
…
,
i
t
e
(
d
q
f
,
d
q
g
,
d
q
h
)
}
D^I=\{{\rm ite}(d^f_1,d^g_1,d^h_1),{\rm ite}(d^f_2,d^g_2,d^h_2),\dots,{\rm ite}(d^f_q,d^g_q,d^h_q)\}
DI={ite(d1f,d1g,d1h),ite(d2f,d2g,d2h),…,ite(dqf,dqg,dqh)}
由定义可知
d i f d^f_i dif | d i g d^g_i dig | d i h d^h_i dih | i t e ( d 1 f , d 1 g , d 1 h ) {\rm ite}(d^f_1,d^g_1,d^h_1) ite(d1f,d1g,d1h) |
---|---|---|---|
1 | - | - | d i g d^g_i dig |
0 | - | - | d i h d^h_i dih |
- | - | = d i g =d^g_i =dig | d i g d^g_i dig |
- | 1 | 0 | d i f d^f_i dif |
例:已知伪布尔函数f、g和h对应的系数矩阵
M
f
M_f
Mf,
M
g
M_g
Mg和
M
h
M_h
Mh,分别如下所示,试构造一个用于表示函数
I
=
f
g
+
f
′
h
I = f g+f ' h
I=fg+f′h的ADD:
M
f
=
[
1
0
0
0
1
1
0
0
1
1
1
0
1
1
1
1
]
M
g
=
[
3
3
3
3
3
3
3
3
5
5
5
5
5
5
5
5
]
M
h
=
[
1
1
4
4
1
1
4
4
0
0
2
2
0
0
2
2
]
M_f=\begin{bmatrix}1&0&0&0\\1&1&0&0\\1&1&1&0\\1&1&1&1\end{bmatrix} M_g=\begin{bmatrix}3&3&3&3\\3&3&3&3\\5&5&5&5\\5&5&5&5\end{bmatrix} M_h=\begin{bmatrix}1&1&4&4\\1&1&4&4\\0&0&2&2\\0&0&2&2\end{bmatrix}
Mf=⎣⎢⎢⎡1111011100110001⎦⎥⎥⎤Mg=⎣⎢⎢⎡3355335533553355⎦⎥⎥⎤Mh=⎣⎢⎢⎡1100110044224422⎦⎥⎥⎤
三个矩阵的ADD为
从三个系数矩阵中可以得到I的系数矩阵 M I = [ 3 1 4 4 3 3 4 4 5 5 5 2 5 5 5 5 ] M_I=\begin{bmatrix}3&1&4&4\\3&3&4&4\\5&5&5&2\\5&5&5&5\end{bmatrix} MI=⎣⎢⎢⎡3355135544554425⎦⎥⎥⎤
2、算术操作
定义 若已知表示具有相同变量序
π
:
x
1
<
x
2
<
⋯
<
x
n
\pi:x_1<x_2<\dots<x_n
π:x1<x2<⋯<xn的伪布尔函数
ϕ
\phi
ϕ和
φ
\varphi
φ的ADD f和g,及二元运算符op,则
A
p
p
l
y
(
f
,
g
,
o
p
)
=
f
⟨
o
p
⟩
g
{\rm Apply} (f, g, op) = f \langle op \rangle g
Apply(f,g,op)=f⟨op⟩g .
op:
+
+
+、
−
-
−、
×
\times
×、
÷
\div
÷、min和max等算术操作。
A
p
p
l
y
(
f
,
g
,
o
p
)
{\rm Apply} ( f, g, op)
Apply(f,g,op)操作的本质:设
D
f
D^f
Df、
D
g
D^g
Dg和
D
A
D^A
DA分别表示f、g和
A
p
p
l
y
(
f
,
g
,
o
p
)
{\rm Apply} ( f, g, op)
Apply(f,g,op)的小项系数的集合,则:
D
f
=
{
d
1
f
,
…
,
d
q
f
}
=
{
f
(
0
,
0
,
…
,
0
)
,
f
(
0
,
0
,
…
,
1
)
,
…
,
f
(
1
,
1
,
…
,
1
)
}
D^f=\{d^f_1,\dots,d^f_q\}=\{f(0,0,\dots,0),f(0,0,\dots,1),\dots ,f(1,1,\dots,1)\}
Df={d1f,…,dqf}={f(0,0,…,0),f(0,0,…,1),…,f(1,1,…,1)}
D
g
=
{
d
1
g
,
…
,
d
q
g
}
=
{
g
(
0
,
0
,
…
,
0
)
,
g
(
0
,
0
,
…
,
1
)
,
…
,
g
(
1
,
1
,
…
,
1
)
}
D^g=\{d^g_1,\dots,d^g_q\}=\{g(0,0,\dots,0),g(0,0,\dots,1),\dots ,g(1,1,\dots,1)\}
Dg={d1g,…,dqg}={g(0,0,…,0),g(0,0,…,1),…,g(1,1,…,1)}
D A = { d 1 f ⟨ o p ⟩ d 1 g , … , d q f ⟨ o p ⟩ d q g } D^A=\{d^f_1\langle op \rangle d^g_1,\dots,d^f_q\langle op \rangle d^g_q\} DA={d1f⟨op⟩d1g,…,dqf⟨op⟩dqg}
例:已知伪布尔函数f和g对应的系数矩阵
M
f
M_f
Mf和
M
g
M_g
Mg,分别如下所示,试构造一个用于表示函数
A
=
f
+
g
A = f +g
A=f+g的ADD
M
f
=
[
0
0
1
1
0
0
1
1
1
1
0
0
1
1
0
0
]
M
g
=
[
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
]
M_f=\begin{bmatrix}0&0&1&1\\0&0&1&1\\1&1&0&0\\1&1&0&0\end{bmatrix} M_g=\begin{bmatrix}3&3&3&3\\3&3&3&3\\2&2&2&2\\2&2&2&2\end{bmatrix}
Mf=⎣⎢⎢⎡0011001111001100⎦⎥⎥⎤Mg=⎣⎢⎢⎡3322332233223322⎦⎥⎥⎤
可以得到A的系数矩阵
M
A
=
[
3
3
4
4
3
3
4
4
3
3
2
2
3
3
2
2
]
M_A=\begin{bmatrix}3&3&4&4\\3&3&4&4\\3&3&2&2\\3&3&2&2\end{bmatrix}
MA=⎣⎢⎢⎡3333333344224422⎦⎥⎥⎤
设行以
[
x
0
′
x
1
′
,
x
0
x
1
′
,
x
0
′
x
1
,
x
0
x
1
]
[x_0'x_1',x_0x_1',x_0'x_1,x_0x_1]
[x0′x1′,x0x1′,x0′x1,x0x1]标记,列以
[
y
0
′
y
1
′
,
y
0
y
1
′
,
y
0
′
y
1
,
y
0
y
1
]
[y_0'y_1',y_0y_1',y_0'y_1,y_0y_1]
[y0′y1′,y0y1′,y0′y1,y0y1]标记,则f,g,A的ADD:
3、提取操作(Abstraction Operation)
通过对函数变量的提取可减少函数维数。例如,当函数表示的是一个
N
×
N
(
N
=
2
p
)
N\times N(N=2p)
N×N(N=2p)的矩阵时,设矩阵行和列分别由布尔变量
x
0
,
x
1
,
…
,
x
p
x_0,x_1,\dots,x_p
x0,x1,…,xp和
y
0
,
y
1
,
…
,
y
p
y_0,y_1,\dots,y_p
y0,y1,…,yp表示,则通过对矩阵提取行变量
x
0
,
x
1
,
…
,
x
p
x_0,x_1,\dots,x_p
x0,x1,…,xp,便可得到行向量,即
1
×
N
1\times N
1×N的矩阵,从而减少原矩阵的维数
f
x
o
p
(
y
)
=
∖
x
o
p
f
(
u
)
=
o
p
1
⃗
x
=
0
⃗
f
(
u
)
,
u
=
x
y
‾
∈
{
x
0
x
1
…
x
p
y
0
y
1
…
y
p
}
f^{op}_ \bm x(\bm y)=\setminus^{op}_\bm xf(u)=\underset{\bm x=\vec 0}{\overset{\vec 1}{op}}f(u),u=\overline{\bm x\bm y}\in\{x_0x_1\dots x_py_0y_1\dots y_p\}
fxop(y)=∖xopf(u)=x=0op1f(u),u=xy∈{x0x1…xpy0y1…yp}
例如,假设函数
f
=
A
(
X
,
Y
)
f = A(X,Y)
f=A(X,Y)表示某个
n
×
m
n\times m
n×m矩阵
M
M
M,其中
X
=
{
x
0
,
x
1
,
…
,
x
p
}
(
p
=
l
o
g
2
n
)
X=\{x_0,x_1,\dots,x_p\}(p=log_2n)
X={x0,x1,…,xp}(p=log2n)是行变量编码,
Y
=
{
y
0
,
y
1
,
…
,
y
q
}
(
q
=
l
o
g
2
m
)
Y =\{y_0,y_1,\dots,y_q\}(q=log_2m)
Y={y0,y1,…,yq}(q=log2m)是列变量编码。
∖
X
+
A
(
X
,
Y
)
\setminus^+_XA(X,Y)
∖X+A(X,Y):对同一列元素求和,其结果是一个
1
×
m
1\times m
1×m 矩阵
∖
X
×
A
(
X
,
Y
)
\setminus^\times_XA(X,Y)
∖X×A(X,Y):对同一列元素求积,其结果是一个
1
×
m
1\times m
1×m矩阵
∖
Y
m
i
n
A
(
X
,
Y
)
\setminus^{min}_Y A(X,Y)
∖YminA(X,Y):求每一行元素的最小值,其结果是一个
n
×
1
n\times 1
n×1矩阵
例:给出矩阵
f
=
A
(
X
,
Y
)
f = A(X,Y)
f=A(X,Y),计算
∖
X
+
A
(
X
,
Y
)
\setminus^+_XA(X,Y)
∖X+A(X,Y),
∖
Y
m
i
n
A
(
X
,
Y
)
\setminus^{min}_Y A(X,Y)
∖YminA(X,Y)
A
=
[
1
2
3
4
5
6
7
8
0
0
1
2
2
2
2
2
]
A=\begin{bmatrix}1&2&3&4\\5&6&7&8\\0&0&1&2\\2&2&2&2\end{bmatrix}
A=⎣⎢⎢⎡1502260237124822⎦⎥⎥⎤
计算有
∖
X
+
A
(
X
,
Y
)
=
[
8
10
13
16
]
∖
Y
m
i
n
A
(
X
,
Y
)
=
[
1
5
0
2
]
\setminus^+_XA(X,Y)=\begin{bmatrix}8&10&13&16\end{bmatrix}\quad\setminus^{min}_Y A(X,Y)=\begin{bmatrix}1\\5\\0\\2\end{bmatrix}
∖X+A(X,Y)=[8101316]∖YminA(X,Y)=⎣⎢⎢⎡1502⎦⎥⎥⎤
例2:给出矩阵
f
=
A
(
X
,
Y
)
f = A(X,Y)
f=A(X,Y),设行以
[
x
0
′
x
1
′
,
x
0
x
1
′
,
x
0
′
x
1
,
x
0
x
1
]
[x_0'x_1',x_0x_1',x_0'x_1,x_0x_1]
[x0′x1′,x0x1′,x0′x1,x0x1]标记,列以
[
y
0
′
y
1
′
,
y
0
y
1
′
,
y
0
′
y
1
,
y
0
y
1
]
[y_0'y_1',y_0y_1',y_0'y_1,y_0y_1]
[y0′y1′,y0y1′,y0′y1,y0y1]标记。
A
=
[
1
5
0
2
2
6
0
2
3
7
1
2
4
8
2
2
]
A=\begin{bmatrix}1&5&0&2\\2&6&0&2\\3&7&1&2\\4&8&2&2\end{bmatrix}
A=⎣⎢⎢⎡1234567800122222⎦⎥⎥⎤
则
∖
{
x
0
,
y
0
}
+
A
(
X
,
Y
)
=
∖
{
y
0
}
+
B
(
X
,
Y
)
=
[
14
4
22
7
]
\setminus^+_{\{x_0,y_0\}}A(X,Y)=\setminus^+_{\{y_0\}}B(X,Y)=\begin{bmatrix}14&4\\22&7\end{bmatrix}
∖{x0,y0}+A(X,Y)=∖{y0}+B(X,Y)=[142247]
∖
{
x
0
,
x
1
,
y
0
}
m
i
n
A
(
X
,
Y
)
=
∖
{
y
0
}
m
i
n
C
(
X
,
Y
)
=
[
1
0
]
\setminus^{min}_{\{x_0,x_1,y_0\}}A(X,Y)=\setminus^{min}_{\{y_0\}}C(X,Y)=\begin{bmatrix}1&0\end{bmatrix}
∖{x0,x1,y0}minA(X,Y)=∖{y0}minC(X,Y)=[10]
其中
B
(
X
,
Y
)
=
[
3
11
0
4
7
15
3
4
]
B(X,Y)=\begin{bmatrix}3&11&0&4\\7&15&3&4\end{bmatrix}
B(X,Y)=[3711150344],
C
(
X
,
Y
)
=
[
1
5
0
2
]
C(X,Y)=\begin{bmatrix}1&5&0&2\end{bmatrix}
C(X,Y)=[1502]
这里如果细心的话可以注意到之前所有设计出的行标记和列标记是故意没有按照枚举顺序。
例3:已知ADD,求 ∖ { x 0 , y 0 } + A ( X , Y ) \setminus^+_{\{x_0,y_0\}}A(X,Y) ∖{x0,y0}+A(X,Y)
我们令
r
u
r_u
ru代表提取操作中步骤的子图。例如
r
=
∖
{
x
0
,
y
0
}
+
f
(
u
)
r_{}=\setminus^+_{\{x_0,y_0\}}f(u)
r=∖{x0,y0}+f(u)
r
1
=
∖
{
y
0
}
+
f
(
u
)
∣
x
0
=
1
r_{1}=\setminus^+_{\{y_0\}}f(u)|_{x_0=1}
r1=∖{y0}+f(u)∣x0=1
r
10
=
∖
{
y
0
}
+
f
(
u
)
∣
x
0
=
1
,
x
1
=
0
r_{10}=\setminus^+_{\{y_0\}}f(u)|_{x_0=1,x_1=0}
r10=∖{y0}+f(u)∣x0=1,x1=0
r
101
=
∖
{
}
+
f
(
u
)
∣
x
0
=
1
,
x
1
=
0
,
y
0
=
1
r_{101}=\setminus^+_{\{\}}f(u)|_{x_0=1,x_1=0,y_0=1}
r101=∖{}+f(u)∣x0=1,x1=0,y0=1
在达到形式
r
a
b
c
r_{abc}
rabc下可以发现提取操作下没有元素需要提取。
所以
r
a
b
c
=
∖
{
}
+
f
(
u
)
∣
x
0
=
a
,
x
1
=
b
,
y
0
=
c
=
f
(
u
)
∣
x
0
=
a
,
x
1
=
b
,
y
0
=
c
r_{abc}=\setminus^+_{\{\}}f(u)|_{x_0=a,x_1=b,y_0=c}=f(u)|_{x_0=a,x_1=b,y_0=c}
rabc=∖{}+f(u)∣x0=a,x1=b,y0=c=f(u)∣x0=a,x1=b,y0=c
即本题下形如
r
a
b
c
r_{abc}
rabc的提取操作的子图就是ADD的子图。
我们又知
r
a
b
=
∖
{
y
0
}
+
f
(
u
)
∣
x
0
=
a
,
x
1
=
b
=
Σ
y
^
0
f
(
u
)
∣
x
0
=
a
,
x
1
=
b
,
y
0
=
y
^
0
=
f
(
u
)
∣
x
0
=
a
,
x
1
=
b
,
y
0
=
0
+
f
(
u
)
∣
x
0
=
a
,
x
1
=
b
,
y
0
=
1
=
r
a
b
0
+
r
a
b
1
r_{ab}=\setminus^+_{\{y_0\}}f(u)|_{x_0=a,x_1=b}\\ =\underset{\hat y_0}\Sigma f(u)|_{x_0=a,x_1=b,y0=\hat y_0}\\ =f(u)|_{x_0=a,x_1=b,y0=0}+f(u)|_{x_0=a,x_1=b,y0=1}\\ =r_{ab0}+r_{ab1}
rab=∖{y0}+f(u)∣x0=a,x1=b=y^0Σf(u)∣x0=a,x1=b,y0=y^0=f(u)∣x0=a,x1=b,y0=0+f(u)∣x0=a,x1=b,y0=1=rab0+rab1
即
r
a
b
=
A
p
p
l
y
(
r
a
b
0
,
r
a
b
1
,
+
)
r_{ab}={\rm Apply}(r_{ab0},r_{ab1},+)
rab=Apply(rab0,rab1,+)
对于
r
a
r_a
ra
r
a
=
∖
{
y
0
}
+
f
(
u
)
∣
x
0
=
a
=
x
1
∖
{
y
0
}
+
f
(
u
)
∣
x
0
=
a
,
x
1
=
1
+
x
1
′
∖
{
y
0
}
+
f
(
u
)
∣
x
0
=
a
,
x
1
=
0
=
x
1
r
a
1
+
x
1
′
r
a
0
=
I
T
E
(
x
1
,
r
a
1
,
r
a
0
)
r_a=\setminus^+_{\{y_0\}}f(u)|_{x_0=a}\\ =x_1\setminus^+_{\{y_0\}}f(u)|_{x_0=a,x_1=1}+x_1'\setminus^+_{\{y_0\}}f(u)|_{x_0=a,x_1=0}\\ =x_1r_{a1}+x_1'r_{a0}\\ ={\rm ITE}(x_1,r_{a1},r_{a0})
ra=∖{y0}+f(u)∣x0=a=x1∖{y0}+f(u)∣x0=a,x1=1+x1′∖{y0}+f(u)∣x0=a,x1=0=x1ra1+x1′ra0=ITE(x1,ra1,ra0)
同理可得
r
=
A
p
p
l
y
(
r
0
,
r
1
,
+
)
r={\rm Apply}(r_{0},r_{1},+)
r=Apply(r0,r1,+)
可以看到这整个过程就是二叉结构自底向上构建。这也是提取操作的计算步骤。
需要提取的元素就是用apply运算,不需要的则是ite运算