1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
n算法概论

计算机算法设计与分析(第2版) 王晓东 编著 电子工业出版社 第1章 算法概述 学习要点: 理解算法的概念。 理解什么是程序,程序与算法的区别和内在联系。 掌握算法的计算复杂性概念。 掌握算法渐近复杂性的数学表述。 掌握用C++语言描述算法的方法。 算法(Algorithm) 算法是指解决问题的一种方法或一个过程。 算法是若干指令的有穷序列,满足性质: (1)输入:有外部提供的量作为算法的输入。 (2)输出:算法产生至少一个量作为输出。 (3)确定性:组成算法的每条指令是清晰,无歧义的。 (4)有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。 程序(Program) 程序是算法用某种程序设计语言的具体实现。 程序可以不满足算法的性质(4)。 例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。 操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止。 问题求解(Problem Solving) 算法复杂性分析 算法复杂性 = 算法所需要的计算机资源 算法的时间复杂性T(n); 算法的空间复杂性S(n)。 其中n是问题的规模(输入大小)。 算法的时间复杂性 (1)最坏情况下的时间复杂性 Tmax(n) = max{ T(I) | size(I)=n } (2)最好情况下的时间复杂性 Tmin(n) = min{ T(I) | size(I)=n } (3)平均情况下的时间复杂性 Tavg(n) = 其中I是问题的规模为n的实例,p(I)是实 例I出现的概率。 算法渐近复杂性 T(n) ?? , as n?? ; (T(n) - t(n) )/ T(n) ?0 ,as n??; t(n)是T(n)的渐近性态,为算法的渐近复杂性。 在数学上, t(n)是T(n)的渐近表达式,在直观上, t(n)是T(n)略去低阶项留下的主项。它比T(n) 简单。 渐近分析的记号 在下面的讨论中,对所有N,f(N) ? 0,g(N) ? 0。 (1)渐近上界记号O——大O表示法 如果存在正的常数C和自然数N0,使得当N?N0时有f(N)?Cg(N),则称函数f(N)当N充分大时上有界,且g(N)是它的一个上界,记为f(N)=O(g(N))。即f(N)的阶不高于g(N)的阶。 (2)渐近下界记号? ——大?表示法 如果存在正的常数C和自然数N0,使得当N?N0时 有f(N)?Cg(N),则称函数f(N)当N充分大时下有界,且g(N)是它的一个下界,记为f(N)=Ω(g(N))。即f(N)的阶不低于g(N)的阶。 (3)紧渐近界记号? ——? 表示法 定义f(N)=θ(g(N))当且仅当f(N)=O(g(N))且f(N)=Ω(g(N))。此时称f(N)与g(N)同阶。 (4)非紧上界记号o ——小o表示法 对于任意给定的ε>0,都存在正整数N0,使得当N?N0时有f(N)/g(N)?ε,则称函数f(N)当N充分大时的阶比g(N)低,记为f(N)=o(g(N))。 等价于 f(N) / g(N) ?0 ,as N??。 例如,4NlogN+7=o(3N2+4NlogN+7)。 渐近分析记号的运算性质 根据O的定义,容易证明它有如下运算规则,如下这些规则也同样适用Ω和Θ表示法 : (1) O(f)+O(g)=O(max(f,g)); (2) O(f)+O(g)=O(f+g); (3) O(f)O(g)=O(fg); (4) 如果g(N)=O(f(N)),则O(f)+O(g)=O(f); (5) O(Cf(N))=O(f(N)),其中C是一个正的常数; (6) f=O(f)。 对性质(1)的证明如下页: 规则O(f(n))+O(g(n)) = O(max{f(n),g(n)}) 的证明: 对于任意f1(n) = O(f(n)) ,存在正常数c1和自然数n1,使得对所有n? n1,有f1(n) ? c1f(n) 。 类似地,对于任意g1(n) = O(g(n)) ,存在正常数c2和自然数n2,使得对所有n? n2,有g1(n) ? c2g(n) 。 令c3=max{c1, c2}, n3 =max{n1, n2},h(n)= max{f(n),g(n)} 。 则对所有的 n ? n3,有 f1(n) +g1(n) ? c1f(n) + c2g(n) ? c3f(n) + c3g(n)= c3(f(n) + g(n)) ? c32 max{f(n),g(n)}

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档