θ(n) 和 O(n) 有什么区别?

2023-11-30

有时我会看到 θ(n) 带有奇怪的 θ 符号,中间有一些东西,有时只是 O(n)。这只是因为没有人知道如何输入这个符号而懒得打字,还是它有不同的含义?


简短说明:

如果算法的大小为 θ(g(n)),则意味着随着 n(输入大小)变大,算法的运行时间与 g(n) 成正比。

如果一个算法的复杂度为 O(g(n)),则意味着当 n 变大时该算法的运行时间为at most与 g(n) 成正比。

通常,即使人们谈论 O(g(n)),他们实际上指的是 θ(g(n)),但从技术上讲,这是有区别的。


更技术性地说:

O(n) 表示上限。 θ(n) 表示紧界。 Ω(n) 表示下限。

f(x) = θ(g(x)) 如果 f(x) = O(g(x)) 且 f(x) = Ω(g(x))

Basically when we say an algorithm is of O(n), it's also O(n2), O(n1000000), O(2n), ... but a Θ(n) algorithm is not Θ(n2).

In fact, since f(n) = Θ(g(n)) means for sufficiently large values of n, f(n) can be bound within c1g(n) and c2g(n) for some values of c1 and c2, i.e. the growth rate of f is asymptotically equal to g: g can be a lower bound and and an upper bound of f. This directly implies f can be a lower bound and an upper bound of g as well. Consequently,

f(x) = θ(g(x)) 如果 g(x) = θ(f(x))

类似地,要显示 f(n) = θ(g(n)),只需显示 g 是 f 的上限(即 f(n) = O(g(n)))并且 f 是 f 的下界g(即 f(n) = Ω(g(n)) 与 g(n) = O(f(n)) 完全相同)。简而言之,

f(x) = θ(g(x)) 如果 f(x) = O(g(x)) 且 g(x) = O(f(x))


还有little-oh和little-omega(ω) 表示函数的松散上限和松散下界的符号。

总结一下:

f(x) = O(g(x))(大哦)意味着 的增长率f(x)是 渐近地小于或等于 到的增长率g(x).

f(x) = Ω(g(x))(大欧米伽)意味着 的增长率f(x)是 渐近地大于或 等于的增长率g(x)

f(x) = o(g(x))(小哦)意味着 的增长率f(x)是 渐近地少于这 的增长率g(x).

f(x) = ω(g(x))(小欧米伽)意味着 的增长率f(x)是 渐近地比...更棒这 的增长率g(x)

f(x) = Θ(g(x))(theta) 意味着 的增长率f(x)是 渐近地equal to这 的增长率g(x)

如需更详细的讨论,您可以阅读维基百科上的定义或者查阅经典教科书,例如 Cormen 等人的《算法导论》。

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

θ(n) 和 O(n) 有什么区别? 的相关文章

  • 找出数组中重复的元素

    有一个大小为 n 的数组 数组中包含的元素在 1 到 n 1 之间 每个元素出现一次 只有一个元素出现多次 我们需要找到这个元素 尽管这是一个非常常见的常见问题解答 但我仍然没有找到正确的答案 大多数建议是我应该将数组中的所有元素相加 然后
  • 旅行商问题中 NP 难问题和 NP 完全问题的混淆

    旅行商优化 TSP OPT 是一个NP难题 旅行商搜索 TSP 是NP完全问题 然而 TSP OPT 可以简化为 TSP 因为如果 TSP 可以在多项式时间内求解 那么 TSP OPT 1 也可以 我认为要将 A 简化为 B B 必须与 A
  • Big O 用于有限、固定大小的可能值集

    这个问题 https stackoverflow com questions 12305028 java what is the best way to find first duplicate character in a string引
  • 算法的最佳、最差和平均情况运行时间是多少?

    算法的最佳 最差和平均情况运行时间是多少 用最简单的术语来说 对于输入大小为n 最好的情况 最快完成时间 选择最佳输入 例如 排序算法的最佳情况是已经排序的数据 最坏的情况下 完成最慢的时间 选择了消极的输入 例如 排序算法的最坏情况可能是
  • 递归和大O

    我最近正在完成一项涉及递归和大 O 表示法的计算机科学作业 我相信我很好地理解了这一点 虽然当然不是完美的 但是有一个问题给我带来了最多的问题 奇怪的是 一看就知道是作业上最简单的一个 使用大哦符号提供最佳增长率来解决以下递归问题 T 1
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • PHP 内置函数复杂性(isAnagramOfPalindrome 函数)

    我在过去的两个小时里一直在谷歌搜索 但找不到 php 内置函数时间和空间复杂度的列表 我有回文字谜 https stackoverflow com questions 4628386 what is the best algorithm t
  • 时间复杂度和运行时间有什么区别?

    时间复杂度和运行时间有什么区别 它们是一样的吗 运行时间是指程序运行所需的时间 时间复杂度是对输入大小趋于无穷大时运行时间渐进行为的描述 您可以说运行时间 是 O n 2 或其他什么 因为这是描述复杂性类和大 O 表示法的惯用方式 事实上
  • hashmap包含键的复杂度

    我写了一个方法来查找列表中的重复项 它工作正常 但我担心使用 containsKey 的复杂性 当我们使用 containsKey 时 我们必须为每个键计算一个哈希函数 然后将每个键与我们的搜索项进行比较 对吗 那么复杂度不是 O n 吗
  • 在 O(n) 时间内排序?

    我被这个问题困扰了 2周 知道如何处理它吗 令 L 为 n 个不同整数的列表 假设 L 的 x 的元素在 1 750 范围内 设计线性排序算法对 L 的元素进行排序 我已经尝试过插入排序 但我不确定我的方法是否正确 Construct an
  • 什么是大O表示法?你用它吗? [复制]

    这个问题在这里已经有答案了 什么是大O表示法 你用它吗 我想我错过了这门大学课程 D 有人使用过它并给出一些现实生活中使用它的例子吗 也可以看看 八岁孩子的大O https stackoverflow com questions 10716
  • n 或 nlog(n) 比常数时间或对数时间更好吗?

    在 Coursera 上的普林斯顿教程中 讲师解释了遇到的常见增长顺序函数 他说 线性和线性算术运行时间是 我们努力的目标 他的推理是 随着输入大小的增加 运行时间也会增加 我认为这是他犯了错误的地方 因为我之前听过他提到线性增长顺序对于高
  • 添加到 SortedSet 及其复杂性

    MSDN 声明如下SortedSet T Add 方法 http msdn microsoft com en us library dd411709 28VS 100 29 aspx 如果 Count 小于内部数组的容量 则此方法的操作时间
  • 循环中的递归算法复杂度(运行时间)

    我想了解您对如何检测以下递归算法的 T n 运行时间 的意见 Charm 是一种用于发现事务数据库中频繁闭项集的算法 频繁闭项集列表是在一组交易 tids 中多次出现的频繁项 例如面包和牛奶是经常一起购买的物品 它们是通过将索引为 i 的当
  • Mathematica 圆柱分解的计算复杂度是多少

    数学 圆柱分解 http reference wolfram com mathematica ref CylindricalDecomposition html实现一种称为圆柱代数分解的算法 Wolfram MathWorld 的文章圆柱代
  • C++ 和 Java 中的字符串连接复杂性[重复]

    这个问题在这里已经有答案了 考虑这段代码 public String joinWords String words String sentence for String w words sentence sentence w return
  • 从二叉堆中查找第 k 个最小元素的 O(klogk) 时间算法

    我们有一个 n 节点二叉堆 其中包含n不同的项目 根部的最小项目 为一个k lt n 发现O klogk 时间算法选择kth堆中的最小元素 O klogn 很明显 但无法找出O klogk 一 也许我们可以使用第二个堆 但不确定 好吧 你的
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • Python:通过乘法运算符时间复杂度创建列表

    Python 使用的时间复杂度是多少 a 1 n vs for i in range n a append 1 两者都是 O n 还是第一个 O 1 前者是 O n 因为使用了PyList New http docs python org
  • 对象 ArrayList 中 contains(Object o) 的时间复杂度

    正如标题所说 我想知道时间复杂度是多少contains https docs oracle com javase 8 docs api java util ArrayList html contains java lang Object 的

随机推荐

  • D3.js 带有嵌套 svg 的缩放会破坏 Internet Explorer 中的视口

    我正在使用 d3 js 动态设置嵌套 svg 即嵌套在封闭 svg 内的内部 svg Ad3 behavior zoom 监听外部 svg 上的缩放事件并进行所需的转换 除了 Internet Explorer IE 11 之外 一切正常
  • 保存 DocumentSnapshot 以在 Firestore android 中进行分页

    我正在尝试在android 中实现分页功能 每次活动开始时我想从集合中获取新的 10 条记录 下次当我打开活动时 最后可见 文档快照 必须保存在 SharedPreference 中才能获取新列表 db FirebaseFirestore
  • JFreeChart StackedXYAreaRenderer 导致图表中出现“卷曲”

    在本例中 我使用 JFreeChart 显示随时间变化的两组数据的堆积折线图dogs and cats import java text ParseException import java text SimpleDateFormat im
  • 使用不带模板参数的模板类

    我有一个带有模板类的 Visual Studio 2008 C 项目 该模板类在构造函数中采用模板化值 如下所示 template lt typename A gt struct Foo const A a Foo const A a a
  • 可以使用具有多个选项卡/工作表的 csv 吗?

    我正在调用 Web 服务 并且来自 Web 服务的数据采用 csv 格式 如果我尝试将数据保存在 xls xlsx 中 那么我会在工作簿中得到多个工作表 那么 如何在 C 中使用多个选项卡 工作表将数据保存在 csv 中 我知道具有多个选项
  • 在 Android 中将视频上传到 Facebook

    Problem 我的视频没有上传到 Facebook Question 如何将视频上传到 Facebook Note 我可以从我的画廊上传图片 没有Exceptions被抛出 我认为线路有问题 params putString filena
  • 同源策略和 CORS - 有什么意义?

    我在理解同源策略和 解决 它的不同方法时遇到了一些困难 显然 同源策略是作为一种安全措施而存在的 因此来自服务器 域的脚本无法访问来自另一服务器 域的数据 同样清楚的是 有时 能够打破此规则是有用的 例如 混搭应用程序访问来自不同服务器的信
  • AJAX 返回带有输出的 HTML 代码

    尝试了一些解决方案后this和许多其他问题我无法弄清楚我的代码中的确切问题是什么 我的代码 document ready function botname blur function ajax type POST url tukaiexot
  • vscode g++ 找不到 .cpp 定义文件

    我正在尝试使用多个 cpp 和 hpp 文件编译 C 示例 但 g 找不到任何成员函数定义 主要 cpp include
  • 从 wagtail 外部上传 Wagtail 图像

    在无法子类化的 Django 模型中Page 我想转换现有的 ImageField 以使用 Wagtail 图像 我将该字段重新定义为 avatar models ForeignKey wagtailimages Image null Tr
  • 多个计数器的联合

    查找列表并集的最佳方法是什么 就可读性和效率而言 Counters 例如 我的列表可能如下所示 counters Counter a 6 b 3 c 1 Counter a 2 b 5 Counter a 4 b 4 我想计算并集 即cou
  • 返回 Javascript 文件中定义的所有函数

    对于以下脚本 如何编写一个函数以数组形式返回所有脚本函数 我想返回脚本中定义的函数的数组 以便我可以打印脚本中定义的每个函数的摘要 function getAllFunctions this is the function I m tryi
  • IE - 本地和远程部署的系统之间的行为差​​异

    我在 IE 中遇到有线问题 当我浏览本地部署的 asp net mvc 应用程序时 一切都按预期工作 当我浏览部署在不同主机上的系统时 会出现一些恼人的差异 在这两种情况下 我都使用本地安装在我的主计算机上的同一个 IE 实例 假设我在cs
  • “AttributeError:部分初始化的模块‘pytube’没有属性‘YouTube’(很可能是由于循环导入)”[重复]

    这个问题在这里已经有答案了 这是代码 import pytube as p video url input Enter the link youtube p YouTube video url filters youtube streams
  • 无法删除终端中的特殊命名文件

    有些程序使我的根目录成为虚拟文件 例如 1 2 3 n 我运行失败 rm 1 and too rm 1 终端认为 1 是选项 如何删除这些文件在终端 您可以使用rm 1 指当前目录 并且由于参数不以破折号开头 因此不会将其解释为选项
  • Java 中忽略 SIGINT

    我正在为 Unix 上的本机共享库使用 Java 包装器 JRI 本机库 R 的基于 C 的 REPL 实现 在内部处理 SIGINT 使用 Java 包装器时 当我使用以下命令向进程发送 SIGINT 时 Java 应用程序将退出 杀死
  • 如何将不支持的密码套件(不包含在默认密码套件中)添加到客户端问候消息

    要求客户端应支持以下TLS加密密码套件 private String cipherSuites new String TLS DHE RSA WITH AES 256 GCM SHA384 TLS DHE RSA WITH AES 256
  • CloudBlockBlob.DownloadToStream 与 DownloadRangeToStream

    尝试使用 ASP NET azure SDK 从 blob 存储下载图像 我在另一篇文章中读到 DownloadToStream 确实将 blob 分解成更小的块并并行下载它们以提高性能 我相信这就是 DownloadRangeToStre
  • JVM 和 HotSpot 之间的区别?

    HotSpot 到底是什么 它与 JVM 和 OpenJDK 有何关系 这是图书馆吗 它到底有什么作用 另外 OpenJDK 和 HotSpot 有什么区别 Java 虚拟机的确切定义在Java虚拟机规范 JVM 根据定义是虚拟机 即模拟真
  • θ(n) 和 O(n) 有什么区别?

    有时我会看到 n 带有奇怪的 符号 中间有一些东西 有时只是 O n 这只是因为没有人知道如何输入这个符号而懒得打字 还是它有不同的含义 简短说明 如果算法的大小为 g n 则意味着随着 n 输入大小 变大 算法的运行时间与 g n 成正比