【C++数据结构】渐近记法

news2025/7/13 20:53:20

渐近记法

3.1 引言

考察程序的操作计数和执行步数有两个重要的原因:

  • 1)预测程序运行时间如何随着实例特征的变化而变化;

  • 2)对两个功能相同的程序,比较它们的时间复杂度。

存在问题:

  • 在使用操作计数时,我们关注的是某些“关键”的操作,而忽略了其他的操作。
  • 步数的概念是不精确的。

渐近分析方法主要确定的是复杂函数中的最大项(但不包括最大项的系数)。

3.2 渐近记法

3.2.1 大0记法

定义3-1 令p(n)和g(n)是两个非负函数。称p(n)渐近地大于q(n) (p(n)渐近地优于q(n)),当且仅当:
lim ⁡ n → ∞ q ( n ) p ( n ) = 0 \lim\limits_{n \to \infty}\frac{q(n)}{p(n)}=0 nlimp(n)q(n)=0
称q(n)渐近地小于p(n),当且仅当p(n)渐近地大于q(n)。称p(n)渐近地等于q(n),当且仅当任何一个都不是渐近地大于另一个。

常见时间复杂度项

f(n)作为实例特征n的函数,表示一个程序的时间或空间复杂度。因为程序的时间或空间复杂度是一个非负数,所以我们假设函数f对所有n都是非负值。

在这里插入图片描述

图3-3给出了经常在步数分析中出现的项。虽然其中所有项的系数都是1,但是在实际分析中,这些项的系数都有不同的值。图3-3的对数都没有对数基,原因是对于任何大于1的常数a和b,都有:
l o g a n = l o g b n / l o g b a , 因 此 l o g a n 和 l o g b n 是 渐 近 相 等 的 。 log_an=log_bn/log_ba,因此log_an和log_bn是渐近相等的。 logan=logbn/logba,loganlogbn
利用定义3-1,对图3-3的所有项,可以排列出它们的大小顺序如下(其中<表示渐近地小于):
1 < l o g n < n < n l o g n < n 2 < n 3 < 2 n < n ! 1<logn<n<nlogn<n^2<n^3<2^n<n! 1<logn<n<nlogn<n2<n3<2n<n!

**渐近记法(asymptotic notation)**描述的是大实例特征的时间或空间复杂度。我们将用它来分析步数(其实还可以用它来分析空间复杂度和操作步数)。时间复杂度和步数是同义词。如果实例特征只含有一个变量,例如n,渐近记法就用步数中渐近最大的一项来描述复杂度。
表示法f(n)=0(g(n))(读作"f(n)is big of g(n)")代表f(n)渐近小于或等于g(n)。在渐近的意义上,g(n)是f(n)的上限。

在渐近复杂度分析中,我们要确定一个最大项以表示复杂度,而且把这个最大项的系数置为1。
在这里插入图片描述
**【注意】**f(n)=O(g(n))与O(g(n))=f(n)不同。实际上,后者没有意义。符号“=”通常表示相等关系,此处表示的意思为“是”。因此,要把符号“=”读作“是”,而不是“等于”。
在这里插入图片描述

3.2.2 渐近记法Ω

记法f(n)=Ω(g(n))(读作“f(n)is Ω of g(n)”)表示f(n)渐近大于或等于g(n)。因此,在渐近意义上,g(n)是f(n)的下界。
在这里插入图片描述

3.2.3 渐近记法Θ

记法f(n)= Θ(g(n))(读作“f(n)is Θ of g(n)”)表示f(n)渐近等于g(n)。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/38264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue生命周期--Vue实例创建过程详解

每个Vue实例在被创建时都要经过一系列的初始化过程--例如&#xff0c;需要设置数据监听、编译模板、将实例挂载到DOM并在数据变化时更新DOM等。同时在这个过程中也会运行一些叫做 生命周期钩子的函数&#xff0c;这给了用户在不同阶段添加自己的代码的机会。 生命周期图示&…

Linux入侵排查

Linux入侵排查 实验内容 当系统被黑客入侵、需短时间查找入侵来源&#xff0c;还原入侵事故过程&#xff0c;同时给出解决方案与防范措施。以下给出一些入侵排查思路 netstat -antpl 查看当前端口状态是LISTEN的端口 针对对外开放的端口&#xff0c;查看日志 先查看ssh爆破的…

OpenGL ES 学习(三) -- 绘制平面图形

上一章中&#xff0c;已经对 OpenGL 的编程语言 GLSL 和渲染模式有了一定的了解&#xff0c;今天&#xff0c;将运用之前的知识&#xff0c;完成一些平面图形的操作。效果如下&#xff1a; 如果你对 OpenGL 的基本概念或者渲染流程不清晰&#xff0c;建议先看 OpenGL ES 学习…

D. Insert a Progression(绝对值的性质)

Problem - 1671D - Codeforces 给你一个n个整数的序列a1,a2,...,an。你还得到了x个整数1,2,...,x。 每个整数可以插入序列的开头&#xff0c;也可以插入序列的结尾&#xff0c;或者插入序列的任何元素之间。 所得序列a′的得分是其中相邻元素的绝对差异之和&#xff08;∑i1n…

实验跟踪

管理和跟踪机器学习实验。 Intuition 到目前为止&#xff0c;一直在训练和评估不同的基线&#xff0c;但还没有真正跟踪这些实验。将解决这个问题&#xff0c;但定义一个适当的实验跟踪过程&#xff0c;将用于所有未来的实验&#xff08;包括超参数优化&#xff09;。实验跟踪是…

【JavaWeb】CookieSession

文章目录一.Cookie❤️1.Cookie的概念2.创建Cookie3.获取Cookie4.修改Cookie的值5.Cookie的生命周期控制6.Cookie有效路径Path的设置7.免输入用户名登录二.Session❤️1.session的概念2.Session的创建和获取3.Session域数据的存取4.Session的生命周期控制5.浏览器和Session之间…

pytorch深度学习实战lesson28

第二十八课 resnet的梯度计算&#xff08;如何缓解梯度问题&#xff09; 沐神说&#xff1a;“假设你在卷积神经网络里面&#xff0c;只要了解一个神经网络的话&#xff0c;你就了解 rest net 就行了。 rest net 是一个很简单的也是很好用的一个网络。这也是大家会经常在实际中…

OpenCV-Python小应用(六):车道线检测

OpenCV-Python小应用&#xff08;六&#xff09;&#xff1a;车道线检测前言前提条件实验环境基于霍夫变换的车道线检测参考文献前言 本文是个人使用OpenCV-Python的应用案例&#xff0c;由于水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff…

【成为红帽工程师】第五天 NFS服务器

目录 一、NFS服务器简介 二、NFS的使用 三、客户端使用autofs自动挂载 四、相关实验 一、NFS服务器简介 NFS&#xff08;网络文件系统&#xff09;&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机&#xff08;不同的计算机、不同的操作系统&…

Go学习之路:流程控制语句:for、if、else、switch 和 defer(DAY 1)

文章目录前引流程控制语句&#xff1a;for、if、else、switch 和 defer1.1、for循环语句/语法格式&#xff08;一&#xff09;1.2、for循环语句/省略前置后置语句&#xff08;二&#xff09;1.3、for循环语句/while&#xff08;三&#xff09;1.4、for循环语句/无限循环&#x…

美新科技过会:收入依赖美国、产能利用率低,林东亮等均为香港籍

11月25日&#xff0c;深圳证券交易所创业板披露的信息显示&#xff0c;美新科技股份有限公司&#xff08;下称“美新科技”&#xff09;获得上市委会议通过。据贝多财经了解&#xff0c;美新科技于2022年3月31日在创业板递交上市申请。 本次冲刺创业板上市&#xff0c;美新科技…

SpringCloudGateway--谓词(断言)

目录 一、定义 二、谓词使用 1、After 2、Before 3、Between 4、Cookie 5、Header 6、Host 7、Method 8、Path 9、Query 10、RemoteAddr 11、Weight 一、定义 SpringCloudGateway中三个重要词汇&#xff1a; 路由&#xff08;Route&#xff09;&#xff1a;配置网…

傻白入门芯片设计,芯片键合(Die Bonding)(四)

目录 一、键合( Bonding) 1. 什么是键合(Bonding)&#xff1f; 2. 芯片键合步骤 3&#xff0e;芯片拾取与放置(Pick & Place) 4. 芯片顶出(Ejection)工艺 5. 使用环氧树脂(Epoxy)实现粘合的芯片键合工艺 6. 使用晶片黏结薄膜&#xff08;DAF&#xff09;的芯片键合工…

Redis实战篇(三)秒杀

一、全局唯一ID &#xff08;1&#xff09;定义 全局ID生成器&#xff0c;是一种在分布式系统下用来生成全局唯一ID的工具&#xff0c;一半满足下列特性&#xff1a; 唯一性高可用高性能递增性安全性 为了增加ID的安全性&#xff0c;我们不直接使用Redis自增的数值&#xf…

OpenCV-Python快速入门(十五):霍夫变换

OpenCV-Python快速入门&#xff08;十五&#xff09;&#xff1a;霍夫变换前言前提条件实验环境霍夫变换基本原理霍夫直线变换&#xff08;cv2.HoughLines()&#xff09;概率霍夫变换&#xff08;cv2.HoughLinesP()&#xff09;霍夫圆变换&#xff08;cv2.HoughCircles()&#…

移动端测试理论

App测试基础 App功能测试及专项测试 前言: 对于APP项目的测试&#xff0c;一般是进行系统测试。 测试主要从业务功能和非业务功能两个方面考虑。业务功能测试 根据软件说明&#xff0c;设计文档或用户需求验证App的各个功能的实现。 专项测试 兼容性测试 兼容性测试的关注点…

阿里Java研发面经(已拿offer)

一、自我总结&#xff1a; 1&#xff09;首先最重要的一点。对自己的要求高点。不要以简单的实习生来要求自己。你要想 你会的别人都会 你的核心竞争力是什么呢。所以楼主建议以Java高级工程师来要求自己。不会的就学嘛。人面对未知的事物 本能反应是恐惧与退缩。可当你尝试去…

Xxl-Job 初次体验

Xxl-Job 初次体验一、定时任务-前置知识二、演变机制三、xxl-Job 设计思想四、xxl-job 实战1. 调度中心部署2. 编写执行器简单使用一下2.1. 让执行器run起来&#xff01;2.2. 在调度中心配置任务&#xff0c;调度一下&#xff01;3. XxlJob 任务的生命周期4. 路由策略5. 父子任…

汇川PLC编程软件AutoShop的使用

文章目录一、数据类型二、系统参数.1、内存容量设置2、“掉电保持范围”设置3、系统设置三、符号表1、编辑符号表2、符号表的打印四、元件监控表1、新建元件监控表2、编辑元件监控表3、复制元件监控表4、快速监控表五、元件使用信息表六、交叉引用表七、软元件内存表1、新建和复…

windows的小米11真机appium微信爬虫

1、下载appium 仓库地址 2、下载python的包 pip install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple 3、下载android-sdk 先下SDK Tools 国内一个镜像网站 参考这个教程 安装好后&#xff0c;运行这个SDK Manager.exe 然后install&#xff0c;同意协…