多项式
一个\(n\)次多项式可以表示为\(A(x)=\sum_{i=0}^{n}a_i x^i\),另一个\(n\)次多项式可以表示为\(B(x)=\sum_{i=0}^{n}b_i x^i\)。
- 多项式加法
将\(A(x)\)和\(B(x)\)相加,得到多项式\(C(x)=\sum_{i=0}^{n} (a_i+b_i) x^i\)。
复杂度是\(O(n)\)的。
- 多项式乘法
将\(A(x)\)和\(B(x)\)相乘,得到多项式\(C(x)=\sum_{i=0}^{n}\sum_{j=0}^{n}a_ib_jx^{i+j}\)。
复杂度是\(O(n^2)\)的,不是很优,于是我们决定想办法来解决它。
快速傅里叶变换 (FFT)
概述
快速傅里叶变换,英文名\(Fast\ Fourier\ Transform\),它可以在\(O(nlog(n))\)的复杂度内完成多项式乘法。
前置技能
函数的表达方法
- 系数表达法
通过\(a_0,a_1,...,a_n\)来表示函数\(f(x)=\sum_{i=0}^{n}a_ix^i\)
- 点值表达法
选取平面上\(n+1\)个不同的点来表示函数\(f(x)=\{ (x_0,y_0), (x_1,y_1), ..., (x_n, y_n)\}\)
我们发现,通过点值表达法,我们可以在\(O(n)\)的复杂度内计算出\(C(x)\),于是我们考虑将系数和点值结合起来。
单位复数根
在复平面上,单位圆有一些其妙的性质:
我们默认\(n=2^t,t\in N\)
- \(w_n^k=w_{2n}^{2k}\)
- \(w_n^{k+\frac{n}{2}}=-w_n^k\)
- \(w_n^k=w_n^{k+n}\)
- 对于任意\(k\),均满足\(\sum_{j=0}^{n-1}(w_n^k)^j=0\)
原文地址:https://www.cnblogs.com/wlzhouzhuan/p/12657174.html
时间: 2024-10-07 18:24:21