三元函数的吉布斯和类FFT置换矩阵及弯曲函数构造
1. 类FFT算法与谱不变操作
在三元函数的Vilenkin - Chrestenson变换的类FFT算法结构中,将所考虑的(3 × 3)矩阵应用于长度为99的子向量,相当于将向量 $\mathbf{F}$ 与矩阵 $\mathbf{M} \otimes \mathbf{I}(1) \otimes \mathbf{I}(1)$ 相乘,其中 $\mathbf{M}$ 是所考虑的矩阵之一。这等价于执行类FFT算法第一步对应的置换,所执行的谱不变操作是相对于第一个变量 $x_1$ 的。执行对应于第 $i$ 步的置换会得到相对于第 $i$ 个变量 $x_i$($i \in {1, 2, \ldots, n}$)的谱不变操作。
当应用 $\mathbf{Q}(2)$ 得到函数后,对长度为99的子向量应用相同变换,得到函数 $f_{Q2}$,其函数向量为:
$\mathbf{F}
{Q2} = [0, 1, 1, 0, 2, 2, 0, 2, 2, 0, 1, 1, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 2, 1, 1]^T$
函数表达式为:
$f
{Q2} = x_3^2 \oplus x_2^2x_3^2 \oplus 2x_1x_2$
该函数是弯曲的,它是通过连续应用谱不变操作 $x_1 \to x_1 \oplus 2$ 和 $x_2 \to x_2 \oplus 2$ 得到的。与初始函数相比,增加了项 $x_1x_2$。
2. 吉布斯置换矩阵与类FFT置换矩阵的区别
用于构造三元弯曲函数的类FFT置换矩阵和上述定义的吉布斯置换矩阵存在重要区别。从表4.11和8.18可以看出,与类FFT置换矩阵相比,吉布斯置换矩阵执行不同的谱不变操作。吉布斯置换矩阵同时执行一对谱不变操作,即变量的置换,然后是变量的极化。而类FFT置换矩阵要么执行变量的极化,要么执行不相交的谱平移,但不会同时执行两者。如果想用类FFT置换矩阵执行这一对谱不变操作,必须在定义相应类FFT置换矩阵的克罗内克积中组合基本的类FFT置换矩阵。类FFT置换矩阵在任何情况下都不执行变量的置换。因此,对于给定的 $n$,这两种类型的置换矩阵集合既不重叠也不相交,而是相互补充,丰富了置换矩阵可执行的谱不变操作集合。以下是两者区别的总结表格:
| 矩阵类型 | 谱不变操作 | 变量置换 |
| — | — | — |
| 吉布斯置换矩阵 | 变量置换后极化 | 执行 |
| 类FFT置换矩阵 | 变量极化或谱平移 | 不执行 |
3. 三元弯曲函数的矩阵表示与构造
函数若有大量变量,通常需要大的函数向量来表示。对于 $p$ 值函数,长度为 $p^n$ 的向量可以拆分为大小为 $p^{n - k}$ 的子向量,这些子向量可以排列成矩阵的行或列。有时,这样的矩阵可以被视为更适合操作和计算给定函数的数据结构。
3.1 矩阵转置与弯曲函数构造
矩阵的转置意味着交换其行和列的索引。如果矩阵由弯曲函数的函数向量构建,那么转置会引起函数参数的置换,这是一种谱不变操作,可确保弯曲性得以保留。对于三元弯曲函数,将变量数量表示为 $n = k + r$,其中 $k = 1, 2, \ldots, (n - 1)$,$r = n - k$。然后,通过将长度为 $3^k$ 的子向量作为矩阵 $\mathbf{Q}$ 的行,将其函数向量 $\mathbf{F}$ 重写为 $(3^k \times 3^r)$ 矩阵。对于某个 $k$ 值,取 $\mathbf{Q}$ 的转置矩阵并连接其行,得到的函数也是弯曲的。这是因为转置对应于变量的置换,定义为向左循环移动 $(n - k)$ 个位置。
以下是一个简单的流程说明:
1. 给定一个 $n$ 元三元弯曲函数,其函数向量为 $\mathbf{F}$,长度为 $3^n$。
2. 对于 $k = 1, 2, \ldots, (n - 1)$,将 $\mathbf{F}$ 拆分为长度为 $3^k$ 的子向量。
3. 将这些子向量作为行,构建 $(3^k \times 3^r)$ 矩阵 $\mathbf{Q}$。
4. 取 $\mathbf{Q}$ 的转置矩阵 $\mathbf{Q}^T$。
5. 连接 $\mathbf{Q}^T$ 的行,得到新的函数向量,对应新的弯曲函数。
下面通过几个例子来进一步说明:
-
例9.1
:考虑一个三元函数,有 $n = 3$ 个变量。为简便起见,仅写出其函数向量中元素的索引:
$\mathbf{F} = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 18, 19, 20, 21, 22, 23, 24, 25, 26]^T$
将其写为 $(9 \times 3)$ 矩阵:
$\begin{bmatrix}
0 & 1 & 2 \
3 & 4 & 5 \
6 & 7 & 8 \
9 & 10 & 11 \
12 & 13 & 14 \
15 & 16 & 17 \
18 & 19 & 20 \
21 & 22 & 23 \
24 & 25 & 26
\end{bmatrix}$
其转置 $(3 \times 9)$ 矩阵为:
$\begin{bmatrix}
0 & 3 & 6 & 9 & 12 & 15 & 18 & 21 & 24 \
1 & 4 & 7 & 10 & 13 & 16 & 19 & 22 & 25 \
2 & 5 & 8 & 11 & 14 & 17 & 20 & 23 & 26
\end{bmatrix}$
连接该矩阵的行,得到函数向量:
$\mathbf{F}_{new} = [0, 3, 6, 9, 12, 15, 18, 21, 24, 1, 4, 7, 10, 13, 16, 19, 22, 25, 2, 5, 8, 11, 14, 17, 20, 23, 26]^T$
这对应于变量的置换 $x_1x_2x_3 \to x_2x_3x_1$。
若先将 $\mathbf{F}$ 转换为 $(3 \times 9)$ 矩阵,再进行转置,会得到另一个 $(9 \times 3)$ 矩阵,连接其行得到的向量对应于变量的置换 $x_1x_2x_3 \to x_3x_1x_2$。
-
例9.2 :考虑一个四元四次弯曲函数 $f = x_1x_3 \oplus x_2x_4 \oplus x_2^2x_3^2 \oplus x_4$。其函数向量为:
$\mathbf{F} = [0, 1, 2, 0, 1, 2, 0, 1, 2|0, 2, 1, 1, 0, 2, 1, 0, 2|0, 0, 0, 1, 1, 1, 1, 1, 1|0, 1, 2, 1, 2, 0, 2, 0, 1|0, 2, 1, 2, 1, 0, 0, 2, 1|0, 0, 0, 2, 2, 2, 0, 0, 0|0, 1, 2, 2, 0, 1, 1, 2, 0|0, 2, 1, 0, 2, 1, 2, 1, 0|0, 0, 0, 0, 0, 0, 2, 2, 2]^T$
当 $k = 2$,$r = 2$ 时,将该函数转换为 $(3^2 \times 3^2)$ 矩阵 $\mathbf{Q}$:
$\begin{bmatrix}
0 & 1 & 2 & 0 & 1 & 2 & 0 & 1 & 2 \
0 & 2 & 1 & 1 & 0 & 2 & 1 & 0 & 2 \
0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 1 \
0 & 1 & 2 & 1 & 2 & 0 & 2 & 0 & 1 \
0 & 2 & 1 & 2 & 1 & 0 & 0 & 2 & 1 \
0 & 0 & 0 & 2 & 2 & 2 & 0 & 0 & 0 \
0 & 1 & 2 & 2 & 0 & 1 & 1 & 2 & 0 \
0 & 2 & 1 & 0 & 2 & 1 & 2 & 1 & 0 \
0 & 0 & 0 & 0 & 0 & 0 & 2 & 2 & 2
\end{bmatrix}$
取其转置矩阵并连接行,得到函数向量 $\mathbf{F}_1$,对应的函数为:
$f_1 = x_1x_3 \oplus x_2x_4 \oplus x_1^2x_4^2 \oplus x_2$
该函数对应于变量在 $f$ 中向左循环移动 $r = 2$ 个位置,即 $x_1, x_2, x_3, x_4 \to x_3, x_4, x_1, x_2$。
若将初始函数 $f$ 转换为 $(27 \times 3)$ 矩阵并取其转置,得到的弯曲函数表达式为:
$f_2 = x_3^2x_2 \oplus x_2x_4 \oplus x_1 \oplus x_1x_3$
对应变量向左移动 $r = 1$ 个位置,即 $x_1, x_2, x_3, x_4 \to x_2, x_3, x_4, x_1$。
$(3 \times 27)$ 矩阵得到的函数表达式为:
$f_3 = x_3 \oplus x_2x_4 \oplus x_1x_3 \oplus x_1^2x_2^2$
对应变量向左移动 $r = 3$ 个位置,即 $x_1, x_2, x_3, x_4 \to x_4, x_1, x_2, x_3$。 -
例9.3 :考虑一个六元函数 $f = x_1x_6 \oplus x_2x_4 \oplus x_3x_5 \oplus x_1^2x_4^2x_5 \oplus x_3$。该函数的次数为5,通过计算其Vilenkin - Chrestenson谱(经过复编码后),可以确定它是弯曲的。函数向量长度为 $3^6 = 729$,可转换为 $(27 \times 27)$、$(9 \times 81)$、$(3 \times 243)$、$(81 \times 9)$、$(243 \times 3)$ 矩阵。经过转置并重新转换为函数向量后,这些矩阵分别产生五个弯曲函数,如下表所示:
| 矩阵 | 函数 |
| — | — |
| $(27 \times 27)$ | $f_1 = x_6 \oplus x_3x_4 \oplus x_2x_6 \oplus x_1x_5 \oplus x_1^2x_2x_4^2$ |
| $(9 \times 81)$ | $f_2 = x_4x_5 \oplus x_2x_6 \oplus x_2^2x_3x_5^2 \oplus x_1 \oplus x_1x_3$ |
| $(3 \times 243)$ | $f_3 = x_5x_6 \oplus x_2^2x_3x_6^2 \oplus x_2 \oplus x_2x_4 \oplus x_1x_3$ |
| $(81 \times 9)$ | $f_4 = x_5 \oplus x_4x_6 \oplus x_2x_3 \oplus x_1x_5 \oplus x_1x_3^2x_6^2$ |
| $(243 \times 3)$ | $f_5 = x_4 \oplus x_4x_6 \oplus x_3x_5 \oplus x_2^2x_5^2x_6 \oplus x_1x_2$ |
这些函数对应于变量向左循环移动 $r = n - k$ 个位置,即分别移动3、4、5、2、1个位置。有 $3^n$ 个线性三元函数,向其中添加常数1或2可得到仿射三元函数。可以向这些弯曲函数中的任何一个添加 $3^{n + 1} = 3^7$ 个六元仿射函数,从而得到更多的弯曲函数。
-
例9.4 :考虑一个由不相交变量乘积之和表示的函数 $f = x_1x_2 \oplus x_3x_4 \oplus x_5x_6$,这通常被视为六元变量分布 $D = (225, 252, 252)$ 的基本弯曲函数。将其转换为 $(27 \times 27)$ 矩阵并转置,得到 $f_{new,27} = x_4x_5 \oplus x_2x_3 \oplus x_1x_6$。$(9 \times 81)$ 矩阵转置后得到初始函数 $f$,$(3 \times 243)$ 矩阵转置后得到的函数与 $(27 \times 27)$ 矩阵得到的函数相同。
-
例9.5 :考虑一个由变量平方和表示的函数 $f = x_1^2 \oplus x_2^2 \oplus x_3^2 \oplus x_4^2 \oplus x_5^2 \oplus x_6^2$,这通常被视为六元变量分布 $D = (261, 234, 234)$ 的基本弯曲函数。任何三种可能的矩阵转置后都产生初始函数 $f$,这是因为 $f$ 是对称的。
4. 构造弯曲函数的算法
上述例子实际上给出了一种通过操作给定弯曲函数来构造弯曲函数的过程,可形式化为以下算法:
算法9.1(通过转置构造弯曲函数)
1. 给定一个 $n$ 元三元弯曲函数,指定为长度为 $3^n$ 的函数向量 $\mathbf{F}$。
2. 对于 $k = 1, 2, \ldots, (n - 1)$,将 $\mathbf{F}$ 拆分为长度为 $3^k$ 的子向量。
3. 将这些子向量作为行,构建 $(3^k \times 3^r)$ 矩阵 $\mathbf{Q}$,其中 $r = n - k$。
4. 对于每个 $k$ 值,取 $\mathbf{Q}$ 的转置矩阵 $\mathbf{Q}^T$。
5. 连接 $\mathbf{Q}^T$ 的行,得到新的函数向量,对应新的弯曲函数。
通过这种方法,可以利用矩阵的转置操作,从已知的弯曲函数构造出更多的弯曲函数,为相关领域的研究和应用提供了更多的函数选择。
三元函数的吉布斯和类FFT置换矩阵及弯曲函数构造
5. 算法复杂度与性能分析
在使用算法9.1通过转置构造弯曲函数时,需要考虑其复杂度和性能。该算法的主要操作包括向量拆分、矩阵构建、矩阵转置和行连接。
- 向量拆分 :将长度为 $3^n$ 的向量 $\mathbf{F}$ 拆分为长度为 $3^k$ 的子向量,对于每个 $k$ 值都需要进行一次拆分。拆分操作的时间复杂度为 $O(3^n)$,因为需要遍历整个向量。
- 矩阵构建 :将拆分后的子向量作为行构建 $(3^k \times 3^r)$ 矩阵,构建矩阵的时间复杂度也为 $O(3^n)$,因为需要将每个子向量放置到矩阵的相应位置。
- 矩阵转置 :矩阵转置操作的时间复杂度为 $O(3^k \times 3^r)$,因为需要交换矩阵的行和列元素。对于不同的 $k$ 值,转置操作的复杂度会有所不同。
- 行连接 :连接转置矩阵的行得到新的函数向量,时间复杂度为 $O(3^n)$,因为需要将矩阵的每一行依次连接起来。
综合来看,算法9.1的时间复杂度主要取决于 $n$ 的大小。对于较大的 $n$ 值,算法的复杂度会显著增加。因此,在实际应用中,需要根据具体情况选择合适的 $n$ 值,以平衡构造弯曲函数的数量和算法的计算复杂度。
6. 弯曲函数构造方法的应用场景
弯曲函数在密码学、编码理论等领域有着广泛的应用。通过矩阵转置构造弯曲函数的方法为这些领域提供了更多的函数选择和构造思路。
- 密码学 :在密码学中,弯曲函数常用于设计加密算法和哈希函数。弯曲函数的良好性质,如高非线性度和平衡性,使得加密算法具有更强的抗攻击能力。通过矩阵转置构造的弯曲函数可以作为加密算法的核心组件,提高加密算法的安全性。
- 编码理论 :在编码理论中,弯曲函数可以用于构造纠错码和检错码。弯曲函数的特性可以使得编码具有更好的纠错能力和检错能力,提高数据传输的可靠性。
以下是一个简单的mermaid流程图,展示了通过矩阵转置构造弯曲函数在密码学中的应用流程:
graph LR
A[选择初始弯曲函数] --> B[执行算法9.1构造新弯曲函数]
B --> C[将新弯曲函数应用于加密算法]
C --> D[对数据进行加密]
D --> E[传输加密数据]
E --> F[接收方解密数据]
7. 总结与展望
通过对三元函数的吉布斯和类FFT置换矩阵以及矩阵转置构造弯曲函数方法的研究,我们可以得出以下结论:
- 类FFT置换矩阵和吉布斯置换矩阵在执行谱不变操作上存在明显区别,两者相互补充,丰富了谱不变操作的集合。
- 矩阵转置是一种有效的构造弯曲函数的方法,通过对矩阵的转置和行连接操作,可以从已知的弯曲函数构造出更多的弯曲函数。
- 算法9.1提供了一种形式化的构造弯曲函数的方法,其复杂度主要取决于变量的数量 $n$。
展望未来,我们可以进一步研究以下方向:
- 优化算法复杂度 :针对算法9.1复杂度较高的问题,可以探索更高效的算法或数据结构,以降低计算复杂度,提高构造弯曲函数的效率。
- 拓展应用领域 :除了密码学和编码理论,探索弯曲函数在其他领域的应用,如信号处理、机器学习等,为这些领域提供新的解决方案。
- 研究更多构造方法 :继续研究其他构造弯曲函数的方法,结合不同的数学工具和技术,构造出具有更多优良性质的弯曲函数。
通过不断的研究和探索,我们可以更好地理解和应用弯曲函数,为相关领域的发展做出贡献。
超级会员免费看
36

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



