“算法以稠密系数向量做伪除、精确标量除法和内容规范化,并调用多项式乘法完成移位乘积。子结式的行列式解释控制系数大小:这些余式对应带规定下标的 Sylvester 子式。次数异常下降时,一个余式…”
形式陈述
在交换含幺环
目标是输出
按此式逐对相乘需要
Karatsuba 把
三次半规模乘法恢复四个分块,得到
直觉
卷积公式的困难不是某个系数难算,而是所有系数共享大量乘积。分治算法寻找可复用的线性组合:Karatsuba 用一次“和的乘积”同时携带两个交叉块,Toom–Cook 把更多分块看成一个较低次数的外层多项式,变换算法则干脆选择一个乘法已经对角化的点值坐标系。算法越快,越依赖系数环允许做哪些加法、除法和单位根运算。
例子与边界
令
三次子乘积为
以及
这个四项例子只节省一次子乘法,递归到大规模后才形成指数差异。
FFT 路线有明确边界。长度补零不足会计算循环卷积;在
推论与应用
快速除法也由乘法接口控制。把首一除数
把正确精度翻倍。各层乘法规模按几何级数增长,在标准
乘法因而成为子乘积树、快速求值、插值、GCD、结式和精确线性代数的公共成本单位。实现上应按规模分层:小输入用 schoolbook 以避免递归开销,中等输入切换 Karatsuba 或 Toom,大输入在单位根与内存条件合适时使用变换。阈值来自实测,却不改变算法正确性;真正不可省略的是系数域假设、结果长度和精确性口径。
参考资料
- Joachim von zur Gathen and Jürgen Gerhard, Modern Computer Algebra, 3rd ed., Cambridge University Press, 2013, Chs. 8–9.
- Alin Bostan and Éric Schost, “Polynomial Evaluation and Interpolation on Special Sets of Points,” Journal of Complexity 21(4), 2005, pp. 420–446.
- Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman, The Design and Analysis of Computer Algorithms, Addison–Wesley, 1974, §8.2.