FFT 傅里叶万岁
阅读原文时间:2023年07月08日阅读:1

FFT --- Fast Foulier Transformation

以 $O(n \log n)$ 的速度计算 $\forall k=1,2,\dots,n, c[k]=\sum\limits_{i=0}^{k} a[i]b[k-i]$

**command_block 大神's blog**

记住,要 10min 内默出来!

注意事项:

  1. $tr[i]$ 是算出 $i$ 的二进制翻转的。
  2. 一定要判断 $is_idft$,如果是则 $w$ 虚部要取反。
  3. $n$ 必须是 2 的幂。

**对于 *$\forall k=1,2,\dots,n, c[k]=\sum\limits_{i=0}^{k} a[i]b[k+c+i]$ 这样的方式:***

令 $ b'[i]=b[n-i] $

则 $  b[k+c-i]=b'[n-(k+c-i)]=b'[(n-k-c)-i] $

于是 $ c[k]=\sum\limits_{i=0}^{k} a[i]b[k+c+i]=\sum\limits_{i=0}^{k} a[i]b'[(n-k-c)-i] $

若 $n-k-c \geq k$,则 $c[k]=\sum\limits_{i=0}^{k} a[i]b'[(n-k-c)-i] =\sum\limits_{i=0}^{n-k-c} a[i]b'[(n-k-c)-i] (let\  a[j]=0, \forall k \lt j \leq n-k-c) $

卷积!

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章