码迷,mamicode.com
首页 > 编程语言 > 详细

【算法专题】多项式相关

时间:2018-02-03 21:53:25      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:www   专题   inf   bubuko   表示法   位长   nbsp   长度   技术分享   

【快速傅里叶变换】

参考:从多项式乘法到快速傅里叶变换 by miskcoo

FFT 学习笔记 by Menci

特点:FFT用于O(n log n)解决多项式乘法。

(一)多项式的表示法:

系数表示法:f(x)=a[n-1]*x^(n-1)+...+a[0],称为n-1次多项式。

点值表示法:一个n-1次多项式在复数域中有n个根,即n个(x,y)可以唯一确定一个n-1次多项式。

对于一个多项式,从其系数表示法到其点值表示法的变换称为离散傅里叶变换(DFT),反之称为傅里叶逆变换(IDFT)。

朴素的离散傅里叶变换,枚举实现的复杂度为O(n^2)。

快速傅里叶变换是指以O(n log n)的复杂度实现IDF和IDFT的算法,常用Cooley-Tukey算法。

(二)复数

复数是形如a+bi的数字,当b=0时为实数,b≠0时为虚数,a=0时为纯虚数。

定义一个平面为复平面,那么平面内的每个点(a,b)唯一对应一个复数a+bi,i可以理解为y轴上的单位长度,正如1是x轴上的单位长度。

i的本质是在数轴上定义旋转变换,i是1逆时针旋转90°,那么i^2=-1。

复数相加,遵循平行四边形定则。

复数相乘,模长相乘,幅角相加。

(三)单位根

以圆点为起点,以复平面单位圆的n等分点为终点,作n个向量,设所得幅角为正且最小的向量对应的复数为ω(1,n),即n次单位根。(括号左为上标,右为下标)。

技术分享图片图片来源:OI 中的 FFT by zball

其中B点是单位根ω(1,n),逆时针以此为ω(2,n),ω(3,n)...,ω(n,n)=ω(n,0)=1。

计算公式:ω(k,n)=cos ( 2kπ/n ) + i*sin ( 2kπ/n )

 

【算法专题】多项式相关

标签:www   专题   inf   bubuko   表示法   位长   nbsp   长度   技术分享   

原文地址:https://www.cnblogs.com/onioncyc/p/8410715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!