算法设计与分析教案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
专业. 专业. 专业. 专业. 《算法设计与分析》教案 专业. 第1章 绪论 算法理论的两大论题: 1 ?算法设计 2.算法分析 1.1算法的基本概念 1.1.1 为什么要学习算法 理由1:算法——程序的灵魂 问题的求解过程: 分析问题T?设计算法-编写程序f整理结果 程序设计研究的四个层次: 算法T?方法学T?语言f工具 理由2:提高分析问题的能力 算法的形式化?思维的逻辑性、条理性 1.1.2算法及其重要特性 算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。 算法的五大特性: (1)输入:一个算法有零个或多个输入。 ⑵输出:一个算法有一个或多个输出。 ⑶有穷性:一个算法必须总是在执行有穷步之后结束,旦每一步都在有穷时间完成。 ⑷确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的 输出。 ⑸可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。 1.1.3算法的描述方法 (D自然语言 优点:容易理解 ?? 专业. ?? 专业. 专业. 专业. 专业. 缺点:冗长、二义性 使用方法:粗线条描述算法思想 注意事项:避免写成自然段 欧几里德算法 ⑶程序设计语言 优点:能由计算机执行 缺点:抽象性差,对语言要求高 使用方法:算法需要验证 注意事项:将算法写成子函数 欧几里德算法 # include iostream.h int CommonFactor(int mz int n) { int r=m % n; while (r!=0) { m 二 n; n 二 r; r=m % n; return n; } void main)) { cout?CommonFactor(63r 54)?endl; } ⑷伪代一一算法语言 伪代码(Pseudocode):介于自然语言和程序设计语言之间的方法,它采用某一程序 设计语言的基本语法,操作指令可以结合自然语言来设计。 优点:表达能力强,抽象性强,容易理解 使用方法:7 ± 2 欧几里德算法 r = m%n; 循环直到r等于0 2」m = n; n 二 r; 2.3r = m%n; 3?输出n; 1」?4算法设计的一般过程 i ?理解问题 预测所有可能的输入 在精确解和近似解间做选择 确定适当的数据结构 算法设计技术 描述算法 跟踪算法 分析算法的效率 9.根据算法编写代码 1.2算法分析 算法分析(Algorithm Analysis):对算法所需要的两种计算机资源——时间和空间进 行估算 时间复杂性(Time Complexity) 空间复杂性(Space Complexity) 算法分析的目的: 设计算法一一设计出复杂性尽可能低的算法 选择算法一一在多种算法中选择其中复杂性最低者 时间复杂性分析的关键: 问题规模: 输入量的多少; 基本语句: 执行次数与整个算法的执行时间 成正比的语句 for (i=l; iv二n; i++) for (j=l; jv二n; j++) x++; 问题规模:n 基本语句:X++ 大O符号 定义1.1若存在两个正的常数O和力,对于任意nrO,都有j\n)cxftn],则称 MBS) 大Q符号 定义1.2若存在两个正的常数o和ztO,对于任意心命,都有则称 7(n)=Q(p(n)) 3?O符号 定义】?3若存在三个正的常数ol、c2和加,对于任意a?ztO都有c]xf[n)7ln) 例:7{n) =5/?2+ 8/?+ 1 当门A1 时,5/?2+ 8/7 + 1 5n2 + 8n+ n =5r)2 + 9n5fi2 + 14n2 = (9(/72) 当 77A1 时,5/72 + 8/7+1 5/72 = 0(/72) ???当门时,丨4门2二5门2 + 8/7+1》5/?2 贝ij: 5r/2 + 8n+ ] =O(n2) 定理 1?1 T[n)=amnm ^amAnmA +??- +a]mcO (am0),则有 7[n)=O(nm) 且 7{n)=Q(nm],因此,有 7(n)=O(nn7)o 1.2.2最好、最坏和平均情况 例:在一维整型数组A[n]中顺序查找与给定值k相等的元素(假设该数组中有且仅有 一个元素值为k) int Find(int A[]Jntn) { for (i=0; in; i++) if (A[i]= =k) break; return i; } 结论:如果问题规模相同,时间代价与输入数据有关,则需要分析最好情况、最坏情况、 平均情况。 “ 最好情况:出现概率较大时分析 / 最差情况:实时系统 / 平均情况:已知输入数据是如何分布的, 通常假设等概率分布 1-2.3非递归算法的分析 算法——非递归算法、递归算法 例:求数组最小值算法 int ArrayMin

文档评论(0)

jinxuetong + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档