ImageVerifierCode 换一换
格式:DOCX , 页数:109 ,大小:131.79KB ,
资源ID:13036603      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13036603.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(算法设计与分析教案Word下载.docx)为本站会员(wj)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

算法设计与分析教案Word下载.docx

1、算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。1.1.3 算法的描述方法 自然语言优点:容易理解缺点:冗长、二义性使用方法:粗线条描述算法思想 注意事项:避免写成自然段欧几里德算法N开始输入m和n r=m % nr=0m=n;n=r 输出n结束Y 程序设计语言能由计算机执行 抽象性差,对语言要求高算法需要验证将算法写成子函数#include int CommonFactor(int m, int n) int r=m % n; while (r!=0) m=n; n=r; r=m % n; return

2、 n;void main( ) coutCommonFactor(63, 54)endl; 伪代码算法语言伪代码(Pseudocode):介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语言来设计。表达能力强,抽象性强,容易理解7 21. r = m % n;2. 循环直到 r 等于0 2.1 m = n; 2.2 n = r; 2.3 r = m % n;3. 输出 n ;1.1.4 算法设计的一般过程 1理解问题2预测所有可能的输入3. 在精确解和近似解间做选择 4. 确定适当的数据结构 5算法设计技术6描述算法 7跟踪算法 8分析算法的效率 9

3、根据算法编写代码 1.2 算法分析算法分析(Algorithm Analysis):对算法所需要的两种计算机资源时间和空间进行估算 时间复杂性(Time Complexity) 空间复杂性(Space Complexity)算法分析的目的: 设计算法设计出复杂性尽可能低的算法 选择算法在多种算法中选择其中复杂性最低者时间复杂性分析的关键: 问题规模:输入量的多少; 基本语句:执行次数与整个算法的执行时间 成正比的语句for (i=1; i=n; i+) for (j=1; j0),则有T(n)=O(nm)且T(n)=(n m),因此,有T(n)=(n m)。 1.2.2 最好、最坏和平均情况

4、在一维整型数组An中顺序查找与给定值k相等的元素(假设该数组中有且仅有一个元素值为k) int Find(int A , int n) for (i=0;n; if (Ai= =k) break; return i; 结论:如果问题规模相同,时间代价与输入数据有关,则需要分析最好情况、最坏情况、平均情况。 最好情况:出现概率较大时分析 最差情况:实时系统 平均情况:已知输入数据是如何分布的, 通常假设等概率分布1.2.3 非递归算法的分析 算法非递归算法、递归算法 求数组最小值算法 int ArrayMin(int a , int n) min=a0; for (i=1; if (aimin)

5、 min=ai; return min;非递归算法分析的一般步骤:1. 决定用哪个(或哪些)参数作为算法问题规模的度量2. 找出算法中的基本语句3. 检查基本语句的执行次数是否只依赖于问题规模4. 建立基本语句执行次数的求和表达式5. 用渐进符号表示这个求和表达式v 关键:建立一个代表算法运行时间的求和表达式,然后用渐进符号表示这个求和表达式。1.2.4 递归算法的分析 关键:根据递归过程建立递推关系式,然后求解这个递推关系式。1. 猜测技术:对递推关系式估计一个上限,然后(用数学归纳法)证明它正确。2. 扩展递归技术 3. 通用分治递推式大小为n的原问题分成若干个大小为n/b的子问题,其中a

6、个子问题需要求解,而cnk是合并各个子问题的解需要的工作量。1.2.5 算法的后验分析 算法的后验分析(Posteriori)也称算法的实验分析,它是一种事后计算的方法,通常需要将算法转换为对应的程序并上机运行。一般步骤:1. 明确实验目的 2. 决定度量算法效率的方法,为实验准备算法的程序实现3. 决定输入样本,生成实验数据 4. 对输入样本运行算法对应的程序,记录得到的实验数据5. 分析得到的实验数据 表格法记录实验数据 散点图记录实验数据 执行次数或时间 第4章 分治法 4.1 概 述 4.1.1 分治法的设计思想 将一个难以直接解决的大问题,划分成一些规模较小的子问题,以便各个击破,分

7、而治之。更一般地说,将要求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止,再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。启发式规则:1. 平衡子问题:最好使子问题的规模大致相同。也就是将一个问题划分成大小相等的k个子问题(通常k2),这种使子问题规模大致相等的做法是出自一种平衡(Balancing)子问题的思想,它几乎总是比子问题规模不等的做法要好。2. 独立子问题:各子问题之间相互独立,这涉及到分治法的效率,如果各子问题不是独立

8、的,则分治法需要重复地解公共的子问题。分治法的典型情况 子问题1的规模是n/2 子问题1的解 子问题2的解 子问题2 原问题的解 原问题的规模是n4.1.2 分治法的求解过程 一般来说,分治法的求解过程由以下三个阶段组成:(1)划分:既然是分治,当然需要把规模为n的原问题划分为k个规模较小的子问题,并尽量使这k个子问题的规模大致相同。(2)求解子问题:各子问题的解法与原问题的解法通常是相同的,可以用递归的方法求解各个子问题,有时递归处理也可以用循环来实现。(3)合并:把各个子问题的解合并起来,合并的代价因情况不同有很大差异,分治算法的有效性很大程度上依赖于合并的实现。分治法的一般过程Divid

9、eConquer(P)if(P的规模足够小)直接求解P;分解为k个子问题P1,P2,Pk;for(i=1;i=k;i+) yi= DivideConquer(Pi);return Merge(y1,yk);计算an,应用分治技术得到如下计算方法: 34 32 81 31 9 3分解问题求解每个子问题合并子问题的解4.2 递 归 4.2.1 递归的定义 递归就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。递归有两个基本要素: 边界条件:确定递归到何时终止; 递归模式:大问题是如何分解为小问题的,确定递归体。4.2.2 递归函数的运行轨迹 在递

10、归函数中,调用函数和被调用函数是同一个函数,需要注意的是递归函数的调用层次,如果把调用递归函数的主函数称为第0层,进入函数后,首次递归调用自身称为第1层调用;从第i层递归调用自身称为第i+1层。反之,退出第i+1层调用应该返回第i层。采用图示方法描述递归函数的运行轨迹,从中可较直观地了解到各调用层次及其执行情况。Hanio(3,A,B,C)Hanio(2,A,C,B)Hanio(1,A,B,C)Move (A,C)Move (A,B)Hanio(1,C,A,B)Move (C,B)Hanio(2,B,A,C)Hanio(1,B,C,A)Move (B,C)Move (B,A)4.2.3 递归函数的内部执行过程 一个递归函数的调用过程类似于多个函数的嵌套调用,只不过调用函数和被调用函数是同一个函数。为了保证递归函数的正确

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1