“不能混用重数口径。 若原输入 $F=p^2$,本页仍对每个不同根计一次。需要按 $F$ 的重数统计时,应先做平方自由分解,对重数为 $k$ 的块查询后乘 $k$,再相加。”
形式陈述
设
其中整数
其中
先取
SquareFreeMonic(F):
g = gcd(F, F'); w = F/g; i = 1; output = []
while w != 1:
y = gcd(w, g)
z = w/y
if z != 1: append (z, i) to output
w = y; g = g/y; i = i+1
if char(K) = p > 0 and g != 1:
h = pth_root(g)
for (z, j) in SquareFreeMonic(h): append (z, p*j)
return output
底层GCD使用域上一元多项式的首一公因子;可由子结式 PRS实现,也可使用普通 Euclidean 除余。它是可替换的子程序。
为证明每个输出的重数,考察任一首一不可约因子
所以循环结束后,特征零的
递归把次数至少缩小为原来的
直觉
若
正特征改变了这幅图像,因为
图示为特征零的剥离循环;进入循环前先将工作多项式首一化,原输入的首项系数
例子与边界
在
求导并提取公因子得到
于是
在
的形式导数为零。若只运行特征零循环,会停在
完美性也不能藏掉。在不完美域
推论与应用
平方自由分解是完整因式分解的预处理。Berlekamp 算法和Cantor–Zassenhaus 算法通常都假设输入已经首一且平方自由;先去重后,随机分裂或 Frobenius 线性代数不用反复发现同一个不可约因子,也能用次数之和准确计量工作。
它还服务部分分式分解、符号积分、重根隔离与代数曲线奇异性检测。特征零中,首一化的
对次数
参考资料
-
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.
-
Karim Belabas, Advanced Computational Number Theory,2013-09-01,§3.1.3、Lemma 3.11:导数 GCD 只保留重数不被特征整除的因子,以及逆 Frobenius 的递归处理。