示例:
f(n)= n
g(n)= 0.5n
请注意,当c = 1且n0 = 1时,对于所有n> = n0,n> = 1(0.5n)。
然而,该定义指出“存在”一个真正的常数c> 0,不是“为了所有人”。所以在这种情况下,如果我们选择c = 3且n0 = 1,则对于所有n> = n0,n <= 3(0.5n)成立,因此, n 是 O( 0.5N)
如果是,语句的语义是什么, n 是 O(0.5n)?
n 对无穷大的行为类似于 0.5n 的行为?
答案 0 :(得分:1)
是的,0.5n也是O(n)。对于Big-O,您总是可以删除常量(读取:忽略常量),因为它们不随输入大小增长。
编辑:刚看到你的编辑。 Big-O的语义意义不是一个函数在另一个函数中以任意输入大小“行为相似”,而是在一个常数因子中,一个函数在另一个函数上限。
另请参阅此帖子的第二个答案:What is a plain English explanation of "Big O" notation?
答案 1 :(得分:1)
首先,定义说明&#34;如果有&#34;,不是&#34;有&#34; (我确定你的意思是前者,但只是说)。
是的,您描述的结果与定义完全一致。但是,通常我们会在Big-Oh表示法中删除常量,因为它们对于我们提供了上限和#34;功能。如果选择c = 2,则得到n = O(n)。另一个例子,(3n + 9)是O(n),并且(9 log n + n)是O(n),因为(9 log n + n)&lt; = 10n,n0 = 1。
答案 2 :(得分:1)
对于n> = n0,它意味着它是运行时或空间复杂度的上界(并且通常意图是'等于')。
重要的是要记住O(n)
是一组功能。因此,某个函数g(n)
的含义,其中n是函数g的输入大小,为O(n)
,g(n)
由O(n)
上限。非正式地,但不完全正确,我们经常写g(n) = O(n)
或某些算法= O(n)
。
正如已经指出的那样,像O(n)
这样的渐近符号会忽略常量,所以O(0.5n) = O(n)
。或者,更一般地说,O(cn) = O(n)
。