收藏 分享(赏)

1算法分析与设计.ppt

上传人:hwpkd79526 文档编号:9111186 上传时间:2019-07-24 格式:PPT 页数:27 大小:2.72MB
下载 相关 举报
1算法分析与设计.ppt_第1页
第1页 / 共27页
1算法分析与设计.ppt_第2页
第2页 / 共27页
1算法分析与设计.ppt_第3页
第3页 / 共27页
1算法分析与设计.ppt_第4页
第4页 / 共27页
1算法分析与设计.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、算法分析与设计 Analysis and Design of Computer Algorithms,杨春明 Yang Chunming 西南科学技大学计算机学院 School of Computer Science and Technology, SWUST 2009年8月,http:/ School of Computer Science and Technology, SWUST,2,Who is Yang Chunming?,Instructor of SWUST Tel:6089357 13881194177 Office:东6E401 QQ:4879687 Email: 教学主页:

2、http:/ 课程网站:http:/ 课程练习及考核:http:/:8080/JudgeOnline 网络答疑:http:/ 课程考核方案: 考核由算法设计与实现(程序设计)、课程报告和出勤三部分构成,分别占70% 、20%和10%。 算法设计与实现:平时课程教学过程中在Judge Online平台完成。 课程报告:课程结束后开始。 出勤:上课的出勤情况,缺席一次扣2分,扣完为止。,http:/ School of Computer Science and Technology, SWUST,3,课程教学方案(续),课程考核算法设计与实现 每次时间为一周到两周,完成后判断代码雷同,如果雷同率超

3、过85%,则视为抄袭,作0分处理。,http:/ School of Computer Science and Technology, SWUST,4,http:/ School of Computer Science and Technology, SWUST,5,课程教学方案(续),http:/:8080/JudgeOnline/,登陆Online Judge注册,http:/ School of Computer Science and Technology, SWUST,6,程序雷同判断,http:/ School of Computer Science and Technology,

4、 SWUST,7,执行效果,2007年:实践考核40%,分5次进行,期末考试60%,共计93人,2008年:课程考核由过程(70%)、课程报告(20%)、出勤(10%)三部分组成。过程考核共计4次,共计20题,其中11题选做。51人。,执行情况,2009年:考核方式与2008年相同,82人。 过程考核统计表,http:/ School of Computer Science and Technology, SWUST,8,http:/ School of Computer Science and Technology, SWUST,9,About Algorithm,课程主要介绍计算机算法分析

5、、算法设计及复杂性理论的基本概念、基本的算法分析方法和常用的算法设计方法。 目标: 掌握计算机算法分析的基本方法及常见算法设计方法 训练逻辑思维 利用常见的算法设计方法解决软件开发中的实际问题 先修课程: 离散数学、数据结构、高级程序设计语言。,http:/ School of Computer Science and Technology, SWUST,10,为什么要学习算法?,算法不仅是计算机科学的一个分支,它更是计算机科学的核心,而且,可以毫不夸张地说,它和绝大多数的科学、商业和技术都是相关的。David Harel算法:计算的灵魂 程序=数据结构+算法 开发人们的分析能力 作为一种技术

6、的算法,一个人只有把知识教给“计算机”,才能“真正”掌握它。,算法可以解决哪些问题,找出人类DNA中所有100000中基因,确定构成人类DNA的30亿种化学基对的各种序列。 快速地访问和检索互联网数据 电子商务活动中各种信息的加密及签名 制造业中各种资源的有效分配 确定地图中两地之间的最短路径 各种数学、几何计算(矩阵、方程、集合),http:/ School of Computer Science and Technology, SWUST,11,http:/ School of Computer Science and Technology, SWUST,12,Contents of Al

7、gorithm,算法基础(Foundations) 算法基本概念 算法效率分析基础 算法设计及分析技巧 蛮力法 分治法(Divide and Conquer) 减治法 变治法 时空权衡 动态规划(Dynamic Programming) 贪婪技术(Greedy Algorithm) 回溯法(Back Tracking),http:/ School of Computer Science and Technology, SWUST,13,References,1 算法设计与分析基础(第2版) . (美)Anany Levitin 著,潘彦译 . 北京:清华大学出版社 . 2007年1月 2Tho

8、mas H.Cormen等著,潘金贵等译.算法导论(第二版).机械工业出版社.2006年9月 3 C算法(第二卷 图算法)(第三版)(中文版)人民邮电出版社 2004年4月 4卢开澄(2000),计算机算法导引,清华大学出版社 5算法设计与分析 . 王晓东 . 清华大学出版社 . 2003年1月,http:/ School of Computer Science and Technology, SWUST,14,How to Study Algorithm?,“Sometimes we have experiences, and sometimes not. Therefore, the be

9、tter way is to learn more.“,http:/ School of Computer Science and Technology, SWUST,15,Chapter 1 Introduction to Algorithms,Whats an Algorithm? 算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。,Algorithm,Question,http:/ School of Computer Science and Technology, SWUST,16,算法的几个要点,算法的每一个步骤都必须清晰、明确。 算法所处

10、理的输入的值域必须仔细定义。 同样的一个算法可以用几种不同的形式来描述。 可能存在几种解决相同问题的算法。 针对同一个问题的算法可能会基于完全不同的解题思路,而且解题的速度也会有明显区别。,http:/ School of Computer Science and Technology, SWUST,17,Example,求两个正整数m,n的最大公约数gcd(m,n) 欧几里得算法基于的方法是重复应用下列式子,直到m mod n=0 gcd(m, n) = gcd(n, m mod n),gcd(m,n)的欧几里得算法 第一步:如果n=0,返回m的值作为结果,结束;否则进入第二步 第二步:用n

11、去除m,将余数赋给r。 第三步:将n的值赋给m,将r的值赋给n,回第一步。,算法 Euclid(m,n) /使用欧几里得算法计算gcd(m,n) /输入:两个不全为0的非负整数m,n /输出:m,n的最大公约数 While n!=0 dorm mod nmnnr Return m,同一个算法有不同的表达方式,http:/ School of Computer Science and Technology, SWUST,18,Example,gcd(m,n)的连续整数检测算法 第一步:将minm,n的值赋给t。 第二步:m除以t,如果余数为0,则进入第三步;否则,进入第四步。 第三步:n除以t,

12、如果余数为0 ,则返回t值作为结果;否则,进入第四步。 第四步:把t的值减1。返回第二步。,gcd(m,n)的中学计算算法 第一步:找到m的所有质因数。 第二步:找到n的所有质因数 第三步:从第一步和第二步中求得的质因数分解式找出所有的公因数 第四步:将第三步中找的质因数相乘,其结果作为给定数字的最大公因数。,同一个问题有不同的解决方法,http:/ School of Computer Science and Technology, SWUST,19,算法问题求解基础,算法是问题的程序化解决方案。,http:/ School of Computer Science and Technolog

13、y, SWUST,20,算法问题求解基础,理解问题 设计算法前做的第一件事情 仔细阅读问题的描述 提出疑问 手工处理一些实例 考虑特殊情况 确定输入 抽象出问题,用数学表达式描述,http:/ School of Computer Science and Technology, SWUST,21,算法问题求解基础,了解计算设备的性能 确定计算方法 RAM结构下的顺序算法 并行算法 选择精确解和近似解 某些重要的问题无法求得精确解 某些问题利用精确解速度慢,无法接受,http:/ School of Computer Science and Technology, SWUST,22,算法问题求解

14、基础,确定适当的数据结构 算法 + 数据结构 = 程序 算法设计技术 使用算法解题的一般性方法,用于解决计算领域的多种问题。 详细表述算法的方法 自然语言 伪代码 流程图,http:/ School of Computer Science and Technology, SWUST,23,算法问题求解基础,证明算法的正确性 证明对于每一个合法的输入,该算法都会在有限的时间内输出一个满足要求的结果。 一般方法:数学归纳法 证明算法的正确性与不正确哪一个更容易? 分析算法 算法有两种效率:时间效率和空间效率 算法的另外两个特性:简单性和一般性,http:/ School of Computer S

15、cience and Technology, SWUST,24,算法问题求解基础,为算法写代码 用计算机程序实现算法 在把算法转变为程序的过程中,可能会发生错误或者效率非常低,作为一种规律,一个好的算法是反复努力和重新修正的结果,算法是一个最优性问题:对于给定的问题需要花费多少力气(资源)? 是不是每个问题都能够用算法的方法来解决?,发明或者发现算法是一个非常有创造性和非常值得付出的过程!,http:/ School of Computer Science and Technology, SWUST,25,重要的问题类型,排序(Sorting) 查找(Search) 串处理(String) 图

16、问题(Graph) 组合问题(Combination) 几何问题(Geometry) 数值问题,Icosian游戏,http:/ School of Computer Science and Technology, SWUST,26,基本数据结构,线性数据结构 数组,串,单(双)链表,栈,队列 图 有向图,无向图,加权图 树 自由树,有根树 有序树 集合与字典,http:/ School of Computer Science and Technology, SWUST,27,小结,“算法”是在有限时间内,对问题求解的一个清晰的指令序列。 算法可以用自然语言或伪代码描述,也可用计算机语言来描述。 对算法的分类主要有两种方法: 按照求解问题的类型对算法分类 按照其内在的设计技术对算法分类 重要的问题类型:排序、查找、串处理、图问题、组合问题、几何问题和数值问题。 “算法设计技术”是用算法解题的一般性方法,适用于解决不同计算领域的多种问题。 一个好的算法常常是不懈努力和反复修正的结果。 解决同一个问题的算法常常有好几种。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报