前言:
DFT:离散傅里叶变换—>O(x2)计算多项式乘法
FFT:快速傅里叶变换—>O(n∗log(n)O(n∗log(n)计算多项式乘法
FNTT/NTT:快速傅里叶变换的优化版—>优化常数及误差
FWT:快速沃尔什变换—>利用类似FFT的东西解决一类卷积问题
MTT:毛爷爷的FFT—>非常nb/任意模数
FMT 快速莫比乌斯变化—>感谢stump提供
多项式
系数表示法
设A(x)A(x)表示一个n−1次多项式则
例如:
利用这种方法计算多项式乘法复杂度为O(x2)
(第一个多项式中每个系数都需要与第二个多项式的每个系数相乘)
点值表示法
将nn互不相同的xx带入多项式,会得到nn个不同的取值yy
则该多项式被这n个点唯一确定
其中:
例如:上面的例子用点值表示法可以为(0,2),(1,6),(2,12)
利用这种方法计算多项式乘法的时间复杂度仍然为O(x2)
(选点O(n),每次计算O(n))
我们可以看到,两种方法的时间复杂度都为O(x2),我们考虑对其进行优化
对于第一种方法,由于每个点的系数都是固定的,想要优化比较困难
对于第二种方法,貌似也没有什么好的优化方法,不过当你看完下面的知识,或许就不这么想了