说明:参考书目为《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. 优化
如果问题的计算时间下界是,则计算时间复杂度为的算法是最优算法。例如,基于“比较”操作完成的排序问题的计算时间下界为,则时间复杂度为的排序算法是最优算法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)