01计算机算法-第一章-引论-2012.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.程序(Program)与算法不同 程序是算法用某种程序设计语言的具体实现。 只满足前四条特性的一组规则不能称之为算法,只能叫做计算过程—程序。 操作系统就是计算过程的一个典型例子。设计操作系统的目的是为了控制作业的运行,当没有作业时,这一计算过程并不终止,而是处于等待状态,一直等到一个新的作业的进入。 如何设计算法 如何表示算法 用恰当的方式表示算法,表达的方式有多种。 本教案依循教材,并考虑到学生的特点,选择了类C语言和类SPARKS的语言结合的伪代码来表示算法。不论学过C语言还是学过pascal语言的人,都很容易掌握这种描述。 如何确认算法 算法正确性的证明(算法确认algorithm validation) 证明算法对所有可能的合法输入都能算出正确的答案,这一工作称为算法确认。这一领域是当前很多计算机科学工作者集中研究的对象,还处于相当初期的阶段。 在学习本课程中,我们仅对算法的正确性进行一般的非形式化的讨论和通过对算法的程序实现进行测试。 如何分析算法 通过时间和空间复杂度的分析,确定算法的优劣 包括定量地分析算法需要多少计算时间和存储空间。分析算法不仅可以预计算法能否有效地完成任务,而且可以知道在最好、最坏和平均情况下运算时间,对解决同一问题不同算法的优劣作出比较。 算法分析步骤: 首先确定使用那些运算以及执行这些运算所用的时间。(运算包括基本数值运算和一些更基本的任意长序列的运算) 其次是要确定出能反映算法在各种情况下工作的数据集。(即要求我们编造出能产生最好、最坏和有代表性情况的数据配置,通过使用这些数据来运行算法,以更了解算法的性能) 研究算法的复杂性问题。 目标——设计出复杂性尽可能低的算法 准则——多个算法中选择其中复杂性最低者 如何测试程序 测试程序是否会产生错误的结果 作时空分布图 事前分析 求出该算法的一个时间限界函数(一些关于参数的函数) 事前分析只限于每条语句的频率计数(该语句的执行次数,与所用的机器无关,且独立于程序设计语言,可由算法直接确定) 事后测试 收集此算法的实际执行时间和占用空间的统计资料 2.程序的运行时间与下述因素有关: 1).程序的输入量:不同的数据输入量可以影响算法产生最好、最坏和有代表性的平均情况的复杂度。 最好情况运行时间复杂性:指对规模为n的所有输入量,程序运行时间的最小值记为。 最坏情况运行时间复杂性:指对规模为n的所有输入量,程序运行时间的最大值记为。 平均运行时间复杂性:指对规模为n的所有输入量,程序运行时间的平均值。 2).编译得到的目标代码的质量; 3).执行程序的机器指令的性质与速度; 4).构成程序的算法的时间复杂性。 算法的运行时间是 ∑(语句的频率计数×执行语句一次所需的时间) 其中唯一与机器、编译器无关的只是语句的频率计数,所以这里把算法的运行时间取为 ∑(语句的频率计数)。 例: 频率计数例子 考虑语句x?x+y在下面三个程序段中的频率计数 2. 渐近表示法——渐近上界 定义:(大O表示法)设对一切n≥0 的整数有一个非负函数f(n)。如果存在一个整数n0 和一个正常数c,且对于任何n≥ n0 都有|f(n)|≤c|g(n)|,则称“f(n)是g(n)的大O表示”,记为f(n)= O(g(n))。 进一步理解定义 进一步理解定义 3. 大O的数学特性 4.定理: 若A(n)=amnm+am-1nm-1+…+a2n2+a1n+a0是一个m次多项式,则 A(n)=O(nm)。 证明:取n0=1,当n≥n0时,利用A(n)的定义和一个简单不等式,有 |A(n)| ≤ |am|nm+|am-1|nm-1+…+|a2|n2+|a1|n+|a0| ≤ (|am|+|am-1|/n+…+|a1|/nm-1+|a0|/nm)nm ≤ (|am|+|am-1|+…+|a2|+|a1|+|a0|)nm 选取c=(|am|+|am-1|+…+|a2|+|a1|+|a0|),定理即得证。 事实上,将n0取得足够大,可以证明只要是c比|am|大的任意一个常数,此定理都成立。 结论:对多项式函数的复杂性,与多项式的最高阶nm同阶,即 A(n)=O(nm )。 常数因子的影响: T1(n)=1000n; T2(n)=100nlog2 n; T3(n)=10n2; T4(n)=n3; T5(n)=2n; 则当: 2≤n≤9时,A5比A1、A2、A3、A4都好; 10≤

文档评论(0)

177****6330 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档