簡體   English   中英

什么是log(O(n * log(n)))?

[英]What would be the log(O(n * log(n)))?

我目前正在算法類中學習大O表示法,但偶然發現了困擾我的這個特殊問題。 如果我們知道形式定義成立,是否可以將O(n lg(n))表示為c * n * lg n? 意思是,如果f(n)<= c n lg n,並且該定義對於某些常數成立,則O(n lg n)可以表示為c * n * lg n? 如果我的假設是正確的,那么我們可以做:

= lg(O(n lg n))

= lg(c * n * lg n)

= lg(c)+ lg(n)+ lg(lg(n))

如果在這種情況下lg(n)是最高階項,那么這會簡化為O(lg(n))嗎? 由於所有低階項最終都將與高階項重疊?

是的,您完全正確,數學正確。

在此處輸入圖片說明

您的問題有點難以理解。 我想你在問:

假設我們有一個函數f ,它漸近地以O(n lg n)的速率增長。 函數lg ∘ f是否漸近地以O(lg n)的速率增長?

是的,它確實。

更新:評論員保羅·漢金(Paul Hankin)提出了一個反例。 也許這是正確的嗎?

假設我們有一個函數f ,它以O(n lg n)的速率漸近增長。 函數lg ∘ f是否以O(lg n)的速率漸近增長?

我認為答案是肯定的。

您試圖證明lg(O(n lg n)) = O(lg n) 這有點非標准符號,但它意味着,對於所有fO(n lg n) ,有一個gO(lg n) ,使得log(f) = g 這在Wikipedia上進行了解釋: https//en.wikipedia.org/wiki/Big_O_notation#Multiple_usages

該陳述並不完全正確。 例如, f = 2^(-n)O(n lg n) ,但是lg(f) = -n不在O(lg n) 但是,如果我們將自己限制為大於1 f ,那么它是正確的。

如果f = O(n lg n) ,則存在一個c ,對於所有足夠大的nf(n) < cn lg n 然后lg(f(n)) < lg(c) + lg(n) + lg(lg(n)) = O(lg n) 由於lg(f(n)) > 0 ,因此我們有了lg(f(n)) = O(lg n) 從本質上講,這是您從問題中得到的證明,同時對定義稍加注意,並確保lg(f(n))既不大也不為負。

暫無
暫無

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

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