簡體   English   中英

表達式的漸近運行時復雜度

[英]Asymptotic run time complexity of an expression

我可以這樣說嗎:

log n + log(n-1)+ log(n-2)+ .... + log(n-k)= theta(k * log n)?

上面的正式寫法:

Sigma(i從0到k)log(ni)= theta(k * log n)?

如果以上說法正確,我該如何證明?

如果不正確,如何將其(當然是等式的左側)表示為n和k的漸近運行時間函數?

謝謝。

表示:

LHS = log(n) + log(n-1) + ... + log(nk)

RHS = k * log n

注意:

LHS = log(n*(n-1)*...*(nk)) = log(polynomial of (k+1)th order)

因此,這等於:

(k+1)*log(n(1 + terms that are 0 in limit))

如果我們考慮除法:

(k+1)*log(n(1 + terms that are 0 in limit)) / RHS

我們受到限制:

(k+1)/k = 1 + 1/k

因此,如果k為常數,則兩項均會快速增長。 所以LHS = theta(RHS)

Wolfram Alpha似乎同意。

n為常數時,以前限制為0不會消失,而是得到:

(k+1) * some constant number / k * (some other constant number)

所以是:

(1 + 1/k)*(another constant number) 所以LHS = theta(RHS)

證明Θ ,要證明OΩ

上限很容易證明:
log(n(n-1)...(nk)) ≤ log(n^k) = k log n = O(k log n)

對於下限,如果k ≥ n/2 ,則在乘積中有n/2項大於n/2
log(n(n-1)...(nk)) ≥ (n/2)log(n/2) = Ω(n log n) ≥ Ω(k log n)

如果k ≤ n/2 ,則所有項均大於n/2
log(n(n-1)...(nk)) ≥ log((n/2)^k) = k log(n/2) = Ω(k log n)

暫無
暫無

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

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