我知道关系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的基本定义。
答案 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,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集的成员开始。