证明大O符号声明

时间:2017-08-28 09:31:07

标签: algorithm big-o proof

好吧我有点新,我的数学证明知识和实践是新手,它不多,因为我只有几周的算法和设计论文,我有点学习挑战。我试图围绕几个实验室问题进行讨论,我希望如果有人可以帮我解决这个问题,我会建立一点动力,并能够用自己的力量回答更难的问题。

我有一个定义:让f,g为函数。如果存在c,则n0> 0,使得对于所有n> n0,f(n)≤c·g(n),则f(n)为O(g(n))

必须使用定义证明这一点。

对于每个函数 f:N→N,f(n)是O(f(n))。

现在我首先感到困惑的是g(n)在这个问题中没有这个问题,但是在更难的问题上,所以我知道这不是一个错字。我认为它是相同的功能所以不应该是大的theta?我很迷茫。另外,如何将此作为证明也对我来说也很神秘。我可以直接证明这一点吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

也许你对你试图证明的陈述只使用一个函数即f这一事实感到困惑,而你引用的定义涉及两个不同的函数。

话虽如此,您要证明的声明是,NN的每个函数都不会渐渐增长,而不是,这并不令人惊讶。对于正式证明,让f : N -> N成为这样一个函数。

c := 1n0 := 0;让n为整数,n > n0。然后我们获得

f(n) = 1 * f(n) = c * f (n) <= c * f (n)

根据定义,意味着f in O(f),这是要证明的陈述。

这是一个直接证明,它通过明确选择定义中的cn0并表明它们满足定义中的条件来执行。

由于这显然是一个家庭作业问题,我想它是作为一个例子来介绍正式定义以及如何使用它,而不是因为语句本身很有趣。