算法分析中常用的几种渐进符号

在算法分析中,经常会遇到以下几种渐进符号

渐渐近精确界记号:ΘΘ(big-theta)
渐近上界记号 :OO(big-oh)
渐近下界记号 :ΩΩ(big-omege)
非渐近紧确上界:o(小-oh)
非渐近紧确下界:ω(小-omege)

下面对渐进符号进行详解:

大写O符号
f(n)=O(g(n)),这里f(n)是分析出来算法的执行次数的函数,
O的定义: 当且仅当存在正的常数c和n0,使得对于所有的n>=n0,有f(n)<=cg(n)。
这里cg(n)就是函数f(n)的上限。讲到这是不是很迷糊,我刚开始也这样,不着急,看下面例子,你就会恍然大悟啦。

几种函数的例子:
1.线性函数
f(n)=3n+2,当n>=2时,3n+2<=3n+n=4n。

所以f(n)=O(n),这里c = 4,n0 = 2,g(n) = n, 那么cg(n) 也就是4n 就是f(n) 的上界

2.平方函数
f(n)=2n2+3n+3,当n>=3时,3n+3<=4n,当n>=4时,4n<n2,f(n)=2n2+n2=3n^2。
f(n)=O(n^2),这里c = 3,n0 = 4, g(n) = n^2 ,那么cg(n) 也就是3n^2 就是f(n) 的上界

3.指数函数
f(n)=62n+n2,当n>=4时,n2<=2n,所以当n>=4,有f(n)<=62n+2n=7*2^n。
这里c是7,n0=4,f(n)=O(2^n)。

4.常数阶
f(n)=9,这里就直接记为O(1),c为9,n0为0就可以了,f(n)=9<=9*1。

Ω符号
定义:f(n)=Ω(g(n)),当且仅当存在正的常数c和n0,使得对于所有n>=n0,有f(n)>=cg(n)。
Ω符号是给函数的下限。
例子:
对于所有的n,有f(n)=3n+2>3n,所以f(n)=Ω(n),这里c=3,n0=0。这里也可以这样f(n)=Ω(1),

Θ符号
定义:对于存在大于0的常数c1、c2和非负的整数n0,以及足够大的n,对于所有的n≥n0来说,有c1g(n)<=f
(n)<=c2g(n)。
例子:3n+2=Θ(n),当c1=3,c2=4,n>=n0=2时,3n<=3n+2<=4n。

小写o符号
定义: f(n)=o(g(n)),当且仅当f(n)=O(g(n)) 且f(n)!=Ω(g(n))。

渐近记号Θ、Ο、o、Ω、ω关系

原文链接:
https://www.cnblogs.com/l199616j/p/10163896.html

算法分析中常用的几种渐进符号相关推荐

  1. pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam

    来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言     很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...

  2. python编程中常用的12种基础知识总结

    python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  3. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...

  4. java中常用的几种排序算法--常见笔试面试

    转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...

  5. 【温故知新】——原生js中常用的四种循环方式

    一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0   网页输出"欢迎下次光临" 在网页中弹出框输入1   网页输 ...

  6. python中常用的九种预处理方法

    本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...

  7. 人脸识别中常用的几种分类器

    人脸识别中常用的几种分类器 在人脸识别中有几种常用的分类器,一是最邻近分类器:二是线性分类器 (1)最邻近分类器 最近邻分类器是模式识别领域中最常用的分类方法之一,其直观简单,在通常的应用环境中非常有 ...

  8. iOS中常用的几种延时加载/执行的处理办法

    在开发过程中 我们会常常需要用到这样的延迟处理这种技术 那么, 一般你们会怎么去做这样的一个延时操作呢? 比如, 用户登录成功以后,提示登录成功,然后再将控制器从登录页切到主页 又或是,等待一个动画完 ...

  9. 机器学习百页书:机器学习中常用到的一些数学符号

    一本精简的机器学习入门手册.机器学习百页书<机器学习精讲>,人工智能的核心是机器学习,本书囊括机器学习的精髓,系统而精炼地讲解机器学习的基本原理.本书英文版一经推出,就长期位于亚马逊机器学 ...

最新文章

  1. 单片机8位抢答器实训机电报告_CD4511八路抢答器实验报告-
  2. return false
  3. ThreadLocal内存泄漏问题
  4. 计算机机房消防安全工作应急预案
  5. SQL注入——SQLmap的进阶使用(十三)
  6. .NET 搭建简单的通知服务
  7. grubbs检测c语言,Grubbs算法检测离群值
  8. wordpress修改mysql端口_wordpress更改默认端口的方法
  9. r语言如何下载carzip包本地安装_R语言安装程序包
  10. 通过抓包工具抓包APP就连不上网的解决方案
  11. springboot 配置 P6spy
  12. 1编写偏移量为3的凯撒密码大小写混合加密程序(50分)
  13. nodeJS中express+busboy实现文件上传
  14. java stack长度_Java Stack size()用法及代码示例
  15. 优化 ASP 应用程序和 VBScript 的技巧。
  16. 游安军编著的计算机数学答案,计算机数学
  17. PWM,SBUS,PPM信号转模拟电压的方案
  18. c99、gnu99与c89
  19. VXLAN技术在数据中心的应用
  20. 肠道菌群代谢组学之粪便微生物移植治疗原发性硬化性胆管炎

热门文章

  1. xss-labs靶场实战全通关详细过程(xss靶场详解)
  2. 如何快速构建企业级数据湖仓?
  3. 【独家编译】对美国国家安全构成威胁!!马云12亿美元收购汇款公司MoneyGram计划告吹
  4. Java高性能解析器实现思路及方法
  5. 2022idea最强安装教程
  6. UI设计面试要考察你哪些能力!
  7. 在EDM邮件营销中是如何运用病毒式营销
  8. PHP开票接口,Yii 使用EasyAPI实现发票
  9. NodeQuant:一个基于Node.js的开源量化交易平台
  10. 电脑如何双开多开微信?