算法复杂度分析中的渐近分析(基于输入大小)

news2024/12/24 0:19:31

为什么要进行性能分析?

有许多重要的事情需要注意,例如用户友好性、模块化、安全性、可维护性等。为什么要担心性能?答案很简单,只有当我们有性能时,我们才能拥有上述所有东西。因此,性能就像货币,我们可以通过它购买上述所有东西。学习性能的另一个原因是——速度很有趣!总而言之,性能==规模。想象一下,一个文本编辑器可以加载 1000 个页面,但每分钟可以拼写检查 1 页,或者一个图像编辑器需要 1 小时才能将图像向左旋转 90 度,或者......你明白了。如果一个软件功能无法应对用户需要执行的任务规模,那么它就等于死了。

给定一个任务的两种算法,我们如何找出哪一种更好?

一种天真的方法是 - 实现两种算法并在计算机上运行两个程序以获得不同的输入,看看哪个花费更少的时间。这种方法在算法分析中存在许多问题。

  • 对于某些输入,第一种算法的性能可能优于第二种算法。对于某些输入,第二表现更好。
  • 对于某些输入,第一种算法在一台计算机上的性能更好,而第二种算法在另一台计算机上对于其他一些输入的性能更好。

渐进分析是在分析算法时处理上述问题的大思想。在渐近分析中,我们根据输入大小评估算法的性能(我们不测量实际运行时间)。我们计算算法所花费的时间(或空间)如何随着输入大小的增加而增加。

例如,让我们考虑排序数组中的搜索问题(搜索给定项目)。

上述搜索问题的解决方案包括:

  • 线性搜索(增长顺序为线性
  • 二叉搜索(增长顺序是对数)。

为了理解渐近分析如何解决上述分析算法中提到的问题,

  • 让我们说:
    • 我们在快速计算机 A 上运行线性搜索,并且
    • 在慢速计算机 B 和
    • 选择两台计算机的常量值,以便它准确地告诉我们给定计算机在几秒钟内执行搜索所需的时间。
  • 假设 A 的常数是 0.2,B 的常数是 1000,这意味着 A 比 B 强大 5000 倍。
  • 对于输入数组大小 n 的小值,快速计算机可能需要更少的时间。
  • 但是,在输入数组大小达到一定值后,与线性搜索相比,二叉搜索肯定会开始花费更少的时间,即使二叉搜索是在一台慢速机器上运行的。
输入大小在 A 上的运行时间B 上的运行时间
102 秒~ 1 小时
10020 秒~ 1.8小时
10^6 ~ 55.5 小时~ 5.5小时
10^9~ 6.3 年~ 8.3小时
  • 原因是二叉搜索相对于输入大小的增长顺序是对数的,而线性搜索的增长顺序是线性的。
  • 因此,在输入大小的某个值之后,始终可以忽略与机器相关的常量。

此示例的运行时间:

  • 线性搜索运行时间(以秒为单位):0.2 * n
  • 二进制搜索运行时间(以秒为单位):1000*log(n)

渐近分析总是有效吗?

渐近分析并不完美,但这是分析算法的最佳方法。例如,假设有两种排序算法在一台机器上分别占用 1000nLogn 和 2nLogn 时间。这两种算法在渐近上是相同的(增长顺序是nLogn)。因此,使用渐近分析,我们无法判断哪一个更好,因为我们忽略了渐近分析中的常数。

此外,在渐近分析中,我们总是讨论大于常量值的输入大小。这些大输入可能永远不会提供给您的软件,并且渐近较慢的算法始终在您的特定情况下表现得更好。因此,您最终可能会选择一种渐近较慢但对您的软件来说更快的算法。

如果您发现任何不正确的地方,或者如果您想分享有关上述主题的更多信息,请写评论

⭐️ 优质书籍推荐


MATLAB智能优化算法:从写代码到算法思想

 

【内容简介】

本书以简单的组合优化问题作为MATLAB智能优化算法实战应用的切入点,逐步深入使用MATLA编写更复杂的智能优化算法和求解更复杂的组合优化问题,让读者逐渐理解智能优化算法的实际求解过程。 本书内容通俗易懂,案例丰富,实用性强,特别适合MATLAB语言的入门读者阅读,也适合想学习智能优化算法但无从下手的编程爱好者阅读。另外,本书也适合作为相关专业的教材使用。

目录

第1章   遗传算法求解0-1背包问题
第2章 变邻域搜索算法求解旅行商问题
第3章 模拟退火算法求解旅行商问题
第4章 大规模邻域搜索算法求解旅行商问题
第5章 蚁群算法求解容量受限的车辆路径问题
第6章 禁忌搜索算法求解带时间窗的车辆路径问题
第7章 遗传算法求解带时间窗的车辆路径问题
第8章 迭代局部搜索求解订单分批问题
第9章 NSGA-II算法求解多目标01背包问题
第10章 粒子群法求解配送中心选址问题。


📚 京东购买链接:《MATLAB智能优化算法》

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

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

相关文章

磷酸化多肽Asp-Arg-Val-Tyr(PO3H2)-Ile-His-Pro-Phe、129785-85-9

在血管平滑肌细胞中有多种作用,包括正常动脉的收缩,培养的细胞或病变血管的肥大或增生等。 编号: 200676 中文名称: 八肽DRV-pTyr-IHPF CAS号: 129785-85-9 单字母: H2N-DRV-pTyr-IHPF-OH 三字母: H2N-Asp-Arg-Val-Tyr(PO3H2)-Ile-His-Pro-Phe-COOH 氨基…

MySQL——进阶

第1章 存储引擎 1.1 MySQL体系结构 1.2 存储引擎介绍 定义:存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。我们可以在创建表的时候,来指定…

msfconsole之制作windows木马并成功获取shell

msfconsole之制作windows木马并成功获取shell 一、工具简介     msfconsole 简称 msf 是一款常用的安全测试工具,包含了常见的漏洞利用模块和生成各种木马,其提供了一个一体化的集中控制台,通过msfconsole,你可以访问和使用所…

软考高级系统架构师_计算机组成与结构---备考笔记004

奇校验和海明码考的比较多,可以看到: 奇校验:比如有个11001 这个要进行校验,那么,需要在后面添加什么?注意,要添加0,因为奇校验,是奇数个1,这里已经有3个1了,所以后面要加0,变成110010 这样 然后我们再来看,如

01-SpringMVC项目构建

Overview 梳理了创建基于SpringMVC的项目创建流程和注意点,防止遗忘 1. 创建一个空项目 2. 添加新模块 3. 在pom文件中指定打包方式并刷新 4. 将模块目录结构改造成web项目 这里的web配置是你在pom文件中指定war的打包方式后就会出现的,当然没出现也可…

迅为3A5000_7A2000开发板龙芯全国产处理器LoongArch架构核心方案

1.全国产设计方案 从里到外 100% 全国产 从CPU自主指令系统到开发板每一个元器件,做到100%全国产化。 2.产品开发更快捷 PCIE 32路 相比同类嵌入式板卡仅2到4路的PCIE, 这款核心板可以支持多达32路的PCIE 3.0接口 3.工业化标准设计 遵循COM E…

数据库-mysql架构与sql执行原理(上)(一)

目录 一、一条查询的sql他是怎么样去执行的呢? 二、建立链接 同步 异步 三、连接方式 长链接 短链接 四、通信协议 Unix socket TCP/IP 共享内存 五、通信方式 单工 半双工 全双工 六、缓存 七、解析 八、预处理器 九、优化器 十、查询执行引擎…

ASEMI肖特基二极管MBR15200FAC参数,MBR15200FAC图片

编辑-Z ASEMI肖特基二极管MBR15200FAC参数: 型号:MBR15200FAC 最大重复峰值反向电压(VRRM):200V 最大RMS电桥输入电压(VRMS):140V 最大直流阻断电压(VDC&#xff09…

智慧零售解决方案-最新全套文件

智慧零售解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 智慧零售全套最新解决方案合集一、建设背景 传统零售业发展趋势分析: (1)市场竞争日益激烈 零售业的发展一直是一个竞争性强的产业,这个市场的发…

数据结构之堆

堆: 堆是一颗完全二叉树,分为大根堆和小根堆两种。大根堆:根节点大于等于左右节点;小根堆:根节点小于等于左右节点。所以大根堆的根节点是最大值,小根堆的根节点是最小值。 c中priority_queue可以用来声明…

Axure原型创建折线、柱状等图形,引用echarts

1、在echarts网站选择对应的统计图形: 网址:Examples - Apache ECharts 2、对代码进行编辑,使其适配自己的业务。 3、在Axure中创建一个基本元件矩形。命名为:test 4、选择交互--载入时--打开连接--Fx 5、在插入变量中增加如下…

SVN windows安装及初步使用;及初次连接版本库、提交、还原、比对操作说明文档

派昂医药-SVN版本库说明总览&#xff1a; 1.说明 2.版本库地址 3.托管项目明细 4.SVN客户端安装 5.SVN-Win端版本操作 6.SVN客户端浏览 1.说明&#xff1a; <1、协议 SVN私有协议 <2、PC系统字符集要求 中文GBK编码&#xff1b;中文以外UTF-8编码&#xff0c;如乱码…

中国市场杂志社中国市场编辑部2022年第32期目录

前沿理论 新冠肺炎疫情下跨境冷链物流的新思考——以大连冷链业疫情为例 廖燕莲;谷玉红;尚书山; 1-3《中国市场》投稿&#xff1a;cnqikantg126.com 数字经济背景下数字服务税问题探析 李瑞玲; 4-6 我国工业能源效率提升的阻碍及其对策探究 韩洁平;田振东;张诗雅; …

DJ12-1 8086系列指令系统-2 数据传送指令

目录 1. 通用数据传送指令 &#xff08;1&#xff09;MOV 一般数据传送指令 &#xff08;2&#xff09;堆栈操作指令 &#xff08;3&#xff09;XCHG 交换指令 &#xff08;4&#xff09;XLAT 查表指令 &#xff08;5&#xff09;CBW 和 CWD 字位扩展指令 2. 输入输出指…

8点FFT实现全教程

个人认为编写8点FFT的编写,不要过分关注理论,重要的是理解整个流程。 参考文章: matlab 8点fft蝶形图,基2时抽8点FFT的matlab实现流程及FFT的内部机理_罗漫的博客-CSDN博客前言本来想用verilog描述FFT算法,虽然是8点的FFT算法,但写出来的资源用量及时延也不比调用FFT IP…

【第五部分 | JS WebAPI】5:1W字详解Bom对象

目录 | Bom概述 | window 、Bom、Dom 的关系 | window的load事件&#xff1a;把JS写进head里 如何把 JS 代码写到head里&#xff08;页面加载事件 onload&#xff09; 比onload更高效的加载事件 DOMContentLoaded | window的resize事件&#xff08;窗口大小改变的时候触发…

vue移动端高德地图的使用及实现最简单的地图功能

目录 一、创建应用获取key 1、进入开放平台&#xff0c;按步骤注册成为开发者 2、 登录之后&#xff0c;点击头像&#xff0c;进入「应用管理」 页面「创建新应用」 3、 为应用添加 Key 二、配置 1、在public下的index.html中添加 2、 JSAPI key和安全密钥的使用 方式一…

论文阅读09——《Deep Fusion Clustering Network》

论文阅读09——《Deep Fusion Clustering Network》 原文链接&#xff1a;论文阅读09——《Deep Fusion Clustering Network》 作者&#xff1a;Wenxuan Tu, Sihang Zhou, Xinwang Liu, Xifeng Guo, Zhiping Cai, En zhu, Jieren Cheng 发表时间&#xff1a;2021年5月18日 论文…

Java基础五大机制 —— SPI机制基础(一)

1、什么是SPI机制 SPI&#xff08;Service Provider Interface&#xff09;&#xff0c;是JDK内置的一种 服务提供发现机制&#xff0c;可以用来启用框架扩展和替换组件&#xff0c;主要是被框架的开发人员使用&#xff0c;比如java.sql.Driver接口&#xff0c;其他不同厂商可…

Fast-DDS库的安装教程

Fast-DDS库的安装教程0 序言1 安装依赖2 安装Fast-DDS2.1 编译foonathan_memory_vendor2.2 编译Fast-CDR2.3 编译Fast-DDS2.4 编译Fast-DDS-Gen2.5 添加环境变量2.6 验证3 参考资料4 写在最后工欲善其事,必先利其器。首先要知道 Fast-DDS是什么&#xff1f;要知道 Fast-DDS是什…