![](/img/trans.png)
[英]Difference between solving T(n) = 2T(n/2) + n/log n and T(n) = 4T(n/2) + n/log n using Master Method
[英]Solving master theorem with log n: T(n) = 2T(n/4) + log n
我目前正在嘗試用主定理解決這種關系:
T(n)= 2T(n / 4)+對數n
我已經知道a = 2和b = 4,但是我對log n感到困惑。
我的腳本說:c(n)(此處將為log n)是Big O(n ^ d)的元素。
如果我能在這里找到我的d,我將比較a和b ^ d以找出我的主定理案例。
但是,由於它在此處登錄為n,因此我不確定其Big O表示法。
我的意思是我可能會說這是O(n 1/2 )的元素,這將導致第二種情況,其中a和b ^ d是相同的,但它也是O(n 1 )的元素,那么它將是又是另一種情況。
一個有用的事實是,對於任何ε> 0,我們都知道
log n = O( nε )。
我們也知道
log n =Ω(1)
讓我們看看這是否告訴我們什么。 我們知道,對於任何ε> 0,您的復發都受此限制。
S(n)= 2S(n / 4)+ nε
讓我們在這里使用主定理。 我們有a = 2,b = 4,和d =ε。 我們需要推理出log b a = log 4 2 = 1/2以及與d =ε的關系。 讓我們將ε減小-例如,讓我們選擇ε= 0.000001。 然后我們有log b a <d,所以主定理說運行時間為
O(n log b a )= O(n 1/2 )。
接下來,考慮以下遞歸關系:
R(n)= 2R(n / 4)+ 1
這種復發會降低您的復發率。 使用主定理告訴我們,R(n)=Ω(n 1/2 )也是。
總體而言,我們看到您的復發率是O(n 1/2 )和Ω(n 1/2 ),上下限將您的復發率分為較大和較小的復發率。 因此,即使Master Theorem在這里不適用,您仍然可以使用Master Theorem聲明運行時間為Θ(n 1/2 )。
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.