2.1 数学基础、大O表示法、洛必达法则相对增长率、T(N) = O( f(N) )、Ω( g(N) )、Ω( h(N) )、o( p(N) )
2.1 数学基础
①定义2.1:如果存在正常数 c 和 n0,使得当 N≤cf(N) ,则记为 T(N) = O( f(N) )
解释:T(N) 的增长率 ≤ f(N)
定义2.2: 如果存在正常数 c 和 n0,使得当 N ≥ cf(N) ,则记为 T(N) = Ω( g(N) )
解释:T(N) 的增长率 ≥ g(N)
定义2.3:T(N) = θ( h(N) ) 当且仅当 T(N) = O( h(N) ) 和 T(N) = Ω( h(N) )
解释:T(N) 的增长率 = h(N)
定义2.4: 如果对每一正常数 c 都存在常数 n0,使得当 N > n0 时 T(N) < cp(N),则 T(N) = o( p(N) )
如果 T(N) = O( p(N) ) 且 T(N) ≠ θ( p(N) ),则 T(N) = o( p(N) )
(注意大O和小o有区别:大O包含增长率相同的可能性,所以会有等于的关系)
解释:T(N) 的增长率 < g(N)
②大O表示法:称一个函数g(n)是O( f(n) ),当且仅当存在常数 c>0 和 n0>=1,对一切 n>n0 均有 |g(n)|<=c|f(n)| 成立,也称函数 g(n) 以 f(n) 为界或者称 g(n) 优于f(n),记作g(n)=O(f(n))。 定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数。T(n)称为这一算法的“时间复杂度”。当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。
大O表示法表示时间复杂度,注意它是某一个算法的时间复杂度。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。此外,一个问题本身也有它的复杂度,如果某个算法的复杂度到达了这个问题复杂度的下界,那就称这样的算法是最佳算法。
③ 当 T(N) = O( f(N) ) 时,是在保证函数 T(N) 以不快于 f(N) 的速度增长,得到 f(N) 是 T(N) 的一个上界,T(N) 是 f(N) 的一个下界,
即 T(N) = O( f(N) ) --> f(N) = Ω( T(N) )
例子:N^3 比 N^2 增长快 -->N^2 = O( N^3 ) 或 N^3 = Ω( N^2 )
④ 如果 T1(N) = O( f(N) ) 且 T2(N) = O( g(N) ),那么
a) T1(N) + T2(N) = O( f(N) + g(N) ) [ 直观的和非正式的可以写成 max( O( f(N) ), O( g(N) ) ) ]
b) T1(N) * T2(N) = O( f(N) * g(N) )
⑤ 如果T(N) 是一个k次多项式,则 T(N) = θ( N^k )
⑥ 对任意常数k, ( log( 2,N ) ) ^k = O(N),说明对数增长得很缓慢
⑦ 计算极限 lim( N->oo ) f(N) / g(N),确定 f(N) 和 g(N) 的相对增长率,洛必达法则:
a) 极限是 0: f(N) = o( g(N) )
b) 极限是 c≠0: f(N) = θ( g(N) )
c) 极限是 oo: g(N) = o( f(N) )
2.1 数学基础、大O表示法、洛必达法则相对增长率、T(N) = O( f(N) )、Ω( g(N) )、Ω( h(N) )、o( p(N) )相关推荐
- 时间复杂度分析-大O表示法
开篇词 | 从今天起,跨过"数据结构与算法"这道坎 你好,我是王争,毕业于西安交通大学计算机专业.现在回想起来,本科毕业的时候,我的编程水平其实是很差的.直到读研究生的时候,一个师 ...
- 费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升
费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升 附前者链接 https://blog.csdn.net/wo541075754/article/details/101554 ...
- div搜索框与按钮不在一行_前阿里巴巴运营专家:搜索框的5大运营玩法
*全文图片来自网络,基于 CC0 协议 作者 |磊叔,前阿里巴巴运营专家"古语有云:搜索做得好,用户跑不了.搜索框是重要的营销增长场景.在互联网产品上,方寸之间的位置之争是各个功能的生存之 ...
- 算法图解学习笔记01:二分查找大O表示法
二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...
- a*算法的时间复杂度_算法的时间复杂度:大O表示法
本文讨论一下算法的时间复杂度问题,用到的素材取自<算法图解>一书,强烈推荐, 如有不妥,请联系我! 二分查找 随便想一个1-100的数字. 你的目标是以最少的次数猜到这个数字.你每次猜测后 ...
- 算法概念:大O表示法/小o表示法/Ω/Θ
如果算法A需要的时间与f(n)成正比,则算法A称为f(n)阶,表示为O(f(n)).函数f(n)称为算法的增率函数(growth-rate function).该表示法使用大写字母O来表示(order ...
- 数据结构考研:大O表示法最浅显易懂且详细深入的解释及与小o表示法的区别(十分钟必懂)
大O表示法的背景 作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述.我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在 ...
- 考研数学基础 之线性代数通法——Chapter6:合同对角化与二次型
考研数学基础 之线性代数通法--Chapter6:合同对角化与二次型 2022考研数学基础 主讲老师: 刘金峰 武忠祥 对称矩阵的对角化 考研范围内只考察实对称矩阵 以下内容所表述的对象均为实对称矩阵 ...
- 大O表示法初学者指南
大O表示法初学者指南 原文地址:https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/ 计算机科学中,大O表示法被用来描述 ...
最新文章
- 前端开发实习生的第一天
- 时间复杂度为on的排序算法_排序算法amp;时间复杂度计算
- JS获取元素在页面的位置
- mysql 高版本检索外键_第05期:外键到底能不能用?
- 单个节点的缓存容量达到上限 Hash算法一致性
- a - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历_数据结构--图
- Linux命令行配置静态IP地址
- OpenShift 4 - 用Pull Secret访问红帽官方或其他外部Registry的Image
- 基于django的视频点播网站开发-step12-后台订阅功能...
- NTFS-3G的安装和配置(Linux下挂载Windows分区必备)
- 多个checkbox 回显
- 挑战程序设计竞赛:三角形
- 混合线性规划matlab,matlab求解混合的非线性规划软件说明
- android禁止屏幕自动旋转_在android程序中禁止屏幕旋转和避免重启Activity
- C/C++程序员的编程修养
- SAP系统Sizing的原理
- Ubuntu完全卸载与安装Mysql
- Win10配置pytorch深度学习环境
- 无人机三维实景模型的应用和发展
- 使用switch语句根据消费金额计算折扣