渐近证明的例子

时间:2013-07-06 21:38:28

标签: algorithm asymptotic-complexity

我遇到了两个渐近函数证明。

  1. f(n)= O(g(n))表示2 ^ f(n)= O(2 ^ g(n))

    Given: f(n) ≤ C1 g(n)
         So, 2^f(n) ≤ 2^C1 g(n)                        --(i)
    
    Now, 2^f(n) = O(2^g(n)) → 2^f(n) ≤ C2 2^g(n)                  --(ii)
    
    From,(i) we find that (ii) will be true.
    Hence 2^f(n) = O(2^g(n)) is TRUE.
    
  2. 你能告诉我这个证据是否正确吗?有没有其他方法可以解决这个问题?

    2.f(n)= O((f(n))^ 2)

    如何证明第二个例子?在这里我考虑两种情况,一种是f(n)<1而另一种是f(n)> 1.

    Note: None of them are homework questions. 
    

1 个答案:

答案 0 :(得分:0)

示例1的尝试证明看起来很好但是有缺陷。首先,“2^f(n) ≤ 2^C1 g(n)”表示2^f(n) ≤ (2^C1)*g(n),一般都是假的。应该写成2^f(n) ≤ 2^(C1*g(n))。在以“Now”开头的行中,您应该明确说出C2 = 2^C1。声明“(ii)将是真的”是空的(没有(ii))。

f(n) = 1/n这样的函数反驳了示例2中的声明,因为没有常数N和C,因此对于所有n&gt; N,f(n)&lt; C *(F(N))2。证明:给出一些N和C.选择n> N,n> C。 f(n)= 1 / n = n *(1 / n 2)> C *(1/n²)= C *(f(n))²。因为N和C是任意选择的,这表明没有N和C的固定值使得对于所有n> 1。 N,f(n)&lt; C *(f(n))²,QED。

说“f(n)≥1”不足以证明第二项索赔;但如果你写“f(n)≥1表示所有n”或“f()≥1”,则可以证明。例如,如果对于奇数n,f(n)= 1 / n,对于偶数n,如果f(n)= 1 + n,则f(n)> 1甚至n>奇数n为0,小于1。为了证明f(n)= O((f(n))²)是假的,使用与前一段相同的证据,但附加规定n是偶数。

实际上,对于所有n,“f(n)≥1”强于确保f(n)= O((f(n))²所需的强度。设ε为任何固定的正值。无论ε多小,对于所有n,“f(n)≥ε”。 N'“确保f(n)= O((f(n))²)。为了证明这一点,取C = max(1,1 /ε)和N = N'。