大O符号 - 证明/反驳逻辑陈述

时间:2013-12-09 12:56:21

标签: time-complexity

我需要证明/反驳以下句子:
对于每个f(n)= O(logn)意味着2 ^(f(n))= O(n)

我认为这是真的,因为2 ^(log(n))= n 你觉得怎么样?

3 个答案:

答案 0 :(得分:1)

f(n)= O(log n)意味着存在正常数M,因此最终(对于所有足够大的n),我们有| f(n)| < = M * log n。

如果这是真的,那么因为2的取幂是一个递增函数,我们也有2 ^ | f(n)| < = 2 ^ M * n。因此,定义所需的“正常数”为2 ^ M.

简短的回答,是的,但它并不像“因为2 ^(log n)= n”这是真的那么明显。

答案 1 :(得分:1)

假设包含答案的这个问题将一起转移到cs(理论):

你可以看一下O(...)的定义。 如果f(n)= O(log n),则意味着存在一些常数M,使得| f(n)| &LT; M log(n)为n变得非常大。 如果2 ^ f(n)= O(n),则应该能够找到常数M',使得2 ^ f(n)<1。恩。

你能这样做吗?

答案 2 :(得分:1)

f(n)=O(logn) =>  f(n) <=  Clogn

Therefore, 
     2^(f(n)) <= 2 ^ Clogn
              <=  (2^C) * 2^logn
              <= (2^C) n

So, 2^(f(n) = O(n)        

[严格来说,你需要log b x = log a x / log a b]