《算法导论》(1)——算法分析

五个渐进符号:
在这里插入图片描述
下面给出渐进符号θ的数学定义:当n足够大时,存在两个正常数c1、c2使得c1g(n)<=f(n)<=c2g(n),记作f(n)=θ(g(n))。
引入渐进符号描述算法的时间复杂度的好处:能够忽略机器之间的差异。例如当n足够大是,一个复杂度为θ(n2)的算法无论在什么机器下运行的性能都将优于复杂度为θ(n3)的算法。

通常,我们规定T(n)为一个算法的最长可能消耗时间。换个角度,如果T(n)不是最长消耗时间,而是和规模为n的问题的具体内容有关,那么T(n)就不是n的函数了。
有时候,我们也用T(n)来表示一个算法的平均运行时间,前提是我们知道输入的分布情况。
T ( n ) = ∑ 每 种 输 入 的 概 率 ∗ 该 输 入 下 算 法 的 运 行 时 间 T(n)=∑每种输入的概率*该输入下算法的运行时间 T(n)=
我们不用T(n)描述一个算法的最好情况,因为一个算法的最好情况往往是在特定的输入下取得的,实际的输入大部分都不同于特定的输入,因此这是没有意义的。

最后,介绍三种常用的求解递推式的方法。

  1. 主方法 套用主方法定理即可。
  2. 代入法:代入法的关键之处在于先猜出答案,在利用数学归纳法推导出猜测是正确的。下面具体举例:T(n)=2T(n/2)+n。首先我们猜测解的形式为O(nlgn)。注意到T(1)>0,不满足O(nlgn),所以数学归纳法的起点不能是n=1.我们假设n=2时,存在常数c,有T(n)<=cnlgn.代入上式中的T(n/2),我们最终希望得到的结果是能严格推出T(n)<=cnlgn.
  3. 递归树法:将递归式转化为等价的递归树,T(n)的值为递归树每一个节点之和。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。《算法导论(原书第3版)/计算机科学丛书》将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。   《算法导论(原书第3版)/计算机科学丛书》全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,《算法导论(原书第3版)/计算机科学丛书》也是一本案头必备的参考书或工程实践手册。   第3版的主要变化:   ·新增了van Emde Boas树和多线程算法,并且将矩阵基础移至附录。   ·修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。   ·移除两章很少讲授的内容:二项堆和排序网络。   ·修订了动态规划和贪心算法相关内容。   ·流网络相关材料现在基于边上的全部流。   ·由于关于矩阵基础和Strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。   ·修改了对Knuth-Morris-Pratt字符串匹配算法的讨论。   ·新增100道练习和28道思考题,还更新并补充了参考文献。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值