簡體   English   中英

用log n求解主定理:T(n)= 2T(n / 4)+ log n

[英]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( )。

我們也知道

log n =Ω(1)

讓我們看看這是否告訴我們什么。 我們知道,對於任何ε> 0,您的復發都受此限制。

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

讓我們在這里使用主定理。 我們有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.

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