[英]If f(n) = O(g(n)), is log(f(n)) = O(log(g(n))?
我今天才知道這種關系不成立,因為 log 改變了函數的行為。 但這是真的嗎? 一個例子會很好。
而且如果 f(n) = ϴ(g(n)),log(f(n)) = ϴ(log(g(n)) 會成立嗎?
任何幫助表示贊賞。 提前致謝。
現在評論已經表明這個問題是關於漸近極限而不是算法復雜性.....
您可以使用 L'Hôpital 規則(信息在微分的任何基本文本中)以及ln(x)
(自然對數)的導數為1/x
的事實來表明f(n)/g(n)
的漸近極限f(n)/g(n)
等於log(f(n))/log(g(n))
的漸近極限。
請注意,這與算法復雜性幾乎沒有關系。
之前的答案不正確。 例如,
設f(n)=a
和g(n)=1
,其中a
是對數的底數。 然后f(n)
在O(g(n))
。 事實上, f(n)<=cg(n)
對於所有n>0
,其中c=a
。 但是, log(f(n))=1
和log(g(n))=0
。 現在1
不在O(0)
。 實際上,不存在常數C
和N
使得1=log(f(n))<=Clog(g(n))=0
對於所有n>N
。
但是,假設log(g(n))>0
。 由於f(n)
在O(g(n))
我們有常數A
和N
使得f(n)<=Ag(n)
對於所有n>=N
。 現在將log
應用於雙方,注意這個函數是單調的,以獲得log(f(n))<=log(Ag(n))=log(A)+log(g(n))
。 由於log(g(n))>0
存在B
使得log((g(n))^B)=Blog(g(n))>=log(A)
。 因此, log(f(n))<=log(A)+log(g(n))<=Blog(g(n))+log(g(n))=(B+1)(g(n))
對於所有n>= N
。 因此, f(n)
在O(g(n))
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.