Big-O表示法:“n”是“O(0.5n)”?

时间:2017-09-16 20:26:59

标签: algorithm big-o

定义: enter image description here

示例:

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 的行为?

3 个答案:

答案 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)