算法分析之-渐进记号
渐进记号
渐进记号分为:Θ()、Ω()、ω()、O()、o()
1. Θ记号
f(n)=Θ(g(n))f(n) = \Theta(g(n))f(n)=Θ(g(n))
存在正常数C1,C2和n0,使得对所有的n≥n0,存在正常数C_1,C_2和n_0,使得对所有的n \ge n_0,存在正常数C1,C2和n0,使得对所有的n≥n0,
都有0≤C1∗g(n)≤f(n)≤C2∗g(n),f(n)与g(n)在数量级上相等都有0 \le C_1*g(n) \le f(n)\le C_2*g(n),f(n)与g(n)在数量级上相等都有0≤C1∗g(n)≤f(n)≤C2∗g(n),f(n)与g(n)在数量级上相等
我们试着证明:我们试着证明:我们试着证明:
12n2−3n=θ(n2)\frac12n^2 - 3n = \theta(n^2)21n2−3n=θ(n2)
第一步,我们必须确定有第一步,我们必须确定有第一步,我们必须确定有
C1n2≤12n2−3n≤C2n2C_1n^2\le\frac12n^2-3n\le C_2n^2C1n2≤21n2−3n≤C2n2
第二步,我们将两边除以n2第二步,我们将两边除以n^2第二步,我们将两边除以n2
C1≤12−3n≤C2C_1\le \frac12 - \frac3n\le C_2C1≤21−n3≤C2
C2≥1/2可以使任意n≥1,不等式右边成立C_2\ge1/2可以使任意n\ge1,不等式右边成立C2≥1/2可以使任意n≥1,不等式右边成立
C1≤1/14可以使任意n≥7,不等式左边成立C_1\le1/14可以使任意n\ge7,不等式左边成立C1≤1/14可以使任意n≥7,不等式左边成立
2. O记号
f(n)=O(g(n))f(n) = O(g(n))f(n)=O(g(n))
存在正常数C,n0,使得对所有的n≥n0,都有0≤f(n)≤C∗g(n)存在正常数C,n_0, 使得对所有的n\ge n_0, 都有0\le f(n) \le C * g(n)存在正常数C,n0,使得对所有的n≥n0,都有0≤f(n)≤C∗g(n)
f(n)在数量级小于等于g(n)f(n)在数量级小于等于g(n)f(n)在数量级小于等于g(n)
3. o记号
f(n)=o(g(n))f(n) = o(g(n))f(n)=o(g(n))
存在正常数C,n0,使得对所有的n≥n0,都有0≤f(n)<c∗g(n);f(n)在数量级小于g(n)存在正常数C,n_0, 使得对所有的n\ge n_0, 都有0\le f(n) \lt c * g(n);f(n)在数量级小于g(n)存在正常数C,n0,使得对所有的n≥n0,都有0≤f(n)<c∗g(n);f(n)在数量级小于g(n)
e.g.:2n=ο(n2);2n2≠o(n2)2n = \omicron(n^2);2n ^2 \neq o(n ^2)2n=ο(n2);2n2=o(n2)
4. Ω记号
f(n)=Ω(g(n))f(n) = Ω(g(n))f(n)=Ω(g(n))
存在正常数C,n0,使得对所有的n≥n0,都有0≤C∗g(n)≤f(n);f(n)在数量级大于等于g(n)存在正常数C,n_0, 使得对所有的n\ge n_0, 都有 0 \le C * g(n) \le f(n); f(n)在数量级大于等于g(n)存在正常数C,n0,使得对所有的n≥n0,都有0≤C∗g(n)≤f(n);f(n)在数量级大于等于g(n)
5. ω记号
f(n)=ω(g(n))f(n) = ω(g(n))f(n)=ω(g(n))
存在正常数C,n0,使得对所有的n≥n0,都有0≤c∗g(n)<f(n);f(n)在数量级大于g(n)存在正常数C,n_0, 使得对所有的n\ge n0, 都有 0 \le c * g(n) \lt f(n); f(n)在数量级大于g(n)存在正常数C,n0,使得对所有的n≥n0,都有0≤c∗g(n)<f(n);f(n)在数量级大于g(n)
性质
- 传递性
- 自反性
- 对称性
- 转置对称性
算法分析之-渐进记号相关推荐
- 算法设计与分析——算法学基础(三):渐进记号
分类目录:<算法设计与分析>总目录 相关文章: 算法学基础(一):算法学概述 算法学基础(二):分析算法 算法学基础(三):渐进记号 第<算法学基础(二):分析算法>中定义了算 ...
- algorithm_算法分析引入的记号_复杂度分析符号
文章目录 algorithm_算法分析引入的记号:复杂度分析符号 T(n):T(n):T(n):算法的运行时间 f(n)f(n)f(n):输入规模和关于输入规模的函数 (Θ,O,Ω\Theta,O,\ ...
- 渐进记号的相关证明(使用极限的方式)
⎧⎩⎨⎪⎪⎪⎪⎪⎪ limf(n)g(n)>0⇔f(n)=Θ(g(n))limf(n)g(n)=0⇔f(n)=o(g(n)) \left\{ \begin{split}\ \lim\frac{f ...
- 放缩法 —— 渐进记号的相关证明
1. max(f(n),g(n))max(f(n),g(n))\max (f(n), g(n)) max(f(n),g(n))=Θ(f(n)+g(n))max(f(n),g(n))=Θ(f(n)+g( ...
- CLRS 3.1渐进记号
3.1-1 设 ∃n1,n2:f(n)≥0g(n)≥0for n>n1for n>n2 \begin{align} \exists n_1,n_2: &f(n) \geq 0 &a ...
- 算法分析(渐进分析)
目录 1.T(n)函数 2.渐进分析 2.1渐进紧确界(θ记号) 举例 2.2渐进上界 (O记号) 举例 2.3渐进下界 (Ω记号) 举例 3.常用的换算公式 3.1举例证明 算法分析分为算法时间复杂 ...
- 用c语言验证装载问题 回溯法,《算法分析与设计》期末考试复习题纲(完整版)...
<算法分析与设计>期末复习题 一.选择题 1. 算法必须具备输入.输出和( D )等4个特性. A.可行性和安全 性 B .确定性和易读性 C.有穷性和安全 性 D .有穷性和确定性 2. ...
- 算法复杂度分析(渐近记号)
[见解]关于算法复杂度的理解不能只停留在根据代码直接凭感官或者经验直接推测其公式(例如:根据for循环直接推测出一个O(n)复杂度,关于复杂度的理解更应该深入到其所代表的函数空间中去. 1.渐进记号 ...
- 《算法导论》第三章 函数的增长 个人心得——记号与常用函数
由第二章中我们得知,算法的时间复杂度只与算法的高阶项有关.当输入规模n足够大时,高阶项的花费远超过低阶项.因此在计算算法的运行时间时,尽管可以求出精确的运行时间,但是并不值得我们这么做. 在n很大的情 ...
最新文章
- 语义分割 DeepLabv3--Rethinking Atrous Convolution for Semantic Image Segmentation
- AVFoundation 文本转语音和音频录制 播放
- stm32 systick定时器
- 如何在Kubernetes中暴露服务访问
- 前端学习(543):npm包管理
- cocos creator 数组_CoCos Creator中的数据类型
- 【转】CT解析重建**
- 12.深度学习练习:Residual Networks(注定成为经典)
- 操作系统考研辅导教程(计算机专业研究生入学考试全真题解) pdf,计算机组成原理考研辅导教程:计算机专业研究生入学考试全真题解...
- [CTO札记]谁在使用SNS
- hbase入门综合概要介绍
- 645. 错误的集合
- babel-preset-env
- Python+tkinter动态显示与隐藏窗口上的组件
- 【甄选靶场】Vulnhub百个项目渗透——项目十:stapler-1(文件上传,多方式提权)
- MarkDown常用使用技巧---字体颜色、大小、背景色、表格、图片大小修改---CSDN篇
- 虚幻引擎4中的实时GI技术
- Oracle 时间段查询
- 如何让精灵在不同的帧率下运动速度不变--Frame Rate Independent Movement
- AutoRunner 功能自动化测试项目实训之自动化测试技术(十七)