本文参考文献:
Polynomial Multiplication (Vector Convolution) and FFT
前言
通常两个多项式相乘所需的时间复杂度是 Θ(n^2),使用FFT算法可以将多项式乘法的时间复杂度降为。
1.多项式表示方法
这节介绍两种表示多项式的方法:系数表达和点值表达。
1.3.1. 系数表达
对一个次数界为 n 的多项式 而言,其系数表达是一个由系数组成的向量
。
采用系数表达对于多项式的某些运算是很方便的。例如,对多项式 f(x) 在给定点的求值运算就是计算
的值。使用霍纳法则,我们可以在 Θ(n) (n-1次乘法和n-1次加法)时间复杂度内完成求值运算:
1.3.1.1多项式的运算
假设有多项式f(x)和g(x):
的系数是
,
的系数是
,
1.加法运算:
在系数表示形式下,求两个多项式的加法是很容易的。
令,假设
的系数是
,显然有
因此计算的计算复杂度是 Θ(n) 。
2.乘法运算
令,则
,
因此计算复杂度是 Θ(n^2) (需要进行