形式陈述
设 K 为完美域,非零多项式 f ∈ K [ x ] 。形式导数纯粹按幂次定义:
f ( x ) = ∑ i = 0 n a i x i ⟹ f ′ ( x ) = ∑ i = 1 n i a i x i − 1 , 其中整数 i 映到 K 的素子环;它不使用极限。平方自由分解要求写成
f = c ∏ i ≥ 1 f i i , 其中 c ∈ K × ,每个非恒等的 f i 首一、平方自由,且两两互素。输出只区分重数,不继续把 f i 分成不可约因子。
在特征 0 中,Yun 型递推先算
g = gcd ( f , f ′ ) , w = f / g . 令 i = 1 ,循环计算 y = gcd ( w , g ) 、f i = w / y ,再令 w = y 、g = g / y 并递增 i ,直到 w = 1 ;零次因子略去。底层GCD 公理库 最大公约数 Greatest common divisor · GCD 同时整除两个整数且被所有公约数整除的非负整数。 可由子结式 PRS 公理库 子结式多项式余式序列 Subresultant polynomial remainder sequence · Subresultant PRS 以伪除法和可精确消去的首项因子计算多项式 GCD,同时抑制整系数中间膨胀。 在精确系数上实现。
若 char K = p > 0 ,仍先令 c = gcd ( f , f ′ ) 、w = f / c ,用同一组 y = gcd ( w , c ) 与 f i = w / y 逐层输出重数不被 Frobenius 隐藏的部分;当 w = 1 时,剩余的 c 满足 c ′ = 0 。一个多项式导数为零,当且仅当所有非零次数都是 p 的倍数。对完美域,Frobenius a ↦ a p 是满射,故可写
f ( x ) = h ( x ) p , h ( x ) = ∑ j a p j 1 / p x j . 算法对剩余 c 的 p 次根递归分解,并把递归返回的所有重数乘以 p 。这一步与前面的 GCD 链合在一起,既能处理纯 p 次幂,也能处理重数如 p + 1 的混合情形。有限域是完美域,因此取系数的 Frobenius 逆在有限域 公理库 有限域 Finite field · Galois field 底层集合有限的域。 上总能进行。
直觉
若 f 含因子 q e ,则形式求导后至少还保留 q e − 1 ,所以 gcd ( f , f ′ ) 收集了重复部分,而商 f / gcd ( f , f ′ ) 每种不可约因子只留下一个副本。随后连续取 GCD,就像一层层剥开等高线:第 i 轮恰好分离原来重数为 i 的因子。
正特征改变了这幅图像,因为 p = 0 在域中,( h p ) ′ = p h p − 1 h ′ = 0 。导数对 Frobenius 像完全失明,不能从 gcd ( f , f ′ ) = f 得出“算法失败后把整个 f 当一个重数块”。正确动作是先识别纯 p 次幂、在系数上取 Frobenius 逆并降低次数,然后递归恢复被 p 放大的重数。
例子与边界
在 Q [ x ] 中令
f = ( x − 1 ) 2 ( x + 2 ) 3 . 求导并提取公因子得到
f ′ = ( x − 1 ) ( x + 2 ) 2 ( 5 x + 1 ) , g = ( x − 1 ) ( x + 2 ) 2 , 于是 w = ( x − 1 ) ( x + 2 ) 。第一轮 y = gcd ( w , g ) = w ,没有重数 1 的因子;更新后 g = x + 2 。第二轮得到 y = x + 2 、f 2 = x − 1 ;第三轮得到 f 3 = x + 2 。复乘 f 2 2 f 3 3 恢复原式,重数与因子都可直接核验。
在 F 2 [ x ] 中,
x 4 + x 2 + 1 = ( x 2 + x + 1 ) 2 的形式导数为零。若只运行特征零循环,会停在 gcd ( f , 0 ) = f 而没有进展;取平方根 h = x 2 + x + 1 后可知唯一平方自由块的重数为 2 。这不是数值导数精度问题,而是 Frobenius 的结构性边界。
完美性也不能藏掉。在不完美域 F p ( t ) 上,x p − t 的导数为零,却没有系数仍在该域内的 p 次根;“无平方因子”和“在代数闭包中无重根”的口径在此会分离。页面算法选择后者并以完美域为前提。常数、多项式零输入与非首一输入还需分别处理:零多项式没有唯一的有限重数分解,非零常数只贡献单位 c 。
推论与应用
平方自由分解是完整因式分解的预处理。Berlekamp 算法 公理库 Berlekamp 多项式因式分解算法 Berlekamp factorization algorithm · Berlekamp polynomial factorization 计算有限域商代数的 Frobenius 不动子空间,并以 GCD 从中确定性分离不可约因子。 和Cantor–Zassenhaus 算法 公理库 Cantor–Zassenhaus 因式分解算法 Cantor–Zassenhaus algorithm · Cantor-Zassenhaus factorization 先按不可约因子次数分组,再以随机幂、迹映射和 GCD 做 Las Vegas 等次数分裂。 通常都假设输入已经首一且平方自由;先去重后,随机分裂或 Frobenius 线性代数不用反复发现同一个不可约因子,也能用次数之和准确计量工作。
它还服务部分分式分解、符号积分、重根隔离与代数曲线奇异性检测。平方自由部分 f / gcd ( f , f ′ ) 只保留每个根一次,可避免根隔离算法在同一点重复计数;结式 Res ( f , f ′ ) 是否为零则给出重根的快速判据。不过只知道判据为零不等于已经恢复各重数,完整输出仍需上述 GCD 链与正特征递归。
参考资料
David Y. Y. Yun, “On Square-Free Decomposition Algorithms,” Proceedings of SYMSAC 1976 , pp. 26–35.
Joachim von zur Gathen and Jürgen Gerhard, Modern Computer Algebra , 3rd ed., Cambridge University Press, 2013, chapters on polynomial GCD and finite-field factorization.
Keith O. Geddes, Stephen R. Czapor, and George Labahn, Algorithms for Computer Algebra , Kluwer, 1992, §8.2.