我们已经简单的讨论了下渐进分析以及最坏,平均和最佳情况的分析。渐进分析的主要思想是分析算法的效率,不用依靠计算机的具体快慢,不需要实现这个算法,也不需要真正去计算时间。渐进记号是一种数学的工具来表示渐进分析算法的时间复杂度。下面列出三种最常用的渐进符号来表示算法的时间复杂度。

1.θ Notation:

theta 符号是用来确定算法性能的上界限和下界限,简单的来说计算Θ符号可以扔掉低阶项,忽略高阶项的系数。举例:3n3+6n2+6000 = θ(n3)。 扔掉低阶的项是OK的因为θ(n3) 肯定是比θ(n2)大的。我们用g(n) 来表示θ中的数值

Θ(g(n)) = {f(n): 存在正数常数 C1 C2 和 n0 使得 0 <= c1*g(n) <= f(n) <= c2*g(n) for all n >= n0} 

在上面的定义中,如果f(n) 是 g(n)的θ中的内容,那么f(n)的值肯定是在 c1*g(n) 和c2 * g(n) 之间 当n 的值很大的情况下。还有一个条件是 f(n)必须是一个非负数。

2.Big O Notation:

大O符号用来表示算法的上界限,举一个插入排序的例子,最佳情况下插入排序会在线性时间里完成(n),而最坏的可能是在二次时间内完成(n2)。所以我们可以很保险的说插入排序的时间复杂度是O(n2),因为这也包括了线性时间如果我们用θ符号来表示插入排序的时间复杂度,我们必须用两个可能性,最坏的和最好的:1.最坏的时间复杂度是 θ(n2)。2.最好的时间复杂度是 θ(n)。当我们只知道算法复杂度的上界限时,大O符号很有用。很多情况下,我们简单的分析一下算法就能很简单的找到上界限。
O(g(n)) = { f(n): 存在正数常数 C 和 n0 使得
           0 <= f(n) <= cg(n) for all n >= n0} 


3) Ω Notation:就像O符号一样,Ω符号是找算法渐进分析的下界限。Ω符号在我们知道下界限的时候很有用,就像我们在上一个文章说到的,最佳情况的运行时间到多数情况下是没什么用的。所以Ω符号在三个渐进分析符号中是最没什么用的。和之前一样,我们用插入排序举例,插入排序的运行时间可以写作Ω(n)。但是这不是一个很有用的信息。所以我们一般只对平均情况和最坏的情况感兴趣。
Ω (g(n)) = {f(n): 存在正数常数 C 和 n0 使得
          0 <= cg(n) <= f(n) for all n >= n0}.


Exercise:Which of the following statements is/are valid?1. Time Complexity of QuickSort is Θ(n^2)2. Time Complexity of QuickSort is O(n^2)3. For any two functions f(n) and g(n), we have f(n) = Θ(g(n)) if and only if f(n) = O(g(n)) and f(n) = Ω(g(n)).4. Time complexity of all computer algorithms can be written as Ω(1)

我觉得是2,3
 

转载于:https://www.cnblogs.com/zhurui1322/p/5355818.html

渐进记号 Asymptotic Notations-------geeksforgeeks 翻译相关推荐

  1. 算法分析之-渐进记号

    渐进记号 渐进记号分为:Θ().Ω().ω().O().o() 1. Θ记号 f(n)=Θ(g(n))f(n) = \Theta(g(n))f(n)=Θ(g(n)) 存在正常数C1,C2和n0,使得对 ...

  2. 算法设计与分析——算法学基础(三):渐进记号

    分类目录:<算法设计与分析>总目录 相关文章: 算法学基础(一):算法学概述 算法学基础(二):分析算法 算法学基础(三):渐进记号 第<算法学基础(二):分析算法>中定义了算 ...

  3. GeeksForGeeks 翻译计划 | ApacheCN

    GeeksForGeeks 是计算机科学百科,涵盖了所有计算机科学核心课程. 本项目的目标是翻译 GeeksForGeeks 站点内的一部分教程. 这些教程适用于: APCS 本科专业课 研究生考试 ...

  4. GeeksForGeeks 翻译计划

    GeeksForGeeks 是计算机科学百科,涵盖了所有计算机科学核心课程,可用于准备面试以及考前复习. 考虑到中文互联网世界中,没有如此全面的知识站点,我将其爬取了下来,放到 YiyiBook 上, ...

  5. 渐进记号的相关证明(使用极限的方式)

    ⎧⎩⎨⎪⎪⎪⎪⎪⎪ limf(n)g(n)>0⇔f(n)=Θ(g(n))limf(n)g(n)=0⇔f(n)=o(g(n)) \left\{ \begin{split}\ \lim\frac{f ...

  6. 放缩法 —— 渐进记号的相关证明

    1. max(f(n),g(n))max(f(n),g(n))\max (f(n), g(n)) max(f(n),g(n))=Θ(f(n)+g(n))max(f(n),g(n))=Θ(f(n)+g( ...

  7. CLRS 3.1渐进记号

    3.1-1 设 ∃n1,n2:f(n)≥0g(n)≥0for n>n1for n>n2 \begin{align} \exists n_1,n_2: &f(n) \geq 0 &a ...

  8. [翻译] 神经网络与深度学习 第三章 提升神经网络学习的效果 - Chapter 3 Improving the way neural networks learn

    目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 > 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 ...

  9. 经典神经网络论文超详细解读(八)——ResNeXt学习笔记(翻译+精读+代码复现)

    前言 今天我们一起来学习何恺明大神的又一经典之作: ResNeXt(<Aggregated Residual Transformations for Deep Neural Networks&g ...

  10. 算法分析(渐进分析)

    目录 1.T(n)函数 2.渐进分析 2.1渐进紧确界(θ记号) 举例 2.2渐进上界 (O记号) 举例 2.3渐进下界 (Ω记号) 举例 3.常用的换算公式 3.1举例证明 算法分析分为算法时间复杂 ...

最新文章

  1. 无人驾驶岗平均月薪4.14万:因为稀缺,所以高薪
  2. 从啤酒尿布到自动驾驶,零售行业如何再创营销神话?
  3. 深度学习论文资源(截至2016年)
  4. 安卓linux开机画面,Android系统的开机画面显示过程分析(1)
  5. 关于Keras在测试不能使用正则dropout的解决
  6. 【原】hive 操作笔记
  7. 悬赏17万:美国“知乎”的沙雕问题,需要AI来识别
  8. 数据结构笔记(三十一)--折半查找
  9. 数字信号处理实验感想matlab,数字信号处理MATLAB实验报告 4.doc
  10. 药方的量化方法笔记(学习与尝试):第一回 中药材数据库的建立 归经的统计 药方归经和功效的量化拆解
  11. GP2Y0E03 红外 测距 传感器 MSP430 G2553 单片机 程序
  12. 幼儿园趣味舞蹈课教案
  13. MPQ文件结构和Partial MPQ文件结构
  14. ubuntu 22.04安装独立显卡驱动方法以及一些问题,以及安装pytorchcuda和cudnn的问题
  15. 《神经网络与深度学习》习题答案
  16. 深度学习项目,使用python进行表情识别,pytorch应用
  17. java的login_Java login登陆界面设计
  18. 矩阵特征值的求解过程
  19. 欧拉影像放大算法(Eulerian Video Magnification)的原理和实现
  20. 云脉名片识别 名片管理 名片扫描

热门文章

  1. 双管道(CreatePipe)与cmd.exe进程间通信的有关问题 完美解决
  2. 8个经典无线射频识别(RFID)优选方案
  3. Windows驱动开发WDM (2)- 一个简单的WDM驱动程序
  4. 海纳百川下载器(道客巴巴免费下载器)程序已停止工作解决方法
  5. 吊炸天!74款APP完整源码!
  6. 云播 Android,云播放(Air Playit)android版
  7. linux怎么添加硬盘步骤,Linux 添加新硬盘方法
  8. 如何判断对方列表里是不是好友_QQ怎么知道自己是不是对方好友
  9. 计算机老师一句话,40句感恩教师的一句话
  10. 编程实现类Logo语言(海龟语言)