主定理用於求遞推方程的階。
設a>=1, b>1為常數,f(n)為函式,t(n)為非負整數,且
t(n) = at(n/b) + f(n)
(注意a、b取值範圍)
有以下三種結果:
若f(n) = o(nlogba-ε),ε>0,則t(n) = θ(nlogba)
若f(n) = θ(nlogba),則t(n) = θ(nlogba logn)
若f(n) = ω(nlogba+ε),ε>0,且對於某個常數c<1和所有充分大的n有af(n/b) <= cf(n),則t(n) = θ(f(n))
t(n) = 9t(n/3) + n
a = 9, b = 3, logba = 2,符合1式,得t(n) = θ(n2)
t(n) = t(2n/3) + 1
a = 1, b = 3/2, logba = 0,符合2式,得t(n) = θ(logn)
t(n) = 3t(n/4) + nlogn
a = 3, b = 4, logba = log43
且要使a * f(n/b) = 3 * (n/4) * log (n/4) <= cnlogn, 得c>=3/4 - 3/(2logn),c>=3/4即對充分大的n成立。
符合3式,得t(n) = θ(nlogn)
t(n) = 2t(n/2) + nlogn
a = 2, b = 2, logba = 1,貌似符合3式;
但事實上找不到ε>0使得nlogn = ω(nlogba+ε)成立,因為logn的階低於任何冪函式nε(ε>0)。
所以並不符合3式,不能用主定理。應使用遞迴樹求解:
主定理學習筆記(總結向)
並非所有遞迴函式都適用於主定理 遞迴函式時間複雜度的快速判斷 主定理 主定理 master theorem 首先膜拜一下大佬 利用等比數列進行證明。結論 看主要受哪項影響 中間的logn底數應該為b。比當前層少,則公比小於1,為第一種情況 和當前層一樣,則公比為1,為第二種情況 比當前層多,則公比大...
Lucas定理學習筆記
equiv rfloor choose lfloor frac rfloor times mod p 此處的 表示的是取模運算。考慮化簡 frac 不難發現當n和m都遠大於p的時候為了簡化運算我們可以將n,m,n m 都給按照p分段,如果 n p geq m p 那麼可以發現以分數線為界,分數線上面...
Lucas定理 學習筆記
考慮經典問題 求解 binom mod p 的值,p 是質數。這樣的問題,我們一般採用預處理階乘及階乘逆元的方式達到 mathcal o 1 查詢,但當 n,m 的範圍比較大,比如 1e9 之類的,預處理階乘顯然是不可能的了,那我們有什麼方法呢 lucas定理 binom equiv binom b...