Big o `2n-2n^3的大O`
我正在做一项作业,但我的一个朋友不同意其中一部分的答案Big o `2n-2n^3的大O`,big-o,complexity-theory,Big O,Complexity Theory,我正在做一项作业,但我的一个朋友不同意其中一部分的答案 f(n) = 2n-2n^3 我发现复杂性是f(n)=O(n^3) 我错了吗?你没有错,因为O(n^3)不提供严格的界限。但是,通常假设f在增加,并尝试找到g为真的最小函数f=O(g)。考虑一个简单的函数 f= n+3 。可以正确地说,f=O(n^3),因为n+32(只是选择一个任意常数)。然而,说f=O(n)“更”正确,因为n+33,这让您更好地了解f在n增加时的行为 在您的例子中,f随着n的增加而减少,因此,对于任何函数来说,当n增加
f(n) = 2n-2n^3
我发现复杂性是f(n)=O(n^3)
我错了吗?你没有错,因为O(n^3)不提供严格的界限。但是,通常假设f
在增加,并尝试找到g
为真的最小函数f=O(g)
。考虑一个简单的函数<代码> f= n+3 。可以正确地说,f=O(n^3)
,因为n+3
对于所有n>2
(只是选择一个任意常数)。然而,说f=O(n)
“更”正确,因为n+3<2n
对于所有n>3
,这让您更好地了解f
在n
增加时的行为
在您的例子中,f
随着n
的增加而减少,因此,对于任何函数来说,当n
增加时保持正值是正确的。“最小的”(或者更确切地说,增长最慢的)这样的函数是某个正常数的常数函数,我们通常把它写成2n-2n^3=O(1)
,因为2n-2n^3<1
对于所有n>0
您甚至可以发现
n
的某些函数随着n
的增加而减少,但减少的速度比f
慢,但这种用法很少。Big-O表示法最常用于描述输入大小增加时的算法运行时间,因此几乎普遍认为n
为正。f(n)
对于非负n
,严格来说是非正的,因此f(n)=O(1)
也是正确的。@切普纳请注意,OP要求的是相反的,因此即使是1也不属于O(f(n))
。我假设O(f(n))=n^3
是不正确的符号用法;我从来没有见过在左边的符号上使用大o符号。问题可能是“找到一个函数g
,使得f=O(g)
,并且对于n>0
总是负的单调递减函数有任何正常数函数作为界。