FFT,快速傅里叶变换学习笔记

FFT,快速傅里叶变换

描述问题

计算两个n阶多项式的加法,需要 Θ(n) 的时间。只需要将两式对应次数的系数相加即可。但是两个n阶多项式A、B相乘需要 Θ(n2) 的时间,因为我们需要将A式的每一个系数乘上B式中每一个系数,在找次数相同的系数进行合并。我们希望加速多项式相乘的过程。

多项式有两种表示法,系数表示法与点值表示法。系数表示法表示一个多项式A可以记为:

A(x)=i=0n1aixj

点值法表示多项式B可以记为:
{  (x0,B(x0)),(x1,B(x1))...(xn1,B(xn1)) }

可以证明,一个包含n个点的点值表示法可以唯一确定一个n-1次多项式(最高项次数为n-1)。

点值表示法得优势在于:对于点值表示的多项式,相加相乘都很方便,我们只需要将同一x对应的y相乘,就得到新多项式的点值表示。注意,因为两个n次多项式的乘积是2n次,所以我们在选点时要选2n个点。这样乘起来才会得到2n个点。所以我们快速做多项式乘法的思路就是先将系数表示的多项式转化成点值表示,相乘,在转化回系数表示。

但是一般而言,对于系数表示法的多项式A,我们要求出2n个点,需要 Θ(n2) 的时间。因为我们求一个x对应的 A(x) 需要 Θ(n) 的时间, A(x0)=a0+x0(a1+x0(a2+...+x0(an2+x0(an1)))) 。但是如果我们选取2n次单位复数根,并利用单位复数根单位性质进行分治,就可以将复杂度降至 Θ(nlog

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值