- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
快速傅里叶变换——FFT 我们关心的问题 快速解决多项式乘法问题 衍生问题——高精度乘法 问题的描述 记一个多项式次数界为n的多项式A(x) 则 其中a为每一项的系数 注意最高次系数为n-1 问题的描述 两个多项式相乘 我们记一般形式为 C的次数界为A与B次数界的和 普通的时间复杂度为O(n^2) PART1——中心思想 转换思路 普通的相乘方法 提出概念:点值,插值 点值 一个次数界为n的多项式A(x)的点值表达就是一个由n个点值对所组成的集合: 其中每一个x都不相同,且 E.G. 多项式 的一个合法点值表达是 插值 插值运算是点值运算的逆运算 假设我们得到了一个有n个点值对的点值表达 那我们可以确定唯一的一个次数界为n的多项式 多项式乘法 我们来探究一下如何用点值与插值来完成多项式乘法 我们确定一组x,求得A与B的点值表达 那我们可以得知C的点值表达 通过插值运算,我们可以知道多项式C的系数 注意的地方 设A与B的次数界均为n 则C的次数界为2n 则我们要找出2n个x来求点值表达 否则不可以进行插值运算 算法流程 对于次数界均为n的多项式A与B 1点值运算 构造长度为2n的点值表达 2逐点相乘 计算出C的点值表达 3插值运算 通过C的点值表达求出多项式C的每项系数 时间复杂度 可以证明,若选取n个x 计算点值与插值的时间复杂度均为O(N^2) 本质上没有解决时间的问题 但我们可以巧妙的选择这些数来优化时间复杂度。 PART2——N次单位复数根及其性质 N次单位复数根 n次单位复数根是满足 的复数w。 n次单位复数根根恰好有n个,对于k=0, 1, ... , n-1,这些根是 。为了解释这个表达式,我们利用复数的指数形式的定义: 下一页图说明n个单位复数根均匀地分布在以复平面的原点为圆心的单位半径的圆周上。 N次单位复数根 性质 我们需要N次单位复数根 我们首先来探究这些根的性质 性质1——主n次单位根 我们称 为主n次单位根 同时注意到,n次单位复数根都是经过旋转而得到的 每次旋转都是一定角度 n次单位复数根可视为公比为主n次单位根的等比数列 性质2——群的性质 因为 所以 推论 性质3——消去引理折半引理.... 消去引理: 推论: 折半引理:如果n0为偶数,那么n次单位复数根的平方的集合就是n/2次单位复数根的集合。 证明:可以知道 的平方相同。 性质4——求和引理 求和引理:对于任意整数n≥1和不能被n整除的非负整数k,有 等比数列求和 所以 注意k不能是n的倍数,否则分母为0 PART3——FFT及其关键算法 DFT——离散傅里叶变换 我们希望计算次数界为n的多项式 在n次单位复数根处的值(共n个) 接下来定义结果y y即为a的离散傅里叶变换(DFT) 我们也可记为 FFT——快速傅里叶变换 大前提:n为2的整数幂(方便计算) 利用复数单位根复数根的特殊性质 我们可以在 时间内计算出 FFT利用了分治策略 PART3.1——点值运算 分治策略 如何求出单个数x的函数值A(x)? 我们定义两个新多项式 观察两个多项式的特点 1分别拥有奇数下标的系数与偶数下标的系数 2次数界变为n/2(缩小了一半) 分治策略 对于一个数x,求A(x) 则根据上两个多项式 分治策略 至此我们成功的转换了问题 原问题:求一个多项式A(x)在 的函数值。 现问题:求两个多项式 在 的函数值。 分治策略 现问题:求两个多项式 在 的函数值。 根据折半引理, 并不是n个不同的值,而是由n/2个n/2次单位复数根组成,而每个根恰好出现2次 于是,我们递归地对n/2的多项式A[0](x)与A[1](x)在n/2个n/2次单位复数根进行求值 程序实现 我们关心的程序实现问题 1/2:规定程序递归出口 3/4/12:定义主n次单位根,更新w值 5/6/7/8:定义两个多项式并递归求解 13:返回DFT 9/10/11:递归结束后的处理工作 递归结束后的处理工作 10: 11: FFT时间复杂度 对于运行时间有以下的递归式 所以采用FFT,我们可以在O(nlgn)时间内实现点值运算(求出次数界为n的多项式在n次单位复数根
文档评论(0)