从单位根到 NTT
解释有限域单位根如何支撑数论变换,并建立数论知识与多项式快速计算之间的连接。
关键词单位根 · NTT · FFT · 多项式
建议先了解
- 乘法群、生成元与单位根
- 多项式的基本概念
1. 这篇笔记只建立连接
前面的数论知识最终会进入多项式求值、卷积、密码学和零知识证明。数论变换(Number Theoretic Transform,NTT)可以理解为“在有限域中运行的离散傅里叶变换”。
这一篇先回答三个问题:
- NTT 为什么需要单位根;
- 有限域参数必须满足什么条件;
- 数论学习路线怎样连接到快速多项式计算。
完整的正变换、逆变换和蝶形算法会继续拆成单独 Note。
2. 从多项式系数到点值
设多项式
NTT 选择一组有限域中的点
并计算
必须是原始 次单位根,也就是
且对 ,
这样这些求值点才互不重复,并具有可用于分治的周期结构。
3. 为什么单位根能够支持分治
当 为偶数时,可以把多项式按偶数次幂和奇数次幂拆开:
在单位根点上求值时, 会落入规模减半的单位根集合。于是一个长度为 的问题可以递归变成两个长度为 的问题。
这正是 FFT 和 NTT 获得
复杂度的核心结构,而不是简单地“把模运算写进 FFT”。
4. 有限域参数条件
如果在素域 中进行长度为 的 NTT,需要存在原始 次单位根。由于
典型条件是
若 是 的生成元,可以构造
工程中经常选择
并让 整除 ,这样可以反复二分。
5. 一个小参数例子
在 中,乘法群阶为
因此可以支持长度为 2、4、8 或 16 的单位根结构。上一篇构造了原始 4 次单位根
长度 4 的求值点为
即
这些点互不相同,并满足 。
6. NTT 与复数 FFT 的区别
| 对比项 | 复数 FFT | NTT |
|---|---|---|
| 运算环境 | 通常为复数 | 有限域或模运算结构 |
| 单位根 | 复数单位圆上的根 | 有限域乘法群中的根 |
| 数值误差 | 浮点实现可能有舍入误差 | 模运算是精确的 |
| 参数限制 | 取决于实现与长度 | 模数必须提供所需阶的单位根 |
NTT 没有浮点舍入误差,但会受到模数和变换长度的代数条件约束。
7. 整条知识链
整除
↓ 定义互质
最大公约数与 Bézout 等式
↓ 判断并构造逆元
同余与模逆元
↓ 模质数时非零元素都可逆
有限域 F_p
↓ 去掉 0 后形成循环乘法群
生成元与元素的阶
↓ 构造原始单位根
单位根
↓ 提供递归求值点
NTT
每一箭头都表示一个依赖关系。缺少前一层条件,不能直接套用后一层公式。
8. 当前尚未展开的内容
后续应继续拆分为独立 Note:
- NTT 正变换的定义与手算例子;
- 逆 NTT 为什么需要 ;
- 蝶形运算与位逆序;
- 使用 NTT 计算多项式卷积;
- 常见 NTT 友好质数;
- NTT 在零知识证明多项式运算中的位置。
9. 自测
- NTT 为什么要求原始 次单位根?
- 在 中,为什么通常要求 ?
- 为什么工程中常选择 ?
- NTT 与复数 FFT 的一个关键区别是什么?
参考答案
- 它提供 个互不重复且具有周期结构的求值点。
- 的阶为 ,阶为 的元素必须与群阶相容。
- 长度为二的幂时可以反复二分,适合蝶形递归。
- NTT 在有限域中精确计算,但参数必须满足单位根存在条件。
上一篇:乘法群、生成元与单位根。
返回:数论学习路线。