- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析 第2章 算法分析基础 2.1 算法复杂度 2.1.1 什么是好的算法 好的算法 一个好的算法应具有以下4个重要特性: 正确性(correctness):算法的执行结果应当满足预先规定的功能和性能要求。 简明性(simplicity):算法应思路清晰、层次分明、容易理解、利于编码和调试。 效率(efficiency):算法应有效使用存储空间,并具有高的时间效率。 最优性(optimality):算法的执行时间已达到求解该类问题所需时间的下界。 2.1.2 影响程序运行时间的因素 2.1.3 算法的时间复杂度 时间复杂度 一个算法的时间复杂度(time complexity)是指算法运行所需的时间。 设有一个在抽象机上运行的算法A,I是某次运行时的输入数据,其规模为n,则算法A的运行时间T是n和I的函数,记做T(n, I)。又设在该次运算中抽象机的第i个基本运算Oi的执行次数为?i,1≤i≤m,?i也是n和I的函数,记做?i(n, I)。 2.1.4 使用程序步分析算法 2.1.5 算法的空间复杂度 练习 分析程序1-6(汉诺塔问题)的程序步数 n0 2.2 渐近表示法 2.2.1 大O记号 2.2.2 ?记号 2.2.3 ?记号 2.2.4 小o记号 2.2.5 算法按时间复杂度分类 算法时间分析的目的是为了设法降低时间复杂度的数量级!!! 2.3 递推关系 2.3.1 递推方程 计算递推公式的三种方法 迭代法 替换法 主方法 1 迭代方法 迭代方法的思想是扩展递推式,将递推式先转换成一个和式,然后计算该和式,得到渐近复杂度。 2 替换方法 2.3.4 主方法 分摊分析 数据结构上的常用基本操作 add, delete, seek 求运算平均性能 略。。。 第2章 小结 理论基础: 抽象机模型 程序步 时间和空间复杂度 算法分析的基本方法 渐近性(估算)== 复杂度量级 关键步骤 递推 例2-7 f(n) = 2n + 3 = ?(n),即2n + 3??(n)。 例2-8 f(n) = 10n2 + 4n + 2 = ?(n2)。 定理2-4 如果f(n) = amnm + am?1nm?1 + … + a1n + a0是m次多项式,且am>0,则f(n) = ?(nm)。 定义2-4 f(n) = o(g(n))当且仅当f(n) = O(g(n))且f(n) ? ?(g(n)) 例2-9 f(n)=2n+3=o(n2),即2n+3?o(n2)。 算法按计算时间分类 凡渐近时间复杂度有多项式时间限界的算法称做多项式时间算法(polynomial time algorithm),而渐近时间复杂度为指数函数限界的算法称做指数时间算法(exponential time algorithm)。 最常见的多项式时间算法的渐近时间复杂度 O(1)<O(log n)<O(n)<O(nlog n)<O(n2)<O(n3) 最常见的指数时间算法的渐近时间复杂度 O(2n)<O(n!)<O(nn) 递推方程(recurrence equation)是自然数上一个函数T(n),它使用一个或多个小于n时的值的等式或不等式来描述。递推方程也称为递推关系或递推式。 递推方程必须有一个初始条件(也称边界条件)。 例2-10 程序1-5的时间分析 设n = d1d2?dk是k位数,当k = 1时,只执行cout语句和if判定语句;当n至少是2位数(k>1)时,除了执行这两个操作外,还需执行递归函数调用PrintDigit(n/10),?n/10?是k ? 1位数 。 T(k) = 2k = ?(k) 例2-12 使用迭代方法分析程序1-6。 函数Hanoi中两次调用自身,函数调用使用的实在参数均为n ? 1,函数Move所需时间具有常数界?(1),可以将其视为一个程序步,于是有: 扩展并计算此递推式: T(n) = 2T(n ? 1) + 1 = 2(2T(n ? 2) + 1) + 1 = 22T(n ? 2) + 2 + 1 = 23T(n ? 3) + 22 + 2 + 1 ? = 2n?1T(1) + … + 22 + 2 + 1 = 2n?1 + … + 22 + 2 + 1 = 2n ? 1 使用递归树(recursion tree)可以形象地看到递推式的迭代过程。 例2-13 T(n) = 2T(n/2) + n的递归树 递归树 例2-14 T(n) = T(n/3) + T(2n/3) + n的递归树 替换方法要求首先猜测递推式的解,然后用归纳法证明。 例2-11 使
您可能关注的文档
- (毕业论文)关于儒家文化对企业管理与发展影响.doc
- (下)论推定规则适用中的证明责任及证明标准.doc
- “宽严相济”及“两极化”之辨析方法.doc
- “我的中国的梦”论文.doc
- ”的探寻对委托执行“委托”的.doc
- 《非常影院》─实怕影象及卡通形象的结合本科毕业论文.doc
- 《浅谈气候变化危害...畅想如何低碳生活》.doc
- 《应用文写作教程》每一讲课件.ppt
- 《政治生活》高考考点总结(宏观+微观).doc
- 【优化指导】2014高考政治总复习.经济生活.第三单元.第7课.个人收入的分配课件.新人教版必修1.ppt
- 2026年消防设施操作员之消防设备基础知识考试题库500道带答案(新).docx
- 销售岗前培训课件.ppt
- 2026年消防设备操作员考试题库500道(典型题).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道附答案(实用).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道标准卷.docx
- 2026年材料员之材料员基础知识考试题库300道附完整答案(全优).docx
- 2026年材料员之材料员基础知识考试题库300道带答案(培优a卷).docx
- 2026年机械员考试题库含答案(轻巧夺冠).docx
- 2026年材料员之材料员基础知识考试题库300道【夺分金卷】.docx
- 2026年期货从业资格之期货法律法规考试题库500道(考点精练).docx
文档评论(0)