算法导论------渐近记号Θ、Ο、o、Ω、ω详解

简介: 目录:1.渐近精确界记号:Θ(big-theta)2.渐近上界记号 :O(big-oh)3.渐近下界记号 :Ω(big-omege)4.非渐近紧确上界:o(小-oh)5.非渐近紧确下界:ω(小-omege)6.

目录:


1.渐近精确界记号:Θ(big-theta)

  假设算法A的运行时间表达式T1(n)为:T1(n)=30n4+20n3+40n2+46n+100 
  假设算法B的运行时间表达式T2(n)为:T2(n)=1000n3+50n2+78n+10 
当问题规模足够大的时候,例如n=100万,算法的运行时间将主要取决于时间表达式的第一项,其它项的执行时间只有它的几十万分之一,可以忽略不计。第一项的常数系数,随着n的增大,对算法的执行时间也变得不重要了。 
  于是,算法A的运行时间可以记为:T1(n)n4,记为T1(n)=Θ(n4);算法B的运行时间可以记为:T2(n)n4,记为T2(n)=Θ(n4)

Θ的数学含义 
方式一:设f(n)g(n)是定义域为自然数集合的函数。如果limnf(n)g(n)存在,并且等于某个常数c(c>0),那么f(n)=Θ(g(n))。通俗理解为f(n)g(n)同阶,Θ用来表示算法的精确阶。

方式二:Θ(g(n))={f(n):存在正常量c1c2n0,使得对所有nn0,有0c1g(n)f(n)c2g(n)}若存在正常量c1c2,使得对于足够大的n,函数f(n)能“夹入”c1g(n)c2g(n)之间,则f(n)属于集合Θ(g(n)),记作f(n)Θ(g(n))。作为代替,我们通常记“f(n)=Θ(g(n))”。

  由下图中左侧f(n)=Θ(g(n))图可以看出,对所有n>n0时,函数f(n)乘一个常量因子可等于g(n),我们称g(n)f(n)的一个 渐近紧确界 。Θ记号在五个记号中,要求是最严格的,因为g(n)即可以表示上界也可以表示下界。

这里写图片描述

  需要注意的是:Θ(g(n))的定义要求每个成员f(n)Θ(g(n)) 渐近非负,即当n足够大时,f(n)非负。 渐近正函数就是对所有足够大的n均为正的函数。

2.渐近上界记号:O(big-oh)

定义:设f(n)g(n)是定义域为自然数集N上的函数。若存在正数cn0,使得对一切nn0都有0f(n)cg(n)成立,则称f(n)的渐进的上界是g(n),记作f(n)=O(g(n))。通俗的说n满足一定条件范围内,函数f(n)的阶不高于函数g(n)

  根据符号O的定义,用它评估算法的复杂度得到的只是问题规模充分大时的一个上界。这个上界的阶越低,评估越精确,越有价值。

例如:设f(n)=n2+n,则 
f(n)=O(n2),取c=2,n0=1即可 
f(n)=O(n3),取c=1,n0=2即可。显然,O(n2)作为上界更为精确。

几种常见的复杂度关系

O(1)<O(log(n))<O(n)<O(nlogn)<O(n2)<O(2n)<O(n!)<O(nn) 
需要注意的是:对数函数在没有底数时,默认底数为2;如lgn=logn=log2n因为计算机中很多程序是用二分法实现的。

符号用法测试:素数测试

int isprime(int n) {
    for(int i=2; i<=(int)sqrt(n); i++) {
        if(n%i==0) { 
            return0;
        }
    }
    return1;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在上面这个素数测试的例子中,基本运算是整除;时间复杂度T(n)=O(n12)是正确的。当被测的数n为偶数时,基本运算一次也没执行,所以T(n)=Θ(n12)是错误的,因为没有办法证明T(n)的下界是Ω(n12)


3.渐近下界记号:Ω(big-omege)

定义:设f(n)g(n)是定义域为自然数集N上的函数。若存在正数cn0,使得对一切nn0都有0cg(n)f(n)成立,则称f(n)的渐进的下界是g(n),记作f(n)=Ω(g(n))。通俗的说n满足一定条件范围内,函数f(n)的阶不低于函数g(n)

  根据符号Ω的定义,用它评估算法的复杂度得到的只是问题规模充分大时的一个下界。这个下界的阶越高,评估越精确,越有价值。

例如:设f(n)=n2+n,则 
f(n)=Ω(n2),取c=1,n0=1即可 
f(n)=Ω(100n),取c=1/100 ,n0=1即可

显然,Ω(n2)作为下界更为精确。

4.非渐近紧确上界:o(小-oh)

定义1:设f(n)g(n)是定义域为自然数集N上的函数。若对于任意正数cn0,使得对一切nn0都有0f(n)<cg(n)成立,则称f(n)的渐进的非紧确上界是g(n),记作f(n)=o(g(n))。通俗的说n满足一定条件范围内,函数f(n)的阶低于函数g(n)。 
定义2:设f(n)g(n)是定义域为自然数集合的函数。如果limnf(n)g(n)=0,那么f(n)=o(g(n))。通俗理解为f(n)g(n)的阶。

O记号提供的渐近上界可能是渐近紧确的,也可能是非紧确的。(如:2n2=O(n2)是渐近紧确的,而2n=O(n2)是非紧确上界。) 
例子:f(n)=n2+n,则f(n)=o(n3)


5.非渐近紧确下界:ω(小-omege)

定义1:设f(n)g(n)是定义域为自然数集N上的函数。若对于任意正数cn0,使得对一切nn0都有0cg(n)<f(n)成立,则称f(n)的渐进的非紧确下界是g(n),记作f(n)=ω(g(n))。通俗的说n满足一定条件范围内,函数f(n)的阶高于函数g(n)。 
定义2:设f(n)g(n)是定义域为自然数集合的函数。如果limnf(n)g(n)=,那么f(n)=o(g(n))。通俗理解为f(n)g(n)的阶。

ω记号与Ω的关系类似于oO记号的关系。我们用ω表示一个非渐近紧确的下界。 
例子:f(n)=n2+n,则f(n)=ω(n)是正确的。f(n)=ω(n2)则是错误的,f(n)=Ω(n2)是正确的。


6.渐近记号Θ、Ο、o、Ω、ω关系

记号 含义 通俗理解
(1)Θ(西塔) 紧确界。 相当于”=”
(2)O (大欧) 上界。 相当于”<=”
(3)o(小欧) 非紧的上界。 相当于”<”
(4)Ω(大欧米伽) 下界。 相当于”>=”
(5)ω(小欧米伽) 非紧的下界。 相当于”>”

这里写图片描述

目录
相关文章
|
机器学习/深度学习 算法
《算法导论(原书第3版)》一3.1 渐近记号
本节书摘来自华章出版社《算法导论(原书第3版)》一 书中的第3章,第3.1节,作者:(美)Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1887 0
|
2天前
|
机器学习/深度学习 自然语言处理 算法
m基于深度学习的OFDM+QPSK链路信道估计和均衡算法误码率matlab仿真,对比LS,MMSE及LMMSE传统算法
**摘要:** 升级版MATLAB仿真对比了深度学习与LS、MMSE、LMMSE的OFDM信道估计算法,新增自动样本生成、复杂度分析及抗频偏性能评估。深度学习在无线通信中,尤其在OFDM的信道估计问题上展现潜力,解决了传统方法的局限。程序涉及信道估计器设计,深度学习模型通过学习导频信息估计信道响应,适应频域变化。核心代码展示了信号处理流程,包括编码、调制、信道模拟、降噪、信道估计和解调。
23 8
|
4天前
|
算法
基于GA遗传优化的混合发电系统优化配置算法matlab仿真
**摘要:** 该研究利用遗传算法(GA)对混合发电系统进行优化配置,旨在最小化风能、太阳能及电池储能的成本并提升系统性能。MATLAB 2022a用于实现这一算法。仿真结果展示了一系列图表,包括总成本随代数变化、最佳适应度随代数变化,以及不同数据的分布情况,如负荷、风速、太阳辐射、弃电、缺电和电池状态等。此外,代码示例展示了如何运用GA求解,并绘制了发电单元的功率输出和年变化。该系统原理基于GA的自然选择和遗传原理,通过染色体编码、初始种群生成、适应度函数、选择、交叉和变异操作来寻找最优容量配置,以平衡成本、效率和可靠性。
|
5天前
|
机器学习/深度学习 算法
基于鲸鱼优化的knn分类特征选择算法matlab仿真
**基于WOA的KNN特征选择算法摘要** 该研究提出了一种融合鲸鱼优化算法(WOA)与K近邻(KNN)分类器的特征选择方法,旨在提升KNN的分类精度。在MATLAB2022a中实现,WOA负责优化特征子集,通过模拟鲸鱼捕食行为的螺旋式和包围策略搜索最佳特征。KNN则用于评估特征子集的性能。算法流程包括WOA参数初始化、特征二进制编码、适应度函数定义(以分类准确率为基准)、WOA迭代搜索及最优解输出。该方法有效地结合了启发式搜索与机器学习,优化特征选择,提高分类性能。
|
5天前
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的64QAM解调算法matlab性能仿真
**算法预览图省略** MATLAB 2022A版中,运用BP神经网络进行64QAM解调。64QAM通过6比特映射至64复数符号,提高数据速率。BP网络作为非线性解调器,学习失真信号到比特的映射,对抗信道噪声和多径效应。网络在处理非线性失真和复杂情况时展现高适应性和鲁棒性。核心代码部分未显示。
|
3天前
|
算法 计算机视觉
基于Chan-Vese算法的图像边缘提取matlab仿真
**算法预览展示了4幅图像,从边缘检测到最终分割,体现了在matlab2022a中应用的Chan-Vese水平集迭代过程。核心代码段用于更新水平集并显示迭代效果,最后生成分割结果及误差曲线。Chan-Vese模型(2001)是图像分割的经典方法,通过最小化能量函数自动检测平滑区域和清晰边界的图像分割,适用于复杂环境,广泛应用于医学影像和机器视觉。**
|
8天前
|
机器学习/深度学习 算法 数据可视化
m基于PSO-LSTM粒子群优化长短记忆网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,应用PSO优化的LSTM模型提升了电力负荷预测效果。优化前预测波动大,优化后预测更稳定。PSO借鉴群体智能,寻找LSTM超参数(如学习率、隐藏层大小)的最优组合,以最小化误差。LSTM通过门控机制处理序列数据。代码显示了模型训练、预测及误差可视化过程。经过优化,模型性能得到改善。
28 6
|
6天前
|
缓存 算法
基于机会网络编码(COPE)的卫星网络路由算法matlab仿真
**摘要:** 该程序实现了一个基于机会网络编码(COPE)的卫星网络路由算法,旨在提升无线网络的传输效率和吞吐量。在MATLAB2022a中测试,结果显示了不同数据流个数下的网络吞吐量。算法通过Dijkstra函数寻找路径,计算编码机会(Nab和Nx),并根据编码机会减少传输次数。当有编码机会时,中间节点执行编码和解码操作,优化传输路径。结果以图表形式展示,显示数据流与吞吐量的关系,并保存为`R0.mat`。COPE算法预测和利用编码机会,适应卫星网络的动态特性,提高数据传输的可靠性和效率。
|
8天前
|
算法 调度
基于变异混合蛙跳算法的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图
**摘要:** 实现变异混合蛙跳算法的MATLAB2022a版车间调度优化程序,支持动态调整工件和机器数,输出甘特图。核心算法结合SFLA与变异策略,解决Job-Shop Scheduling Problem,最小化总完成时间。SFLA模拟蛙群行为,分组进行局部搜索和全局信息交换。变异策略增强全局探索,避免局部最优。程序初始化随机解,按规则更新,经多次迭代和信息交换后终止。
|
13天前
|
算法 JavaScript 决策智能
基于禁忌搜索算法的TSP路径规划matlab仿真
**摘要:** 使用禁忌搜索算法解决旅行商问题(TSP),在MATLAB2022a中实现路径规划,显示优化曲线与路线图。TSP寻找最短城市访问路径,算法通过避免局部最优,利用禁忌列表不断调整顺序。关键步骤包括初始路径选择、邻域搜索、解评估、选择及禁忌列表更新。过程示意图展示搜索效果。