什么是disjoint-support?
这是原文The Disjunctive Decompositionof Logic Functions
的解释。
什么是布尔差分(boolean difference)?
∂ F / ∂ x i = F x i = 0 ⊕ F x i = 1 \partial F/\partial x_i = F_{x_i=0} \oplus F_{x_i=1} ∂F/∂xi=Fxi=0⊕Fxi=1,如果 ∂ F / ∂ x i \partial F/\partial x_i ∂F/∂xi恒等于0,则说明 F F F的取值与变量 x i x_i xi无关。如果不恒等于0,则称这一类的变量集合 S F S_F SF为布尔函数 F F F的support。
什么是disjoint-support?
如果有两个布尔函数 F F F和 G G G,如果他们的 s u p p o r t support support集合并集为空,即 S F ⋂ S G = ϕ S_F \bigcap S_G = \phi SF⋂SG=ϕ,则称这两个布尔函数是disjoint-support的。
什么是decomposition?
为什么要对布尔函数进行decomposition?
首先,若将一个复杂的二级布尔函数表示转换成一个多级的表示,则它可以将输入集中在更简单和更小的逻辑块中,从而减少了面积和互连。
其次,通过证明
F
F
F的子函数在计算中的独立性,揭示了布尔函数
F
F
F计算的并行性。
Disjunctive Decompositions
对布尔函数的
F
F
F的分解是通过寻找其他的更简单的函数
L
L
L和
A
i
A_i
Ai完成,能够使得,
F
(
x
i
,
.
.
.
,
x
n
)
=
L
(
A
1
(
x
1
,
.
.
.
)
,
A
2
(
x
1
,
.
.
.
)
,
.
.
.
,
A
k
(
x
1
,
.
.
.
)
)
(1)
F(x_i,...,x_n)=L(A_1(x_1,...), A_2(x_1,...),...,A_k(x_1,...)) \tag{1}
F(xi,...,xn)=L(A1(x1,...),A2(x1,...),...,Ak(x1,...))(1)
这个公式的意思就是将原始的布尔函数
F
F
F,拆分成
k
k
k个更小的函数
A
i
A_i
Ai,
A
i
A_i
Ai之间满足disjoint-support
,最后通过函数
L
L
L,将这些
A
i
A_i
Ai结合在一起。
定义1: 对于函数 L ( A 1 , . . . , A k ) L(A_1,...,A_k) L(A1,...,Ak), 如果存在 k k k个非常数disjoint-support函数 A 1 , . . . , A k , n > k > = 2 A_1,...,A_k,n > k >= 2 A1,...,Ak,n>k>=2满足等式(1),则称 F F F是reduce。如果任何 L L L都不能分解 F F F,则 F F F被称为prime。
函数 A i A_i Ai被称为 F F F的分解的形式输入(formal input)。 F F F的形式输入集合表示为 F / L F/L F/L,称为 F F F的分解列表(decomposition list)。我们称 F F F的disjunctive decomposition为满足等式(1)的任意 ( L , F / L ) (L,F/L) (L,F/L)组合。
如果F是可分解的,则可以将其分解描述为:
》有一个unique prime函数L将它分解,可以将它的formal input排列和互补(取反)。
》如果
L
L
L的support集合内元素个数
∣
S
L
∣
>
2
|S_L| > 2
∣SL∣>2,那么
F
/
L
F/L
F/L中的函数也是唯一确定的,可以将它的formal input排列和互补。(没太理解)
》如果
L
L
L的support集合内元素个数
∣
S
L
∣
=
2
|S_L| = 2
∣SL∣=2,那么F可以被精确地用以下方式之一分解:
(1)
我的理解是
L
L
L的support集合中只有
A
1
,
A
2
A_1,A_2
A1,A2,那么
F
=
A
1
+
A
2
F=A_1 + A_2
F=A1+A2,其中
L
L
L的功能即
O
R
OR
OR。
(2)
没懂。可能是F被分解成
F
=
A
1
+
A
2
‾
F=\overline{A_1+A_2}
F=A1+A2这样?
(3)
这里
F
F
F被分解成
F
=
A
1
⊕
A
2
F=A_1 \oplus A_2
F=A1⊕A2或者
F
=
A
1
⊙
A
2
F=A_1 \odot A_2
F=A1⊙A2。
Shannon- and disjunctive-decompositions
大概像这样,
目的是通过
F
0
F_0
F0和
F
1
F_1
F1的分解最终推断出
F
F
F的分解。
论文里说
F
F
F的分解和他的余因子之间的联系概念很简单。例如,如果一个函数
A
A
A属于
F
0
F_0
F0和
F
1
F_1
F1的分解树,则该函数
A
A
A一定属于
F
F
F的分解树。
不过,在实践中需要考虑几个案例和子案例。如下,
在函数
F
F
F的分解中,最上面的变量
z
z
z只能以以下四种方式中的一种出现:
接下来详细分析这四种情况。
case1
在这种情况中,
F
(
z
=
0
)
,
F
(
z
=
1
)
F ( z = 0), F ( z = 1)
F(z=0),F(z=1)其中一个必须是常数。假设
F
1
=
1
F_1=1
F1=1,则
F
=
F
0
+
z
F=F_0+z
F=F0+z,因此
F
F
F的分解类型是
O
R
OR
OR。且F的分解列表是
F
0
+
z
F_0+z
F0+z。
这个实际上是有点简化的,我们知道
F
=
z
‾
F
0
+
z
F
1
F=\overline{z}F_0+zF_1
F=zF0+zF1,那么当
F
1
=
1
F_1=1
F1=1的时候,这个式子就变为
F
=
z
‾
F
0
+
z
F=\overline{z}F_0+z
F=zF0+z,根据布尔化简,得到
F
0
+
z
F_0+z
F0+z。
case2
在这种情况下,需要
F
0
=
F
1
‾
F_0=\overline{F_1}
F0=F1。我们只要验证了
F
0
=
F
1
‾
F_0=\overline{F_1}
F0=F1,那么足以推断出
F
F
F的分解为
F
=
z
⊕
F
0
F=z \oplus F_0
F=z⊕F0。
因为当
z
=
0
z=0
z=0时,
F
=
0
⊕
F
0
=
F
0
F=0 \oplus F_0=F_0
F=0⊕F0=F0;当
z
=
1
z=1
z=1时,
F
=
1
⊕
F
0
=
F
0
‾
=
F
1
F=1 \oplus F_0=\overline{F_0}=F_1
F=1⊕F0=F0=F1。能够符合等式
F
=
z
‾
F
0
+
z
F
1
F=\overline{z}F_0+zF_1
F=zF0+zF1。
case3
情况3,指的是如果top variable z属于F的formal input的情况。
Case3.a
F
0
F_0
F0和
F
1
F_1
F1能够被同一个函数L分解。且
F
0
F_0
F0和
F
1
F_1
F1的分解列表(形式输入,formal input)是重合的,只有
A
(
z
=
0
)
A(z=0)
A(z=0)和
A
(
z
=
1
)
A(z=1)
A(z=1)不同。
假设,
F
0
F_0
F0和
F
1
F_1
F1的分解分别含有函数
A
0
A_0
A0和
A
1
A_1
A1,则
只要有
A
0
=
A
1
=
0
A_0=A_1=0
A0=A1=0或者
A
0
=
A
1
=
1
A_0=A_1=1
A0=A1=1就有,
F
0
(
A
0
=
0
)
=
F
1
(
A
1
=
0
)
F_0(A_0=0)=F_1(A_1=0)
F0(A0=0)=F1(A1=0) and
F
0
(
A
0
=
1
)
=
F
1
(
A
1
=
1
)
F_0(A_0=1)=F_1(A_1=1)
F0(A0=1)=F1(A1=1)。
这个例子的top variable选择的是变量a。
所以当
a
=
0
a=0
a=0,
F
0
=
M
a
j
o
r
i
t
y
(
b
,
c
+
e
,
f
g
)
F_0=Majority(b,c+e,fg)
F0=Majority(b,c+e,fg);当
a
=
1
a=1
a=1,
F
1
=
M
a
j
o
r
i
t
y
(
d
,
c
+
e
,
f
g
)
F_1=Majority(d,c+e,fg)
F1=Majority(d,c+e,fg)。这两个余因子的形式输入就分别是
b
,
c
+
e
,
f
g
b,c+e,fg
b,c+e,fg和
d
,
c
+
e
,
f
g
d,c+e,fg
d,c+e,fg。所以只要b和d相等就满足上面提到的推论。
这里就能看出,top variable
a
a
a就属于
F
F
F的一个形式输入
a
‾
b
+
a
d
\overline{a}b+ad
ab+ad,另外几个形式输入分别是
c
+
e
c+e
c+e,
f
g
fg
fg。 根据上面的等式(5),令
A
0
=
b
,
A
1
=
d
A_0=b,A_1=d
A0=b,A1=d。因此,可以推断出F的分解为
a
‾
b
+
a
d
,
c
+
e
,
f
g
\overline{a}b+ad,c+e,fg
ab+ad,c+e,fg。
如果函数
F
=
M
a
j
o
r
i
t
y
(
a
⊕
b
,
c
+
e
,
f
g
)
F=Majority(a\oplus b,c+e,fg)
F=Majority(a⊕b,c+e,fg),选择top variable为a。则当
a
=
0
a=0
a=0,
F
0
=
M
a
j
o
r
i
t
y
(
b
,
c
+
e
,
f
g
)
F_0=Majority(b,c+e,fg)
F0=Majority(b,c+e,fg);当
a
=
1
a=1
a=1,
F
1
=
M
a
j
o
r
i
t
y
(
b
‾
,
c
+
e
,
f
g
)
F_1=Majority(\overline{b},c+e,fg)
F1=Majority(b,c+e,fg)。根据case2,
A
1
=
A
0
‾
A_1=\overline{A_0}
A1=A0,令
A
0
=
b
,
A
1
=
b
‾
A_0=b,A_1=\overline{b}
A0=b,A1=b可以得到
A
=
z
‾
A
0
+
z
A
1
=
z
⊕
A
0
A=\overline{z}A_0+zA_1=z\oplus A_0
A=zA0+zA1=z⊕A0。因此F的分解列表包括
z
⊕
A
0
,
c
+
e
,
f
g
z\oplus A_0,c+e,fg
z⊕A0,c+e,fg。