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

时间:2016-12-11 07:44:29

标签: algorithm asymptotic-complexity

我今天刚刚了解到这种关系不成立,因为日志会改变函数的行为。但这是真的吗?一个例子就是好的。

如果f(n)=Θ(g(n)),log(f(n))=Θ(log(g(n))是否成立?

感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

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

您可以使用L'Hôpital的规则(信息在差分微积分的任何基本文本中)以及ln(x)(自然对数)的导数为1/x以显示渐近极限的事实f(n)/g(n)等于log(f(n))/log(g(n))的渐近限制。

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

答案 1 :(得分:-1)

上一个答案不正确。例如,

f(n)=ag(n)=1,其中 a 是对数的底。然后 f(n)O(g(n)) 中。实际上,f(n)<=cg(n) 代表所有 n>0,其中 c=a。但是,log(f(n))=1log(g(n))=0。现在 1 不在 O(0) 中。实际上,不存在常量 CN 使得 1=log(f(n))<=Clog(g(n))=0 对所有 n>N 都存在。

然而,假设 log(g(n))>0。由于 f(n)O(g(n)) 中,我们有常量 AN,使得 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)) 中。