算法中的渐进记号
2016-07-13 00:17
761 查看
前言
在学习计算机算法时,知道插入排序的时间复杂度是O(n2),那O记号到底是什么意思呢?本文主要介绍几个算法分析时用到的记号。大O记号
定义:O(g(n)) = { f(n) : 存在正常数c和n0 ,使对所有的n >= n0,都有 0 <= f(n) <= cg(n) }。大O记号给出函数的渐进上界。
, 则可以表示为 f(n) = O(n2)。证明:
要使得 0 <= f(n) <= cg(n)
存在c = 9/2 ,n0 = 1,使得对所有的n >= n0都有 0 <= f(n) <= cg(n)。
O(g(n) 以及后面讲到的记号表示的都是集合,而f(n) = O(n2)的实际意义 是 f(n) ∈ O(n2)。
假设有
,
则 g(n) = O(n2) , f(n) = O(n2)
大Ω记号
定义:Ω(g(n)) = { f(n) : 存在正常数c和n0 ,使对所有的n >= n0,都有 0 <= cg(n) <= f(n) }。大Ω记号给出函数的渐进下界。
假设有
,
则 g(n) = Ω(n) , f(n) = Ω(n)
大Θ记号
定义:Θ(g(n)) = { f(n) : 存在正常数c1和c2和n0 ,使对所有的n >= n0,都有 0 <= c1g(n) <= f(n) <= c2g(n) }。大Θ记号给出函数的渐进确界。
假设有
,
则 g(n) = Θ(n) , f(n) =Θ(n2)
小O记号
定义:o(g(n)) = { f(n) : 对任意正常数c,存在n0 ,使对所有的n >= n0,都有 0 <= f(n) <= cg(n) }。小o记号给出函数的非渐进紧确的上界。
假设有
,
则 g(n) = o(n2) , f(n)
O(n2)
小
记号
假设有
,
则 g(n)
(n) , f(n) =
(n)
总结
并不是所有的函数都可以渐进比较的,如果的极限值不存在(不等于0,常数以及无穷大)。比如
的极限就不存在而且不等于无穷大。
转自:/article/5753961.html
相关文章推荐
- Hbase 日常运维
- operator new之placement new/delete
- Android中Context详解 ---- 你所不知道的Context
- JavaEE学习笔记之SSH—Struts2(3)
- 配置php.ini实现PHP文件上传功能
- 实例解读AndroidManifest.xml
- 解决报错 CodeSign error: code signing is required for product type Application in SDK iOS
- 通过案例一步学习理解java反射机制
- Retrofit项目封装使用
- DAV 入门之 MATLAB (5):保存代码
- CodeForces 474B Worms (水题,二分)
- X 射线
- 二维码生成器和二维码扫描器
- OSChina 周三乱弹 ——所有的酒,都不如你
- 【CityHunter】游戏进度总控,及需求设计
- 仿饿了么购物车下单效果
- 雷军:搅和不是要把大家搞死(用互联网的方式和实体经济结合的方法,希望帮助100个行业进步)
- Windows 7个性化配置,关闭Win7动画效果,设置窗口背景为“ 豆绿色”,移动“我的文档”
- H - Wormholes
- 多边形和虚线矩形框