参考文献:
1959 年,Lee 提出了一种布尔函数的新的表示:Binary-Decision Programs(二元决策程序),并证明了它表现的比布尔表达式在几乎所有的布尔函数上表现得更好。
二元决策程序的基本构成就是一系列的单个指令,形如
T x ; A , B . T\ \ x;\ A,\ B. T x; A, B.
其中 x x x 是变量, A , B A,B A,B 是地址。当 x = 0 x=0 x=0 时,下一条指令从 A A A 处取出;当 x = 1 x=1 x=1 时,下一条指令从 B B B 处取出。
例如,如下的一个 Switching Circuit(开关电路):
令起始地址为 1 1 1,输出地址为 I I I,接地为 θ \theta θ(假设电路输入电流恒定,那么地址 I , θ I,\theta I,θ 恰有一个有电流)。那么它对应的二元决策程序为:
实际上,这就是对所有可能发生的事件的一个顺序描述(a sequential description of the possible events that may occur)。
从 Binary-Decision Programs 构造一个 Switching Circuit,需要遵守如下规则:
在这个的规则下,构造的开关电路中可能有一些多余的变量,且电路中除了串联、并联,还有桥接、非平面电路等,同时其中的串并联很少。
令 F ( n ) F(n) F(n) 表示全部的 n n n 变元布尔函数的收集。
给定一个 n n n 变元的布尔函数 f ∈ F ( n ) f \in F(n) f∈F(n),令 μ ( f ) \mu(f) μ(f) 是它的二元决策程序的指令数下界。定义最大下界:
μ n : = max { μ ( f ) ∣ f ∈ F ( n ) } \mu_n := \max\{\mu(f) \mid f \in F(n)\} μn:=max{μ(f)∣f∈F(n)}
Lee 证明了它的范围:
1 2 ⋅ 2 n n < μ n < 4 ⋅ 2 n n − 1 \dfrac{1}{2} \cdot \dfrac{2^n}{n} < \mu_n < 4 \cdot \dfrac{2^n}{n} - 1 21⋅n2n<μn<4⋅n2n−1
并且,给定任意 0 < ϵ < 1 0<\epsilon<1 0<ϵ<1,占比 1 − 2 − ϵ ⋅ 2 n 1-2^{-\epsilon \cdot 2^n} 1−2−ϵ⋅2n 的布尔函数的二元决策程序至少包含 2 n 2 n ( 1 − ϵ ) \dfrac{2^n}{2n}(1-\epsilon) 2n2n(1−ϵ) 条指令。
给定一组输入值 x ∈ { 0 , 1 } n x \in \{0,1\}^n x∈{0,1}n,二元决策程序至多执行其中的 n n n 条指令,每个变元 x i x_i xi 至多使用一次。
布尔函数的另一种自然表示是布尔表达式。非凡的二元逻辑算符有 16 − 2 − 4 = 10 16-2-4=10 16−2−4=10 个,但是 AND, OR, SUM(XOR)就可以表示同样的布尔函数了。如果 f ˉ \bar f fˉ 是包含 r r r 个任意算符的布尔表达式,那么就存在一个等价功能的 g ˉ \bar g gˉ,它包含至多 r r r 个算符,且仅由 AND, OR, XOR 组成。一般而言,AND-OR-SUM procedure 更加紧凑。
给定一个 n n n 变元的布尔函数 f ∈ F ( n ) f \in F(n) f∈F(n),令 ν ( f ) \nu(f) ν(f) 是它的布尔程序的指令数下界。定义最大下界:
ν n : = max { ν ( f ) ∣ f ∈ F ( n ) } \nu_n := \max\{\nu(f) \mid f \in F(n)\} νn:=max{ν(f)∣f∈F(n)}
Lee 证明了它的范围:
ν n ≥ 2 n 3 log 2 n + 8 \nu_n \ge \dfrac{2^n}{3\log_2n+8} νn≥3log2n+82n
当 n ≥ 64 n \ge 64 n≥64 时有 μ n < ν n \mu_n<\nu_n μn<νn,在渐进意义下二元决策程序的指令数远少于布尔程序的指令数。同时,布尔程序只能处理串并联电路,它的每一条指令都需要执行,本质上不适于计算。
不过,布尔电路表现得也没那么差。虽然绝大多数的布尔函数有着指数级长度 O ( 2 n / log n ) O(2^n/\log n) O(2n/logn) 的布尔表达式,但是一些特殊的布尔函数,其布尔表达式长度仅为 O ( n 2 / log n ) O(n^2/\log n) O(n2/logn),尤其是大多数的对称函数长度仅为 O ( n / log n ) O(n/\log n) O(n/logn)。
之后 Masek 进一步以 Decision Graphs 的名义研究了 Binary-Decision Programs。Bryant 提出的 OBDD 被广泛应用在程序分析中。Bryant 指出,程序的 intermediate information 实际上是被编码为了所有可能的分支目标。因此我们常用的一些布尔函数,例如整数乘法,它需要指数级 O ( 2 n ) O(2^n) O(2n) 的宽度。
在 BDFP83 中提出了 bounded-width branching programs:一个宽度为 w w w 的分支程序(记为 w − B P w-BP w−BP),它由形状 w × l w \times l w×l 矩形的节点数组表示,每个节点都被关联到一个输入变量以及两条边,当输入变量分别取 0 / 1 0/1 0/1 时 on/off 这两条边。
下面,我们给出 n n n 变元布尔函数的 w − B P w-BP w−BP 的形式化描述:
如果 f i , g i ∈ S w f_i,g_i \in S_w fi,gi∈Sw 都是 [ w ] [w] [w] 上的置换函数,则称为 permutation branching program(记为 w − P B P w-PBP w−PBP)。将对称群 S w S_w Sw 中的元素表示为 { 0 , 1 } w × w \{0,1\}^{w \times w} {0,1}w×w 上的置换矩阵,则 w − P B P w-PBP w−PBP 的形式化描述为:
给定两个不同的置换阵 A 0 , A 1 ∈ { 0 , 1 } w × w A_0,A_1\in \{0,1\}^{w \times w} A0,A1∈{0,1}w×w,PBP 是一个指令序列,
B P : = { ( i n p ( i ) , A i 0 , A i 1 ) } 1 ≤ i ≤ l BP:=\{(inp(i),A_i^0,A_i^1)\}_{1\le i\le l} BP:={(inp(i),Ai0,Ai1)}1≤i≤l
其中 i n p ( i ) ∈ [ n ] inp(i) \in [n] inp(i)∈[n] 是第 i i i 步所关联的 input bit position,置换阵 A i 0 , A i 1 ∈ { 0 , 1 } w × w A_i^0,A_i^1 \in \{0,1\}^{w \times w} Ai0,Ai1∈{0,1}w×w
这个 PBP 所计算的布尔函数为,
f B P , A 0 , A 1 ( x ) = { 0 , if ∏ i = 1 n A i x i n p ( i ) = A 0 1 , if ∏ i = 1 n A i x i n p ( i ) = A 1 undefined , otherwise f_{BP,A_0,A_1}(x) = \left\{\begin{array}{rcl} 0 ,&&\text{if }\ \prod_{i=1}^n A_i^{x_{inp(i)}} = A_0\\ 1 ,&&\text{if }\ \prod_{i=1}^n A_i^{x_{inp(i)}} = A_1\\ \text{undefined}, &&\text{otherwise} \end{array}\right. fBP,A0,A1(x)=⎩ ⎨ ⎧0,1,undefined,if ∏i=1nAixinp(i)=A0if ∏i=1nAixinp(i)=A1otherwise
其中 ∏ i = 1 n A i x i n p ( i ) \prod_{i=1}^n A_i^{x_{inp(i)}} ∏i=1nAixinp(i) 就是根据输入 x x x 的赋值,依次执行 A i x i n p ( i ) A_i^{x_{inp(i)}} Aixinp(i) 置换函数。
BDFP83 发现,一旦限制二元决策电路的宽度,那么 BP 程序就会变得混乱,其路径长度会大幅延长。他们研究了 2-BP,发现如果一个布尔函数可以被一个长度 L L L 的 2-BP 计算,那么它的布尔表达式长度至多为 3 L 3L 3L。令 S W 2 SW_2 SW2 表示所有可被 2-BP 计算的布尔函数,则任意的 g ∈ S W 2 g \in SW_2 g∈SW2 的 2-BP 的长度为 O ( n 2 ) O(n^2) O(n2)。也就是说,2-BP 的计算能力特别差。之后 Barrington 研究了 3-PBP,发现它的 power 依然十分受限。
1986 年,Barrington 研究了 5-PBP 的计算能力,发现 bounded-width polynomial-size BP 可计算的语言类 B W B P BWBP BWBP,等价于 (non-uniform) N C 1 NC^1 NC1。这里的 N C 1 NC^1 NC1 电路指的是扇入(fan-in)为 2 2 2,深度为(depth) O ( log n ) O(\log n) O(logn) 的布尔电路。由于大多数的函数都落在 N C 1 NC^1 NC1 电路可计算的语言里(majority function is in N C 1 NC^1 NC1),也就落在 B W B P BWBP BWBP 内,从而 5-PBP 可以计算大多数函数。
对称群 S 5 S_5 S5 中的元素,我们以 cycle 的形式表示:令 ( i j k ) (ijk) (ijk) 意为位置 i , j , k i,j,k i,j,k 上的元素按照一个圈循环移位。一般的置换形如 σ = ( 123 ) ( 45 ) \sigma=(123)(45) σ=(123)(45),我们将形如 σ = ( 12345 ) \sigma=(12345) σ=(12345) 的置换叫做 five-cycle(五圈)。易知 e = ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 ) e=(1)(2)(3)(4)(5) e=(1)(2)(3)(4)(5) 是单位元, ( k j i ) (kji) (kji) 是 ( i j k ) (ijk) (ijk) 的逆元。
给定集合 A ⊆ { 0 , 1 } n A \subseteq \{0,1\}^n A⊆{0,1}n,我们说一个 5-PBP 程序 B B B 可以 five-cycle recognize(识别)集合 A A A,如果存在一个五圈 σ ∈ S 5 \sigma \in S_5 σ∈S5(称为 output 输出),使得
B ( x ) = { e , if x ∉ A σ , if x ∈ A B(x) = \left\{\begin{array}{rcl} e ,&&\text{if }\ x \not\in A\\ \sigma ,&&\text{if }\ x \in A \end{array}\right. B(x)={e,σ,if x∈Aif x∈A
Barrington’s theorem:如果集合 A A A 可以被深度为 d d d 扇入为 2 2 2 的布尔电路所识别,那么集合 A A A 可以被某个长度至多为 4 d 4^d 4d 的 5-PBP 五圈识别。反之,如果集合 A A A 可以被长度为 l l l 的 w-BP 所识别,则它可以被扇入为 2 2 2 深度为 O ( C log l ) O(C\log l) O(Clogl) 的布尔电路所识别,其中的常数 C C C 取决于 w w w 的值。
也就是说,语言类 B W B P BWBP BWBP 等价于语言类 N C 1 NC^1 NC1,它们都等价于 polynomial-length 5-PBP 所能识别的语言的集合。
一些引理:
如果可五圈识别 A A A 的 B B B 的输出为 σ \sigma σ,给定任意的五圈 τ \tau τ,那么存在另一个可五圈识别 A A A 的相同长度的 B ′ B' B′ 的输出为 τ \tau τ
构造方法是:找到置换 θ \theta θ 满足 τ = θ σ θ − 1 \tau=\theta\sigma\theta^{-1} τ=θσθ−1,将 B B B 的每个 0 ≤ i ≤ l 0\le i\le l 0≤i≤l 对应的指令 ( j i , f i , g i ) (j_i,f_i,g_i) (ji,fi,gi) 都替换为 ( j i , θ f i θ − 1 , θ g i θ − 1 ) (j_i,\theta f_i\theta^{-1},\theta g_i\theta^{-1}) (ji,θfiθ−1,θgiθ−1)
容易验证 B ′ ( x ) = θ B ( x ) θ − 1 B'(x)=\theta B(x)\theta^{-1} B′(x)=θB(x)θ−1,当 x ∉ A x\notin A x∈/A 时输出 θ e θ − 1 = e \theta e\theta^{-1}=e θeθ−1=e,当 x ∈ A x\in A x∈A 时输出 θ σ θ − 1 = τ \theta \sigma\theta^{-1}=\tau θσθ−1=τ
如果集合 A A A 可被长度 l l l 的 B B B 五圈识别,那么它的补集 A ˉ \bar A Aˉ 也可以
构造方法是:设 B B B 的输出为 σ \sigma σ,且它的最后一个指令为 ( j l , μ , ν ) (j_l,\mu,\nu) (jl,μ,ν),将它替换为 ( j l , μ σ − 1 , ν σ − 1 ) (j_l,\mu\sigma^{-1},\nu\sigma^{-1}) (jl,μσ−1,νσ−1)
容易验证 B ′ ( x ) = B ( x ) σ − 1 B'(x)=B(x)\sigma^{-1} B′(x)=B(x)σ−1,当 x ∉ A x\notin A x∈/A 时输出 e σ − 1 = σ − 1 e\sigma^{-1}=\sigma^{-1} eσ−1=σ−1,当 x ∈ A x\in A x∈A 时输出 σ σ − 1 = e \sigma\sigma^{-1}=e σσ−1=e
任意的两个五圈 σ 1 ≠ σ 2 \sigma_1\neq\sigma_2 σ1=σ2,在群运算下不可交换,它们的 commutator(换位子/对易式) σ 1 σ 2 σ 1 − 1 σ 2 − 1 ≠ e \sigma_1\sigma_2\sigma_1^{-1}\sigma_2^{-1} \neq e σ1σ2σ1−1σ2−1=e 也是五圈。
由于与非门是完备的,因此所有的逻辑门都可以表示为 AND 以及 NOT 的组合,
将一个布尔电路转化为 5-PBP 的方法如下:
AND-Gate 的一种 5-PBP 构造如下(图片来源):