我需要帮助证明如果f(n)= O(g(n))意味着2 ^(f(n))= O(2 ^ g(n)))

时间:2012-09-11 01:12:02

标签: big-o logarithm proof

在上一个问题中,我(有希望正确地)表明f(n) = O(g(n))暗示lg(f(n)) = O(lg(g(n)))具有足够的条件(例如lg(g(n)) >= 1, f(n) >= 1,并且足够大n)。

现在,我需要证明或反驳f(n) = O(g(n))暗示2^(f(n)) = O(2^g(n)))。直观地说,这是有道理的,所以我想我可以在前一个定理的帮助下证明它。我注意到f(n)可以重写为lg(2^f(n))g(n)只是lg(2^g(n)),这让我很兴奋...这是以两边的对数基数2为准我想要证明什么,它简化了很多事情!

但我很确定这不起作用。仅仅因为lg(2^f(n)) = O(lg(2^g(n)))并不一定意味着2^f(n) = O(2^g(n)) ......那是从前一个定理(它表示“暗示”,而不是“当且仅当”)的倒退。

我是否需要以另一种方式尝试此证明,或者我是否真的可以取消我所拥有的(至少作为首发)?

**说到其他方式,也许我可以争论如何将{2}增加到某个g(n)以上f(n)还会保持更高?这几乎感觉像是一个常识论点,但也许我错过了一些重要的东西......

**哦,哎呀!我忘了添加f(n)g(n)渐近正面。通过我们的教科书定义,这意味着它们“对所有足够大的n都是正面的”。

3 个答案:

答案 0 :(得分:14)

嗯,开始时甚至都不是。

假设算法A需要2n步,算法B需要n步。然后他们的比例是一个常数。

但是2 2n 和2 n 的比例不是常数,所以你所说的并不成立。

答案 1 :(得分:5)

如果f(n)= O(g(n)),则2 ^(f(n))不等于O(2 ^ g(n)))

设,f(n)= 2log n和     g(n)= log n
(假设日志是基数2)

我们知道,2log n< = c(log n) 因此f(n)= O(g(n))

2 ^(f(n))= 2 ^ log n ^ 2 = n ^ 2
2 ^(g(n))= 2 ^ log n = n

我们知道 n ^ 2不是O(n)

因此, 2 ^(f(n))不等于O(2 ^ g(n)))

答案 2 :(得分:0)

对于任何f,g:N-> R *,如果f(n)= O(g(n))则2 ^(f(n)= O(2 ^ g(n))(1)< / p>

我们可以通过找到一个反例来反证(1)。

假设(1)是true->根据Big-O定义,存在c> 0和整数m> = 0,这样:

2 ^ f(n)<= c2 ^ g(n),对于所有n> = m(2)

选择f(n)= 2n,g(n)= n,我们也有f(n)= O(g(n)),将它们应用于(2)。

-> 2 ^(2n)<= c2 ^ n-> 2 ^ n <= c(3)

这意味着:存在c> 0且整数m> = 0,使得:对于所有n> = m,为2 ^ n <= c。

没有这样的c,因为如果存在,我们总会发现n> lg(c)使得(3)不成立:2 ^ n> = c,对于所有n> = lg(c)。

因此,(1)不能为真。