《算法设计与分析》第01章.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析 授课教师:刘振章 第1部分 算法和算法分析 第1章 算法问题求解基础 1.1 算法概述 1.1.1 什么是算法 算法(algorithm) 一个算法是对特定问题求解步骤的一种描述,它是指令的有限序列。此外,算法具有下列5个特征: 算法和程序的关系 算法是有穷的,程序或过程可以是无穷的。例如:一个操作系统是一个程序,但不是一个算法。 算法设计对程序设计具有指导性,并且不依赖于程序设计方法学、语言和工具的变化与进展。 对于程序设计的研究,可分为4个层次: 算法(在研究的最高层次)、方法学、语言、工具 算法设计对程序设计的指导可延续多年,它不依赖于程序设计方法学、语言和工具的变化和进展。 欧几里德算法(辗转相除法) 计算两个整数m和n(0≤m<n)的最大公约数,记为gcd(m, n)。 1.1.2 为什么学习算法 算法是计算机科学的基础,更是程序的基石,只有具有良好的算法基础才能成为训练有素的软件人才。对于计算机专业的学生来说,学习算法的理由是非常充分的。因为你必须知道来自不同计算领域的重要算法,你也必须学会设计新的算法、确认其正确性并分析其效率。随着计算机应用的日益普及,各个应用领域的研究和技术人员都在使用计算机求解他们各自专业领域的问题,他们需要设计算法,编写程序,开发应用软件,所以学习算法对于越来越多的人来说变得十分必要。 1.2 问题求解方法 1.2.1 问题和问题求解 1.2.2 问题求解过程 1.2.3 系统生命周期 1.3 算法设计与分析 1.3.1 算法问题求解过程 1.3.2 如何设计算法 1.3.3 如何表示算法 1.3.4 如何确认算法 1.3.5 如何分析算法 1.4 递归和归纳 1.4.1 递归 1.4.2 递归算法示例 1.4.3 归纳证明 例1-1 斐波那契数列 递归算法 当一个算法采用递归方式定义时便成为递归算法。一个递归算法是指直接或间接调用自身的算法。 【程序1-4】 求Fn long Fib( long n) { if(n=1) return n; else return Fib(n-2)+Fib(n-1); } 可以用所谓的递归树(recursive tree)来描述程序1-4的函数Fib执行时的调用关系。 图1-2 计算Fib(4)的递归树 递归数据结构 使用递归方式定义的数据结构称为递归数据结构(recursive data structure)。 例1-2 逆序输出正整数的各位数 【程序1-5】 void PrintDigit(unsigned int n) { coutn%10; //输出最后一位数dk if(n=10) PrintDigit(n/10); //以逆序输出前k-1位数 } 课程简介 课程名称:算法设计与分析 Design and Analysis of Algorithms 先修课程: 面向对象程序设计语言C++,数据结构 ? 课程学时 总学时:40h;其中讲课:30h;上机:10h 课程主要内容与要求 掌握分治法、贪心法、动态规划法、回溯法、分支限界法的算法思想 应用算法思想解决经典算法问题。 掌握算法分析的方法,分析算法的时间和空间效率 学习成绩考核方法 考勤、作业、实验20~30%,期末考试70~80% 6.采用教材 [1] 陈慧南编著.算法设计与分析——C++语言描述.电子工业出版社,2006.5 7.本课程主要参考书 [1] 王晓东.算法设计与分析.电子工业出版社 [2] 苏德富.计算机算法设计与分析.电子工业出版社 [3] 刘任任.算法设计与分析.武汉理工大学出版社 [4] 卢开澄.计算机算法导引-设计与分析.清华大学出版 社 [5] 刘 瑾.计算机算法引论-设计与分析技术,科学技术出版社 1.1 算法概述 1.2 问题求解方法 1.3 算法设计与分析 1.4 递归和归纳 输入(input):算法有零个或多个输入量; 输出(output):算法至少产生一个输出量; 确定性(definiteness):算法的每一条指令都有确切的定义,没有二义性; 能行性(effectiveness):算法的每一条指令必须足够基本,它们可以通过已经实现的基本运算执行有限次来实现; 有穷性(finiteness):算法必须总能在执行有限步之后终止。 给定两个正整数m和n,求m和n的最大公因数(mn)。 求余数:用n除m。令r是所得余数,即有m=qn+r,q≥0,0≤r<n。转下一步。 判余数:若r=0,则输出n,

文档评论(0)

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

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

1亿VIP精品文档

相关文档