“算法以稠密系数向量做伪除、精确标量除法和内容规范化,并调用多项式乘法完成移位乘积。子结式的行列式解释控制系数大小:这些余式对应带规定下标的 Sylvester 子式。次数异常下降时,一个余式…”
形式陈述
设
包括中间所有为零的系数。为了使表示规范,要求末项
这里被编码的对象是形式多项式,不是其在某些点上的函数值。底层数组通常依次保存
直觉
稠密表示像一把从
连续位置还使分治切块十分自然。把长度
Karatsuba、Toom–Cook 与基于变换的乘法都利用这一分解。不过“数组连续”只描述布局,不自动保证快速:若运算会产生巨大的整数系数,真正瓶颈可能是单个系数的乘法和内存分配,而不是数组下标。
例子与边界
多项式
的规范稠密编码是
所以结果数组为
规范化不可省略。向量
当
推论与应用
稠密编码为多项式乘法提供统一的
在工程实现中还要区分逻辑长度与容量。频繁相乘若每次都按精确长度重新分配,会把线性搬运成本叠加到代数运算上;保留容量可以减少分配,但逻辑末尾仍须归一化。若系数是模素数机器字,可用平坦数组获得良好局部性;若系数是大整数,数组只保存对象引用时,空间估计还必须加入每个系数的独立存储。由此可见,稠密表示不是“多项式的唯一自然形态”,而是一套让次数范围成为主要规模参数的具体成本模型。
参考资料
- Joachim von zur Gathen and Jürgen Gerhard, Modern Computer Algebra, 3rd ed., Cambridge University Press, 2013, Chs. 8–10.
- Donald E. Knuth, The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, 3rd ed., Addison–Wesley, 1997, §4.6.1.
- Keith O. Geddes, Stephen R. Czapor, and George Labahn, Algorithms for Computer Algebra, Kluwer, 1992, Ch. 3.