- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法分析设计第一章1资料
* 递归举例:汉诺塔问题分析 若有1个盘子 则直接由A移动到B 若有2个盘子(C为辅助基座) 则先将小盘子由A移动到C 而后将大盘子由A移动到B 最后将小盘子由C移动到B 若有3个盘子(C为辅助基座) 则先将2个盘子由A移动到C(B为辅助基座) 而后将1个盘子(最大的)由A移动到B 最后将2个盘子由C移动到B * 有n个盘子汉诺塔移动函数可以归结为3步操作 则先将(n-1)个盘子由A移动到C(B为辅助基座) 而后将 1 个盘子由A移动到B 最后将(n-1)个盘子由C移动到B 分析移动函数的参数 移动多少个盘子 盘子的源位置 盘子的目标位置 本次移动的辅助基座 递归结束条件:n=1时,经过一次移动,结束递归 * 递归举例:汉诺塔问题 分析三个盘子的汉诺塔,见黑板 hanoi(int n, char source, char dest, char mid) { if(n0) { hanoi(n-1, source, mid, dest); print(将盘子从%c→%c\n, source, dest); hanoi(n-1, mid, dest, source); } } * 递归法的优缺点: 优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。 缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。 建议: 在设计初期阶段使用递归,当算法被证明为有效时,消除递归。 * 5t vt6 * * * * * * * * * * * * * * * * * * * * * * * * * * 第一章 算法引论 参考书目: 1、(美)Aho,Hopcroft,Ullman,算法设计与分析(影印版),中国电力出版社,2003年 2、Sara Baase,计算机算法-设计与分析导论(第三版 影印版),高等教育出版社,2001年 例子:Google的处理方式 挑战: 每天Google的网站要处理十亿个以上的搜索; GMail要储存几千万用户的2G邮箱; Google?Earth要让数十万用户同时在整个地球上遨游,并将合适的图片经过互联网提交给每个用户。 并行算法:Map?and?Reduce(/papers/mapreduce.html) 用于大规模数据集(大于1TB)的并行运算 (由Google公司的Jeffrey Dean和Sanjay Ghemawat提出 ) 算法是计算机科学领域最重要的基石之一,在网络时代,越来越多的挑战需要卓越的算法来解决。 设计思想:1、 任务划分 2、 数据归并 特点: 1、高效性:这个算法能够在很多种计算中达到相当高的效率,而且是可扩展的。 2、可靠性:它可以利用大批廉价的机器组成功能强大的server?farm。其容错性能异常出色。 借助该算法,Google几乎能无限地增加计算量,与日新月异的互联网应用一同成长。 例子:给定两个正整数m和n,求它们的最大公因子 算法:欧几里德算法 输入:正整数m、n 输出:m和n的最大公因子 第一章 算法引论 1.1 算法的基本概念 一、什么是算法及其与程序的区别 S1:保证m=n,如果mn,则m、n的值互换,否则转S2. S2:求余数。令r=m mod n,(0=rn) S3:判断余数r是否为0。如果r是0,则算法终止,n为答案,否则转S4. S4:置换。即m?n,n?r,转S2. 什么是算法? 它是一组有穷规则的集合,它规定了解决某一特定类型问题的一系列运算。 二、算法的特征 1、确定性 2、能行性 3、输入 4、输出 5、有穷性:一个算法总是在有限步之后结束,且每一步都可在有穷时间内完成. 算法与程序的区别: 程序:与某种语言有关,能直接在机器上运行。 算法:与特定的语言无关,可用任何语言实现 ,甚至可以用自然语言实现,但是一般为了避免二义性,本书采用类C语言描述。 一个算法总是在执行了有穷步骤的运算后终止,否则就是一个计算过程。 有穷性与有效性的关系: 三、评价算法的标准 有穷性是对算法的基本要求,如果一个算法要能使用,必须具有有效性。有效性是指算法在规定的时间里终止。 时间复杂性和空间复杂性 四、本书介绍的内容 1、如何设计算法: 2、如何表示算法:类C语言 (自学5) 3、如何确定(或称证明)算法: 4、如何分析算法: 5、如何测试算法:作时空分布图 1.2 算法设计的步骤 一、问题的描述 例:货郎担问题
文档评论(0)