其他分享
首页 > 其他分享> > 任意长度循环卷积&单位根反演 学习笔记

任意长度循环卷积&单位根反演 学习笔记

作者:互联网

今天听 \(\texttt{m}\color{red}{\texttt{yee}}\) 嘴的,赶紧来补个学习笔记。

PS:FFT 本质是长度为 \(2^k\) 的循环卷积。

单位根反演

反演本质:

\[\frac1n\sum_{i=0}^{n-1}\omega_{n}^{ai}=[n|a] \]

证明:

形式:

\[g_k=\sum_{i=0}^{n-1}f_{i}\omega_{n}^{ik}\Leftrightarrow f_k=\frac1n\sum_{i=0}^{n-1}g_i\omega_n^{ik} \]

循环卷积

定义 \(k\) 阶循环卷积为:

\[h_k=\sum_{i+j\equiv k\pmod{n}}f_i\times g_j \]

可以写出二阶循环卷积(不就是异或吗)的转移矩阵:

\[fwt=\begin{bmatrix}1&1\\1&-1\end{bmatrix}ifwt=\begin{bmatrix}1&1\\1&-1\end{bmatrix} \]

\(k\) 阶的转移矩阵是这样的:

\[fwt=\begin{bmatrix}\omega_k^0&\omega_k^0&\omega_k^0&\cdots&\omega_k^0\\\omega_k^0&\omega_k^1&\omega_k^2&\cdots&\omega_k^{k-1}\\\omega_k^0&\omega_k^2&\omega_k^4&\cdots&\omega_k^{2k-2}\\\vdots&\vdots&\vdots&\ddots&\vdots\\\omega_k^0&\omega_k^{k-1}&\omega_k^{2k-1}&\cdots&\omega_k^{k^2-2k+1}\end{bmatrix}ifwt=\begin{bmatrix}\omega_k^{-0}&\omega_k^{-0}&\omega_k^{-0}&\cdots&\omega_k^{-0}\\\omega_k^{-0}&\omega_k^{-1}&\omega_k^{-2}&\cdots&\omega_k^{-k+1}\\\omega_k^{-0}&\omega_k^{-2}&\omega_k^{-4}&\cdots&\omega_k^{-2k+2}\\\vdots&\vdots&\vdots&\ddots&\vdots\\\omega_k^{-0}&\omega_k^{-k+1}&\omega_k^{-2k+1}&\cdots&\omega_k^{-k^2+2k-1}\end{bmatrix} \]

这样可以 \(\mathcal{O(k^2)}\) 地完成 fwt 变换(但板题 任意模数 Chirp Z-Transform 需要用 FFT 优化加速),\(\mathcal{O(k)}\) 地点乘。

PS:如果需要将对应系数相加,可以在 fwt 后直接相加减,因为这是个线性变换。

咕咕咕

P4191 [CTSC2010]性能优化

标签:卷积,单位根,反演,cdots,bmatrix,2k,omega,vdots
来源: https://www.cnblogs.com/EricQian/p/16557815.html