代数正规型
一、代数正规型表示的定义
代数正规型(Algebraic Normal Form, ANF)是布尔函数在二元域(GF(2))上的多项式表示形式
对于一个n元布尔函数 \(g(x_1, x_2, \dots, x_n)\),其ANF可表示为:
\(
g(x) = \bigoplus_{a \in \mathbb{Z}_2^n} c_a \cdot x^a
\)
其中:
- \(\oplus\) 是模2加(异或)
- \(x^a = x_1^{a_1} x_2^{a_2} \cdots x_n^{a_n}\)(当 \(a_i = 0\) 时,\(x_i^{a_i} = 1\);当 \(a_i = 1\) 时,\(x_i^{a_i} = x_i\))
- \(c_a \in \{0, 1\}\) 是系数
- \(\text{wt}(a) = a_1 + a_2 + \cdots + a_n\) 是向量 \(a\) 的重量(即非零分量的个数)
- 函数的次数是所有非零系数 \(c_a\) 中 \(\text{wt}(a)\) 的最大值
二、代数正规型系数的求解方法
系数 \(c_a\) 的计算公式为:
\(
c_a = \bigoplus_{x \in \mathbb{Z}_2^n, \, x \leq a} g(x)
\)
其中:
- \(x \leq a\) 表示逐位与运算(即 \(x_i \leq a_i\) 对所有 \(i\) 成立,等价于 \(x \, \& \, a = x\)
步骤说明:
- 遍历所有可能的输入向量 \(x\):对于每个 \(a \in \mathbb{Z}_2^n\),需要遍历所有满足 \(x \leq a\) 的 \(x\)
- 计算 \(g(x)\) 的模2和:将所有满足条件的 \(g(x)\) 进行异或运算,得到 \(c_a\)
定理的证明思路:
- 通过交换求和顺序和布尔函数的性质,可以证明 \(c_a\) 的计算公式
- 特别地,当 \(a = (1, 1, \dots, 1)\) 时,\(c_a\) 是 \(g(x)\) 在所有输入上的模2和
三、例
例1
布尔函数:
\(
g(x_1, x_2, x_3, x_4) = x_1 \oplus x_2 x_3 \oplus x_1 x_2 x_3 \oplus x_1 x_2 x_3 x_4
\)
函数已经是ANF形式,系数为:
- \(c_{1000} = 1\)(对应 \(x_1\)),
- \(c_{0110} = 1\)(对应 \(x_2 x_3\)),
- \(c_{1110} = 1\)(对应 \(x_1 x_2 x_3\)),
- \(c_{1111} = 1\)(对应 \(x_1 x_2 x_3 x_4\))
次数:最高次项是 \(x_1 x_2 x_3 x_4\),次数为4
例2:
设布尔函数 \(g(x_1, x_2)\) 的真值表如下:
| \(x_1\) | \(x_2\) | \(g(x_1, x_2)\) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
计算系数:
- \(c_{00} = g(0,0) = 0\),
- \(c_{01} = g(0,0) \oplus g(0,1) = 0 \oplus 1 = 1\)(对应 \(x_2\)),
- \(c_{10} = g(0,0) \oplus g(1,0) = 0 \oplus 1 = 1\)(对应 \(x_1\)),
- \(c_{11} = g(0,0) \oplus g(0,1) \oplus g(1,0) \oplus g(1,1) = 0 \oplus 1 \oplus 1 \oplus 0 = 0\)
ANF表示:
\( g(x_1, x_2) = x_1 \oplus x_2 \)
次数:最高次项是1次。

浙公网安备 33010602011771号