在数学中,有限布尔函数是形如如下形式的函数 f:Bk→B,这里的 B={0,1} 是布尔域,而 k 是非负整数。
实数表示
任意的布尔函数 f(x):{0,1}n→{0,1} 可以被唯一的表示为一个多线性多项式 (Multilinear Polynomials):
f∗(x)=a∈{0,1}n∑f(a)i:ai=1∏xii:ai=0∏(1−xi)
也可以表示为:
f(x)=S⊆[n]∑f^(S)χS(x),
其中 x=(x1,…,xn),χS(x)=∏i∈Sxi 是多项式中的各个单项式,我们称之为奇偶校验函数 (parity function),f^(S) 是各个单项式的系数。
由于输入变量 xi 只能取两个值,任意高次幂函数 xi2,xi3 等价于 xi(在布尔域)或在常数 (在 ± 域)。因此,这个多项式中不会出现 xi2,每一项都是不同变量的一次乘积。这就是多线性的含义
举个例子来说:
对于 f(x1,x2)=max(x1,x2) 可以被等价表示为 f(x1,x2)=21+21x1+21x2−21x1x2。
这个时候就能联系上傅立叶变换了,上面的式子前面的系数可以视为频谱系数,而后面的多项式可以视为正交基函数。
coefficients measure how close f is to basis functions
这个变换可以通过 Walsh-Hadamard Transform 得到:
F^=2n1HnF
其中 F 是把函数的所有输出值写成一个列向量 (长度为 2n),这里的向量 F^ 中的每个元素,就是多项式中对应项的系数。
其中 HN 为 Hadamard Matrix,可以通过下面递推式得到:
H0Hm=1=21(Hm−1Hm−1Hm−1−Hm−1)
也可以简写成下面式子:
Hn=2nnHn−1
还可以使用 Kronecker 积得到:
Hn=H1⊗Hn−1
关于 Hadamard Matrix 具有很好的性质:
- 正交性:HNHNT=NI
- 对称性:HN=HNT
- 自逆性:HN−1=N1HN
另一种多项式 (ANF)
如果这里的多线性多项式指代的是代数范式 (Algebraic Normal Form,ANF),即在 GF(2) 上形如 x1⊕x1x2 的多项式。
它的求法不直接使用标准的 WHT,而是使用结构相同,但是运算在 GF(2) 下进行的变换,通常称为快速莫比乌斯变换 (Fast Moebius Transform)
对于与门 x1AND x2
我们有真值表:
x10011x20101x1∧x20001
因为变换在 {1,−1} 生效,所以我们做一下映射。
z111−1−1z20−11−1F(z)111−1
我们有:
11111−11−111−1−11−1−11111−1=1+1+1−11−1+1−(−1)1+1−1−(−1)1−1−1−1=222−2
再乘以归一化因子 2n1=41:
F^=[0.5,0.5,0.5,−0.5]T
你可能意识到了这样计算实际上是有顺序的:
一般来说,我们通常按照整数 0 到 2n−1 的二进制表示来排列
0→0001→0012→010这样的顺序