[英]Time complexity and Master's theorem
我試圖更好地理解碩士定理和時間復雜度。 我在網上找到了一些我正在練習的例子。 我的工作正確嗎?
T(N) = 3T(N/3) + O(N)
將具有時間復雜度 Θ(n),因為 log(base 3) 3 = 1。因此,Θ(n^1) + O(N) 簡化為 Θ(n)。
T(N) = 3T(2N/3) + O(1)
這個看不懂我知道這是 stooge 排序算法,但如果使用大師定理,a 和 b 不是都是 3,使 log(base 3) 3 = 1,使這個 Θ(n)? 我知道這是不正確的,但我很難理解大師定理。
T(N) = 4T(N/2) + O(N)
會有時間復雜度 Θ(n^2),因為 log(base 2) 4 = 2。那么,N^(log(base 2) 4) = N^2
T(N) = 2T(N/2) + O(N log(N))
在這里,我認為它只是 O(N log(N)),因為 log(base 2) of 2 是 1。
通過主定理:-
if
T(n) = aT(n/b) + f(n^k)
if loga/logb > k then T(n) = O(n^(loga/logb))
if loga/logb < k then T(n) = O(n^k)
else T(n) = O(n*logn)
1. a = 3 b = 3 k=0 loga/logb = 1 = k hence T(n) = O(nlogn)
2. a = 3 b = 3/2 k=0 log3/log(3/2) > 1 > k hence T(n) = O(n^(log3/log(3/2)))
3. a = 4 b = 2 k = 1 log4/log2 = 2 > 1 hence T(n) = O(n^2)
我們先詳細闡述一下主定理,分析一下你的四種情況。
在上圖中,它表明在每個級別的復雜度為:
我們總結所有級別的所有計算並得到總數:
那么我們只需要分析由乘法因子(或公比)確定的幾何級數的全函數: a/b^d
。
如果公比小於 1,那么當a/b^d < 1
或d > log_b a
時,從第一項n^d
開始會出現指數衰減,這是顯性項或大 O。
在您的情況 1 中,其中T(N) = 3T(N/3) + O(N)
,我們首先看到公比a/b^d = 3/3^1=1
。
對於您的情況 2 T(N) = 3T(2N/3) + O(1)
它將是a/b^d = 3/(3/2)^0 = 3 > 1
(其中 a = 3, b = 3/2 和 d = 0),因此大 O 將是: .
對於您的情況 3 T(N) = 4T(N/2) + O(N)
a 為 4,b 為 2,d 為 1。
對於第四種情況T(N) = 2T(N/2) + O(N log(N))
公比將小於 1,因為a/b^d = 2/2^1.x
其中d > 1
,那么幾何級數將呈指數衰減。 因此,第一項n log n
將主導該系列,因此它將是大 O。
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.