1,算法:
1.1 所谓算法,是指基于特定的计算模型,旨在解决某一信息处理问题而设计的一个指令序列。
1.2 一般地,算法还应必须具备以下要素:
输入与输出;基本操作、确定性与可行性;有穷性与正确性;退化与鲁棒性;重用性
对退化与鲁棒性说明:
比如其中之一就是,除一般性情况外,实用的算法还应能够处理各种极端的输入实例。以排序问题为例,极端情况下待排序序列的长度可能不是正数(参数n = 0甚至n < 0),或者反过来长度达到或者超过系统支持的最大值(n = INT_MAX),或者A[]中的元素不见得互异甚至全体相等,以上种种都属于所谓的退化(degeneracy)情况。算法所谓的鲁棒性(robustness),就是要求能够尽可能充分地应对此类情况。
1.3 算法效率
可计算性;难解性;计算效率;数据结构
对数据结构说明:
无论是算法的初始输入、中间结果还是最终输出,在计算机中都可以数据的形式表示。对于数据的存储、组织、转移及变换等操作,不同计算模型和平台环境所支持的具体形式不尽相同,其执行效率将直接影响和决定算法的整体效率。数据结构这一学科正是以“数据”这一信息的表现形式为研究对象,旨在建立支持高效算法的数据信息处理策略、技巧与方法。要做到根据实际应用需求自如地设计、实现和选用适当的数据结构,必须首先对算法设计的技巧以及相应数据结构的特性了然于心。
2,复杂度度量
2.1 时间复杂度:
从保守估计的角度出发,在规模为n的所有输入中选择执行时间最长者作为T(n),并以T(n)度量该算法的时间复杂度。
2.2 渐进复杂度:
小规模问题所需的处理时间本来就相对更少,故此时不同算法的实际效率差异并不明显;而在处理更大规模的问题时,效率的些许差异都将对实际执行效果产生巨大的影响。这种着眼长远、更为注重时间复杂度的总体变化趋势和增长速度的策略与方法,即所谓的渐进分析(asymptotic analysis)。
大O记号:在大O记号的意义下,函数各项正的常系数可以忽略并等同于1。多项式中的低次项均可忽略,只需保留最高次项。可以看出,大O记号的这些性质的确体现了对函数总体渐进增长趋势的关注和刻画。
最坏、最好与平均情况:“最坏情况复杂度”是人们最为关注且使用最多的,在一些特殊的场合甚至成为唯一的指标。比如控制核电站运转、管理神经外科手术室现场的系统而言,从最好或平均角度评判算法的响应速度都不具有任何意义,在最坏情况下的响应速度才是唯一的指标。

以上主要的这三种渐进复杂度记号之间的联系与区别。
2.3 空间复杂度
除了执行时间的长短,算法所需存储空间的多少也是衡量其性能的一个重要方面,此即所谓的空间复杂度(space complexity)。实际上,以上针对时间复杂度所引入的几种渐进记号,也适用于对空间复杂度的度量,其原理及方法基本相同。

需要注意的是,为了更为客观地评价算法性能的优劣,除非特别申明,空间复杂度通常并不计入原始输入本身所占用的空间,对于同一问题,这一指标对任何算法都是相同的。反之,其它(如转储、中转、索引、映射、缓冲等)各个方面所消耗的空间,则都应计入。

另外,很多时候我们都是更多地甚至仅仅关注于算法的时间复杂度,而不必对空间复杂度做专门的考查。这种因为就渐进复杂度的意义而言,在任一算法的任何一次运行过程中所消耗的存储空间,都不会多于其间所执行基本操作的累计次数。

实际上根据定义,每次基本操作所涉及的存储空间,都不会超过常数规模;纵然每次基本操作所占用或访问的存储空间都是新开辟的,整个算法所需的空间总量,也不过与基本操作的次数同阶。从这个意义上说,时间复杂度本身就是空间复杂度的一个天然的上界。当然,对空间复杂度的分析也有其自身的意义,尤其在对空间效率非常在乎的应用场合中,或当问题的输入规模极为庞大时,由时间复杂度所确立的平凡上界已经难以令人满意。这类情况下,人们将更为精细地考查不同算法的空间效率,并尽力在此方面不断优化。

算法及其复杂度度量简介相关推荐

  1. 常见的距离算法和相似度计算方法简介,重点介绍海明距离

    一个电脑小白的自我成长之路. 1.常见的距离算法 1.1欧几里得距离(Euclidean Distance) 公式如下: 标准欧氏距离的思路:现将各个维度的数据进行标准化:标准化后的值 = ( 标准化 ...

  2. 分布式系统的复杂度度量思考

    前言 在构建系统的时候,有时候自己会说,我的系统很复杂,但是这时候又遇到问题了,如何度量一个系统的复杂性呢,这个是个开放性的问题,本身答案见仁见智,这里记录一下自己的思考. 历史借鉴 算法的复杂度 在 ...

  3. r语言把两个折线图图像放到一个图里_图像相似度度量

    图像相似度度量的应用场景很多,包括以图搜图,相似图像去重等多种功能,目前在项目中的场景是针对大量重复类似的图片,需要进行筛选剔除,自然需要用到图像相似度,简单调研了下图像相似度的方法,包括传统图像方法 ...

  4. 相似度算法余弦相似度

    相似度算法余弦相似度 余弦距离,也称作余弦相似度,使用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小度量 余弦值越接近于1,就表明夹角越接近0度,也就是两个向量越接近,这就叫做余弦相似性 ...

  5. 距离及相似度度量方法

    前言 关于距离度量的方法的专题其实已经想做好久了,正好趁这个机会总结出来. 这里讨论的距离度量应该是向量空间内的度量,两个点(即两个向量)之间的距离或相似性的度量.每种度量包括描述.定义和公式.优缺点 ...

  6. David P.Williams论文系列 Muesli_基于声呐图像寻雷难度的图像复杂度度量

    摘要 Muesli是一种新的图像复杂度度量手段,它融合了间隙度的概念(像素强度变化的度量)和空间信息的概念(捕捉边缘信息的量).它能成功地量化在合成孔径声纳(SAS)图像中执行目标探测的相对难度.这已 ...

  7. 软件源码复杂度度量方法

    软件源码复杂度度量方法主要有三种:代码行.Helstead方法.McCabe方法(环形复杂度) 代码行: 代码行方法度量是一种最简单的方法,该方法认为,代码行越多,软件越容易产生漏洞.程序复杂性随着程 ...

  8. 学习笔记:相似度度量与协同过滤

    你也可以通过我的独立博客 -- www.huliujia.com 获取本篇文章 相似度度量 相似度度量关注的是两个对象是否相似,相似程度是多少?比如两张图片.两篇文章.两句话.两个人的喜好的相抵程度等 ...

  9. 关于 数据结构 与算法的复杂度

    程序=数据结构+算法(瑞士 尼克劳斯·威茨 提出) 数据结构:逻辑结构 和 物理结构 逻辑结构:集合结构.线性结构.树形结构.图形结构 物理结构:数据存储 数据元素的存储结构:顺序存储结构(地址连续的 ...

最新文章

  1. atitit. groupby linq的实现(1)-----linq框架选型 java .net php
  2. How I can Built A-Z index site map in my website
  3. 亚马逊高级应用科学家熊元骏:人类行为理解研究进展 | PhD Talk #19
  4. 【汇编语言】8086、x86-32和C语言【赋值语句 和 数组】的对比学习(王爽学习笔记:5.8段前缀的使用)
  5. 心脏遥测监控系统服务器,基于ARM7的心电采集与远程传输系统设计
  6. Android开发笔记(一百零二)统计图表
  7. PHP的新手语法介绍
  8. 台达伺服控制器接线图_【工控项目分享】台达ASDA-AB系列伺服驱动器——内部位置控制...
  9. 微信小程序源码获取(附工具的下载)
  10. 锂电池注液工艺视觉定位方案指南
  11. 如何用BIGEMAP在Arcgis中使用bigemap制作特定比例尺的交通位置图
  12. Knowledge-Aware Graph-Enhanced GPT-2 for Dialogue State Tracking论文笔记
  13. spring security中A granted authority textual representation is required
  14. Python每日一记42机器学习中特征重要性feature_importances_
  15. C++笔记 char
  16. VMware Workstation虚拟机网络相关配置
  17. Android Launcher启动过程
  18. Tableau图表 • 盒须图、抖动图
  19. 解决ValueError: bad input shape (xxxx, x)
  20. Python玩家使用B站开源项目Real-CUGAN修复动漫图片、视频

热门文章

  1. 2022-2028年中国钢铁智能制造产业竞争现状及发展趋势分析报告
  2. 学生上课睡觉班主任怎么处理_学生上课睡觉,老师的管与不管,不是你看到的那么简单...
  3. 2022-2028年中国氟橡胶产业竞争现状及发展前景分析报告
  4. 群论中的拉格朗日定理(子群的阶必然能整除群阶---数学
  5. 预见未来丨机器学习:未来十年研究热点
  6. 合肥工业大学—SQL Server数据库实验八:使用聚集函数的SELECT语句
  7. 深度学习编译器Data Flow和Control Flow
  8. workerman的基本用法
  9. Python 位运算符
  10. Java 参数后面跟三个... 的作用