big-o - 为什么 n^2 + 2n + 2 等于 O(n^2)?
问题描述
我正在学习 Big-O 表示法,我发现了一个我无法简化的例子。
为什么 n^2 + 2n + 2 = O(n^2)?
解决方案
在谈论渐近符号时,您通常使用非常大的值,n
并且您尝试找出程序有界的数学函数。
在这种情况下,您有 2 个函数n^2
和2n
(让我们暂时忽略常量)。
如果您绘制这些图表,您可以看到以下内容:
虽然比一开始2n
略高,但一旦走向无穷,永远低于n^2
n
2n
n^2
因此,如果您的方法具有 的复杂性,那么当的值趋于无穷大O(n^2 + 2n)
时,这并不重要(或者可以忽略不计),因为您的程序将始终受. 你可以用同样的推理来解释为什么一个常数没有那么重要,即使它是一个很大的常数。n
2n
n^2
此外,在渐近符号中,当你有总和时,你经常会做这种“简化”,就是这样。但是,如果复杂性是 ,这将是不同的O(n^2 * 2n)
,如果我没记错的话,最终会是O(n^3)
- 常量无关紧要,所以我们可以摆脱2
然后你有n^2 * n
。
推荐阅读
- java - Eclipse 4.12 内置自动补全功能少?
- c - 使用 C openssl AES-GCM 加密创建 ESP 数据包会引发错误的 ICV
- python - 使用 python 加密库加密带有重音符号的数据
- excel - 使用 VBA 或宏将 Sheet1 数据从特定文件夹中的多个工作簿导入单个工作簿
- python - 使用 cx_Freeze 冻结成可执行文件后如何知道当前文件路径?
- reactjs - 使用反应路由器链接时如何将道具从一个组件传递到另一个组件
- arrays - Google 脚本:矩形网格的 getValues() 和 setValues()
- react-native - 没有远程调试器,我的平面列表无法呈现
- google-apps-script - 如何根据 C 列中的输入复制 U 列单元格中的粘贴值
- android - java.lang.NoClassDefFoundError:解析失败:Landroidx/core/os/UserManagerCompat