使用归纳证明n = Big-O(1)

时间:2010-09-26 10:16:56

标签: complexity-theory big-o proof

我知道关系n = Big-O(1)是假的。但是,如果我们使用涉及Big-O的归纳法,则可以证明。但谬论是我们无法引入Big-O。但我的问题是我们如何通过使用常数来反驳这种关系。

虚假证明在这里,请使用常数给我证明它是假的。我对常量感到困惑,我不知道证明中使用的每个关系是否具有不同的常数或相同。请指教。

TO prove: n= O(1)
for n=1 , 1= O(1) proved

归纳假设:确实如此:n-1 = O(1) 现在我们证明n = O(1)

LHS :  n = (n-1) + 1 
         =  O(1) + 1
         =  O(1) + O(1)
         =  O(1) 

虚假证明.. 我希望用< =和常量来澄清谬误,这是Big-O的基本定义。

4 个答案:

答案 0 :(得分:13)

这里隐藏着一个巨大的逻辑谬误:

LHS :  n = (n-1) + 1 
         =  O(1) + 1
         =  O(1) + O(1)
         =  O(1) 

n是函数,Ο(1)是一组函数。也不是一个数字(感应证明都是关于一举证明一大堆个别数字的东西)。使用等号,如n =Ο(1),is an informal shorthand for f ∈ Ο(1), where f(x) = x

此证明以两种方式使用the fallacy of equivocation

  • 假装n是一个数字(归纳旅程中的下一个数字)而不是整个函数
  • 通过假装等号表示两个数字相等,这就是它在感应证明中的含义,而不是元素的简写

如果你想更清楚地看到为什么这个证明失败了,用一个函数的另一个符号替换n,f(其中f(x)= x),并且在需要的地方用符号元素替换等号,看看是否证据仍然有意义。

基本情况:

let h(x) = 1 in
          h ∈ Ο(1)        [Any function is in Ο(that function)]

归纳案例:

          n = (n - 1) + 1 [Algebraic identity]
      n - 1 = n - 1       [Arithmetic]

let f(x) = x
    g(x) = f(x) - 1 in
          g ∈ Ο(1)        [Assume g ∈ Ο(1) because a different function, h, was]
          f ∈ Ο(1 + 1)    [By definition of Ο]
          f ∈ Ο(2)        [Arithmetic]

这更加清楚,这根本不是感应证明。它本身甚至不是一个有效的证明,因为我们只证明了h∈Ο(1),它与g∈Ο(1)无关,因为这些函数的作用非常非常不同。 / p>

答案 1 :(得分:6)

大O符号是关于函数的,所以像1 = O(1)这样的语句没有任何意义。你在这里证明的是,如果你采用任意n和常数函数f(x) = n,那么f = O(1)这是真的并且没有矛盾。证明没有问题,问题是您将常量函数f(x) = n与函数f(n) = n混淆。对于后者,我们有f = O(n),如果你试图用你的方法证明它,你会发现它不起作用。

答案 2 :(得分:3)

你必须要理解的一点是,Big-O或简单的O表示函数增长的'速率'。你不能用数学归纳来证明这个特殊的属性。

一个例子是

O(n^2) = O(n^2) + O(n)

通过简单的数学运算,上述语句暗示O(n)= 0,而不是。所以我想说不要使用MI。 MI更适合绝对值。

答案 3 :(得分:0)

如果你需要做任何涉及Big-O表示法的严格证明,你需要从format definition of Big-O开始。在证明中你不能只说O(1) + 1 = O(1)。您需要根据正式定义进行证明。要证明函数(例如f(n) = n)是O(1),您需要找到与定义匹配的唯一x0和M.你可以通过归纳来证明这一点,你也可以使用定义通过矛盾来证明f(n) = n不是O(1)

就像奥拉西在他的回答中所说,你不能只是添加Big-O集和功能。从正式定义将函数分类为特定Big-O集的成员开始。