参考文献:
- Lee C Y. Representation of switching circuits by binary-decision programs[J]. The Bell System Technical Journal, 1959, 38(4): 985-999.
- Masek W J. A fast algorithm for the string editing problem and decision graph complexity[D]. Massachusetts Institute of Technology, 1976.
- Borodin A, Dolev D, Fich F E, et al. Bounds for width two branching programs[C]//Proceedings of the fifteenth annual ACM symposium on Theory of computing. 1983: 87-93.
- Barrington D A. Bounded-width polynomial-size branching programs recognize exactly those languages in NC[C]//Proceedings of the eighteenth annual ACM symposium on Theory of computing. 1986: 1-5.
- Garg S, Gentry C, Halevi S, et al. Candidate indistinguishability obfuscation and functional encryption for all circuits[J]. SIAM Journal on Computing, 2016, 45(3): 882-929.
- Arora S, Barak B. Computational complexity: a modern approach[M]. Cambridge University Press, 2009.
- Complexity Zoo: N
文章目录
Binary-Decision Programs
1959 年,Lee 提出了一种布尔函数的新的表示:Binary-Decision Programs(二元决策程序),并证明了它表现的比布尔表达式在几乎所有的布尔函数上表现得更好。
Switching Circuit
二元决策程序的基本构成就是一系列的单个指令,形如
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,需要遵守如下规则:
- 程序中的每个 address,都对应电路中的一个 node
- 如果地址 A A A 的指令为 T x ; B , C T\ \ x;\ B,\ C T x; B, C,那么从 A A A 到 B B B 的走线上有一个开关 x ′ x' x′(当 x = 0 x=0 x=0 时闭合),从 A A A 到 C C C 的走线上有一个开关 x x x(当 x = 1 x=1 x=1 时闭合)
- 电路中的 input node 对应的地址为 1 1 1,output node 对应的地址为 I I I
在这个的规则下,构造的开关电路中可能有一些多余的变量,且电路中除了串联、并联,还有桥接、非平面电路等,同时其中的串并联很少。
Computation
令 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)。
Branching Program(BP)
之后 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 的形式化描述:
- 它是一个指令序列 ( j i , f i , g i ) , 1 ≤ i ≤ l (j_i,f_i,g_i),1\le i\le l (ji,fi,gi),1≤i≤l,其中 x j i x_{j_i} xji 是某个输入变量, f i , g i f_i,g_i fi,gi 是 [ w ] : = { 1 , 2 , ⋯ , w } [w]:=\{1,2,\cdots,w\} [w]:={1,2,⋯,w} 上的任意函数。
- 给定一组输入 x ∈ { 0 , 1 } n x \in \{0,1\}^n x∈{0,1}n 的赋值,根据 x j i = 0 / 1 x_{j_i}=0/1 xji=0/1 依次执行函数 f i f_i fi 或 g i g_i gi,最终输出 o u t = ( ◯ i = 1 l ( x j i ⋅ f i + ( 1 − x j i ) ⋅ g i ) ) ( [ w ] ) out=\left(\bigcirc_{i=1}^l (x_{j_i}\cdot f_{i} + (1-x_{j_i})\cdot g_{i})\right)([w]) out=(◯i=1l(xji⋅fi+(1−xji)⋅gi))([w])
- 根据 o u t out out 的值,决定布尔函数的输出值 0 / 1 0/1 0/1
如果 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) 置换函数。
Barrington’s theorem
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 电路可计算的语言里,也就落在 B W B P BWBP BWBP 内,从而 5-PBP 可以计算许多有用的函数。
我们说一类计算任务拥有 efficient parallel algorithms,如果:长度为 n n n 的输入,可以被包含 n O ( 1 ) n^{O(1)} nO(1) 个处理器的并行计算机,在时间 log O ( 1 ) n \log^{O(1)} n logO(1)n 内求解。复杂度类别 N C i NC^i NCi 定义为:the class of decision problems solvable by a uniform family of Boolean circuits, with polynomial size, depth O ( log i ( n ) ) O(\log^i(n)) O(logi(n)), and fan-in 2 2 2.
易知
N
C
i
⊆
N
C
i
+
1
⊆
N
C
⊆
P
NC^i \subseteq NC^{i+1} \subseteq NC \subseteq P
NCi⊆NCi+1⊆NC⊆P。语言
L
L
L 拥有高效的并行算法
⟺
L
∈
N
C
\iff L \in NC
⟺L∈NC,但我们仍然不知道
P
=
N
C
P = NC
P=NC 是否成立(所有的可以高效求解的问题,有没有高效的并行算法?),但是人们倾向于认为是 “NO”。
对称群 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 也是五圈。
- 不可交换群 G G G,它的换位子的集合 { a b a − 1 b − 1 : a , b ∈ G } \{aba^{-1}b^{-1}: a,b \in G\} {aba−1b−1:a,b∈G} 就是那些导致 G G G 不可交换的元素。
- 令 G ′ G' G′ 是由 { a b a − 1 b − 1 : a , b ∈ G } \{aba^{-1}b^{-1}: a,b \in G\} {aba−1b−1:a,b∈G} 生成的群(称为:导群/换位子群),则商群 G / G ′ G/G' G/G′ 可交换。
- 可交换的元素 a , b a,b a,b 的换位子是 a b a − 1 b − 1 = e aba^{-1}b^{-1}=e aba−1b−1=e,可交换群的换位子群满足 G ′ = { e } G'=\{e\} G′={e}
Construct the 5-PBP
由于与非门是完备的,因此所有的逻辑门都可以表示为 AND 以及 NOT 的组合,
- NOT-Gate:一条输入线识别
A
A
A,则输出线识别集合的补
A
ˉ
\bar A
Aˉ
- 若 B B B 识别 A A A 输出 σ \sigma σ,则它的补 B ′ B' B′ 识别 A ˉ \bar A Aˉ 输出 σ − 1 \sigma^{-1} σ−1
- AND-Gate:两条输入线分别识别
A
1
,
A
2
A_1,A_2
A1,A2,则输出线识别集合的交
A
1
∩
A
2
A_1 \cap A_2
A1∩A2
- 若 B 1 , B 2 B_1,B_2 B1,B2 识别 A 1 , A 2 A_1,A_2 A1,A2 输出 σ 1 ≠ σ 2 \sigma_1\neq\sigma_2 σ1=σ2,则它们的串联 B 1 B 2 B 1 ′ B 2 ′ B_1B_2B_1'B_2' B1B2B1′B2′ 识别 A 1 ∩ A 2 A_1 \cap A_2 A1∩A2 输出 σ 1 σ 2 σ 1 − 1 σ 2 − 1 \sigma_1\sigma_2\sigma_1^{-1}\sigma_2^{-1} σ1σ2σ1−1σ2−1,长度的增长因子为 4 4 4
- OR-Gate:两条输入线分别识别
A
1
,
A
2
A_1,A_2
A1,A2,则输出线识别集合的并
A
1
∪
A
2
=
A
ˉ
1
∩
ˉ
A
ˉ
2
A_1 \cup A_2 = \bar A_1 \bar\cap \bar A_2
A1∪A2=Aˉ1∩ˉAˉ2
- 识别 A ˉ 1 ∩ ˉ A ˉ 2 \bar A_1 \bar\cap \bar A_2 Aˉ1∩ˉAˉ2 的 5-PBP 的规模与识别 A 1 ∩ A 2 A_1 \cap A_2 A1∩A2 的 5-PBP 的规模完全相同。
- XOR-Gate:两条输入线分别识别
A
1
,
A
2
A_1,A_2
A1,A2,则输出线识别集合的对称差
A
1
△
A
2
=
(
A
∩
ˉ
B
ˉ
)
∩
ˉ
(
A
ˉ
∩
ˉ
B
)
A_1 \triangle A_2 = (A\bar\cap\bar B)\bar\cap(\bar A\bar\cap B)
A1△A2=(A∩ˉBˉ)∩ˉ(Aˉ∩ˉB)
- 我感觉 Barrington’s theorem 只考虑了 AND, OR, NOT 三种门?异或门的 5-PBP 实现,长度的增长因子为 4 3 4^3 43 而非 4 4 4
将一个布尔电路转化为 5-PBP 的方法如下:
- 在 Output-Gate 的位置开始递归,将识别 A A A 的深度 d d d 的布尔电路,转化为两个深度 d − 1 d-1 d−1 的分别识别 A 1 , A 2 A_1,A_2 A1,A2 的布尔电路以及一个 AND-Gate
- 接着对深度 d − 1 d-1 d−1 的两个布尔电路分别构造出 5-PBP,将它们按照 AND-Gate 的串联程序组合起来,如果两个 5-PBP 的输出 σ 1 = σ 2 = σ \sigma_1=\sigma_2=\sigma σ1=σ2=σ 则使用引理换一个 σ 2 = τ ≠ σ \sigma_2=\tau \neq \sigma σ2=τ=σ
- 对于深度 1 1 1 的布尔电路,它本身是一个 AND-Gate,可分解为两个 Input-Gate,而关联 x i x_i xi 的输入线就是识别集合 A = { x : x i = 1 } , ∣ A ∣ = 2 n − 1 A=\{x:x_i=1\}, |A|=2^{n-1} A={x:xi=1},∣A∣=2n−1 的最简单布尔函数,对应的 5-PBP 就是单条指令 ( i , e , σ ) (i,e,\sigma) (i,e,σ)
AND-Gate 的一种 5-PBP 构造如下(图片来源):