Skip to content

多项式乘法算法

Polynomial multiplication algorithm · Fast polynomial multiplication

以卷积、分治或点值变换计算系数乘积,并以乘法代价函数统一后续多项式算法。

条目类型
算法

形式陈述

给定次数小于 m,n 的多项式

A(x)=i=0m1aixi,B(x)=j=0n1bjxj,

目标是输出 C=ABm+n1 个系数

ck=i+j=kaibj.

按此式逐对相乘需要 mn 次系数乘法。对长度均小于 N稠密系数向量,记最优可用乘法的环运算代价为 M(N)。教材分析通常假设 M 单调且适合分块,例如 M(a)+M(b)M(a+b);这让许多后续算法可以只写成 O(M(N))O(M(N)logN),而不绑定某一种实现。

Karatsuba 把 A=A0+xsA1B=B0+xsB1,以

A0B0,A1B1,(A0+A1)(B0+B1)

三次半规模乘法恢复四个分块,得到 M(N)=O(Nlog23)。Toom–3 在若干点求值、做五次约三分之一规模的乘法再插值,给出 O(Nlog35),但插值需要相关小整数可逆。若系数域含足够高阶单位根且变换长度可逆,FFT把系数转换为点值,逐点相乘后逆变换,可达 O(NlogN) 次域运算。所有这些路线都以分治减少昂贵的递归乘法次数。

直觉

卷积公式的困难不是某个系数难算,而是所有系数共享大量乘积。分治算法寻找可复用的线性组合:Karatsuba 用一次“和的乘积”同时携带两个交叉块,Toom–Cook 把更多分块看成一个较低次数的外层多项式,变换算法则干脆选择一个乘法已经对角化的点值坐标系。算法越快,越依赖系数环允许做哪些加法、除法和单位根运算。

M(N) 是代数运算模型中的接口,不等于 bit complexity。若系数是 b bit 整数,一次系数乘法的成本随 b 增长,卷积后的系数还可能增加约 logN bit;若系数是浮点数,逐次蝶形会累积舍入误差;若系数在 Fp 中,所需的 2N 次单位根可能根本不存在。把“O(NlogN) 个域运算”直接翻译成同样数量的机器指令,会漏掉这些决定实现的条件。

例子与边界

A=1+2x+3x2+4x3B=5+6x+7x2+8x3,按 s=2 分块:

A0=1+2x, A1=3+4x,B0=5+6x, B1=7+8x.

三次子乘积为

P0=5+16x+12x2,P2=21+52x+32x2,

以及 PΣ=(4+6x)(12+14x)=48+128x+84x2。交叉块是 P1=PΣP0P2=22+60x+40x2,故

AB=P0+x2P1+x4P2=5+16x+34x2+60x3+61x4+52x5+32x6.

这个四项例子只节省一次子乘法,递归到大规模后才形成指数差异。

FFT 路线有明确边界。长度补零不足会计算循环卷积;在 F17 中存在阶 16 的单位根,可做长度 8 的数论变换,但在任意给定域中不能假定同样的根存在。复数 FFT 乘整数多项式时还要证明舍入后能唯一恢复精确系数。对极稀疏而指数巨大的输入,先建长度 N 的向量可能已经不可行,项表乘法反而更合适。

推论与应用

快速除法也由乘法接口控制。把首一除数 B 的系数反转为 B 后,商的高位可转化为求 B 在模 xk 下的逆。若已有精度 m 的近似 Hm 满足 BHm1(modxm),Newton 提升

H2m=Hm(2BHm)modx2m

把正确精度翻倍。各层乘法规模按几何级数增长,在标准 M 假设下总成本为 O(M(N));再乘被除式并反转即可得到商与余式。公式要求常数项可逆,通常通过除数首项归一化保证,不能对一般含零因子的环无条件使用。

乘法因而成为子乘积树、快速求值、插值、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.
关系图谱11 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系