之所以取这个标题。。。
是因为我自己以前只认为FFT只是一种精妙的构造。
并没能意识到这只是信息学中庞大多项式理论中的 t h e t i p o f t h e i c e b e r g {\rm the\ tip \ of \ the \ iceberg} the tip of the iceberg
查漏补缺格物致知。
多项式:
多项式可以是一个形式幂级数,也可以是一个多项式函数。
多项式环理论上是指一个对于加减乘封闭的群,实际上常用 Z [ x ] / ( f ( x ) ) \Z[x]/(f(x)) Z[x]/(f(x))表示在 ( m o d f ( x ) ) \pmod{f(x)} (modf(x))的环境下的加减乘封闭的群。同理 Z / ( 998244353 ) \Z/(998244353) Z/(998244353)表示在 ( m o d 998244353 ) \pmod{998244353} (mod998244353)意义下的加减乘封闭的群,他们都是环。
卷积:
强烈推荐阅读WC2018营员交流的LCA的浅谈卷积定理在OI中的应用及扩展
c i = ∑ j ⋅ k = i a j b k c_i = \sum_{j\cdot k = i} a_jb_k ci=j⋅k=i∑ajbk
卷积定理:
卷积定理。
上面的PPT同时告诉了我们只要有n次单位元(和一些一般都满足的性质),那么我们就可以将长度为n的循环卷积改为点积。
后文是钻进了线性代数的(XX)中,所以可以不用管了。
只要满足上述方程组的变换矩阵和循环律就可以DFT然后循环卷积变点积。
DFT:我上一栏好像说太多了。
就是变换。
只要有2n个点值(和逆元)就可以支持点乘代替多项式乘法。
只要有n次单位根(和n的逆元)就可以支持点乘代替长度为n的循环卷积。
只要猜出了变换矩阵和有n次单位根(和n的逆元)就可以支持点乘代替长度为n的有循环性的卷积。
不循环的卷积没办法套快速幂,数据范围因为要卡的住人所以会对模数和单位根很不友好。
多维DFT:
首先对于一般的循环卷积:雷打不动 T r a n s ( a ) [ i ] = ∑ j = 0 n ω n i j a [ j ] Trans(a)[i] = \sum_{j=0}^{n} \omega_n^{ij}a[j] Trans(a)[i]=∑j=0nωnija[j]
a [ i ] = 1 n ∑ j = 0 n − ω n i j t T r a n s ( a ) [ j ] a[i] = \frac 1n\sum_{j=0}^n -