1. 程式人生 > >【算法專題】多項式相關

【算法專題】多項式相關

學習筆記 itl 專題 int title 分享 www 理解 ade

【快速傅裏葉變換】

參考:從多項式乘法到快速傅裏葉變換 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 )

【算法專題】多項式相關