有限域上的算术
域的构造与元素表示
考虑有限域 F16 的构造。我们将其看作是 F2 的单代数扩张 F16=F2(α)。
选取 F2 上的一个 4 次不可约多项式:
p(x)=x4+x+1
1. 验证 p(x) 的不可约性
要证明 p(x) 在 F2 上不可约,需验证它没有低次因子:
- 无一次因子(无根):
代入 0:p(0)=1=0
代入 1:p(1)=1+1+1=1=0
故 p(x) 在 F2 上无根,即无一次因子。
- 无二次因子:
F2 上唯一的不可约二次多项式是 x2+x+1。
做多项式除法:(x4+x+1)÷(x2+x+1)=x2+x…余 1。
无法整除,故无二次因子。
综上,p(x) 是 F2 上的不可约多项式。
2. 构造扩域
令 α 为 p(x) 的一个根,即 p(α)=0。
由此得到基本关系式:
α4+α+1=0⟹α4=α+1
注:从抽象代数的角度,这等价于构造商环 F16≅F2[x]/⟨x4+x+1⟩。这里的 α 对应于商环中 x 的陪集 xˉ。
3. 元素的枚举
在 F16 中,所有元素都可以唯一表示为次数小于 4 的多项式:
β=c3α3+c2α2+c1α+c0,ci∈{0,1}
总共有 24=16 个元素,我们可以按次数对其进行分类:
- 0 次(及零元素):
0,1
- 1 次:
α,α+1
- 2 次:
α2,α2+1,α2+α,α2+α+1
- 3 次(共 8 个):
α3,α3+1,α3+α,α3+α+1
α3+α2,α3+α2+1,α3+α2+α,α3+α2+α+1
4. 乘法群的循环结构
上述多项式表达虽然适合加法(系数对应相加),但在做乘法时较为繁琐。
为了简化乘法运算,我们利用有限域乘法群的性质:F16 的非零元素构成的乘法群 F16∗ 是一个循环群 (Cyclic Group)。
这意味着存在生成元,使得每个非零元素 β∈F16∗ 都可以唯一地表示为生成元的幂次。若 α 是生成元,则有:
F16∗=⟨α⟩={α0,α1,α2,…,α14}
这引入了元素的指数形式(Power Representation)。
两种表示法的对比
- 多项式形式(Polynomial Basis):如上所示的所有形式。非常适合进行加法运算(对应系数模 2 相加)。
- 指数形式(Power Form):如 αk。非常适合进行乘法运算。
本原元 (Primitive Element) 的验证
我们需要验证 α 是否为 F16∗ 的生成元(即本原元)。
- 群的阶:∣F16∗∣=24−1=15。
- 验证方法:α 的阶 (order) 必须是 15 的因子。15 的因子有 1, 3, 5, 15。
- 结论:因为 α3=1 且 α5=1,所以 order(α)=15。因此,α 是 F16 的本原元。同时 order(p(x))=15,表明 p(x) 为本原多项式。
幂次表推导(部分):
- α0=1
- α1=α
- α2=α2
- α3=α3
- α4=α+1
- α5=α(α+1)=α2+α
- α6=α(α2+α)=α3+α2
- …
- α15=1
混合运算示例
例:计算 (α8+α4+1)(α3+α)
= = = (α8+α4+1)(α3+α)(0101+0011+0001)(1000+0010)0111⋅1010α10⋅α9=α19=α4=α+1
Frobenius 映射与共轭元
Frobenius 自同构
考虑映射 σ:F16→F16,定义为 σ(β)=β2。可以看出如果 β∈F2,那么 σ(β)=β,即 σ 是 F2-自同构。
对于 F2n,Galois 群是循环群 ⟨σ⟩。
在 F16 中,σ4(β)=β16=β,那么 ⟨σ⟩={σ0=ι,σ1,σ2,σ3}
共轭类与极小多项式
利用代数扩张的性质,F16 中所有元素在 F2 上代数。且对于域中元素 β,其在 F2 上的极小多项式 mβ(x) 的根是 β 的所有共轭元(即 β 在 σ 作用下的轨道)。
原因:
极小多项式 mβ(x) 的系数属于基域 F2(即伽罗瓦群的不动点域)。因此,对于任意 σ∈G,自同构 σ 保持系数不变。若 mβ(β)=0,对两边施加 σ:
σ(mβ(β))=mβ(σ(β))=0
这说明如果 β 是根,那么 σ(β) 也一定是根。
因此,mβ(x) 的根集恰好就是 β 在 Galois 群作用下的轨道(即共轭类)。
1. α 的共轭类
计算轨道:
- α
- α2
- α4=α+1
- α8=(α+1)2=α2+1
- α16=α (循环)
共轭元为 {α,α2,α4,α8}。
对应极小多项式:mα(x)=(x−α)(x−α2)(x−α4)(x−α8)=x4+x+1。
2. α3 的共轭类
计算轨道:
- α3
- (α3)2=α6
- (α6)2=α12
- (α12)2=α24=α15⋅α9=α9
- (α9)2=α18=α3 (循环)
共轭元为 {α3,α6,α12,α9}。
对应极小多项式:mα3(x)=x4+x3+x2+x+1。
注意:(α3)5=α15=1,α3 的阶为 5,不是本原元。
3. α5 的共轭类
计算轨道:
- α5
- (α5)2=α10
- (α10)2=α20=α5 (循环)
共轭元为 {α5,α10}。
对应极小多项式:mα5(x)=(x−α5)(x−α10)=x2+x+1。
这说明 F2(α5)≅F4 是 F16 的子域。
4. α7 的共轭类
类似可得共轭元 {α7,α14,α13,α11}。
对应极小多项式:mα7(x)=x4+x3+1。
多项式分解应用
利用上述结果,可以将 x15−1 在 F2 上分解为不可约因子的乘积:
x15−1=β∈F16∗∏(x−β)
根据共轭类分组:
x15−1=m0(x)m1(x)m3(x)m5(x)m7(x)
- m0(x)=x+1
- m1(x)=x4+x+1
- m3(x)=x4+x3+x2+x+1
- m5(x)=x2+x+1
- m7(x)=x4+x3+1
Berlekamp 因式分解算法
Berlekamp 算法用于在有限域上分解多项式。为方便起见,本节主要考虑 Zp 上的多项式。
算法思路与核心公式
设 f(x)∈Zp[x],且 deg(f)=d。
我们的目标是寻找一个非平凡的多项式 g(x)∈Zp[x],满足以下条件:
- deg(g)≤d−1
- f(x)∣g(x)p−g(x)
推导过程:
-
基本恒等式:
考虑 Zp 上的恒等式 xp−x=∏s∈Zp(x−s)。
将 g(x) 代入上式:
g(x)p−g(x)=s=0∏p−1(g(x)−s)
-
互素性质:
由于 Zp 是域,对于不同的 i,j∈Zp (i=j),有 gcd(g(x)−i,g(x)−j)=1。即 g(x)−i 各项两两互素。
-
GCD 分解公式的证明:
我们要证明为何 f(x)=∏s=0p−1gcd(f(x),g(x)−s)。
-
设 g(x)−i 的分解:
设 g(x)−i 在 Zp 上的不可约因子分解为:
g(x)−i=fi,1ei,1⋯fi,miei,mi
-
f(x) 的结构:
因为 f(x)∣∏i=0p−1(g(x)−i),且各个 g(x)−i 互素,所以 f(x) 的因子必然分布在这些 g(x)−i 中。
我们可以将 f(x) 写为:
f(x)=i=0∏p−1(fi,1ai,1⋯fi,miai,mi)
其中 0≤ai,k≤ei,k。这表示 f(x) 中包含的 g(x)−i 的因子部分。
-
提取 GCD:
考察 gcd(f(x),g(x)−i):
gcd(f,g−i)=fi,1ai,1⋯fi,miai,mi
这恰好提取了 f(x) 中属于 g(x)−i 因子的那一缩部分。
-
结论:
将所有部分的 GCD 相乘,即可还原 f(x):
f(x)=gcd(f,gp−g)=s=0∏p−1gcd(f(x),g(x)−s)
通过计算 gcd(f(x),g(x)−s),我们有望将 f(x) 分解为更小的因子。
预处理:无重因子 (Square-free)
在进行分解前,不失一般性 (W.L.O.G),我们只考虑 f(x) 没有重因子 的情况。
原因分析:
- 计算 d(x)=gcd(f(x),f′(x))。
- 若 d(x)=1,则 f(x) 无重因子。
- 若 d(x)=1,则 d(x) 包含 f(x) 的重因子。
此时,f(x) 的分解可以转化为对 f(x)/d(x) 和 d(x) 的分解。
因此,我们只需要掌握如何处理无重因子的多项式即可。
结论:在无重因子的假设下,一定存在多个(非平凡)g(x),deg(g)<d,使得 f∣gp−g。这样的 g(x) 称为 f-reducing polynomial。
寻找 g(x) 的线性代数方法
我们要寻找 g(x)=∑i=0d−1gixi (gi∈Zp) 满足 f(x)∣g(x)p−g(x)。
推导步骤:
-
计算 g(x)p:
在 Zp 中,利用 (a+b)p=ap+bp 和 ap=a 的性质:
[g(x)]p=(i=0∑d−1gixi)p=i=0∑d−1gip(xi)p=i=0∑d−1gixip
-
代入整除条件:
gp−g=i=0∑d−1gixip−i=0∑d−1gixi=i=0∑d−1gi(xip−xi)
我们需要 f(x)∣∑i=0d−1gi(xip−xi)。
-
多项式模运算:
对 xip 做带余除法:
xip=qi(x)f(x)+ri(x),0≤deg(ri)≤d−1
代回原式:
f(x)∣i=0∑d−1gi(ri(x)−xi)
观察发现,上式右边 ∑gi(ri(x)−xi) 的次数严格小于 d(因为 deg(ri)<d 且 deg(xi)<d)。
一个次数小于 d 的多项式若能被 d 次多项式 f(x) 整除,它必须恒等于 0。
因此,我们要解的方程是:
i=0∑d−1gi(ri(x)−xi)=0
构造矩阵方程求解
为了求解系数 gi,我们进一步展开上述多项式方程。
设 ri(x)=ri,0+ri,1x+⋯+ri,d−1xd−1。
考虑方程中 xj (0≤j≤d−1) 的系数:
对于固定的 j,系数为:
i=0∑d−1gi(ri,j−δi,j)=0
其中 δi,j 是 Kronecker delta 符号(当 i=j 时为 1,否则为 0)。
矩阵定义:
定义矩阵 M 为 d×d 矩阵,其元素为 ri,j:
M=def(ri,j)0≤i,j≤d−1
(注:M 的第 i 行即为 xip(modf(x)) 的系数向量)
定义系数向量 G:
G=def(g0,g1,…,gd−1)
最终方程:
上述系数条件等价于线性方程组:
G⋅(M−I)=0
算法总结:
- 求出 G⋅(M−I)=0 的解空间基底 g0,g1,…。
- 利用非平凡解构造 g(x)。
- 计算 f=gcd(f,g)⋯gcd(f,g−p+1) 完成分解。
计算示例
在 Z2 上分解 f(x)=x6+x5+x4+x3+x2+1。