FFT算法解析
来源:互联网 发布:mysql定义级联删除 编辑:程序博客网 时间:2024/06/06 17:04
问题描述
两个n次多项式相乘,其时间复杂度为
分析过程
- FFT的基本思路是:我知道一个多项式表达式可以根据其表达式算出结果,同理我们也可以根据其结果算出表达式。
- 对于A,B两个n次多项式,一共所有又2n+1个参数需要求解,我们至少需要2n+1个表达式。
FFT基本步骤: - 选择:选择至少2n+1个点。
- 计算:分别计算出
A(x0),A(x1),......,A(x2n+1) 和B(x0),B(x1),......,B(x2n+1) ,再通过C(xk)=A(xk)B(xk) 算出对应的C值。 - 通过这些多项式等式求解C相应的系数。
通过对上面的分析:可以发现第4步的时间复杂度为O(n2) ,所以得想办法减少其时间复杂度。所以我们对第4步的计算采取分而治之的策略。如下图所示:
原本需要两个O(n) 的时间复杂度,现在一个就可以了。我们要如何构造x值,使得计算复杂度变为nlogn 。
数学准备
- 一个复数可以表示成
z=a+bi (这是笛卡尔的坐标表示),变形可以得到z=r(cosθ+isinθ)=reiθ (欧拉公式),所以一个复数可以表示成(r,θ) 。 - 复数相乘
(r1,θ1)∗(r2,θ2)=(r1r2,θ1+θ2) 。 - 任何一个多项式表达式
F(x)=F1(x2)+xF2(x2) - 复数的倒数等于复数的负数。
第4步FFT分析
我们选取r=1,分布如下的点进行计算。
左边16点的计算;每一条直线的两个点互为相反数,同时他们的平方一样,
第5步FFT分析。
现在已经知道了
伪代码
C++代码
阅读全文
0 0
- FFT算法解析
- FFT算法
- FFT算法
- FFT算法
- FFT算法
- FFT算法
- FFT算法
- FFT实用解析
- fft的递归算法
- FFT算法学习心得
- FFT 算法实现
- FFT蝶形算法,IFFT
- 【例程】MSP430 FFT算法
- FFT算法整理[转载]
- FFT算法应用实例
- C#的FFT算法
- FFT算法实现
- 自己实现FFT算法
- 【EXP】Oracle多表导出问题
- 欢迎使用CSDN-markdown编辑器
- SPOJ 287 Smart Network Administrator 二分+网络最大流
- Installation failed with message Failed to finalize session : INSTALL_FAILED_NO_MATCHING_ABIS: Faile
- 集合对象的一些助手工具类
- FFT算法解析
- 不要怂,就是GAN (生成式对抗网络) (六):Wasserstein GAN(WGAN) TensorFlow 代码
- Spring 注解实现Bean依赖注入之@Qualifier
- redis上传
- 国家为什么大力发展轻钢别墅?看了这些主要材料就知道了!
- 干货|白话SSL/TLS默认重协商漏洞原理与安全重协商对抗机制
- ORACLE一个表查询两次
- 【C++ 函数模板】SDUT-1141 面向对象程序设计上机练习二(函数模板)
- Hbase初始化并根据RowKey获取数据