我该如何数学证明1/n是O(1)?我不确定从哪里开始。有什么帮助吗?
问题已经说了,从大O符号的定义开始。
F(x) = O(G(x)) IFF there exist constants k and m,
such that for all n > m, k*|G(n)| > F(n).
(请参考教科书,以获得精确的措辞。)
简单来说,这意味着如果我们“远离”起点足够远,最终G(n)将主导F(n),无论我们通过常数因子给予F(n)多大的初始优势。
那么,如何证明这样的事情呢?
这种证明通常是建设性的——展示特定的、精心选择的m和k值使不等式成立。
现在你只需要进行代数运算。找到一些能满足正式定义的m和k。根据所需的形式/详细程度,您可能需要证明1/n是单调递减的(或进行归纳证明),以显示您选择的m和k实际上有效。
Margus(和Loadmaster):渐近符号讨论的是函数,与底层硬件和实现完全独立。1/n=O(1)是一个数学真理,甚至不依赖于我们称之为“计算机”的东西的存在。如果您正在考虑指令数量,那么您正在推理复杂度类(考虑P、NP、EXP),而不是渐近符号。
如果您正在为算法演示此内容,请首先指出输入将是正数数据(N >= 1),您不能输入1/2的数据 :)
之后,演示当n > 1时,1/n是一个增长函数,您应该对此进行归纳,然后就可以开始了,因为您已经指出n始终大于1!
实际上你不需要证明它,这是一个事实。对于任何大于0的自然数n,1/n的上界始终为1。
n>1
,有1/n <= 1
开始(并结束)。 - Sheldon L. Cooper