用类FFT置换矩阵构造Bent函数
在构造Bent函数的过程中,类FFT置换矩阵发挥着重要作用。下面将详细介绍块对角置换矩阵和基于移位的置换矩阵在Bent函数构造中的应用。
块对角置换矩阵
块对角置换矩阵在Cooley - Tukey FFT算法的第n步中较为典型。这类矩阵可应用于功能表达式为不相交变量对之和的三元Bent函数。当变量数量n为奇数时,会包含$x_{i}^{2}$项,通常为了方便,会选择第一个或最后一个变量,即$x_1$或$x_n$作为平方项。
选择这类功能表达式的原因在于,块对角矩阵会对函数向量中长度为$3^r$($r = 1, 2, …, n - 1$)的子向量内的函数值进行置换。若将其应用于其他形式功能表达式确定的函数,由于所用矩阵对应的变量替换,可能会产生另一个Bent函数,也可能不会。
块大小的确定
以$n = 3$为例,函数向量长度为$3^3 = 27$,可拆分为长度为3或9的子向量。因此,块对角矩阵中可能的块维度为$(3×3)$或$(9×9)$。在使用基本置换矩阵时,块通常为$(3×3)$,但当单位矩阵相邻时,由于单位矩阵是对角矩阵,得到的块维度会更大。
应用示例
考虑函数$f(x_1, x_2) = x_1x_2$,其函数向量为$\mathbf{F} {x_1x_2} = [0, 0, 0, 0, 1, 2, 0, 2, 1]^T$。定义一个置换矩阵$\mathbf{P} {1,2} = diag(\mathbf{I}(1), \mathbf{X}_{1}^{T}, \mathbf{X}_1)$。
$x_1^{2}$作为两个变量的函数,其函数向量为$\mathbf{F} {x_1^{2}} = [0, 0, 0, 1, 1, 1, 1, 1, 1]^T$。那么$f = x_1x_2 \oplus x_1^{2}$的函数向量为$\mathbf{F} {x_1x_2 \oplus x_1^{2}} = \mathbf{F} {x_1x_2} \oplus \mathbf{F} {x_1^{2}} = [0, 0, 0, 1, 2, 0, 1, 0, 2]^T$。
同样的向量也可以通过将函数$f = x_1x_2$的函数向量$\mathbf{F}$与置换矩阵$\mathbf{P}_{1,2}$相乘得到:
P1,2 · Fx1x2 =
⎡
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0
⎤
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
·
⎡
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
0
0
0
0
1
2
0
2
1
⎤
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
=
[
0, 0, 0, 1, 2, 0, 1, 0, 2
]T
函数$f = x_1x_2 \oplus x_1^{2}$可通过谱不变操作$x_2 \to x_2 \oplus x_1$从$f = x_1x_2$得到。因此,将块对角置换矩阵$\mathbf{P}_{1,2}$应用于该函数,与变量$x_2$的这种替换产生的结果相同。
再考虑替换$x_1 \to x_1 \oplus x_2$,由$f = x_1x_2$构造的相应函数为$f = x_1x_2 \oplus x_2^{2}$,其函数向量为$\mathbf{F} = [0, 1, 1, 0, 2, 0, 0, 0, 2]^T$。该函数也可由多种置换矩阵构造,其中一个置换矩阵$\mathbf{P}_{2,2}$满足:
P2,2 · Fx1x2 =
⎡
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0
⎤
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
·
⎡
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
0
0
0
0
1
2
0
2
1
⎤
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
=
[
0, 1, 1, 0, 2, 0, 0, 0, 2
]T
矩阵$\mathbf{P}_{2,2}$不是块对角矩阵。这里有一个要求,即被替换变量$x_i$的索引$i$必须大于要添加的平方变量$x_j$的索引$j$。这个要求$i > j$源于置换矩阵的块对角结构。当$i < j$时,会得到所谓的基于移位的矩阵,后续会详细讨论。
特定块对角矩阵
考虑一类特定的块对角矩阵,用于执行$x_{i} \to k_1x_{i} \oplus k_2x_{j}^{2}$($k_1, k_2 \in {1, 2}$)的替换,条件是$i > j$。
对于$n$变量函数,对两个变量$i$和$j$进行变换的块对角置换矩阵定义为:
$\mathbf{P}
{i,j}(n) = diag (\mathbf{I}(n - j), \mathbf{M}(n - j), \mathbf{M}(n - j))$
其中,$\mathbf{M}(n - j) = \bigotimes
{r = 1}^{n - j} \mathbf{M}
r$,$\mathbf{M}_r = \begin{cases} \mathbf{M}, & \text{for } j = i \ \mathbf{I}(1), & \text{for } j \neq i \end{cases}$,$\mathbf{M} \in {\mathbf{X}_1, \mathbf{X}
{1}^{T}, \mathbf{Q}_1, \mathbf{N}_1}$,且$\mathbf{I}(0) = 1$。
要求最后两个矩阵相同,且参与变换的变量$x_i$和$x_j$满足$i > j$。这样,定义的块对角矩阵就能执行$x_{i} \to k_1x_{i} \oplus k_2x_{j}$的替换。根据所选矩阵$\mathbf{M}$的不同,会对$k_1$和$k_2$的不同可能值组合进行变量替换,具体对应关系如下表所示:
| 矩阵$\mathbf{M}$ | $k_1, k_2$ | 替换规则 |
| — | — | — |
| $\mathbf{X}
{1}^{T}$ | 1, 1 | $x
{i} \to x_{i} \oplus x_{k}^{2}$ |
| $\mathbf{X}
1$ | 1, 2 | $x
{i} \to x_{i} \oplus 2x_{k}^{2}$ |
| $\mathbf{Q}
1$ | 2, 1 | $x
{i} \to 2x_{i} \oplus x_{k}^{2}$ |
| $\mathbf{N}
1$ | 2, 2 | $x
{i} \to 2x_{i} \oplus 2x_{k}^{2}$ |
示例
以$n = 3$为例,考虑置换矩阵$\mathbf{V}
1 = diag(\mathbf{I}(2), \mathbf{I}(1) \otimes \mathbf{X}
{1}^{T}, \mathbf{I}(1) \otimes \mathbf{X}_{1}^{T})$。将其应用于函数$f = x_1x_2 \oplus x_3^{2}$的函数向量$\mathbf{F}$,得到:
$\mathbf{T}_1 = \mathbf{V}_1 \cdot \mathbf{F} = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 2, 2, 1, 0, 0, 2, 1, 1, 0, 0, 0, 2, 2, 2, 1]^T$
对应的功能表达式为$t_1(x_1, x_2, x_3) = x_3^{2} \oplus x_1x_2 \oplus x_1^{2} \oplus 2x_1^{2}x_3$,这是通过在起始函数$f(x_1, x_2, x_3) = x_1x_2 \oplus x_3^{2}$中进行替换$x_3 \to x_3 \oplus x_1^{2}$得到的。可以发现,初始函数的次数为2,而构造函数的次数为3,说明通过适当选择基本置换矩阵和应用的变量,块对角矩阵可用于提高Bent函数的次数。
以下是$n = 3$时,应用块对角类FFT置换矩阵从函数$f = x_1x_2 \oplus x_3^{2}$得到的Bent函数的相关信息:
| 序号 | 置换矩阵 | 替换规则 | 函数向量 | 功能表达式 |
| — | — | — | — | — |
| 1 | $\mathbf{V}
2 = diag(\mathbf{I}(2), \mathbf{X}
{1}^{T} \otimes \mathbf{I}(1), \mathbf{X}
{1}^{T} \otimes \mathbf{I}(1))$ | $x_2 \to x_2 \oplus x_1^{2}$ | $\mathbf{T}_2 = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 2, 0, 0, 1, 2, 2, 0, 1, 1]^T$ | $t_2(x_1, x_2, x_3) = x_3^{2} \oplus x_1x_2 \oplus x_1$ |
| 2 | $\mathbf{V}_3 = \mathbf{I}(1) \otimes diag(\mathbf{I}(1), \mathbf{X}
{1}^{T}, \mathbf{X}
{1}^{T})$ | $x_3 \to x_3 \oplus x_2^{2}$ | $\mathbf{T}_3 = [0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 2, 2, 1, 0, 0, 2, 0, 1, 1, 0, 0, 2, 2, 2, 1]^T$ | $t_3(x_1, x_2, x_3) = x_3^{2} \oplus 2x_2^{2}x_3 \oplus x_2^{2} \oplus x_1x_2$ |
| 3 | $\mathbf{V}_4 = diag(\mathbf{I}(2), \mathbf{I}(1) \otimes \mathbf{X}_1, \mathbf{I}(1) \otimes \mathbf{X}_1)$ | $x_3 \to x_3 \oplus 2x_1^{2}$ | $\mathbf{T}_4 = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 2, 0, 2, 0, 1, 0, 1, 0, 2, 0, 2, 1, 2]^T$ | $t_4(x_1, x_2, x_3) = x_3^{2} \oplus x_1x_2 \oplus x_3x_1^{2} \oplus x_1^{2}$ |
| 4 | $\mathbf{V}_5 = diag(\mathbf{I}(2), \mathbf{X}_1 \otimes \mathbf{I}(1), \mathbf{X}_1 \otimes \mathbf{I}(1))$ | $x_2 \to x_3 \oplus 2x_1^{2}$ | $\mathbf{T}_5 = [0, 1, 1, 0, 1, 1, 0, 1, 1, 2, 0, 0, 0, 1, 1, 1, 2, 2, 1, 2, 2, 0, 1, 1, 2, 0, 0]^T$ | $t_5(x_1, x_2, x_3) = x_3^{2} \oplus 2x_1 \oplus x_1x_2$ |
| 5 | $\mathbf{V}_6 = \mathbf{I}(1) \otimes diag(\mathbf{I}(1), \mathbf{X}_1, \mathbf{X}_1)$ | $x_3 \to x_3 \oplus 2x_2^{2}$ | $\mathbf{T}_6 = [0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 2, 1, 2, 0, 2, 0, 0, 1, 1, 0, 2, 0, 2, 1, 2]^T$ | $t_6(x_1, x_2, x_3) = x_3^{2} \oplus x_3x_2^{2} \oplus x_2^{2} \oplus x_1x_2$ |
| 6 | $\mathbf{V}_7 = diag(\mathbf{I}(2), \mathbf{I}(1) \otimes \mathbf{Q}_1, \mathbf{I}(1) \otimes \mathbf{Q}_1)$ | $x_3 \to 2x_3 \oplus x_1^{2}$ | $\mathbf{T}_7 = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 2, 0, 2, 0, 1, 0, 1, 0, 2, 0, 2, 1, 2]^T$ | $t_7(x_1, x_2, x_3) = x_3^{2} \oplus x_1^{2}x_3 \oplus x_1^{2} \oplus x_1x_2$ |
| 7 | $\mathbf{V}_8 = diag(\mathbf{I}(2), \mathbf{Q}_1 \otimes \mathbf{I}(1), \mathbf{Q}_1 \otimes \mathbf{I}(1))$ | $x_2 \to 2x_2 \oplus x_1^{2}$ | $\mathbf{T}_8 = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 2, 2, 0, 1, 1, 2, 0, 0, 2, 0, 0, 0, 1, 1, 1, 2, 2]^T$ | $t_8(x_1, x_2, x_3) = x_3^{2} \oplus x_1 \oplus 2x_1x_2$ |
| 8 | $\mathbf{V}_9 = \mathbf{I}(1) \otimes diag(\mathbf{I}(1), \mathbf{Q}
{1}^{T}, \mathbf{Q}
{1}^{T})$ | $x_3 \to 2x_3 \oplus x_2^{2}$ | $\mathbf{T}_9 = [0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 2, 1, 2, 0, 2, 0, 0, 1, 1, 0, 2, 0, 2, 1, 2]^T$ | $t_9(x_1, x_2, x_3) = x_3^{2} \oplus x_3x_2^{2} \oplus x_2^{2} \oplus x_1x_2$ |
| 9 | $\mathbf{V}
{10} = diag(\mathbf{I}(2), \mathbf{I}(1) \otimes \mathbf{N}
1, \mathbf{I}(1) \otimes \mathbf{N}_1)$ | $x_3 \to 2x_3 \oplus 2x_1^{2}$ | $\mathbf{T}
{10} = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 2, 2, 1, 0, 0, 2, 1, 1, 0, 0, 0, 2, 2, 2, 1]^T$ | $t_{10}(x_1, x_2, x_3) = x_3^{2} \oplus 2x_3x_1^{2} \oplus x_1^{2} \oplus x_1x_2$ |
| 10 | $\mathbf{V}
{11} = diag(\mathbf{I}(2), \mathbf{N}_1 \otimes \mathbf{I}(1), \mathbf{N}_1 \otimes \mathbf{I}(1))$ | $x_2 \to 2x_2 \oplus 2x_1^{2}$ | $\mathbf{T}
{11} = [0, 1, 1, 0, 1, 1, 0, 1, 1, 2, 0, 0, 1, 2, 2, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1]^T$ | $t_{11}(x_1, x_2, x_3) = x_3^{2} \oplus 2x_1 \oplus 2x_1x_2$ |
| 11 | $\mathbf{V}
{12} = \mathbf{I}(1) \otimes diag(\mathbf{I}(1), \mathbf{N}_1, \mathbf{N}_1)$ | $x_3 \to 2x_3 \oplus 2x_2^{2}$ | $\mathbf{T}
{12} = [0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 2, 2, 1, 0, 0, 2, 0, 1, 1, 0, 0, 2, 2, 2, 1]^T$ | $t_{12}(x_1, x_2, x_3) = x_3^{2} \oplus 2x_3x_2^{2} \oplus x_2^{2} \oplus x_1x_2$ |
| 12 | $\mathbf{V}
{13} = diag(\mathbf{I}(2), \mathbf{X}_1 \otimes \mathbf{X}_1, \mathbf{X}_1 \otimes \mathbf{X}_1)$ | $x_2 \to x_2 \oplus 2x_1^{2}$且$x_3 \to x_3 \oplus 2x_1^{2}$ | $\mathbf{T}
{13} = [0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 2, 0, 1, 0, 1, 2, 1, 2, 2, 1, 2, 1, 0, 1, 0, 2, 0]^T$ | $t_{13}(x_1, x_2, x_3) = x_3^{2} \oplus 2x_1 \oplus x_1x_2 \oplus x_1^{2}x_3 \oplus x_1^{2}$ |
| 13 | $\mathbf{V}
{14} = diag(\mathbf{I}(2), \mathbf{X}_1 \otimes \mathbf{Q}_1, \mathbf{X}_1 \otimes \mathbf{Q}_1)$ | $x_2 \to x_2 \oplus 2x_1^{2}$且$x_3 \to 2x_3 \oplus x_1^{2}$ | $\mathbf{T}
{14} = [0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 2, 0, 1, 0, 1, 2, 1, 2, 2, 1, 2, 1, 0, 1, 0, 2, 0]^T$ | $t_{14}(x_1, x_2, x_3) = x_3^{2} \oplus 2x_1 \oplus x_1x_2 \oplus x_1^{2} \oplus x_1^{2}x_3$ |
对于$n = 4$的情况,以下是一些块对角置换矩阵及其相关的替换规则:
| 置换矩阵 | 替换规则 |
| — | — |
| $\mathbf{P}
{4,1} = diag(\mathbf{I}(3), \mathbf{I}(2) \otimes \mathbf{X}
{1}^{T}, \mathbf{I}(2) \otimes \mathbf{X}
{1}^{T})$ | $x_4 = x_4 \oplus x_1^{2}$ |
| $\mathbf{P}
{4,1} = diag(\mathbf{I}(3), \mathbf{I}(2) \otimes \mathbf{X}
{1}^{T}, \mathbf{I}(2) \otimes \mathbf{X}
{1}^{T})$ | $x_4 = x_4 \oplus 2x_1^{2}$ |
| $\mathbf{P}
{4,1} = diag(\mathbf{I}(2) \otimes \mathbf{Q}_2, \mathbf{I}(2) \otimes \mathbf{Q}_1, \mathbf{I}(2) \otimes \mathbf{Q}_1)$ | $x_4 = 2x_4 \oplus x_1^{2}$ |
| $\mathbf{P}
{4,1} = diag(\mathbf{I}(2) \otimes \mathbf{Q}
2, \mathbf{I}(2) \otimes \mathbf{N}_1, \mathbf{I}(2) \otimes \mathbf{N}_1)$ | $x_4 = 2x_4 \oplus 2x_1^{2}$ |
| $\mathbf{P}
{3,1} = diag(\mathbf{I}(3), \mathbf{I}(1) \otimes \mathbf{X}
{1}^{T} \otimes \mathbf{I}(1), \mathbf{I}(1) \otimes \mathbf{X}
{1}^{T} \otimes \mathbf{I}(1))$ | $x_3 = x_3 \oplus x_1^{2}$ |
| $\mathbf{P}
{3,1} = diag(\mathbf{I}(3), \mathbf{I}(1) \otimes \mathbf{X}_1 \otimes \mathbf{I}(1), \mathbf{I}(1) \otimes \mathbf{X}_1 \otimes \mathbf{I}(1))$ | $x_3 = x_3 \oplus 2x_1^{2}$ |
| $\mathbf{P}
{3,1} = diag(\mathbf{I}(1) \otimes \mathbf{Q}
2 \otimes \mathbf{I}(1), \mathbf{I}(1) \otimes \mathbf{Q}_1 \otimes \mathbf{I}(1), \mathbf{I}(1) \otimes \mathbf{Q}_1 \otimes \mathbf{I}(1))$ | $x_3 = 2x_3 \oplus x_1^{2}$ |
| $\mathbf{P}
{3,1} = diag(\mathbf{I}(1) \otimes \mathbf{Q}
2 \otimes \mathbf{I}(1), \mathbf{I}(1) \otimes \mathbf{N}_1 \otimes \mathbf{I}(1), \mathbf{I}(1) \otimes \mathbf{N}_1 \otimes \mathbf{I}(1))$ | $x_3 = 2x_3 \oplus 2x_1^{2}$ |
| $\mathbf{P}
{2,1} = diag(\mathbf{I}(3), \mathbf{X}
{1}^{T} \otimes \mathbf{I}(2), \mathbf{X}
{1}^{T} \otimes \mathbf{I}(2))$ | $x_2 = x_2 \oplus x_1^{2}$ |
| $\mathbf{P}
{2,1} = diag(\mathbf{I}(3), \mathbf{X}_1 \otimes \mathbf{I}(2), \mathbf{X}_1 \otimes \mathbf{I}(2))$ | $x_2 = x_2 \oplus 2x_1^{2}$ |
| $\mathbf{P}
{2,1} = diag(\mathbf{Q}
2 \otimes \mathbf{I}(2), \mathbf{Q}_1 \otimes \mathbf{I}(2), \mathbf{Q}_1 \otimes \mathbf{I}(2))$ | $x_2 = 2x_2 \oplus 2x_1^{2}$ |
| $\mathbf{P}
{2,1} = diag(\mathbf{Q}
2 \otimes \mathbf{I}(2), \mathbf{N}_1 \otimes \mathbf{I}(2), \mathbf{N}_1 \otimes \mathbf{I}(2))$ | $x_2 = 2x_2 \oplus 2x_1^{2}$ |
| $\mathbf{P}
{4,2} = \mathbf{I}(1) \otimes diag(\mathbf{I}(2), \mathbf{I}(1) \otimes \mathbf{X}
{1}^{T}, \mathbf{I}(1) \otimes \mathbf{X}
{1}^{T})$ | $x_4 = x_4 \oplus x_2^{2}$ |
| $\mathbf{P}
{4,2} = \mathbf{I}(1) \otimes diag(\mathbf{I}(2), \mathbf{I}(1) \otimes \mathbf{X}_1, \mathbf{I}(1) \otimes \mathbf{X}_1)$ | $x_4 = x_4 \oplus 2x_2^{2}$ |
| $\mathbf{P}
{4,2} = \mathbf{I}(1) \otimes diag(\mathbf{I}(1) \otimes \mathbf{Q}
2, \mathbf{I}(1) \otimes \mathbf{Q}_1, \mathbf{I}(1) \otimes \mathbf{Q}_1)$ | $x_4 = 2x_4 \oplus x_2^{2}$ |
| $\mathbf{P}
{4,2} = \mathbf{I}(1) \otimes diag(\mathbf{I}(1) \otimes \mathbf{Q}
2, \mathbf{I}(1) \otimes \mathbf{N}_1, \mathbf{I}(1) \otimes \mathbf{N}_1)$ | $x_4 = 2x_4 \oplus 2x_2^{2}$ |
| $\mathbf{P}
{3,2} = \mathbf{I}(1) \otimes diag(\mathbf{I}(2), \mathbf{X}
{1}^{T} \otimes \mathbf{I}(1), \mathbf{X}
{1}^{T} \otimes \mathbf{I}(1))$ | $x_3 = x_3 \oplus x_2^{2}$ |
| $\mathbf{P}
{3,2} = \mathbf{I}(1) \otimes diag(\mathbf{I}(2), \mathbf{X}_1 \otimes \mathbf{I}(1), \mathbf{X}_1 \otimes \mathbf{I}(1))$ | $x_3 = x_3 \oplus 2x_2^{2}$ |
| $\mathbf{P}
{3,2} = \mathbf{I}(1) \otimes diag(\mathbf{Q}
2 \otimes \mathbf{I}(1), \mathbf{Q}_1 \otimes \mathbf{I}(1), \mathbf{Q}_1 \otimes \mathbf{I}(1))$ | $x_3 = 2x_3 \oplus x_2^{2}$ |
| $\mathbf{P}
{3,2} = \mathbf{I}(1) \otimes diag(\mathbf{Q}
2 \otimes \mathbf{I}(1), \mathbf{N}_1 \otimes \mathbf{I}(1), \mathbf{N}_1 \otimes \mathbf{I}(1))$ | $x_3 = 2x_3 \oplus 2x_2^{2}$ |
| $\mathbf{P}
{4,3} = \mathbf{I}(2) \otimes diag(\mathbf{I}(1), \mathbf{X}_{
用类FFT置换矩阵构造Bent函数
基于移位的置换矩阵
基于移位的置换矩阵涉及谱不变操作$x_{i} \to x_{i} \oplus x_{j}$(其中$i < j$)的情况。在通过置换矩阵构造Bent函数时引入这些置换矩阵,基于以下考虑。
需要注意的是,基本置换矩阵$\mathbf{X} 1$执行循环移位操作。这一观察很重要,因为描述将项$x_2^{2}$添加到基本Bent函数$f = x_1x_2$的下一个置换矩阵$\mathbf{P} {2,2}$,是根据该置换矩阵块结构中子矩阵元素的循环移位来确定的。
示例
考虑两个变量的基本Bent函数$f = x_1x_2$。变量替换$x_1 \to x_1 \oplus x_2$得到函数$f = x_1x_2 \oplus x_2^{2}$,可以看作在保持Bent性的同时添加了项$x_2^{2}$。从函数向量的角度来看,此示例可如下讨论:
函数$f = x_2^{2}$的函数向量为$\mathbf{F} {x_2^{2}} = [0, 1, 1, 0, 1, 1, 0, 1, 1]^T$。将其与基本Bent函数$f = x_1x_2$的函数向量$\mathbf{F} {x_1x_2} = [0, 0, 0, 0, 1, 2, 0, 2, 1]^T$相加,得到构造的Bent函数$x_1x_2 \oplus x_2^{2}$的函数向量为$\mathbf{F} {x_1x_2 \oplus x_2^{2}} = [0, 1, 1, 0, 2, 0, 0, 0, 2]^T$。该函数向量也可通过将$\mathbf{F} {x_1x_2}$与置换矩阵$\mathbf{P}_{2,2}$相乘得到:
P2,2 · Fx1x2 =
⎡
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0
⎤
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
·
⎡
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
0
0
0
0
1
2
0
2
1
⎤
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
=
[
0, 1, 1, 0, 2, 0, 0, 0, 2
]T
由此可知,矩阵$\mathbf{P}_{2,2}$执行了谱不变操作$x_1 \to x_1 \oplus x_2$。
矩阵$\mathbf{P}_{2,2}$可拆分为$(3×3)$子矩阵,它们以三行三列的子矩阵块形式排列:
- 在子矩阵的第一行中,第一个子矩阵的第一行第一个元素为1;第二个子矩阵的第二行第二个元素为1;第三个子矩阵的第三行第三个元素为1。
- 在子矩阵的第二行中,同样的模式重复,但循环向右移动一位。
- 在子矩阵的第三行中,模式再次重复,但移动两位。
若定义$(3×3)$辅助矩阵,每个矩阵只有一个非零元素,如下:
$\mathbf{R} = \begin{bmatrix} 1 & 0 & 0 \ 0 & 0 & 0 \ 0 & 0 & 0 \end{bmatrix}$,$\mathbf{V} = \begin{bmatrix} 0 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 0 \end{bmatrix}$,$\mathbf{E} = \begin{bmatrix} 0 & 0 & 0 \ 0 & 0 & 0 \ 0 & 0 & 1 \end{bmatrix}$
则矩阵$\mathbf{P}
{2,2}$可写为:
$\mathbf{P}
{2,2} = \begin{bmatrix} \mathbf{R} & \mathbf{V} & \mathbf{E} \ \mathbf{E} & \mathbf{R} & \mathbf{V} \ \mathbf{V} & \mathbf{E} & \mathbf{R} \end{bmatrix}$
如果将矩阵$\mathbf{P}_{2,2}$拆分为$(3×3)$块,可以观察到基于$\mathbf{R}$、$\mathbf{V}$和$\mathbf{E}$块的相同移位结构会重复出现。
从形式上看,该矩阵可通过符号矩阵确定。考虑符号序列$S = {a, b, c}$,定义$(3×3)$矩阵$\mathbf{A} = diag(a, b, c)$和$\mathbf{B}$,其中$\mathbf{B}$的行是序列$(a, b, c)$的循环移位:
$\mathbf{A} = \begin{bmatrix} a & 0 & 0 \ 0 & b & 0 \ 0 & 0 & c \end{bmatrix}$,$\mathbf{B} = \begin{bmatrix} a & b & c \ c & a & b \ b & c & a \end{bmatrix}$
这些符号矩阵的Kronecker积$(\mathbf{A} \otimes \mathbf{B})$和$(\mathbf{B} \otimes \mathbf{A})$,然后将平方项替换为1,所有其他混合符号的乘积项替换为0,就得到矩阵$\mathbf{P} {1,2}$和$\mathbf{P} {2,2}$。
很容易注意到,这些矩阵与描述Cooley - Tukey类FFT算法步骤的矩阵相似,特别是在描述变量添加的置换矩阵的情况下。不同之处在于,FFT使用$n = 1$的基本变换矩阵,而这里使用$(3×3)$置换矩阵。
确定添加变量平方的矩阵类似于某些其他FFT算法步骤之间出现的重排序矩阵,例如Winograd FFT(WFTA)、素因子算法等。
与之前考虑的Kronecker可表示置换矩阵一样,这些块对角矩阵对谱系数进行特定置换,而不改变其值,即执行谱不变操作。通过比较用这些矩阵进行置换得到的函数的功能表达式,与通过谱不变操作得到的函数的功能表达式,可以确定基于移位的矩阵能表示哪些操作。需要避免考虑Kronecker积可表示置换矩阵执行的操作。这样可以容易地观察到,所考虑的基于移位的矩阵执行谱不变操作$x_{i} \to x_{i} \oplus kx_{j} \oplus c$,其中$k \in {1, 2}$,$c \in {0, 1, 2}$。假设矩阵$\mathbf{A}$和$\mathbf{B}$在Kronecker积中的第$j$和第$i$位置,而单位矩阵$\mathbf{I}(1)$在所有其他位置。$k$和$c$的值由矩阵$\mathbf{A}$主对角线$d$上元素$a, b, c$的置换确定,具体对应关系如下表所示:
| 矩阵$\mathbf{A}$主对角线元素置换 | $k$ | $c$ |
| — | — | — |
| $a, b, c$ | 1 | 0 |
| $b, c, a$ | 1 | 1 |
| $c, a, b$ | 1 | 2 |
| $a, c, b$ | 2 | 0 |
| $c, b, a$ | 2 | 1 |
| $b, a, c$ | 2 | 2 |
综上所述,块对角置换矩阵和基于移位的置换矩阵在Bent函数的构造中都有着重要的应用。块对角置换矩阵可用于特定的变量替换和提高Bent函数的次数,而基于移位的置换矩阵则适用于谱不变操作$x_{i} \to x_{i} \oplus x_{j}$($i < j$)的情况。通过合理选择和应用这些置换矩阵,可以有效地构造出满足不同需求的Bent函数。
下面是一个简单的mermaid流程图,展示了基于移位的置换矩阵构造Bent函数的大致流程:
graph LR
A[选择基本Bent函数] --> B[确定谱不变操作x_i -> x_i ⊕ x_j]
B --> C[根据循环移位确定置换矩阵P_2,2]
C --> D[将P_2,2与基本函数向量相乘]
D --> E[得到新的Bent函数向量]
E --> F[确定新的Bent函数表达式]
这个流程图清晰地展示了从选择基本Bent函数开始,经过谱不变操作、置换矩阵确定、向量相乘等步骤,最终得到新的Bent函数的过程。通过这种方式,可以更直观地理解基于移位的置换矩阵在构造Bent函数中的应用。
超级会员免费看
28

被折叠的 条评论
为什么被折叠?



