![](/img/trans.png)
[英]How can we calculate running time of an algorithm using the asymptotic complexity?
[英]Using Master theorem to calculate asymptotic time complexity of algorithm
問題:您有一種算法可將n大小問題划分為六個子問題 ,大小為原始大小的四分之一 。 對於划分算法,制作100步並合並75n 。 什么是算法的漸近復雜度?
所以主定理的公式
對於這個問題a = 6和b = 4 ,但我不知道在哪里適合除法和合並信息。
可接受的結果是: O ( n 1.2924 ), omega ( n 1.2 )和O (1.001 n )
每次解決子問題時,都必須將當前實例划分為更多子問題(成本= 100
步)。 然后,您必須合並子問題的結果(成本= 75n
步)。
這意味着f(n) = 75n + 100
因為f(n)
表示求解單個子問題的成本(不包括遞歸的成本)。
f(n) = 75n + 100
是O(n)
。
因此,你看: T(n) = 6 * T(n/4) + O(n)
我們知道:
a = 6
b = 4
f(n) = 75n + 100
接下來,我們計算log_b(a) = log_4(6) = log(6)/log(4) = 1.2924...
讓我們考慮一下主定理的情況I:
如果f(n) = O(n^c)
其中c < log_b(a)
,則T(n) = Ө(n^(log_b(a))
。
我們知道f(n) = O(n^1)
,所以讓我們試試c = 1
。
c < log_b(a)
? 好吧, 1 < 1.2924...
,是的。
因此, T(n) = Ө(n^(log_b(a))
=> T(n) = Ө(n^1.2924...)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.