簡體   English   中英

時間復雜度和 Master 定理

[英]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. 如果共同比率大於 1,則最后一項將呈指數增長: 在此處輸入圖片說明
    a/b^d > 1d<log_b a時,這是大 O。

  2. 如果公比小於 1,那么當a/b^d < 1d > log_b a時,從第一項n^d開始會出現指數衰減,這是顯性項或大 O。

  3. 如果公比等於 1,該級數將是一個常數序列,我們將所有項相加:
    在此處輸入圖片說明


您的情況 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。

參考:

  1. https://www.coursera.org/learn/algorithmic-toolbox

暫無
暫無

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

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