形式陈述
一元非零多项式可用有序项表
sparse ( f ) = ( ( e 1 , a 1 ) , … , ( e t , a t ) ) , f ( x ) = ∑ j = 1 t a j x e j , 表示,其中 a j ≠ 0 ,指数满足 e 1 < ⋯ < e t ;零多项式对应空表。排序、删除零系数并合并相同指数后,编码才是规范的。空间由非零项数 t 、指数的 bit 长度和系数大小共同决定,典型字模型写成 O ( t ) 个记录,但若最高指数 D 不受机器字限制,仅记录指数就需 Θ ( log ( D + 1 ) ) bit。
同一形式延伸到多元多项式环 公理库 多项式环 Polynomial ring 系数来自给定环、以形式不定元构造的多项式集合。 R [ x 1 , … , x n ] :把指数 e j 换成向量 α j ∈ N n ,每项为 ( α j , a j ) 。为了做归并加法与首项运算,项表须按一个固定的单项式序 公理库 单项式序 Monomial order · Term order 在多元单项式上兼容乘法的良序,用于确定首项、规范约简方向与消元性质。 排列;若只用哈希表存储,插入可以很快,但输出规范形式和寻找首项仍需排序或额外索引。这里的“稀疏”描述存储的支持集,不保证任何后续运算的结果仍然稀疏。
直觉
稀疏表示不铺设从 0 到最高次数的全部刻度,而只记录真正出现的坐标。对 1 + x 10 9 ,输入的数学信息只有两个系数和两个指数;按十亿长度扫描既没有增加正确性,也没有揭示新结构。把规模记为项数 t 后,求值可逐项快速幂,加法可像合并两个排序表那样进行,多元系统中的一个单项式则自然成为“指数向量加系数”的记录。
节省空间的代价是失去常数时间的任意系数定位。查找 x k 的系数需要二分、树索引或哈希;乘法会产生 t f t g 个候选指数和,随后还要合并碰撞项。稀疏算法因此常把主要工作放在支持集的组合结构上,而稠密表示 公理库 稠密多项式表示 Dense polynomial representation · Coefficient-vector polynomial representation 按次数连续保存从常数项到最高次项全部系数的规范多项式编码。 把主要工作放在连续次数范围上。二者的复杂度参数不同,不能只比较同一个大 O 符号中的字母。
例子与边界
取
f = 2 x 1000 − 3 x 7 + 1 , g = x 1000 + 3 x 7 − 1. 各自只有三项。逐项相乘得到九个候选项;按指数合并后
f g = 2 x 2000 + 3 x 1007 − x 1000 − 9 x 14 + 6 x 7 − 1. 其中 x 1000 的系数来自 − 2 x 1000 + x 1000 ,说明“生成候选项”与“得到规范结果”是两个不同阶段。若在特征为 3 的域上计算,3 x 1007 、− 9 x 14 与 6 x 7 又全部消失;合并之后删除零项是代数正确性的一部分,而不是可选的压缩。
稀疏输入也可能迅速稠密化。几何和
( 1 + x + ⋯ + x m ) ( 1 + x + ⋯ + x m ) 有 m + 1 个输入项,却在 0 到 2 m 的每个次数上都非零;若仍用树结点逐项维护,比较与分配成本会压过数组卷积。相反,( 1 + x D ) k 只有 k + 1 个可能次数,在 D 极大而 k 较小时继续使用稀疏表更合理。所谓稀疏乘法没有只由输入项数决定的普遍输出界,因为不同指数和可能全部互异,也可能大量碰撞。
推论与应用
稀疏表示适合超高次数少项式、符号展开中的中间表达式和多元 Gröbner 基计算。多元算法频繁询问首单项式、最小公倍单项式与可整除项,因此有序项表、堆和哈希表常被组合使用:哈希负责合并相同指数,优先结构负责按单项式序取出当前最大项。F4 算法 公理库 F4 Gröbner 基算法 F4 Gröbner basis algorithm · Faugère F4 algorithm 以符号预处理收集一批临界对的约简子,并用稀疏 Macaulay 矩阵消元批量产生新首项。 进一步把许多稀疏项对齐成 Macaulay 矩阵的列,说明“多项式稀疏”与“矩阵消元时仍稀疏”是两个需要分别测量的事实。
表示还影响输入规模的理论定义。若指数以二进制编码,x 2 n − 1 的文本长度是 O ( n ) ,而把它展开成连续系数需要指数空间;因此某个对次数 D 多项式时间的稠密算法,对稀疏编码长度未必是多项式时间。反过来,许多快速变换算法要求完整系数向量,先把项表稠密化可能正是合适的预处理。可靠实现通常根据预计输出密度设阈值切换表示,并在切换时重新规范化,而不是让两种编码在同一对象中长期并存。
参考资料
Joachim von zur Gathen and Jürgen Gerhard, Modern Computer Algebra , 3rd ed., Cambridge University Press, 2013, Chs. 8–9.
David A. Cox, John Little, and Donal O’Shea, Ideals, Varieties, and Algorithms , 4th ed., Springer, 2015, Ch. 2.
Keith O. Geddes, Stephen R. Czapor, and George Labahn, Algorithms for Computer Algebra , Kluwer, 1992, §§3.1–3.3.