- 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章【荐】.ppt
第2章 算法效率分析基础 我常常说,当你对所讲的内容能够进行度量并且能够用数字来表达时,证明你对这些内容是有所了解的;如果你不能用数字来表达,那么你的认识是不完整的,也是无法令人满意的. -------Lord Kelvin(1824-1907) 2.1 分析框架 在本节中,我们将概要地描述一个分析算法效率的一般性框架.首先必须指出,有两种算法效率:时间效率和空间效率。时间效率指出正在讨论的算法运行得有多快;空间效率关心算法需要的额外空间。研究实验告诉我们,对于大多数问题来说,我们在速度上能够取得的进展要远大于在空间上的进展,所以我们把主要精力集中在时间效率上。 2.1.1 输入规模的度量 几乎所有的算法,对于规模更大的输入都需要动行更长的时间。例如,需要更多时间来对更长的数组排序,更大的矩阵相乘也需要花费更多时间,等等。所以,使用一个以算法输入规模式n为参数的函数,来研究算法效率是非常合乎逻辑的。 2.1.3增长次数 为什么对于大规模的输入要强调执行次数的增长次数呢?这是因为小规模输入在运行时间上差别不足以将高效的算法和低效的算法法区分开来。 2.1.4 算法的最优、最差和平均效率 一个算法的最差效率是指当输入规模为n时,算法的最坏情况下的效率。这时,相对于其他规模为n的输入,该算法的运行时间最长。 一个算法的最优效率是指当输入规模为n时,算法在最优情况下的效率。这时,与其它规模为n的输入相比,该算法运行得最快。 然而,无论是最差效率分析还是最优效率分析都不能提供一种必要的信息:在“典型”或者“随机”输入的情况下, 一个算法会具有什么样的行为。这正是平均效率试图提供给我们信息。 还有一种类型的效率称为摊销效率。它并不适用于算法的单次运行,而是应用于算法对同样数据结构所执行的一系列操作。 2.1.5 分析框架概要 算法的时间效率和空间效率都用输入规模的函数进行度量。 我们用算法基本操作的执行次数来度量算时间效率。通过计算算法消耗的额外存储单元的数量来度量空间效率。 在输入规模相同的情况下,有些算法的效率会的显著差异。对于这样的算法,我们需要区分最差效率,平均效率和最优效率。 本框架主要关心,当算法的输入规模趋向于无限大的时候,其运行时间(消耗的额外空间)函数的增长次数。 2.2 渐进符号和基本效率类型 2.2.1 非正式的介绍 非正式来说, O(g(n)) 是增长次数小于等于是g(n) (以及其常数倍,n趋向于无穷大)的函数集合。 n∈O(n2),100n+5∈O(n2),1/2(n(n-1)) ∈O(n2),n3∈/ O(n2), 第二个符号?(g(n)),代表增长次数大于等于g(n)(以及其常数倍,n趋向于无穷大)的函数集合。 n3∈ ?(n2), 1/2(n(n-1)) ∈ ?(n2),但是100n+5 ∈/ ?(n2) 最后,Θ(g(n))是增长次数等于g(n) )(以及其常数倍,n趋向于无穷大)的函数集合。因些,每一个二次方程an2+bn+c在a0的情况下都包含在Θ(n2)中,除了无数类似于n2+sin n和n2+log n的函数(你能解释原因吗?)。 2.2.2 符号О 定义1 我们把函数t(n)属于O(g(n)) ,记作t(n) ∈ O(g(n)) ; 它的成立条件是:对于所有足够大的n, t(n) 的上界由g(n)的常数倍数所确定,也就是说,存在大于0的常数c和非负的整数n0,使得: 对于所有的n≥ n0来说, t(n) ≤c g(n) 2.2.3 符号? 定义2 我们把函数t(n)属于?(g(n)) ,记作t(n)∈?(g(n)),它的成立条件是:对于所有足够大的n, t(n)的下界由g(n)的常数倍所确定,也就是说,存在大于0的常数c和非负的整数n0,使得: 对于所有的n≥ n0来说, t(n) ≥c g(n) 2.2.4 符号Θ 定义 3 我们把函数t(n)属于Θ(g(n)) ,记作t(n) ∈Θ(g(n)) ;它的成立条件是:对于所有足够大的n, t(n) 的上界和下界都由g(n)的常数倍数所确定,也就是说,存在大于0的常数c1,c2和和非负的整数n0,使得: 对于所有的n≥ n0来说, c2g(n) ≤t(n) ≤ c1g(n) 2.2.5渐进符号的有用特性 定理 如果t1(n) ∈O(g1(n))并且t2(n) ∈O(g2(n)
文档评论(0)