我如何在数学上证明1 / n是O(1)?我很困惑从哪里开始。有什么帮助吗?
答案 0 :(得分:2)
正如问题所述,从big-O表示法的定义开始。
F(x) = O(G(x)) IFF there exist constants k and m,
such that for all n > m, k*|G(n)| > F(n).
(请在此处查阅textboox以获取准确的措辞。)
非正式地说,这意味着如果我们走得足够远,那么无论我们通过常数因子给F(n)带来多大的初始优势,最终G(n)将支配F(n)。
那么,你如何证明这样的事情?
这样的证明通常是建设性地完成的 - 表明m和k的特定精心选择的值使不等式起作用。
现在你只是做代数。找到满足形式定义的m和k。根据所需的形式/细节水平,您可能需要证明1 / n是单调减少(或做一些感应证明),以表明您对m和k的选择确实有效。
Margus(和Loadmaster):渐近符号谈论函数,完全独立于底层硬件和实现。 1 / n = O(1)是一个数学真理,即使存在我们称之为“计算机”的东西,也不会被预测。如果你在考虑指令的数量,你就是在推理复杂性类(想想P,NP,EXP),而不是渐近符号。
答案 1 :(得分:1)
如果您要为算法证明这一点,首先指出输入将是正数量的数据(N> = 1),您不能输入1/2数据:)
之后,证明当n> 1时,1 / n是增长函数。 1,你应该使用感应,并且你很好,因为你已经指出n总是大于1!
答案 2 :(得分:1)
好吧,让我们考虑一下这一点。我们有两个函数f(n)= 1 / n和g(n)= 1。我们需要的是两个常数C和k,使得每当n> 0时,0 <= f(n)<= C * g(n)。 ķ。如果两个函数的域都限制为所有正整数的集合,我们只需选择C = 2和k = 0。然后,对于所有n> 0,我们得到0 <= 1 / n <= 2 * 1。这里我们称C和k为关系的见证人1 / n是O(1)。
需要更严格地证明一下吗?嗯......显然是1 / n&lt; 1 当且仅当 1&lt; n(通过简单代数)。因此,如果n = 1(这意味着1 / n = 1),我们知道2 * 1> 1。 1如果n> 1我们知道这意味着1 / n <1。 1,在这种情况下2 * 1> 1 / N。
答案 3 :(得分:-3)
你实际上没有必要证明它,这是事实。如果n是大于0的自然数,则1 / n的上限始终为1.