簡體   English   中英

使用主定理確定時間復雜度

[英]Determine the time complexity using master theorem

對於給定問題,我如何使用主定理確定時間復雜度?

T(n) = aT(n/b) + O(n^d) 
T(n) = 4 T(n/2) + n*log(n)
a = 4, b = 2, d = 1  
1. O(n^d)       if d > logb(a)
2. O(n^d logn)  if d = logb(a) 
3. O(n^logb(a)) if d < logb(a) 

就我而言:

log2(4) = 2  --> d < log2(4) 
T(n) = O(n^logb(a)) 
     = O(n^2) 

這個對嗎?

編輯:

我現在采取了不同的方法,結果與以前相同,並遵循我的教授的指示。

T(n) = a*T(n/b) + f(n)

T(n) = 4 T(n/2) + n*log(n) 

         1. Ө(n^(logba))       , if --> f(n) є O(n^(logba-ε)),
T(n) = { 2. Ө(n^(logba) log2n) , if --> f(n) є Ө(n^(logba))
         3. Ө(f(n))            , if --> f(n) є Ω(n^(logba+ε))

首先我看第二種情況

f(n)  = n*log(n)
logb^a = log2^4 = 2
n^log24 = n^2

第二種情況適用,因為:

n*log(n) ∉ Θ(n^logba) —> the runtime of f(n) is smaller, because n*log(n) < n^2 

如果 f(n) 的運行時間小於 n^2,請查看第一種情況

1. Ө(n^(logba)) , if --> f(n) є O(n^(logba-ε))

O(n^(logba-ε)) = O(n^(log24-ε))= O(n^2-ε)
n*log(n) ∈ O(n^(log24-ε)) --> works 

f(n) 以 O(n^2-ε) 作為最壞情況的上限,

  1. Master 的情況——定理適用:
T(n) = Θ(n^log24) = Θ(n^2)
T(n) = Θ(n^2)

您在此處陳述的主定理的版本特別假設加法項具有 O(n d ) 的形式。 在這種情況下,附加項的形式為 n log n,它不是 O(n 1 )。 這意味着您不能像上面那樣應用主定理。

在處理此類重復時,一個有用的技術是將重復夾在其他兩個之間。 例如,請注意,T(n) 受這些遞歸的限制:

S(n) = 4S(n / 2) + n

R(n) = 4T(n / 2) + n 1+ε ,其中 ε 是一些小的正數。

嘗試使用主定理解決這些遞歸中的每一個,看看你得到了什么,記住你的遞歸求解到一個夾在它們之間的值。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM