数学专题小结:FFT算法

这篇博客深入探讨了使用FFT算法进行多项式乘法的原因,详细阐述了n次单位复数根的性质,包括消去引理、折半引理和求和引理。进一步解释了DFT与FFT的区别,介绍了FFT的分治策略以及迭代法实现的细节。在最后部分,博主讲解了如何通过逆矩阵恢复出系数,确保了FFT算法的完整实现。
摘要由CSDN通过智能技术生成
快速傅里叶变换(FFT,Fast Fourier Transform)是信号处理的常用手段,可以把时域信号变成频域信号,时域的卷积运算对应于频域就成了简单的乘法运算。由于两个多项式的乘积,其系数的运算实际上也是一种卷积运算,因此可以用FFT来计算多项式的乘法。网上关于FFT算法的讲解大多都是工程领域的,这里从算法竞赛的角度来剖析一下怎么简洁而高效的实现FFT。

一,为什么要用FFT来计算多项式乘法

众所周知,如果我们用普通的for循环来直接计算系数的话,算法的时间复杂度是O(N^2)级别的,算法慢的原因是因为我们是在用系数表达式计算的。而实际上,还有另外一种方法也可以完整的表达一个多项式,那就是点值表达式。通俗的说就是给出n个不同的Xi,求出对应的Yi,那么这n对(Xi,Yi)就可以准确的确定一个多项式的系数。那么如何通过点值表达式计算多项式相乘的系数呢?首先,我们计算得到n个A(Xi)和n个B(Xi),那么A(Xi)*B(Xi)就是多项式相乘后在Xi处的结果,这样就有n个A(Xi)B(Xi),可以唯一的确定一个多项式。然而,如果只是随意的选择n个点,计算出这n个点值的时间复杂度仍然是O(N^2)的,并没有丝毫改善。但是,如果我们巧妙的选取这n个点,就可以加速这一计算过程,使得计算出这n个点的时间复杂度降为O(NlogN)。这n个点就是n次单位复数根对应的点。

二,n次单位复数根的性质

FFT算法之所以可以很快就是利用了n次单位根的性质来加速计算的。下面就是用到的3条性质。

1. 消去引理

它的一个推论如下:

2.折半引理

它的一个推论如下:
  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值