为什么我们忽略大 O 表示法中的系数?

2024-01-22

在寻找与“Big O”符号相关的答案时,我看到了很多SO答案,例如this https://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it, this https://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o/487278#487278, or this https://stackoverflow.com/questions/11032015/how-to-find-time-complexity-of-an-algorithm,但我还是没有清楚地理解一些点。

为什么我们忽略系数?

例如这个答案 https://stackoverflow.com/questions/11032015/how-to-find-time-complexity-of-an-algorithm说最终的复杂度2N + 2 is O(N);我们删除首项系数2和最终常数2以及。

删除最终常数2也许可以理解。毕竟,N可能非常大,所以“忘记”了最后的2可能只会改变总数的一小部分。

但是我无法清楚地理解如何删除leading系数没有区别。如果领先2上面就变成了1 or a 3,总计的百分比变化将会很大。

同样,显然2N^3 + 99N^2 + 500 is O(N^3)。我们如何忽略99N^2随着500?


Big-O 表示法的目的是找出当函数的值趋于无穷大时,函数渐近行为的主导因素是什么。

当我们遍历函数域时,某些因素变得比其他因素更重要。

Imagine f(n) = n^3+n^2. As n趋于无穷大,n^2与相比变得越来越不相关n^3.

但这只是定义背后的直觉。在实践中,由于形式定义,我们忽略了函数的某些部分:

f(x) = O(g(x)) as x->infinity

当且仅当存在正实数M和一个真实的x_0 such as

|f(x)| <= M|g(x)|对全部x > x_0.

That's 在维基百科中 http://en.wikipedia.org/wiki/Big_O_notation。这实际上意味着有一个点(之后x_0)之后的一些倍数g(x)占主导地位f(x)。该定义就像一个松散的值上限f(x).

由此我们可以得出许多其他属性,例如f(x)+K = O(f(x)), f(x^n+x^n-1)=O(x^n)等等。这只是使用定义来证明这些的问题。

在特别,删除系数背后的直觉(K*f(x) = O(f(x)))在于我们试图用计算复杂度来衡量什么。最终,这一切都与时间(或实际上的任何资源)有关。但很难知道每次操作需要多长时间。一种算法可以执行2n运营及其他n,但后者可能有一个与之相关的大常数时间。因此,出于这个目的,不容易推断出两者之间的差异n and 2n.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我们忽略大 O 表示法中的系数? 的相关文章

  • 一种递归算法,用于在数组中查找总和为给定整数的两个整数

    我需要一个算法来确定数组是否包含两个总和为给定整数的元素 数组已排序 该算法应该是递归的并且运行时间为 O n 递归步骤应该基于总和 这意味着该方法传递总和并根据最终结果返回 true 或 false 如果找到两个元素 返回 true 否则
  • 算法 - 如何有效删除列表中的重复元素?

    有一个list L 它包含以下元素任意类型each 如何有效删除此类列表中的所有重复元素 必须保留订单 只需要一个算法 因此不允许导入任何外部库 相关问题 在Python中 从列表中删除重复项以使所有元素都是唯一的最快算法是什么在维持秩序的
  • Dijkstra 算法不生成最短路径?

    我正在使用 Dijkstra 算法解决最短路径问题 我遇到了麻烦 因为该算法应该提供最短路径 但运行该算法后 我手动得到了一条短路路径 这只是该算法的副产品吗 我尝试生成的路径是从 a gt z 这是我通过应用该算法得到的路径 在我访问的每
  • 什么是确定性快速排序?

    我一直在阅读有关快速排序的内容 发现有时它被称为 确定性快速排序 这是普通快速排序的替代版本吗 普通快速排序和确定性快速排序有什么区别 普通 确定性 快速排序在特定数据集上的行为可能非常差 例如 选择第一个未排序元素的实现在已排序数据上的时
  • Numpy:具有特定条件的线性系统。无负解

    我正在使用 numpy 编写 Python 代码 在我的代码中 我使用 linalg solve 来求解 n 个变量中的 n 个方程的线性系统 当然 解决方案可以是积极的 也可以是消极的 我需要做的是始终有正解或至少等于 0 为此 我首先希
  • Python:for 循环 - for i in range(0,len(list) 与 for i in list

    这是一个非常简单的Python 力学问题 为什么我不能只说 for i in range original list 而不是 for i in range 0 len original list 人们通常使用范围而不是前者吗 谢谢 If I
  • 数组中的重复元素[重复]

    这个问题在这里已经有答案了 这有点与this https stackoverflow com questions 2605766 how to find a duplicate element in an array of shuffled
  • 寻找下一个素数的最佳方法(Java)

    我被要求编写一个程序以最佳方式找到下一个素数 我编写了这段代码 但找不到最佳答案 有什么建议么 public static int nextPrime int input input now find if the number is pr
  • 关于大O和大Omega的问题

    我认为这可能是一个关于大 O 表示法的初学者问题 举例来说 我有一个算法 可以递归地分解整个列表 O n 然后将其重新组合在一起 O n 我假设这意味着效率为 O n O n 这是否可以简化为 2O n O 2n 或 O n 根据我对这种表
  • 识别鼠标移动的算法

    我想知道是否有任何研究 算法可以指定鼠标在识别 等字符时的偏差量使用鼠标绘制 某种光学字符识别 但可能是一个更简单的版本 是否有某种算法可以让我说用户绘制的问号确实是一个问号 而不是其他具有一定准确性的东西 就像 Windows 平板电脑软
  • StackOverflowError 计算 BigInteger 的阶乘?

    我正在尝试编写一个Java程序来计算大数的阶乘 它似乎BigInteger无法容纳这么大的数量 下面是我编写的 简单的 代码 public static BigInteger getFactorial BigInteger num if n
  • 更合适地说插入未排序动态数组的摊销 O(1) 与 O(n) ?

    这属于 stackoverflow com help on topic 中的 软件算法 在本例中 是一种将项目添加到动态未排序数组的软件算法 This is chart we made in class about the runtimes
  • 如何检查无向图是否有奇数环

    我试图找到一个 O V E 时间算法来检查是否已连接 无向图有或没有奇数环 我正在考虑对图进行广度优先搜索 并尝试将顶点标记为黑色和白色 以便没有两个标记为相同颜色的顶点相邻 是否有任何已知的更简洁的算法可以在线性时间内解决这个问题 你的方
  • 序列和与 GCD

    大约一个月前 我在编程挑战中遇到了这个问题 但社论尚未发布 所以我在这里问 有一个大小为 N 的数组 A 求 A 的 K 个长度子序列的总和 GCD Example 如果 A 1 2 3 且 K 2 1 2 3 总和 1 GCD 3 1 3
  • 线段树java实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你知道 二进制 的良好实现吗线段树 http en wikipedia org wiki Segmen
  • 检查有效的 IMEI

    有人知道如何检查有效的 IMEI 吗 我找到了一个可以检查此页面的功能 http www dotnetfunda com articles article597 imeivalidator in vbnet aspx http www do
  • 自动跟踪算法

    我正在尝试写一个simple跟踪例程来跟踪电影中的某些点 本质上我有一系列 100 帧长的电影 在黑暗背景上显示一些亮点 我每帧有大约 100 150 个点 它们在电影的过程中移动 我想跟踪它们 所以我正在寻找一些有效的 但可能不会过度实施
  • 数独算法,暴力破解[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • heapq.nlargest 的时间复杂度是多少?

    我在看演讲者说 获得t列表中最大的元素n元素可以在O t n 这怎么可能 我的理解是创建堆将是O n 但是复杂度是多少nlargest本身就是O n t or O t 实际的算法是什么 在这种情况下 说话者是错误的 实际成本是O n log
  • 如何在C中实现带连分数的自然对数?

    这里我有一个小问题 根据这个公式创建一些东西 这就是我所拥有的 但它不起作用 弗兰基 我真的不明白它应该如何工作 我尝试用一 些错误的指令对其进行编码 N 是迭代次数和分数部分 我认为它会以某种方式导致递归 但不知道如何 谢谢你的帮助 do

随机推荐

  • 使用maven archetype创建新项目如何指定自定义文件夹名称

    我现在正在尝试创建一个 Maven 原型 它使用spring mybatis框架 有一个mybatis xml文件 src main resources archetype resources src main resources sql
  • 如何以编程方式设置layout_weight?

    免责声明 据我所知这个问题到目前为止 XAMARIN ANDROID 还没有答案 已经回答过多次了安卓 Java https stackoverflow com questions 4641072 how to set layout wei
  • 时间校正 Verlet 积分和太大的时间步长

    我使用在这里找到的时间校正 Verlet 集成 http www gamedev net page resources technical math and physicals a simple time Corrected verlet
  • 在 Git 中,长哈希和短哈希有什么区别?

    这是长 Git 哈希值 提交 c26cf8af130955c5c67cfea96f9532680b963628 合并 8654907 37c2a4f 作者 尼古拉斯 日期 2017 年 4 月 26 日星期三 13 28 22 0400 这
  • 在 Django 中将 numpy 数组显示为图像

    我是 Django 框架的新手 我正在构建一个网站 该网站从用户那里获取图像 然后处理图像并返回到 numpy 数组 处理后的图像 我想将 numpy 数组显示为图像 我怎样才能做到这一点 感谢您的阅读并提供帮助 索引 html
  • 访问 OKHttp 响应正文

    所以我需要弄清楚如何在第二个响应中访问我从第一个响应中获得的值 我认为我可以将其存储到一个变量中并在另一个请求中访问它 然而 情况似乎并非如此 这是给我带来问题的一点 因此 我的第一个请求是获取一个令牌 然后我需要在第二个请求中使用存储在
  • 从 MYSQL 表中选择添加前缀的最大数字

    不幸的是 我有一张桌子 我无法以任何方式进行更改 并且必须使用我所拥有的东西 mysql 表有一个标记为 customer id 的字段 它有 2 个前缀字母和一个 4 值数字 前任 BI8392 HE8492 WO1293 如何选择具有特
  • 为什么当前目录不在我的 Ruby 路径上? [复制]

    这个问题在这里已经有答案了 我当前的工作目录不在我的 Ruby 路径上有什么原因吗 考虑 499 irb ruby 1 9 2 p136 002 gt puts Users mrberryman rvm rubies ruby 1 9 2
  • 如何检查文件是否仍在写入?

    如何检查文件是否仍在写入 我需要等待另一个进程再次创建 写入和关闭文件 以便我可以继续在我的进程中再次打开它 总的来说 这是一个很难解决的问题 您可以询问文件是否open 在某些情况下 但是 如果另一个进程是脚本 它很可能多次打开和关闭该文
  • Maven:POM.xml 中缺少工件 com.sun:tools:jar:1.6.0 编译时异常 [重复]

    这个问题在这里已经有答案了 当我尝试添加工具的依赖项时 我遇到一个奇怪的问题 并在我的 pom xml 中遇到编译时异常 jar显示如下 缺少工件 com sun tools jar 1 6 0 我已将 JAVA HOME 变量设置如下 J
  • CSS:显示属性差异

    显示 块和显示 内联有什么区别 显示 块将导致该对象强制容器内的其他对象到新行 显示方式 内嵌尝试将该对象显示在与其他对象相同的行上 显示 块 Item 1 Item 2 Item 3 显示 内嵌 Item 1 Item 2 Item 3
  • 一个字段的多个值,采用逗号分隔值 .csv 格式

    csv 文件中的同一字段下是否可以有多个值 我的网页上有一个 电子邮件 字段 用户可以选择输入多个地址 我希望我的 csv 文件能够处理任意数量的 电子邮件 值 我怎样才能实现这个目标 csv 由第三方程序读取 我无法修改 是的 CSV 文
  • 如何访问 JSONObject 子字段?

    我觉得很愚蠢 但我已经四处寻找这一点有一段时间了 我正在使用 google geocoder API 我需要一些关于 json 响应的帮助 这是我拥有的一个 JSONObject viewport southwest lng 78 9233
  • 在 pandas 数据框中计算点之间最短(欧几里德)距离的最快方法

    考虑以下 pandas 数据框 print df Id X Y Type X of Closest Y of Closest 0 201 73 91 34 84 A NaN NaN 1 201 74 67 32 64 A NaN NaN 2
  • python中的while循环不会停止

    我们正在尝试制作一个Python程序来模拟掷骰子游戏并显示获胜的概率 我已经缩小了 while 循环的答案 正如标题所示 当它到达循环时 它不会退出 据我所知 循环应该退出 但只是返回和无尽的 假 序列 这是带有注释的整个程序的代码 我将在
  • 如何在Python不和谐机器人中获取提到的用户的ID?

    所以我正在用 python 编写一个不和谐的机器人 但有一个问题 我知道如何提及发送消息的用户 但是如何获取作者在消息中提到的用户的 ID 我无法得到答案 您可以使用以下方式获取消息中提到的用户message mentions async
  • 如何保持最后 X 个 ECS 任务定义处于活动状态?

    我有以下 Terraform 代码来使用新任务定义更新服务 resource aws ecs task definition app definition family my family container definitions dat
  • 使用 Tanuki Service Wrapper 包装 Spring Boot 应用程序

    如何将 Spring Boot 应用程序包装为 Linux 守护进程并将其设置为从 application properties 读取 要使用 application properties 中的参数启动 jar 我使用以下命令 java D
  • 为什么我尝试过的每个 XAMPP 安装上的 xdebug 都会使 apache 崩溃?

    我已在三台独立的计算机上安装了 Windows XAMPP 软件包 其中 2 台运行 Windows Vista 32 位 1 台 Ultimate 1 Home Premium 1 台运行 Windows Vista 64 Home Pr
  • 为什么我们忽略大 O 表示法中的系数?

    在寻找与 Big O 符号相关的答案时 我看到了很多SO答案 例如this https stackoverflow com questions 3255 big o how do you calculate approximate it t