拉格朗日插值
構造原理:當x=xk時a(xk)=yk;
快速傅利葉變換
複數與復平面
為了將數域擴大,引入虛數,詳情請見數學選修2-2。
尤拉公式
這個公式在fft中會用到。
多項式:n次多項式,->最高次為n-1,n個點可以確定唯一的n次多項式。
多項式求值:秦九韶演算法,o(n)的時間求出多項式的乙個點值表達。
多項式乘法:可以在n^2的時間內計算,這個比較簡單,兩個n次多項式可以乘出2n-1次多項式。
多項式加法:(x1,y1)(x1,y2)-> (x1,y1+y2)這個可以o(n)算。
如果我們已經知道了a和b的點值表達,我們可以在o(n)的時間算出c的點值表達。
圓周卷積:不會,留坑代填。
卷積定理:我們做兩個多項式的卷積(乘法)複雜度是n^2,如果我們把多項式轉成點值表達,再把點值表達加起來,在把點值表達用插值法轉成多項式,如果這三個步驟的複雜度都沒有超過n^2,那麼我們可以算是優化成功了。
在乙個xi上做點值運算的演算法叫dft(離散傅利葉變換)。
如果我們快速的完成所有xi的點值表達運算,時間複雜度為nlogn,這就是fft(快速傅利葉變換)。
離散傅利葉變換
n次單位根:滿足x^n=1的複數。
n次單位根恰好有n個,對於它們分別是e^2πki/n,k[0-n-1]。
理解一下就是把k個圓n等分。
k=1時的單位根為主n次單位根,記做wn,其他單位根可以看做wn的冪。
dft的特殊點指的就是n次單位根。
一遍dft可以求出a(wn0),a(wn1).....a(wnn-1)
設結果為f。
那麼我們最終還是需要知道係數表達,所以還需要插值運算。
可以用矩陣去驗證。
單位根的性質
第一條和第二條是最基本的,第三條就是根據尤拉公式(可以腦補復平面),第四條和第五條是折半引理。
這兩條是消去引理。
現在我們有了乙個長度為2的整數次冪的多項式。
然後我們可以把x的下標按照奇偶分組。
然後再按照上面的性質瞎搞一下。
我們成功的把問題的規模減小了一半。
然後我們就可以按照上面的方法一直分治下去。
注意我們是吧長度為l的區間分成兩半,一半為wk,一半為wk+2/n=-wk,所以算的時候加減注意一下。
蝴蝶操作
我們發現最後找出來的序列的下標和原來下標有一些神奇的聯絡。
於是我們可以o(n)算每個數的二進位制翻轉,然後可以迭代做了。
快速數論變換(ntt)
複數運算常數太大,如果我們找到乙個數論上的東西來代替wn,那麼我們可以完成在模意義下的fft了。
階與原根
x的階x^k=1(%p)。
p的原根:滿足x的階=p-1的最小的x,即為g。
g^(p-1)/n可以代替wn。
多項式全家桶
多項式求逆
利用倍增搞。
首先這個科技只能用於模意義下的,沒有模的是乙個無解的問題。
然後我們令b為在模2^(n-1)下的逆,b『為模2^n下的逆。
(b-b')=0(%2^(n-1))
(b-b')^2=0(%2^n)
b^2-2*b*b'+b'^2=0(%2^n)
ab^2-2*b+b'=0(%2^n)
b'=2*b-2*a*b^2(%2^n)
然後就倍增做
多項式ln
也就是我們要求乙個g函式
對兩邊求導,根據復合函式的求導方法,還有ln的導為1/x。
然後就求個導求個逆就可以算出g『
然後再用求導的逆過程給它還原回去,好像叫什麼不定積分。
多項式exp
這個東西還得用到什麼牛頓迭代之類的高階玩意,直接放個結論吧。
多項式開根
多項式除法 咕咕咕
多項式多點求值 咕咕咕
多項式快速插值 咕咕咕
學習筆記 多項式
給你n個點 x 1,y 1 x 2,y 2 求乙個n 1次的多項式 f x 求 f k 我們可以認為 f x f 1 x f 2 x f x 其中 f i x i y i 且 forall j neq i,f i x j 0 也就是說乙個點 x i 只在乙個函式中為 y i 其他函式中均為0 換言之...
學習筆記 多項式
把一直學不懂的各種大常數 o n log n 的神奇多項式演算法總結一下 證明什麼的比較簡略 還有我今天才知道預處理一下單位根會快很多 qwq 最沒用的乙個 首先我們能寫出乙個 o n 2 的暴力 這個你都不會就可以退役了 某位dalao題解中的 要確定乙個多項式,我們發現只要代 f 1 f 2 f...
多項式學習筆記
太菜了並不是很理解多項式,簡單記錄一下,緩慢更新吧 有問題問快速航 首先我們要求的柿子長這樣 c k sum a i b j 大概思路 先把兩個多項式轉成點值 dft 再把兩個多項式的點值乘在一起,把新的點值轉成多項式 idft 即可 首先要了解複數的運算 a b i c d i a c b d i...