算法设计和分析(一).ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计和分析(一)

算法设计与分析 2013.4;写在讲课前;写在讲课前(续);问题:既然每种方法都可以实现排序之目的,何必费心研究这么多排序算法? 其一:就像玩智力游戏,人们乐衷于寻找不同的方法解决各种各样的问题。 其二:研究的需要,算法和算法间是有区别的,我们有必要去研究,去分析。 性质不同:稳定、不稳定 性能不同:速度、空间 适用场合不同 其三,应用的需求,问题有千百万种,没有万能的算法适合所有的应用。需要我们找出算法的设计规律,并设计出解决问题的新算法 怎么选择:根据性能、结合需求、综合选择 如何了解每种算法的性能?算法的分析;二、算法分析 了解算法的性能: 算法速度:快还是慢?如何衡量?怎么比较? 空间使用量(计算机算法*):大还是小?如何衡量?怎么比较? 其它方面的性质等。 ;实例分析: 排序算法的理论分析:(略) 编程序测试 1.冒泡排序真的很慢吗? 数据集元素个数:10、20、1000、10000… 2.快速和归并排序都是O(nlogn)的时间复杂度, 到底谁更快一点呢?原因是什么? 3.冒泡排序会不会比快速排序快? 来自于实测的结论:可能。 ;三、为什么要学习算法 1. 编程序的需要 任何程序都需要算法。 the core of computer science 程序 = 数据结构 + 算法 2. 改造世界的需要 世界上还有很多很多的问题等待你解决,有无数的程序等待你去编。 3. 国家综合实力的体现(大) 从软实力的角度,算法是国家科技生产力的核心。是国家综合实力的体现。;四、头疼的事:算法太多了,学不过来 是的,千万的问题、万千的算法。都学过来是不可能的。甚至专一门已经很了不起。 学习算法设计与分析的策略、技术和方法,把握解决问题的规律,为设计更复杂、更有效的算法奠定基础。 需要同学们不断学习,深入思考,创新设计。;五、算法的学习过程:痛苦并快乐着 1.枯燥的过程 繁烦:学习一个算法如同做一道数学题,多了呢? ACM ICPC的训练过程:乐于其中 2.智慧的积累 方法的掌握、技术的升华 3.理论的贡献 算法成就或在于理论的贡献,而不仅仅是技术的提高。 如何成就好算法:好思想+好技术;六、好算法 从理论的角度说,好算法应该有较低的时间复杂度(高速)和空间复杂度(低耗),但好的算法还要依靠好的算法实现,需要理论与技术、技巧的结合才能最终实现好的算法。 从应用的角度说,能有效地解决问题的算法都是好算法——不管黑猫白猫,抓住老鼠就是好猫;不管A算法、B算法,能解决问题就是好算法(实用了点)。;概述;课程内容: 基本概念:算法的定义、性质、 分析算法的基本方法等 分治策略(Divide and conquer) 贪心方法(Greedy method) 动态规划(Dynamic Programming) 图算法(Graph Algorithms) 回溯与分枝限界 …… 专题 综合实践;本课程需要的基础 数据结构 程序设计语言(C/C++):结构化设计 数学基础 操作系统、编译 ;授课形式: 课堂教学:(√) 课堂讨论:专题、解题报告 上机实践:需要提交实验报告;考核方式: 考试:(√) 综合成绩=卷面成绩*80% + 平时成绩*20% 平时成绩=作业+上机实验+考勤;主要参考书 计算机算法基础, 余祥宣等编著, 华中科技大学出版社 Introduction to algorithms, Thomas H. Cormen,etc., third edition, The MIT Press. Algorithm Design,Michael T. Goodrich 算法设计与分析,王晓东,清华大学出版社;其它参考书 The Art of Computer Programming, Donald E.Knuth. Volume 1-3, Second Edition. Data Structures, Algorithms, and Applications in C++(Part 3) Sartaj Sahni, China Machine Press etc.;一、算法基础;1.1 算法的定义及特性;对算法概念的理解 算法由运算组成 算术运算、逻辑运算、赋值运算、过程调用 算法有其特殊性 解决不同问题的算法是不相同的,有没有一个万能的算法? 算法是有穷的计算过程 静态上:规则/运算/语句的数量有穷 动态上:计算过程/计算时间有限 ;我们已经接触过的算法:

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档