Big O 正式定义中的常量

2023-11-26

我正在修改 Big O 和其他相关界限的正式定义,但有些事情让我绊倒了。在我正在读的书中(Skiena),Big O 被定义为:

f(n) = O(g(n)) 当存在常数 c 时,对于 n > n0 的某个值,f(n) 始终

这对我来说通常是有意义的。我们只关心足够大的 n 值,以至于增长率实际上很重要。但为什么要把 g(n) 乘以 c 呢?看起来我可以为 c 选择一个非常大的值,并通过消除较小的 g(n) 值的大小来使整个事情变得任意。

第二个问题:当选择将算法分类为复杂性类别时,一般的经验法则是只选择根据 Big O 的定义仍然成立的最低增长类别吗?根据定义,将恒定时间算法分类为 O(n!) 似乎是有效的,因为 f(n) 将

Thanks!


你可以乘以g(n)由任意常数c是因为你想要的函数只是一个常量c因素远离f(n)。简单来说,您根据以下内容进行分析n,而不是常量,所以您关心的是这些函数如何仅根据输入大小而变化。例如当你有n^3 and n你无法选择c where c*n >= n^3 unless c >= n^2这不再是恒定的,所以g(n)将会逃离f(n) with n.

正如埃德提到的,这个分析不会给你一个确切的运行时间,但会给出一个增长率取决于输入n. If g(n) and f(n)彼此之间始终仅(至多)相差一个常数因子,而两者的增长率将相同。

在这种时间复杂度分析中,我们并不真正关心常量,这在大多数情况下是可以的but在某些情况下,您实际上应该考虑到这一点。例如,如果您正在处理小型集合,则由于常量,O(n^2) 算法实际上可能比 O(nlogn) 更快。

第二个问题:是的,这是一个常见问题BigO,您可以使用任意函数,这就是为什么我们通常试图找到“最紧”的函数g(n)我们可以,否则找到它就没有意义了。这也是为什么*大西塔BigO因为它告诉你一个紧界,而不是上限。

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

Big O 正式定义中的常量 的相关文章

随机推荐

  • CakePHP如何通过ID数组获取多行

    我想根据 ID 数组列表从数据库中提取多行 在其他一些框架中似乎有类似 WHERE IN 的东西 但这里没有 有人可以告诉我该怎么做吗 我想知道如何通过 find 或 read 或任何其他 cakephp 函数 来做到这一点 而不是手动构建
  • Rails 库包括

    关于 lib 目录中定义的模块 我有一个令人费解的问题 我有两个文件 lib authentication rb module Authentication end lib test module rb module TestModule
  • HttpServlet 类与 Jersey 一起使用之间的混淆

    我正在构建实现 RESTful API 的 servlet 我知道 Jersey 是一个用于破译和使用给定 URL 的框架 我如何将它与HttpServlet class 我不明白两者如何相互合作 我想这是一个非常笼统的问题 但我已经阅读了
  • Python google Drive API下载,文件在哪里?

    我使用此处找到的 python 代码在谷歌驱动器上下载文件 https developers google com drive v3 web manage downloads我有这个范围 https www googleapis com a
  • GridView.scrollTo() 的解决方法?

    如上所述here Android的GridView scrollTo 不起作用 解决方案提到的方法 setSelectedPosition 似乎不存在于GridView smoothScrollToPosition确实有效 但我真的不想要动
  • pyqt qt4 QTableView如何禁用某些列的排序?

    所以我有一个 QTableView 我只想让列排序在第 1 列而不是第 2 列 自然地我尝试installEventFilter on QHeaderView or QTableView but MouseButtonPress事件不会被传
  • Rails link_to 方法: :delete

    我很抱歉问了一个可能是补救问题的问题 但在学习 Rails 时 我试图遵循本教程中的注释 http guides rubyonrails org getting started html 昨晚我在本教程中发布了一个类似的问题 并得到了及时的
  • Django 模板中的字典

    我有这样的看法 info dict u Question 1 13365 13344 u Question 2 13365 u Question 3 for key in info dict for k v in key items pro
  • JSON.NET 作为 WebAPI 2 OData 序列化器与 ODataMediaTypeFormatter

    我正在尝试使用 JSON NET 作为 WebAPI 2 堆栈中的默认序列化器 我已经实现了 JsonMediaTypeFormatter 其中使用 JSON NET 序列化器来序列化 反序列化数据 并创建了 JsonContentNego
  • Python Inspect.stack 很慢

    我只是在分析我的 Python 程序 看看为什么它看起来相当慢 我发现它的大部分运行时间都花在了inspect stack 方法 用于输出带有模块和行号的调试消息 每次调用 0 005 秒 这看起来相当高 是inspect stack真的这
  • 使用 django 表单保存新的外键

    我有两个模型 class Studio models Model name models CharField Studio max length 30 unique True class Film models Model studio m
  • 在易出错的初始化程序 swift 1.2 中分配 let 变量

    我有一个带有错误初始化程序的结构 不是实例方法 而是初始化程序 更新到 1 2 后 当我尝试分配let初始化程序内的属性 我收到以下错误Cannot assign to aspectRatio in self 我的代码如下 import F
  • 在Python中,如何解码GZIP编码?

    我在 python 脚本中下载了一个网页 在大多数情况下 这工作得很好 然而 这个有一个响应头 GZIP 编码 当我尝试打印这个网页的源代码时 它在我的腻子中包含了所有符号 如何将其解码为常规文本 我使用 zlib 从网络上解压缩 gzip
  • 滑动菜单将触摸事件锁定在上视图上

    我正在尝试使用滑动菜单在我的应用程序中 在我的 Sony Xperia S 上 它工作得非常好 但是当我尝试在 HTC Desire HD 上启动应用程序时 菜单可以通过手势完美打开 但其他触摸事件被阻止并且顶视图 ViewPager 滑动
  • JSON web-api 上公开的对象 - 如何阻止属性名称更改大小写?

    我有一个如下所示的对象模型 public class Product public string ProductCode get set public string ProductInfo get set 我通过 Dapper 填充它 并将
  • 在硬件加速下缩放画布时,偏移路径模糊

    我的应用程序使用可缩放的画布 以便我可以以米而不是像素为单位指定路径点 当我缩放画布时 然后使用画一条线path lineTo 打开硬件加速后 线条变得模糊且偏移 关闭硬件加速或使用硬件加速时不会发生这种情况canvas drawLine
  • 的类型扩展错误' aria-label='Dictionary<'K, 'V> 的类型扩展错误'> Dictionary<'K, 'V> 的类型扩展错误

    以下类型扩展 module Dict open System Collections Generic type Dictionary lt K V gt with member this Difference that Dictionary
  • 如何以编程方式将内容添加到菜单条?

    我想将文本框中写入的任何内容添加到菜单条中 在我的文件 gt 最近搜索中 我怎样才能以编程方式进行 我是否可以动态分配一个事件处理程序 以便当用户单击该子文件夹中的 X 项目时 文本将复制回文本框 编辑 我如何以编程方式调用文件夹 Busq
  • 无法编译QT创建快速应用程序项目

    我是 QT Creator 的新手 我已经安装了 QT Creator 5 6 2 和 MinGW 4 9 2 32 位 我在编译快速应用程序项目时遇到问题 因为它总是显示此错误消息 Could not create directory C
  • Big O 正式定义中的常量

    我正在修改 Big O 和其他相关界限的正式定义 但有些事情让我绊倒了 在我正在读的书中 Skiena Big O 被定义为 f n O g n 当存在常数 c 时 对于 n gt n0 的某个值 f n 始终 这对我来说通常是有意义的 我