算法分析中常用的几种渐进符号
算法分析中常用的几种渐进符号
在算法分析中,经常会遇到以下几种渐进符号
渐渐近精确界记号:ΘΘ(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
算法分析中常用的几种渐进符号相关推荐
- pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam
来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言 很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...
- python编程中常用的12种基础知识总结
python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...
- php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...
分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...
- java中常用的几种排序算法--常见笔试面试
转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...
- 【温故知新】——原生js中常用的四种循环方式
一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0 网页输出"欢迎下次光临" 在网页中弹出框输入1 网页输 ...
- python中常用的九种预处理方法
本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...
- 人脸识别中常用的几种分类器
人脸识别中常用的几种分类器 在人脸识别中有几种常用的分类器,一是最邻近分类器:二是线性分类器 (1)最邻近分类器 最近邻分类器是模式识别领域中最常用的分类方法之一,其直观简单,在通常的应用环境中非常有 ...
- iOS中常用的几种延时加载/执行的处理办法
在开发过程中 我们会常常需要用到这样的延迟处理这种技术 那么, 一般你们会怎么去做这样的一个延时操作呢? 比如, 用户登录成功以后,提示登录成功,然后再将控制器从登录页切到主页 又或是,等待一个动画完 ...
- 机器学习百页书:机器学习中常用到的一些数学符号
一本精简的机器学习入门手册.机器学习百页书<机器学习精讲>,人工智能的核心是机器学习,本书囊括机器学习的精髓,系统而精炼地讲解机器学习的基本原理.本书英文版一经推出,就长期位于亚马逊机器学 ...
最新文章
- 单片机8位抢答器实训机电报告_CD4511八路抢答器实验报告-
- return false
- ThreadLocal内存泄漏问题
- 计算机机房消防安全工作应急预案
- SQL注入——SQLmap的进阶使用(十三)
- .NET 搭建简单的通知服务
- grubbs检测c语言,Grubbs算法检测离群值
- wordpress修改mysql端口_wordpress更改默认端口的方法
- r语言如何下载carzip包本地安装_R语言安装程序包
- 通过抓包工具抓包APP就连不上网的解决方案
- springboot 配置 P6spy
- 1编写偏移量为3的凯撒密码大小写混合加密程序(50分)
- nodeJS中express+busboy实现文件上传
- java stack长度_Java Stack size()用法及代码示例
- 优化 ASP 应用程序和 VBScript 的技巧。
- 游安军编著的计算机数学答案,计算机数学
- PWM,SBUS,PPM信号转模拟电压的方案
- c99、gnu99与c89
- VXLAN技术在数据中心的应用
- 肠道菌群代谢组学之粪便微生物移植治疗原发性硬化性胆管炎