如果 f(n) = O(g(n)),则 log(f(n)) = O(log(g(n))?

问题描述 投票:0回答:2

我今天才知道这个关系不成立,因为 log 改变了函数的行为。但这是真的吗?举个例子就好了。

如果 f(n) = ϴ(g(n)),log(f(n)) = ϴ(log(g(n)) 成立吗?

如有任何帮助,我们将不胜感激。预先感谢。

algorithm asymptotic-complexity
2个回答
-1
投票

现在评论已经表明这个问题是关于渐近极限而不是关于算法复杂度......

您可以使用 L'Hôpital 规则(信息存在于任何微分学基础文本中)以及

ln(x)
(自然对数)的导数为
1/x
的事实来表明
f(n)/g(n)
的渐近极限等于
log(f(n))/log(g(n))
的渐近极限。

请注意,这与算法复杂性几乎没有关系。


-2
投票

如果我们将“O(g)中的f”表示为“存在一个实数M和实数N,使得|f(n)|≤Mg(n)” 对于所有 n>N”,如果 g(n)=1,则索赔可能会失败。

反例:f(n)=ag(n)=1,其中a是对数的底数。 那么 f(n) 就在 O(g(n)) 中,因为

a=|f(n)|≤ag(n)=a

对于所有n>0。然而,不存在(正)实数 M 和实数 N 使得

1=|log(f(n))|≤Mlog(g(n))=0

对于所有 n>N,因此 log(f(n))O(log(g(n)))不是

但是,该主张适用于更一般的情况 g(n):

声明: 如果对于所有 n>K log(g(n))>0,对于所有 n>L f(n)>0,且 f(n)O(g(n)),则 log(f(n)) 位于 O(log(g(n))

证明:由于f(n)O(g(n))中,存在正实数M和实数N使得

|f(n)|≤Mg(n)

对于所有n>N。现在对两边应用log,注意这个函数是单调的,得到

|log(f(n))|=log(|f(n)|)≤log(Mg(n))=log(M)+log(g(n))

对于所有 n>max(N, L)。 由于 log(g(n))>0 对于 n>K,存在 B>0 使得

log(M)≤博客(g(n))=log((g(n))^B)

对于n>K。因此,

|log(f(n))|≤log(M)+log(g(n))≤博客(g(n))+log(g(n))=(B+1)g(n)

对于所有 n> max(N,L,K),因此 log(f(n)) 位于 O(log(g(n)))

© www.soinside.com 2019 - 2024. All rights reserved.