首页 > 编程语言 > 详细

《算法导论》——chaper30-多项式与快速傅里叶变换

时间:2016-10-21 08:01:56      阅读:494      评论:0      收藏:0      [点我收藏+]

 

  两个n次多项式的相加最直接的方法所需要的时间是O(n),而实现两个n次多项式的乘法的直接方法则需要O(n^2),本章讨论的快速傅里叶变换(FFT),将会将这一过程的时间复杂度降至O(nlogn).同时本章也会给出一些FFT现实应用.

    技术分享                     

  多项式的两种表示形式:

 技术分享

  技术分享

 

    通过上面的推导,我们简单总结一下得到的结论。

  技术分享

 

 

 

  而接下来问题的核心是,如果优化求值和插值过程的时间复杂度,求值过程直观的来看,时间复杂度是O(n^2),而插值过程需要解线性方程组,需要的时间复杂度更高。

  为了算法的优化,我们需要引入一些复变函数的知识.

  技术分享

  下面这个是以n=8为例做出的草图。

  技术分享

  容易看到对于一个周期内,k=0,1,2,…,7分别有8个不等的复数解.

  技术分享

  技术分享

   以上详细给出了复变函数中的一些知识,需要尤为注意折半引理,这个引理是后面优化算法的核心,也是设计递归算法的核心所在。技术分享

    技术分享

   4,5行定义了主n次单位根和第一个根,这是为了在后面得到n个n次单位复数根.

   8,9行是基于折半引理的递归过程。

   10,11,12,13是根据递归“回归”的部分,即根据分治的结果得到母问题的解。13行的设置,结合循环,完成更新w的值的任务。

   技术分享

   简单的考察FFT的时间复杂度,有如下等式:

  T(n)=2T(n/2)+O(n)=O(nlgn)

                           

《算法导论》——chaper30-多项式与快速傅里叶变换

原文:http://www.cnblogs.com/rhythmic/p/5983244.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!