在分析根據遞迴方程分析演算法的時間複雜度時,常見到如下形式的方程,
t(n) = a * t(n/b) + f(n)
a ³ 1,b > 1,f(n)一般是個簡單函式
這時可以有2種方法,來計算時間複雜度。一是用遞迴樹,逐層代入原式,最終形成乙個級數,
然後用乙個函式來表達,得到t(n)。
二是應用主項定理master method 。其實,主項定理也就是對遞迴樹方法的一種歸納,形成了
固定的計算方式,並分三種情形來計算。
這三種情形主要是比較 nlog
ba 與 f(n),為什麼要比較這兩個函式呢?
觀察原式,可以看出,nlog
ba其實相當於用遞迴樹方法解出的遞迴方程的右側的第一項,
而f(n)則是遞迴方程的右側的第二項,這樣,主項定理實際上是在比較組成結果的兩個函式項,
而且這種比較是按照數量級(或者說是變化幅度)來比較的,也就是說,如2n 與 28n是
數量級(變化幅度)相當的。
這樣就有了三種不同的情形:
f(n) < nlogba
也就是 f(n) = o(nlog
ba - e
) ,e > 0為任意小的常數
或者說,f(n) 比 n
logb
a變化的慢,慢n
e那麼,t(n) î
q (nlogba)
f(n) > nlogba可以簡單地說,遞迴方程的右側的兩項,哪項變化的塊,t(n)就屬於哪項的數量級也就是 f(n) = w(nlog
ba +e
) ,e > 0為任意小的常數
或者說,f(n) 比 n
logb
a變化的快,快n
e那麼, t(n) î
q(f(n))
f(n) = nlogba也就是兩項的數量級相當,就給這個數量級乘上乙個lg n
t(n) î
q(nlog
ba * lg n)
examples(以下示例**於網路):
t(n) = 5t(n/2) + q(n2)
case 1: if f(n) = o(nlog
ba - e
) for some constant e > 0 then t(n) î
q(nlogba)
determine: a, b, f(n) and logba
is f(n) î o(nlg 5 - e) for e > 0 ?
yes. f(n) = q(n2) î o(nlg 5 - e
) = o(n2.32 - e
) for e ≈ 0.32
t(n) î
q(nlog25)
2. t(n) = 2t(n/2) + n
determine: a, b, f(n) and logb(a)case 3: if f(n) = q(nlog
ba ) then t(n) î
q(nlog
ba lg n)
f(n) = n î
q(nlog
22) = q(n1)
t(n) î
q(nlog
22 lg n) = q(n lg n)
3. t(n) = 5t(n/2) + q(n3)
determine: a, b, f(n) and logb(a)andaf(n/b) ≤ cf(n) for some constant c < 1 and all sufficiently large ncase 2: if f(n) = w(nlog
ba+e
) for some constant e > 0
f(n) = q(n3) î
w(nlog
25+e
) = w(n2.32+e
) for e ≈0.68
5(n/2)3then t(n) î≤ cn3
5n3/8 ≤ cn3
c = 5/8 < 1
q(n3)
主項定理Master Method
在分析根據遞迴方程分析演算法的時間複雜度時,常見到如下形式的方程,t n a t n b f n a 1,b 1,f n 一般是個簡單函式 這時可以有2種方法,來計算時間複雜度。一是用遞迴樹,逐層代入原式,最終形成乙個級數,然後用乙個函式來表達,得到t n 二是應用主項定理master method...
程式自動拍攝0007
相機模式轉盤中還有乙個p檔 p模式 了解了前面的基礎知識後使用p檔才有意義!使用p檔就會感覺有人在暗中助你一臂之力!p模式 program ae,翻譯過來就是程式自動 模式,所謂的程式自動拍攝模式,是說相機根據現場的光照條件,計算出光圈和快門的 組合之後,你就可以按下快門了,使用p檔拍照的時候,如果...
LeetCode 0007 整數反轉
給你乙個 32 位的有符號整數 x 返回 x 中每位上的數字反轉後的結果。如果反轉後整數超過 32 位的有符號整數的範圍 231,231 1 就返回 0。假設環境不允許儲存 64 位整數 有符號或無符號 示例 1 輸入 x 123 輸出 321 示例 2 輸入 x 123 輸出 321 示例 3 輸...