渐进分析(Ο,Ω,Θ):
f(n)=O(g(n)) iff存在常数c和n0,使得对所有n>n0,有
f(n)<cg(n)成立
lim^n->∞^|f(n)/g(n)|=c,0<=c<∞,则f(n)=O(g(n))
f(n)=Ω(g(n)) iff存在常数c和n0,使得对所有n>n0,有
f(n)>cg(n)成立
lim^n->∞^|f(n)/g(n)|=c,0<c<=∞,则f(n)=Ω(g(n))

例:f(n)=0.001n2-10n-1000=Ω(n2)
因为limn->∞f(n)/n2=0.001>0

f(n)=O(g(n))且f(n)=Ω(g(n)) =>f(n)=Θ(g(n))
证明法一:lim^n->∞^|f(n)/g(n)|=c,0<c<∞
证明法二:找到常数c0和n0使得其满足渐进上界定义
找到常数c1和n1使得其满足渐进下界定义
例:试证10n^2+3n+100=Θ(n^2)
证明:c0=11,10n^2+3n+100<11n^2即n^2-3n-100>0,可求得n0值,从而存在c0和n0使得n^2是10n^2+3n+100的渐进上界;
同理,c1=9,10n^2+3n+100>9n^2即n^2+3n+100>0,可求得n1值,
从而存在c1和n1使得n^2是10n^2+3n+100的渐进下界;

渐进分析的常用等式:

推导规则:


渐进分析例题:


Sum(a,n)共有2n+3步,b[j]=Sum(a,j+1)有2(j+1)+3+1=2j+6步,∑(j=0,n-1)2j+6=n2+5n=Θ(n2)
顺序查找:

插入排序、选择排序和rank排序最坏情形时间复杂度是O(n^2),准确来说是Θ(n ^2),平均情形时间复杂度是Θ(n ^2)
多项式时间算法:
如果一算法的最坏情形时间复杂度t(n)=O(nk),则称该算法为多项式时间复杂度的算法或有多项式界的算法;
如果一算法的最坏情形时间复杂度t(n)不能用多项式限界,则称该算法为指数复杂度的算法,认为是不可行的算法,这类问题称为NP-难度问题。

**解递归的三种方法:**

(1)递归树 (2)迭代 (3)主项法
归并排序:
归并已排好序的数组(MERGE):

伪代码:

MERGE-SORT A[1,……,n]                     T(n)
1.if n=1 done.                             Θ(1)
2.Recursively sort A[1,……,[n/2]]         2T(n/2)and A[ [n/2]+1,……,n]
3.Merge the two sorted lists               Θ(n)

递归方程:

T(n)=Θ(1)  if  n=1=T(n/2)+Θ(n) if n>1

隐含假设n=2h
用cn代替Θ(n),不影响渐进分析的结果
递归树:

复杂度:cnlgn+Θ(n)=>Θ(nlgn)


迭代展开:

归并排序渐进优于插入排序。
递归树等价于迭代展开
很多递归式用递归树解不出来,但递归树能提供直觉,帮助我们用归纳法求解
主项法:
T(n)=aT(n/b)+f(n)
声明:logb,a表示以b为底a的对数
情形一:
f(n)=O(nlogb,a-ε),ε>0为某一常数
则T(n)=Θ(nlogb,a)
情形二:
f(n)=Θ(nlogb,algkn), k>=0为某一常数
则T(n)=Θ(nlogb,algk+1n)
情形三:
f(n)=Ω(nlogb,a+ε),ε>0为某一常数
则T(n)=Θ(f(n))

渐进分析(Ο,Ω,Θ)相关推荐

  1. 算法学习四:算法性能分析理论基础——函数增长与渐进分析

    算法学习四:算法性能分析理论基础--函数增长与渐进分析 在算法性能分析过程中,特别是在算法运行效率分析中,我们经常使用渐渐分析法,它使我们在分析算法性能时不必纠结于不同硬件平台的差异性,着重考虑算法的 ...

  2. 算法笔记——渐进分析和渐进符号

    算法分析是理论研究,是关于计算机程序性能(performance)和资源利用(resource usage)的研究. More important than performents 模块化(耦合度越低 ...

  3. 【数据结构】算法的渐进分析-渐进时间复杂度

     算法的渐进分析(asymptotic algorithm analysis)简称算法分析.算法分析直接与它所求解的问题的规模 n 有关,因此,通常将问题规模作为分析的参数,求算法的时间和空间开销与问 ...

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

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

  5. 算法复杂度-渐进分析

    算法复杂度-渐进分析 渐进表达式的定义 渐进上界 大OOO O(g(n))={f(n):∃c>0,n0>0.s.t.∀n≥n0,0≤f(n)≤cg(n)}O(g(n)) = \{f(n): ...

  6. 哈工大威海算法设计与分析_【斯坦福算法分析和设计02】渐进分析

    点击上方蓝字,关注公众号 目录 1. The Gist 1.1 为什么要学它(Motivation) 1.2 High level idea 1.3 4个例子 2. Big-Oh Notation 2 ...

  7. 数据结构与算法的分析 —— 渐进复杂度(三个记号)

    对于某些问题,一些算法更适合于用小规模的输入,而另一些则相反.幸运的是,在评价算法运行效率时,我们往往可以忽略掉其处理小规模问题时的能力差异,转而关注其在处理大规模数据时的表现.道理是显见的,处理大规 ...

  8. 算法导论——lec 12 平摊分析与优先队列

    在平摊分析中,运行一系列数据结构操作所须要的时间是通过对运行的全部操作求平均得出.反映在不论什么情况下(即最坏情况下),每一个操作具有平均性能.掌握了平摊分析主要有三种方法,聚集分析.记账方法.势能方 ...

  9. delta对冲策略_期权的Delta对冲策略对比分析

    保护性卖权策略是一种比较简单的避险策略,它是指投资者期初在购买股票的同时,直接购买欧式卖权的保险策略.由于目前我国没有场内期权市场,因此保护性卖权无法实施,不过通过期权复制的思想可以间接实施该策略. ...

最新文章

  1. Scala样例类及密封类
  2. Chromebook开发者模式Linux,Chromebook 的开发者模式和开发者版本有什么区别?
  3. 零基础入门Python数据分析,只需要看懂这一张图,附下载链接!
  4. 网易云信-新增自定义消息(iOS版)
  5. [译]JavaScript的新功能将改变正则表达式的编写方式
  6. zabbix3.0.2 使用percona mysql插件来监控mysql5.7的详细实现过程
  7. python实践答辩ppt_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶没压力!...
  8. android生命周期_Android片段生命周期
  9. 使用struts做一个简单的登录跳转
  10. java代码读写者问题_一整套Java线上故障排查技巧,爱了!
  11. Linux用apt命令安装软件
  12. 创建一个简单的ASP.NET Web应用程序
  13. spss显示客户端与服务器,spss客户端服务器结构
  14. 用计算机弹清明上河图谱,一篇文章让你看懂《清明上河图》中的所有细节
  15. java中移动光标怎么写_java 程序当中无法做到光标跟随
  16. 手机android的文件怎么恢复,手机文件误删除怎么恢复-互盾安卓恢复大师
  17. 在国内愚人节可以开的10个玩笑
  18. 【个人网站】个人网站搭建全过程
  19. notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别
  20. 项目的质量控制与质量保证的区别与联系

热门文章

  1. 20-1职业技能 Taking meeting minutes
  2. 那年我离开京东、来到高校,走出一条不一样的技术路线
  3. Brighter3d无法渲染可导入REVIT渲染
  4. 鹏业软件安装算量工程量表中将某项设置为不计量
  5. 南京邮电大学计算机科学与技术分数线,南京邮电大学计算机科学与技术(中外合作办学)专业2016年在江苏理科高考录取最低分数线...
  6. 大疆无人机开发:手写全景(思路 + 大疆的坑)
  7. SpringBoot配置类替代@Transactional注解实现事务的控制
  8. [转] 亚洲销售女神徐鹤宁经典语录——太过精辟,不学必悔
  9. 天正暖通天圆地方在哪_CAD及天正暖通快捷键大全
  10. 用python建立gm(1、1)模型_灰色预测模型GM(1,1)的全面讲解及python实现