Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Big o 为什么n^2+;2n+;2等于O(n^2)?_Big O - Fatal编程技术网

Big o 为什么n^2+;2n+;2等于O(n^2)?

Big o 为什么n^2+;2n+;2等于O(n^2)?,big-o,Big O,我正在学习Big-O符号,我发现了一个无法简化的例子 为什么n^2+2n+2=O(n^2)?在讨论渐近符号时,通常使用非常大的值n,并试图通过什么数学函数来确定程序有界 在本例中,您有两个函数n^2和2n(现在我们忽略常量) 如果您绘制了的图形,您可以看到以下内容: 虽然开始时2n略高于n^2,但一旦n变为无穷大 因此,如果您的方法的复杂性为O(n^2+2n),那么当n的值无限大时,它实际上并不重要(或者可以忽略不计),因为您的程序将始终受到n^2的约束。你可以用同样的推理来解释为什么常数没

我正在学习Big-O符号,我发现了一个无法简化的例子


为什么n^2+2n+2=O(n^2)?

在讨论渐近符号时,通常使用非常大的值
n
,并试图通过什么数学函数来确定程序有界

在本例中,您有两个函数
n^2
2n
(现在我们忽略常量)

如果您绘制了的图形,您可以看到以下内容:

虽然开始时
2n
略高于
n^2
,但一旦
n
变为无穷大

因此,如果您的方法的复杂性为
O(n^2+2n)
,那么当
n
的值无限大时,它实际上并不重要(或者可以忽略不计),因为您的程序将始终受到
n^2
的约束。你可以用同样的推理来解释为什么常数没有那么重要,即使它是一个巨大的常数


另外,在渐近表示法中,当有和时,通常会进行这种“简化”,情况就是这样。然而,如果复杂度是
O(n^2*2n)
,这将是不同的,如果我没有弄错的话,它最终会是
O(n^3)
——常数不重要,所以我们可以去掉
2
,然后你就有了
n^2*n

算法的运行时间(时间复杂度)通常表示为输入大小的函数

f(n)=n2+2n+2,其中
n
是输入的大小

当输入大小或
n
急剧增加时,Big-O符号现在用于表示复杂性(函数)的渐近行为。(这很有趣,因为小输入的运行时间通常无关紧要)

简单地说,通过查看函数的术语并假设
n
非常大

  • n2是二次增长
  • 2n以较小的常数因子增长,是线性增长
  • 2是一个常数,因此可以忽略不计

很明显,n2项在时间复杂性中占主导地位,并且对时间复杂性的贡献最大,因此O(n2)。

大概就是“为什么O(n^2+2n+2)等于O(n^2)?”是的,我在user2864740处修复了它,因为这个问题需要多次编辑,有人在查看您的原始问题时甚至将其标记为无法解决,我建议你看一下,作为将来提问的参考;)-如果回答了你的问题,也别忘了接受其中一个答案。谢谢,我的wolfram alpha fu不太好,正在寻找一种方法来做到这一点。将更新答案。谢谢你的答案,但对我来说,这有点复杂,是一个建议,也许更简单一点?我不确定我是否理解。你想要一个更简单的例子吗?或者你更喜欢一个更简单的解释?对我来说,一个更简单的解释会更好,当我看到这3段时,我有点回避它们,因为它们让你的答案看起来很无聊。我认为只有第三段作为答案,会非常简单,并且符合实际情况point@IvoMori我当然会的