说明:参考书目为《Computer Algorithms --- Introduction to Design and Analysis》(第三版)Sara Baase, Allen Van Gelder

部分内容参考自大工林晓惠老师的课程【算法设计与分析】讲解。林老师讲算法非常细致,让人很容易理解,推荐一波~

(如部分内容涉及侵权,请联系我删除,谢谢)

该系列文章关于算法主要包含两部分:算法设计(分治、动态规划、贪心、图算法...) + 算法分析(算法的时间和空间分析、问题本身的计算复杂性、算法的正确性证明、NP-complete问题:对策论、数学归纳法等)

如何分析一个算法?

之后的文章请见:

【算法设计与分析】4.2 插入排序

【算法设计与分析】(习题4.2-4.5) 冒泡排序

本篇文章目录

算法评价的准则

1. 正确性

2. 时间

3. 空间

4. 简单性、清晰性

5. 优化


算法评价的准则:

1. 正确性

证明对于每一个合法的输入,该算法都会在有限的时间内得到满足要求的输出。

包括证明与该算法有关的引理、定理、公式。(一般使用数学归纳法证明)

2. 时间

1)主要影响算法时间效率的因素:①算法本身选用的策略;②问题的规模

在做时间效率分析时,我们从算法中选择出“基本操作”,以该“基本操作”的重复执行次数作为算法的时间量度f(n)

比如:

问题 基本操作
在数组中查找x x与数组元素进行比较
两个矩阵相乘 两个数值相乘

2)一般要进行平均A(n)和最坏W(n)情况下的时间复杂度分析:

    pr(I)指的是相应情况的概率

3)时间复杂度及其上界O、下界

①时间复杂度的上界O(g(n))=f(n) → 存在正数c和,使得对一切,有

②时间复杂度的下界 → 存在正数c和,使得对一切,有

③时间复杂度 → 存在正数,使得对一切,有

即,

4)常见的时间复杂度函数

3. 空间

4. 简单性、清晰性

5. 优化

如果问题的计算时间下界是,则计算时间复杂度为的算法是最优算法。例如,基于“比较”操作完成的排序问题的计算时间下界为,则时间复杂度为的排序算法是最优算法。

【算法设计与分析】如何分析一个算法相关推荐

  1. 排序算法之--归并排序(好玩的一个算法o。o)快速入门

    排序算法之--归并排序(好玩的一个算法o.o) 下面是归并操作的基本思路(注意:是归并操作哦,不是归并排序哦) 归并操作的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存 ...

  2. linux算法设计,嵌入式Linux平台下随机序列算法设计.doc

    嵌入式Linux平台下随机序列算法设计 嵌入式Linux平台下随机序列算法设计 [摘 要]本文以多媒体播放器的随机不重复播放机能为切入点,针对嵌入式平台实时性要求高,处理速度不够快,但系统存储歌曲量大 ...

  3. 【算法设计技巧】贪婪算法与回溯算法

    贪婪算法 在前面的文章中已经见到了3个贪婪算法(greedy algorithm):Dijkstra 算法.Prim 算法和 Kruskal 算法.贪婪算法分阶段地工作.在每个阶段,可以认为所作决定是 ...

  4. WebGIS空间寻径算法设计(车辆自驾导航算法)

    [size=large][b]一.路网空间模型设计[/b][/size] 采用有向连通图模型对路网建模 [list] [*]A.以道路交叉点作为路网的连通图节点 [*]B.以从A路点到B路点的单向通路 ...

  5. 算法设计原则验证实验报告_算法设计与分析实验报告 统计数字问题

    一 . 实验要求 1 .掌握算法的计算复杂性概念. 2 .掌握算法渐近复杂性的数学表述. 3 .掌握用 C++ 语言描述算法的方法. 4 .实现具体的编程与上机实验,验证算法的时间复杂性函数. 二 . ...

  6. 算法设计——有 2*n 的一个长方形方格,用一个1*2 的骨牌铺满方格。

    有 2n 的一个长方形方格,用一个12 的骨牌铺满方格. 编写一个程序,试对给出的任意一个n(n>0), 输出铺法总数. [算法分析] (1)当n=1时, 只能是一种铺法,铺法总数有示为x1=1 ...

  7. 计算机思维与算法设计论文,计算思维_计算机算法的表示和设计.pptx

    计算思维;1.一般问题处理过程与计算机处理问题过程区别2.算法的表示3.变量及其赋值4.顺序结构算法5.选择结构/分支结构6.循环结构7.简单算法;一般问题处理过程与计算机处理问题过程有何不同呢?;1 ...

  8. 算法设计:双相机高斯建模算法优化

    问题描述: 1.当人体靠近背景时,由于深度值接近,两者极容易融合在一起,难于分辨,导致检测不出人形 2.使用一次建模,发现双相机中建模效果不好,背景没有完全去除 3.去除背景后,距离较远的人形不太完整 ...

  9. 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...

    中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...

  10. 循环赛日程表非递归Java_王晓东《算法设计与分析》课件.ppt

    <王晓东<算法设计与分析>课件.ppt>由会员分享,可在线阅读,更多相关<王晓东<算法设计与分析>课件.ppt(356页珍藏版)>请在人人文库网上搜索. ...

最新文章

  1. 如果三十年前有这些AI技术,可可西里的悲剧不会发生
  2. u盘变o字节怎么修复_U盘启动盘在重装系统时识别不了解决办法
  3. 机器学习入门学习笔记:(3.1)决策树算法
  4. Quartz 2d绘图
  5. nyoj 174 Max Sequence(最大子串和变形)
  6. 机器人局部避障的动态窗口法(dynamic window approach) (转)
  7. censtos6.5安装java 8_Centos6.5 安装JDK
  8. POJ 2176 Folding(区间DP)
  9. BaseAdapter的逗逼、普通、文艺写法
  10. fbeta_socre使用
  11. JavaSE详细教程.1
  12. SocketTool
  13. qqkey获取原理_qqkey获取器下载
  14. 反应釜cad图_反应罐系列图(5张图)CAD格式
  15. 安卓投屏助手(ARDC)最新版
  16. linux桌面记事本,推荐6款简单实用的手机记事本APP,总有一款适合你的‖APP展览馆...
  17. Apple账号密码自动填充
  18. 图解kafka中hw,leo,isr
  19. Python学习之路:关于列表(List)复制的那点事
  20. Please ensure you can make a proper https connection to the IAP for TCP hostname:https://tunnel.clou

热门文章

  1. 自定义View之Layout方法详解
  2. Hive SQL行列转换
  3. 从头开始聊P问题、NP问题与NPC问题
  4. 热力地图高德_HeatMap丨丨基于高德地图API制作热力图。
  5. 清理电脑里的流氓软件/插件/弹窗
  6. UG工程图模板创建步骤
  7. java动态数组_Java实现动态数组
  8. Windows文件扩展名
  9. 2020年“泰迪杯”数据分析职业技能大赛A 题优秀报告:教育平台的线上课程智能推荐策略
  10. 用python批量下载网易云音乐_python实现网易云音乐批量下载