【算法设计与分析】如何分析一个算法
说明:参考书目为《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. 优化
如果问题的计算时间下界是,则计算时间复杂度为的算法是最优算法。例如,基于“比较”操作完成的排序问题的计算时间下界为,则时间复杂度为的排序算法是最优算法。
【算法设计与分析】如何分析一个算法相关推荐
- 排序算法之--归并排序(好玩的一个算法o。o)快速入门
排序算法之--归并排序(好玩的一个算法o.o) 下面是归并操作的基本思路(注意:是归并操作哦,不是归并排序哦) 归并操作的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存 ...
- linux算法设计,嵌入式Linux平台下随机序列算法设计.doc
嵌入式Linux平台下随机序列算法设计 嵌入式Linux平台下随机序列算法设计 [摘 要]本文以多媒体播放器的随机不重复播放机能为切入点,针对嵌入式平台实时性要求高,处理速度不够快,但系统存储歌曲量大 ...
- 【算法设计技巧】贪婪算法与回溯算法
贪婪算法 在前面的文章中已经见到了3个贪婪算法(greedy algorithm):Dijkstra 算法.Prim 算法和 Kruskal 算法.贪婪算法分阶段地工作.在每个阶段,可以认为所作决定是 ...
- WebGIS空间寻径算法设计(车辆自驾导航算法)
[size=large][b]一.路网空间模型设计[/b][/size] 采用有向连通图模型对路网建模 [list] [*]A.以道路交叉点作为路网的连通图节点 [*]B.以从A路点到B路点的单向通路 ...
- 算法设计原则验证实验报告_算法设计与分析实验报告 统计数字问题
一 . 实验要求 1 .掌握算法的计算复杂性概念. 2 .掌握算法渐近复杂性的数学表述. 3 .掌握用 C++ 语言描述算法的方法. 4 .实现具体的编程与上机实验,验证算法的时间复杂性函数. 二 . ...
- 算法设计——有 2*n 的一个长方形方格,用一个1*2 的骨牌铺满方格。
有 2n 的一个长方形方格,用一个12 的骨牌铺满方格. 编写一个程序,试对给出的任意一个n(n>0), 输出铺法总数. [算法分析] (1)当n=1时, 只能是一种铺法,铺法总数有示为x1=1 ...
- 计算机思维与算法设计论文,计算思维_计算机算法的表示和设计.pptx
计算思维;1.一般问题处理过程与计算机处理问题过程区别2.算法的表示3.变量及其赋值4.顺序结构算法5.选择结构/分支结构6.循环结构7.简单算法;一般问题处理过程与计算机处理问题过程有何不同呢?;1 ...
- 算法设计:双相机高斯建模算法优化
问题描述: 1.当人体靠近背景时,由于深度值接近,两者极容易融合在一起,难于分辨,导致检测不出人形 2.使用一次建模,发现双相机中建模效果不好,背景没有完全去除 3.去除背景后,距离较远的人形不太完整 ...
- 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...
中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...
- 循环赛日程表非递归Java_王晓东《算法设计与分析》课件.ppt
<王晓东<算法设计与分析>课件.ppt>由会员分享,可在线阅读,更多相关<王晓东<算法设计与分析>课件.ppt(356页珍藏版)>请在人人文库网上搜索. ...
最新文章
- 如果三十年前有这些AI技术,可可西里的悲剧不会发生
- u盘变o字节怎么修复_U盘启动盘在重装系统时识别不了解决办法
- 机器学习入门学习笔记:(3.1)决策树算法
- Quartz 2d绘图
- nyoj 174 Max Sequence(最大子串和变形)
- 机器人局部避障的动态窗口法(dynamic window approach) (转)
- censtos6.5安装java 8_Centos6.5 安装JDK
- POJ 2176 Folding(区间DP)
- BaseAdapter的逗逼、普通、文艺写法
- fbeta_socre使用
- JavaSE详细教程.1
- SocketTool
- qqkey获取原理_qqkey获取器下载
- 反应釜cad图_反应罐系列图(5张图)CAD格式
- 安卓投屏助手(ARDC)最新版
- linux桌面记事本,推荐6款简单实用的手机记事本APP,总有一款适合你的‖APP展览馆...
- Apple账号密码自动填充
- 图解kafka中hw,leo,isr
- Python学习之路:关于列表(List)复制的那点事
- Please ensure you can make a proper https connection to the IAP for TCP hostname:https://tunnel.clou