【算法竞赛学习笔记】快速傅里叶变换FFT-数学提高计划

快速傅里叶变换FFT是用于加速多项式乘法的算法,将时间复杂度从O(n^2)降低到O(nlogn)。本文介绍了DFT、IDFT的概念,阐述了FFT的原理、计算过程,并提供了相关资源链接,适合ACM竞赛和程序设计爱好者学习。
摘要由CSDN通过智能技术生成

tilte : 快速傅里叶变换FFT学习笔记
tags : ACM,数论
date : 2021-7-18


在这里插入图片描述

简介

FFT(Fast Fourier Transformation),中文名快速傅里叶变换,用来加速多项式乘法

DFT,中文名离散傅里叶变换,用来把多项式转化成离散的点。

IDFT,中文名离散傅里叶反变换,用来把离散的点还原成多项式。

时间复杂度O(nlogn)

将一个用系数表示的多项式转换成它的点值表示的算法。

系数表示法:

f ( x ) = { a 0 , a 1 , a 2 , . . . , a n − 1 } f(x)=\{a_0,a_1,a_2,...,a_{n-1}\} f(x)={ a0,a1,a2,...,an1}

点值表示法:

f ( x ) = { ( x 0 , f ( x 0 ) ) , ( x 1 , f ( x 1 ) ) , . . . , ( x n − 1 , f ( x n − 1 ) ) } f(x)=\{(x_0,f(x_0)),(x_1,f(x1)),...,(x_{n-1},f(x_n-1))\} f(x)={ (x0,f(x0)),(x1,f(x1)),...,(xn1,f(xn1))}

高精度乘法下,系数表示法将多项式相乘需要时间复杂度 O ( n 2 ) O(n^2) O(n2)

而点值表示法只需要 O ( n ) O(n) O(n)

原因:

设 两 个 点 值 多 项 式 分 别 为 f ( x ) = { ( x 0 , f ( x 0 ) ) , ( x 1 , f ( x 1 ) ) , . . . , ( x n − 1 , f ( x n − 1 ) ) } g ( x ) = { ( x 0 , g ( x 0 ) ) , ( x 1 , g ( x 1 ) ) , . . . , ( x n − 1 , g ( x n − 1 ) ) } 设 题 目 他 们 的 乘 积 是 h ( x ) , 那 么 h ( x ) = { ( x 0 , f ( x 0 ) ⋅ g ( x 0 ) ) , ( x 1 , f ( x 1 ) ⋅ g ( x 1 ) ) , . . . , ( x n − 1 , f ( x n − 1 ) ⋅ g ( x n − 1 ) ) } 设两个点值多项式分别为\\ f(x)=\{(x_0,f(x_0)),(x_1,f(x1)),...,(x_{n-1},f(x_{n-1}))\}\\ g(x)=\{(x_0,g(x_0)),(x_1,g(x1)),...,(x_{n-1},g(x_{n-1}))\}\\ 设题目他们的乘积是h(x),那么\\ h(x)=\{(x_0,f(x_0)·g(x_0)),(x_1,f(x_1)·g(x1)),...,(x_{n-1},f(x_{n-1})·g(x_{n-1}))\}\\ f(x)={ (x0,f(x0)),(x1,f(x1)),...,(xn1,f(xn1))}g(x)={ (x0,g(x0)),(x1,g(x1)),...,(xn1,g(xn1))}h(x)h(x)={ (x0,f(x0)g(x0)),(x1,f(x1)g(x1)),<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RWLinno

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值