最新要闻
- 悦达起亚大地震!管理层轮休1年 公司资不抵债|世界实时
- MAXHUB双发x86兆芯、Arm飞腾国产CPU电脑!国产化近95%
- 单卡30秒跑出虚拟3D仙女老婆!毛孔细节清晰
- 女子退货8600元鞋被拒收:退回后鞋出现磨损
- 杭州现不定价咖啡店 营业首日卖400杯亏3500元!创始人回应|微头条
- 每日速看!gai周延参加的综艺有哪些_周延gai百度百科
- 特斯拉晒美国电价/油价:每天开电车50公里 一月省700块 天天观热点
- 盗版大神正式出手破解《生化危机4重制版》:Denuvo加密沦陷|当前快报
- 每日焦点!《生化危机4:重置版》碍事梨演员再发cos照:里昂救救我!
- 焦点热讯:首发2亿单镜变焦相机!真我11 Pro+图赏
- Win10杀软大PK:Defender拿了个倒数第一_焦点速看
- 泉州市丰泽区东海东宝工业区改造征迁工作指挥部正式揭牌成立
- 无锡阳山桃花源景区可以摘桃子吗_天天速看料
- 环球焦点!因不富裕 《王国之泪》粉丝攒钱6年才买到Switch
- 杀疯了!理想汽车公布2023年第一季度财报:营收、交付等多项数据历史最好
- 男子暴雨天救助流浪猫 专家确认:国家二级保护动物
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
FFT(快速傅里叶变换)
FFT(快速傅里叶变换)
目录- FFT(快速傅里叶变换)
- 前言
- 多项式的系数表示法和点值表示法
- 系数表示法
- 点值表示法
- 高精度乘法下两种多项式表示法的区别
- DFT
- 单位根的一些性质
- FFT
- IFFT
- 递归版的FFT
- 后记
前言
又要补之前的知识,艹。
快速傅里叶变换 (fast Fourier transform),即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。
(资料图片)
也就是说:FFT用来加速两个多项式的乘法。
建议学习一下有关复数的知识,这里 我水了一篇博客。
多项式的系数表示法和点值表示法
系数表示法
一个\(n - 1\) 次的 \(n\) 项多项式 \(f(x)\) 可以表示为 \(f(x) = \sum_{i= 0}^{n- 1} a_ix^i\)
即:
\[f(x) = a_0 + a_1x^1 + a_2x^2+a_3x^3+\cdots+a_{n - 1}x^{n - 1}\]这就是我们平常最常用的 系数表示法
点值表示法
现在有一个多项式 \(f(x)\) 我们可以把它在坐标系上表示出来
把多项式放到平面直角坐标系里面,看成一个函数
把 \(n\) 个不同的 \(x\) 代入,会得出 \(x\) 个不同的 \(y\),在坐标系内就是 \(n\) 个不同的点
那么这 \(n\) 个点 唯一确定该多项式,也就是 有且仅有一个多项式满足 $∀k, f(x_k) = y_k $ (这个其实跟插值差不多,大家可以看看这个拉格朗日插值法)
所以 \(f(x)\) 就可以表示成 \(f(x) = {(x_0 , f(x_0)),(x_1 , f(x_1))(x_2 , f(x_2) \cdots (x_n - 1 , f(x_n - 1)))}\)
这就是 点值表示法
高精度乘法下两种多项式表示法的区别
对于两个用系数表示的多项式,我们把它们相乘时。
很明显这个时间复杂度是 \(O(n)\) 的
但是点值表示法就不太一样了,只需要 \(O(n)\) 的时间。
假设两个点值多项式分别为
\[f(x) = {(x_0 , f(x_0)),(x_1 , f(x_1))(x_2 , f(x_2) \cdots (x_n - 1 , f(x_n - 1)))} \newlineg(x) = {(x_0 , g(x_0)),(x_1 , g(x_1))(x_2 , g(x_2) \cdots (x_n - 1 , g(x_n - 1)))}\]设他们的乘积是 \(h(x)\) 则
\[h(x) = {(x_0 , f(x_0)\cdot g(x_0)),(x_1 , f(x_1)\cdot g(x_1)),(x_2 , f(x_2)\cdot g(x_2)), \cdots (x_n - 1 , f(x_{n - 1})\cdot g(x_{n - 1}))}\]所以就只用枚举 \(O(n)\) 就够了
好像我们只用把系数表示法转换成点值表示法就可以 \(O(n)\) 解决多项式乘法了
朴素系数转点值的算法叫DFT(离散傅里叶变换),点值转系数叫IDFT(离散傅里叶逆变换)
但是我们朴素的系数转点值要 \(O(n^2)\) ,所以我们要引入FFT
DFT
建议学习一下有关复数的知识,这里 我水了一篇博客。
对于任意系数多项式转点值,当然可以随便取任意 \(n\) 个 \(x\) 值代入计算
但是这要 \(O(n^2)\) 的时间。
傅里叶提醒我们,
考虑一下,如果我们代入一些 \(x\),使每个 \(x\) 的若干次方等于 \(1\) ,我们就不用做全部的次方运算了$± 1 $是可以的,考虑虚数的话 \(± i\) 也可以,但只有这四个数远远不够
他又说,这个圆上的所有数都可以
以原点为圆心,画一个半径为 \(1\) 的单位圆
然后把它 \(n\) 等分,如图是 \(n = 8\)
或者说:
图上 \(w^0_n , w^1_n,\cdots w^{n - 1}_n\) 即为我们要带入的\(x_0 , x_1 , \cdots ,x_n\)
\[w_n^k = cos\dfrac{k}{n}2\pi+isin\dfrac{k}{n}2\pi\]单位根的一些性质
1、对任何整数 \(n > 0 , k > 0 , d > 0\) ,有\(w_{dn}^{dk} = w_n^k\)
2、如果 \(n\ mod \ 2 == 0\) :\(w_n^{k+\frac{n}{2}} = -w_n^k\)
它们表示的点关于原点对称,所表示的复数实部相反,所表示的向量等大反向
3、\(w_n^0 = w_n^n\)
FFT
然后用分治来搞 \(DFT\)
设:
\[A(x) = \sum_{i = 0}^{n - 1}a_ix^i = a_0 +a_1x+\cdots +a_{n-1}x^{n - 1}\]按照 \(A(x)\) 下标的 奇偶性分成两半,右边提出一个 \(x\)
\[A(x) = (a_0+a_2x^2+\cdots+a_{n - 2}x^{n - 2})+(a_1x+a_3x^3+\cdots+a_{n - 1}x^{n - 1}) \newline=(a_0+a_2x^2+\cdots+a_{n - 2}x^{n - 2})+x(a_1+a_3x^2+\cdots+a_{n - 1}x^{n -2})\]令:
\[A_1(x) = a_0 + a_2x + a_4x^2+\cdots +a_{n - 2}x^{\frac{n}{2} - 1}\newlineA_2(x) = a_1 + a_3x+a_5x^2+\cdots+a_{n - 1}x^{\frac{n}{2}-1}\]所以:
\[A(x) = A_1(x^2) + xA_2(x^2)\]设 \(k<\frac{n}{2}\) ,把 \(w_n^k\) 带入 \(A(x)\) 得:
\[A(w_n^k) = A_1((w_n^k)^2) + w_n^kA_2((w_{\frac{n}{2}^k}))\newline=A_1(w_n^{2k}) + w_n^kA_2(w_n{2k}) = A_1(w_{\frac{n}{2}}^k) + w_n^kA_2(w_{\frac{n}{2}}^k)\]带入 \(w_n^{k+{\frac{n}{2}}}\)
\[A(w_n^{k+\frac{n}{2}}) = A_1(w_n^{2k+n}) + w_n^{k+\frac{n}{2}}A_2(w_n^{2k+n})\newline= A_1(w_n^{2k}) - w_n^kA_2(w_n^{2k}w_n^n)\newline=A_1(w_n^{2k}) - w_k^kA_2(w_n^{2k}) = A_1(w_{\frac{n}{2}}^k) - w_n^kA_2(w_{\frac{n}{2}}^k)\]我们发现:\(A(w_n^k)\) 和 \(A(w_n^{k+\frac{n}{2}})\) 后面的东西只有符号不一样,所以我们可以用 分治来搞
还要先把 \(n\) 补成 \(2\) 幂才能搞
IFFT
积的多项式的 点值表达式然后转成 系数表达式叫做 \(IFFT\)
显然:
一个多项式在分治的过程中乘上单位根的共轭复数,分治完的每一项除以n nn即为原多项式的每一项系数
递归版的FFT
#include #define fu(x , y , z) for(int x = y ; x <= z ; x ++)#define fd(x , y , z) for(int x = y ; x >= z ; x --)#define LL long longusing namespace std;const int N = 4e6 + 5;const double pi = acos (-1.0);struct node { double x , y;} a[N] , b[N];int n , m , len = 1 , r[N] , l;node operator + (node a, node b) { return (node){a.x + b.x , a.y + b.y};}node operator - (node a, node b) { return (node){a.x - b.x , a.y - b.y};}node operator * (node a, node b) { return (node){a.x * b.x - a.y * b.y , a.x * b.y + a.y * b.x};}int read () { int val = 0 , fu = 1; char ch = getchar (); while (ch < "0" || ch > "9") { if (ch == "-") fu = -1; ch = getchar (); } while (ch >= "0" && ch <= "9") { val = val * 10 + (ch - "0"); ch = getchar (); } return val * fu;}void fft (node *A , int inv) { for (int i = 0 ; i < len ; i ++) if (i < r[i]) swap (A[i] , A[r[i]]); for (int mid = 1 ; mid < len ; mid <<= 1) { node wn = (node){cos (1.0 * pi / mid) , inv * sin (1.0 * pi / mid)}; for (int R = mid << 1 , j = 0 ; j < len ; j += R) { node w = (node){1 , 0}; for (int k = 0 ; k < mid ; k ++ , w = w * wn) { node x = A[j + k] , y = w * A[j + mid + k]; A[j + k] = x + y; A[j + mid + k] = x - y; } } }}int main () { n = read () , m = read (); fu (i , 0 , n) a[i].x = read (); fu (i , 0 , m) b[i].x = read (); while (len <= n + m) len <<= 1 , l ++; for (int i = 0 ; i < len ; i ++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << (l - 1)); fft (a , 1); fft (b , 1); fu (i , 0 , len) a[i] = a[i] * b[i]; fft (a , -1); // for (int i = 0 ; i <= n + m ; i ++) cout << a[i].x << " " << a[i].y << "\n"; fu (i , 0 , n + m) printf ("%d " , (int)(a[i].x / len + 0.5)); return 0;}
后记
迭代版的我也不会。
这个讲的好
关键词:
FFT(快速傅里叶变换)
ASP.NET Core MVC 从入门到精通之文件上传 世界快资讯
债市日报:5月10日_世界观焦点
美国债务上限谈判无进展 拜登可能取消G7行程 热文
悦达起亚大地震!管理层轮休1年 公司资不抵债|世界实时
MAXHUB双发x86兆芯、Arm飞腾国产CPU电脑!国产化近95%
单卡30秒跑出虚拟3D仙女老婆!毛孔细节清晰
女子退货8600元鞋被拒收:退回后鞋出现磨损
杭州现不定价咖啡店 营业首日卖400杯亏3500元!创始人回应|微头条
每日聚焦:Python中的交互库-os库
IPS 和 IDS_观热点
每日速看!gai周延参加的综艺有哪些_周延gai百度百科
特斯拉晒美国电价/油价:每天开电车50公里 一月省700块 天天观热点
盗版大神正式出手破解《生化危机4重制版》:Denuvo加密沦陷|当前快报
每日焦点!《生化危机4:重置版》碍事梨演员再发cos照:里昂救救我!
焦点热讯:首发2亿单镜变焦相机!真我11 Pro+图赏
Win10杀软大PK:Defender拿了个倒数第一_焦点速看
泉州市丰泽区东海东宝工业区改造征迁工作指挥部正式揭牌成立
如何衡量软件测试的绩效 环球速讯
无锡阳山桃花源景区可以摘桃子吗_天天速看料
环球焦点!因不富裕 《王国之泪》粉丝攒钱6年才买到Switch
杀疯了!理想汽车公布2023年第一季度财报:营收、交付等多项数据历史最好
男子暴雨天救助流浪猫 专家确认:国家二级保护动物
四月厂商销量榜:国产车强势爆发 前五占三席
散片便宜300元!但还是劝你买盒装CPU|世界动态
热资讯!华能水电:拟收购华能四川能源开发公司100%股权
AI别来搅局,chatGPT的世界不懂低代码 焦点要闻
观察:理想汽车:预计第二季度车辆交付量7.6万至8.1万辆
滚动:1999元起 真我11 Pro+发布:同价位中的2亿像素王
热点!432核心 25个人开发!欧洲自研CPU飞入太空
淘宝天猫历史最大投入618:今年推出直降专场 不用费劲凑单领券 焦点速递
环球观察:爸爸因无人回应退家族群 女儿发声:反而变热闹了
天玑9000性能满载!vivo Pad2评测:操控如PC般行云流水_今日聚焦
环球热消息:4月销量仅6658台!不降价的蔚来,终于把自己玩懵了?
[系统性能优化实践]JVM进阶实战之监控工具(Prometheus) 焦点速递
STM32【HAL库】使用外部SRAM程序
世界新资讯:如何通过appuploader把ipa文件上传到App Store教程步骤
【高端访谈】碳交易市场将如何影响化工行业?——专访全国化工节能(减排)中心秘书长张华
甘肃凉州:让非遗民俗文化“活起来”|观焦点
年度最火的KEEP动感单车免费得:连续88天打卡全额返 焦点速看
实时:可灭电火、油火 北大青鸟车载灭火器620ml 12.92元
真我史上最大底 真我11 Pro+搭载行业最高2亿像素传感器:挑战最强 每日热门
环球快资讯丨特斯拉要疯?向所有用户开放超充 车主拍手友商跺脚
首发2099元!九号电动V30C发布:50km续航、车架终身质保 当前热点
微软修复 Win10 / Win11 上 BlackLotus UEFI 漏洞
【天天报资讯】java读取文件——以自动贩卖机为例
天天热门:最佳软件测试基础入门教程1简介
环球视点!自建CA和公共CA有什么不同?
基于华为云图引擎GES,使用Cypher子查询进行图探索
每日消息!Vue2组件间通讯
每日快讯!【新华500】新华500指数(989001)10日收跌0.65%
当前热讯:成功展商要点——2023第十二届北京国际汽车制造业博览会
环球即时:传音Tecno Camon 20系列发布:五边形镜组极具辨识度
当前资讯!《斗罗大陆双神战双神》首个场景秀公开:虚幻5打造 画面逼真
这就很尴尬 男子高速电话指导女友开车 结果自己撞了
世界看点:4699元起 九号智能电动车小Q发布:新国标、能跑95km
一图看懂联发科旗舰新U天玑9200+:CPU/GPU性能提升10%、功耗更低了
环球看点!男童喉咙长菜花样肿块确诊感染HPV
今日看点:89.关于类的定义抽象数据类型
全球观速讯丨Mac系统,Qt工程转xcode工程,打包pkg
大幅提升前端工作效率!Numeral.js数值格式化库来了!
无需代码绘制人工神经网络ANN模型结构图的方法
2023年梅花金银兔纪念币价格(2023年05月10日)_世界快资讯
仅7999元!Redmi MAX 90英寸巨屏电视开售:百级分区、144Hz高刷 即时焦点
每日热议!亏电百公里油耗3.9升 比亚迪驱逐舰07申报:凯美瑞、雅阁瑟瑟发抖
保时捷718上新款 157.8万元起!真心无法抗拒 全球简讯
环球快看点丨悦达起亚被曝管理岗轮休 一休就一年!官方回应
中国电信在科技创新中加速释放消费活力 每日聚焦
每日播报!利用Appuploader上架IPA步骤
环球热文:代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。第一章 数组part01
黄道十二宫是什么意思?黄道十二宫是哪个文明首先提出的?
每日看点!98年浙大女学霸曾被视为格力接班人 孟羽童称靠别人永远不如靠自己
金锣玉米热狗香肠20袋到手19.9元:新鲜美味 当前短讯
热讯:为什么这届年轻人基本不走亲戚了?互联网“断亲”情况加剧:专家释疑
【环球新视野】西渝高铁最新进展!200余户已签协议
双商最高的四大星座是什么?十二星座的月份表
神话Eric的妻子是谁?神话Eric个人介绍
2011年快乐女声有哪些评委?2011届快女排名前十名
消失日晖打一字是什么?猜字谜游戏题目及答案
台电平板怎么刷机?台电平板android版如何获取root?
会声会影x4激活步骤是什么?会声会影x4激活代码
华硕f83v笔记本电池充电时橙色充电灯不停闪烁怎么解决?华硕f83v笔记本参数
三星笔记本r467怎么进bios设置u盘启动?三星笔记本r467参数
Vue 前端开发团队风格指南(史上最全)
Linux ARM架构_安装JDK8-银河麒麟V10 Kylin Linux-焦点速递
PSP上哪个火影的游戏最好玩?PSP经典游戏有哪些?
商家广告鼓励偷男友钱喝奶茶被罚 热消息
环球通讯!苹果推出iPad版Final Cut Pro与Logic pro:1个月免费试用
国人秒懂内涵 如何辨别在美国的中国人:看车牌 环球今头条
吸、扫、拖三合一!米家免洗扫拖机器人2正式开售:1999元
深圳一男子举牌相亲 月薪6千要求女方1万2:被路人质疑后神回应 世界热门
史诗级尴尬!马斯克驾驶Cybertruck结果趴窝:在农田里陷车
2023年社保缴费基数怎么调整?什么时候重新申报?_环球新资讯
环球新资讯:2分钟快速上手流水线的创建与运行
当前视讯!接单日记(三)文本处理之词云生成
今日热门!台式电脑有线网络怎么连接_有线网络怎么连接
华为将发布双旗舰笔记本 MateBook新品颜值、性能将迎全面升级
世界热点!任天堂Switch卖不动了?销量下降22% 还要再苟一年
首发9999元 小米电视ES Pro 90寸开售:1000nits高亮度
今日观点!希思黎京东官方自营旗舰店开业 打造全新高端奢护体验