〈算法设计与分析基础〉读书笔记1——算法效率分析基础

算法效率分析基础

1.       分析框架算法的时间效率和空间效率都用输入规模的函数进行度量。我们用算法基本操作的执行次数来度量算法的时间效率;通过计算算法消耗的额外存储单元的数量来度量空间效率。(不过通常优先考虑算法的时间效率)对于输入规模的度量通常是直接用N,但如果是度量与数字特性相关的输入规模,更倾向于度量数字N的二进制表示中的比特数b = log n +1在输入规模相同的情况下,有些算法自身的效率会有显著差异,对于这样的算法,我们需要区分最差效率,最优效率和平均效率(重要,且难计算)。另外还有“摊销效率”我们可以认为:如果一个程序的算法具有对数级的基本操作次数,该程序对于任何实际规模的输入都会在几乎瞬间完成;一个需要指数级操作次数的算法只能用来解决规模非常小的问题。本框架主要关心:当算法的输入规模趋向于无限大的时候,其运行时间(或消耗的额外空间)函数的增长次数。

2.       渐进符号和基本效率类型三种渐进符号:O,omega,theta同时也可以利用极限(两个函数的比率)来比较。基本的效率类型: 1(常量),log n(对数),n(线形),n-log-n,平方,立方,指数,n! (阶乘)。

3.       非递归算法的数学分析
a.       决定用哪个(哪些)参数作为输入规模的度量。
b.       找出算法的基本操作(一般总是位于算法的最内层循环中)
c.       检查基本操作的执行次数是否只依赖输入规模,如果还依赖其他个,则最差效率,平均效率以及最优效率(如有必要)需要分别研究。
d.       建立一个算法基本操作次数的求和表达式。
e.       利用求和运算的标准公式和法则来建立一个操作次数的闭合公式,或者至少确定它的增长次数。

4.       递归算法的数学分析
a.       决定用哪个(哪些)参数作为输入规模的度量。
b.       找出算法的基本操作。
c.       检查一下,对于相同规模的不同输入,基本操作的执行次数是否不同,如果不同,则必须对最差效率,平均效率和最优效率做单独研究。
d.       对于算法基本操作的执行次数,建立一个递推关系以及相应的初始条件。
e.       解这个递推式,或者至少确定它的解的增长次数。我们应该谨慎使用递归,因为它的简洁可能会掩盖它的低效率。

5.       斐波那契数列0,1,1,2,3,5,8,13,21,34……可以用一个简单的递推式和两个初始条件来定义:当n>1时, F(n) = F(n-1) + F(n-2);  F(0)=0, F(1)=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值