算法设计与分析答案屈婉玲

上传人:daj****de2 文档编号:143757722 上传时间:2022-08-26 格式:DOCX 页数:11 大小:27.96KB
收藏 版权申诉 举报 下载
算法设计与分析答案屈婉玲_第1页
第1页 / 共11页
算法设计与分析答案屈婉玲_第2页
第2页 / 共11页
算法设计与分析答案屈婉玲_第3页
第3页 / 共11页
资源描述:

《算法设计与分析答案屈婉玲》由会员分享,可在线阅读,更多相关《算法设计与分析答案屈婉玲(11页珍藏版)》请在装配图网上搜索。

1、算法设计与分析答案屈婉玲【篇一:分金块问题的解决思想和算法设计】s=txt摘 要:在日常生活中,分金块问题是一个常见的问题,人们 总是会面临怎样比较大小。才能利用一种最高效的算法选出其中最 大和最小的金块。本文给出了较为常用的两种算法一蛮力法和分治 法。关键词:分金块问题;蛮力法(非递归);分治法;points gold bullion problem solving thought and algorithm designabstract: in daily life, points gold bullion is a common problem, people will always f

2、ace how to compare size. can use one of the mostefficient algorithm choose the maximum and minimum of the gold. this paper gives a more commonly used two kinds of algorithm, brute force method and partition method.keywords: points gold bullion problem; brute force method(non recursive); partition me

3、thod;1引言递归调用是一种特殊的嵌套调用,是某个函数调用自己,而不是另 外一个函数。递归调用一种解决方案,一种是逻辑思想,将一个大 工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想, 只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块, 只要先搬走48块,那剩下的一块就能搬完了,递归是一种思想, 只不过在程序中,就是依靠函数嵌套这个特性来实现了。由于回溯法是对解空间的深度优先搜索,因此在一般情况下可用递 归函数来实现回溯法 2问题概述=y最老板有n个金块,希望最优秀的雇员得到其中最重要的一块,最差 的雇员得到其中最轻的一块。假设有一台比较重量的仪器,如何用 最少的比较次

4、数找出最重和最轻的金块?理解金块问题:以9以内的实例理解问题。 金块示例问题:1.:重的是那块?用max标记。2.最轻的是那块?用min标记。3求解分金块问题的常用算法3.1蛮力法=j最蛮力法,也称穷举法,是一种简单而直接地解决问题的方法,常常 直接基于问题的描述,因此,也是最容易应用的方法。但是,用蛮 力法设计的算法其时间性能往往是最低的,典型的指数时间算法一 般都是通过蛮力搜索而得到的。即从第一块开始查找,查找哪块最1=/最重,哪块最轻。 算法设计: maxmin(float a,int n) max=a1;min=a1; for(i=2;i=n;i=i+1) if(maxai) max=

5、ai else if(minai) min=ai return(max, min) step1将所有金块重量存于数组step2将第一个金块同时标记为最重和最轻的金块step3将第一个与后一个进行重量的比较,将更重的标记为max, 同时如果现阶段最轻的比后者轻,那么将后者标记为min。step4依次进行比较,最重得到最重的和最轻的max min.3.2分治法1典型二分法思想:一种简单的分治法。即当每次将比较大的一个 问题一分为二 形成两个较小的问题,再把每个较小问题一分为二, 变为更小的两个问题,直到得到容易解决的小问题为止,再解 决所有小问题,然后把小问题的解逐层合并,得到原来大问题的解。2用

6、二分法如何解决金块问题?从两个简单实例谈起:=J=J假设只有一个金块,重10克,则不需要比较轻重,最重者和最轻 者是同一个金块。即比较0次。假设有2个金块,一个重10克,另一个重16克,贝U 需要比较1次,可以把最重者和最轻者确定下来。(3)当有多个金块时(假设6块),则用二分法对其分 解,直到分解为(1)或(2)的情形时,问题很容易解决。 假设6个金块重量如下(以找最轻金块为例):一分为二(两组):【2 6 4】【3 8 1】一分为二(四组):【2 6】【4】【3 8】【1】解较小子问题:24 3 1合并子问题解:2 1最终的解:13用二分法解决金块问题算法设计:问题抽象、简化为:在n个元素

7、的集合中寻找最大和最小值元素。将集合一分为二,变为两个集合,目的是在较小的两个集合中分 别找最大、最小元素。(2)递归分解较小集合,直到每个集合中的元素个数V2然后找出小 集合的最大、最小元素。合并(回溯):自低向上把子问题的解合并,大元素中取最大者, 小元素中取最小者,最后得到元问题的解。4用二分法解决金块问题算法描述:void maxmin(int i,int j,float fmax,float fmin)int mid;float lmax,lmin,rmax,rmin;if(i=j)fmax=ai;fmin=ai;else if(i=j-1)if(aiaj)fmax=aj;fmin=

8、ai;else fmax=ai; fmin=aj;else mid=(i+j)/2;maxmin(i,mid,lmax,lmin);maxmin(mid+1,j,rmax,rmin);if(lmaxrmax)fmax=lmax;else fmax=rmax; if(lminrmin) fmin=rmin; else fmin=lmin;4仿真实验及其结果:在eclipse3.5环境下测试brute force method,随机输入n=8 ;num=23,43,3,5,6,23,9,6验证,验证结果max=43; min=3结果正确。输入 n=6; num=3,7,8,9,0,15验证;验证结

9、果max=15;min=0结果正确。表-1 brute force method实验输入输出参数设置由于蛮力算法是从第一个金块开始逐一寻找,直到和第n个金块比 较之后才结束,所以最后得到的必然是最重(max)、最轻(min)的金 块.表-2 partition method实验输入输出参数设置表-2贪心算法的时间复杂度分析 分析蛮力法可以看出,比较操作maxai和mixai是执行频次最高 的关键语句。因此以这两个语句执行的总次数作为该算法执行所需 要的时间。最好情况下,金块由轻到重排列,不需要进行minai比 较,而maxai比较共需进行n-1次,即可得到max和min;最坏情 况下,金块由重

10、到轻排列,还需要进行n-1次minai比较,才能得 到最终的min,因此共进行2(n-1)次比较。在平均情况下(概率平均),ai将有一半的时间比max大,因此平均比较次数是3(n-1)/2。所以 算法时间复杂度为o(n).分析分治法可以看出,元素比较总次数作为maxmin算法的时间复 杂度度量指标,用t(n)表示比较总次数,则可以推导出递归关系:t(n)下界为(3n/2)-25结束语本文给出了两种关于金块问题的算法,分别是蛮力法和二分法。分 析了其时间复杂度和占用空间等。总结了两种算法的特点及适用性。 一般情况下,选择二分法较为快速,但内存消耗较大。参考文献1 算法设计与分析王红梅清华大学出版

11、社(2006-07出版)2 算法设计与分析屈婉玲、刘田、张立昂清华大学出版社(2011-05 出版)3 java核心技术(卷1):基础知识(原书第8版)昊斯特曼(horstmann gay s.)、gary Cornell、叶乃文、邙劲筠机械工业出版社(2008-06出版)【篇二:b0301340s-算法分析与设计-课程实验教学大纲】s=txt课程编号:课内总学时:b0301340s 48课程名称:实验学时:算法分析与设计 8实验类别:口通识基础学科基础专业基础专业一、实验课程的性质、目的和任务性质:本实验课程是软件工程专业的专业基础课,该实验是理论课 程的课内上机实验环节。目的:加深学生对算

12、法设计的基本策略和 主要方法的理解,培养学生针对具体的问题,选择合适的数据结构 和设计结构清晰、正确有效的算法的能力。任务:通过8个课时的实验,学生需要完成分治策略、动态规划法、 回溯法和密码算法四个实验内容,掌握为实际问题设计合适的算法、 以及结合程序设计语言加以具体实现的技能,锻炼学生运用书本知 识实际解决问题的能力,达到对所学算法思想理解深刻、举一反三 的目的。每位同学应在实验课前充分复习和理解课堂教学内容,明确实验目 的和任务,对实验题目进行分析,掌握实验原理及过程,选择有效 的算法编程实现,并进行充分测试。在实验中通过独立思考、与同 学讨论、老师辅导答疑相结合的方法完成相应的实验内容

13、。二、实验内容、学时分配及基本要求三、考核及实验报告(一)考核本课程实验的考核包括:有无缺勤、有无事先准备程序代码、实验 课上是否认真做实验、程序代码和实验结果是否正确、实验报告的 撰写情况等几个方面。实验课成绩由平时实验课的课堂表现、源代 码及实验报告内容综合评定。实验课成绩记入该课程的平时成绩, 约占课程总成绩的15%。(二)实验报告实验报告的内容:实验名称、实验目的、实验任务、实验内容(包括系统分析、概要 设计和详细设计)、实验过程描述(包括核心算法和算法分析、程序 代码、测试用例、实验结果分析)、实验小结(包括实验过程中遇到 的问题及体会)。实验报告的要求:实验报告以文本形式递交。实验

14、报告要求书写规范、内容完整、文 字通顺、图表清晰。四、主要仪器设备硬件:微型计算机。软件:windows 操作系统,visual C+ 6.0o五、教材及参考书教材1陈慧南.算法设计与分析一C+语言描述(第二版).北京:电 子工业出版社,2012参考书1王晓东.计算机算法分析与设计.北京:电子工业出版社,2001 年2 thomas h.cormen, Charles e.leiserson, ronald l.rivest, clifford stein著.算法导论潘金贵,顾铁成,李成法,叶懋译.北 京:机械工业出版社,2007年.3 robert sedgewick, kevin wayn

15、e 著.算法(第 4 版)谢路云译. 北京:人民邮电出版社,2013年4 jon kleinberg, eva tardos 著.算法设计.张立昂,屈婉玲译.北 京:清华大学出版社,2007 年.5 sara baase,allen van gelder 著. computer algorithms, introduction to design and analysis.北京:higher education press,2001 年.执笔人:张怡婷 审核人:陈志 实验院长:陈丹伟编写完成时间:2014.1.6附件:设计性实验教学大纲一、实验目的通过构造一个简单的rsa公开密钥系统,使学生熟

16、悉非对称密钥系 统的工作流程,理解加、解密算法的基本原理,能够编程实现生成 正确的公有/私有密钥对、用公有密钥对明文进行加密并用私有密钥 对密文进行解密的功能,并了解该rsa算法在实际系统中的应用。在该配套实验环节中,达到进一步巩固和加强学生对算法分析与 设计课程相关知识点的掌握和理解的目的。二、设计内容1. 根据题意和加、解密基本原理,设计具体的算法流程。2. 完成rsa密钥系统的具体实现,使之能够生成正确的公有密钥和 私有密钥,并能用公有密钥对明文进行加密、用私有密钥对密文进 行解密。3. 在生成公开/私有密钥对的过程中,培养学生借助已有的成熟算法 并加以变换来解决实际应用中新问题的能力。

17、4. 进一步锻炼学生编程的方法和技巧,提高学生编制清晰、合理、 可读性好的应用程序来实现算法的能力。三、实验要求要求了解密码学中加/解密的基本原理,掌握数论的基本知识,理解 非对称密码体制的著名代表rsa加密算法的工作原理和流程,能够 设计并实现一个简单的rsa公开密钥加解密系统。四、实验报告该课程的实验是理论课程学习的重要实践环节,实验报告应包括以 下几个部分的主要内容:一、实验目的和要求二、实验环境 硬件:微型计算机和打印机。软件:windows 2000以上操作系统;visual C+ 6.0编程环境。三、实验原理及内容主要包括:1、对本次实验的题目更为深入的理解、对实验原理和步骤的清晰

18、阐 述等。2、对实验内容、实验过程以及源程序代码的详细记录。(应包括全 部实验内容的源代码、测试数据及运行结果、实验相关结论。对代 码中关键行要注释。)四、实验小结主要包括:在编程、调试、测试过程中遇到的问题及解决方法、本 次实验的心得体会、进一步改进的设想等。五、思考题1. 由于实际应用中rsa算法通常需要选择大质数进行运算,因此实际系统中如何实现大数运算的功能,对超出整型变量表示范围的数 进行运算?2. 如何自行实现随机生成质数的功能?如何快速判断一个数是否质 数? 3. rsa加密的安全性是如何保证的? 4. rsa加密算法的优缺点 都有哪些? 5.针对rsa算法可能有哪些攻击方法? 6

19、.如何将rsa算 法用于数字签名?执笔人:张怡婷审核人:陈志编写完成时间:2014年2月2日实验院长:章韵【篇三:浙教版高一算法与程序设计】/p课时) 一、设计思想 本课以浙江省普通高中新课程实验信息技术学科教学指导意见 为指导,在高中一年级下学期算法与程序设计选修课阶段开展 教学。本课以培养学生能力为目标,突出学生观察、实践、应用能力,领 悟生活中的相关应用。二、教材分析1.高中信息技术课程标准提出信息技术课的基 本理念之一是强调问题的解决,倡导运用信息技术进行创新实践。在课程设置上,算法与程序设计可在高一下学期选修,其中“对 分查找”算法是学生技能提升的重要一课;在信息技术学科教学指导意见

20、中“对分查找”算法要求学生了解 对分查找的概念、初步掌握该算法,重点是对算法分析,以讲授法 为主,适当让学生讨论与体验。2 .对分查找算法由理解该算法概念、流程图分析、算法描述、程序 实现组成,在“查找”模块中是重点要求部分;3 .初中阶段未学习过相关知识,故这部分作为全新内容学习。 三、 学情分析1 .通过信息技术基础必修课信息的加工算法与编 程、算法与程序设计选修课的初步学习,学生已经对算法有 一定了解,能够应用流程图和伪码对一些简单算法进行分析,能够 初步应用vb编写简单应用程序、实现算法。2 .根据信息技术学科教学指导意见,算法与程序设计可按 以下顺序教学:先上“算法和算法表示”,再上

21、“面向对象程序设计的基本知识”,接下来进行“算法实例的程序实现”、“算法实例”、“vb 程序设计初步”穿插学习。学生在此可能会遇到来自于对分查找法的 分析、查找效率以及程序实现的困难;3 .学生学习此部分,会自然而然地把“对分查找”和“顺序查找”联系 起来,因为顺序查找易于实现,相比之下,对分法稍稍有些困难; 也有学生可能会采取先掌握流程再用自然语言实现、进而用程序实 现的方法。对此,在教学上可通过流程图的演示帮助学生理解对分 查找比顺序查找高效。四、教学目标 知识性目标:1. 了解并熟悉对分查找算法的概念、能列举现实生活中的应用实例;2. 能解释对分查找中数字之间的逻辑联系,明确对分查找算法

22、相对 于顺序查找法的优 势;3. 具备知识迁移能力,发现对分查找算法的现实应用,总结对分查 找的规律,能把学习 所得应用于现实生活中。技能性目标:1. 能通过流程图,剖析对分查找算法的原理;2. 能使用自然语言表达对分查找算法,并能应用信息技术与他人交 流自己对此部分知识 的理解;3. 能熟练“对分查找算法”的程序实现,有效利用此算法解决实际问题。情感、态度、价值观目标:要求学生从“了解一理解一实现一应用”对分查找算法的过程,获得 对该算法的感性认识,表达对分查找算法的学习体验,养成追求算凹 1=法高效率、增加程序效率意识、并领悟对分查找算法对于现实应用 的价值。五、重点难点重点:分析对分查找

23、算法难点:程序实现、知识迁移六、教学策略 与手段以流程图的完善为线索,以生动的、较有价值的实例穿插在各个教 学环节,辅助学生理解以提高效率为目标,让学生在应用中体会顺 序查找与对分查找的效率采用比较、分组讨论、探究教学法综合运 用的教学手段七、课前准备1 .学生的学习准备:掌握查找的概念,预习对分查找法。2.教师的教学准备:cctv“幸运52”中猜价格游戏的片段;对分查 找算法的演示材料和数据。3.教学环境的设计与布置:给学生分组 (4-6人一组);八、教学过程 播放cctv“幸运52”中猜价格游戏的片段。猜一件物品的价格。竞猜者说一个价格,再根据主持人提示价格的 高低修改下次猜测的范围小组合

24、作模仿视频片断,亲身体验猜价 格技巧。由同学研究并指出如何根据高低的提示做出相应策略?分组讨论如果按照“顺序查找”策略来猜价格,情况会怎么样?切入正题今天我们要学习的就是类似于视频中猜价格策略的一种查找算法一 一对分查找算法,它还有两种叫法:折半查找法、二分查找法。它 是在有序的数字系列中查找一个数字,可以先确定待查数字所在的 范围,然后逐步缩小范围直到找到或找不到记录。学生根据己学知识完成声明数组和赋值,因为此数组不仅在一个过 程中有效,故要以通用里声明dim d(1 to 10) as integer private sub form_load()dim i as integer i=1d

25、o while i=10 d(i) = val(inputbox(请按顺序输入数组中各元素的值,第i个:) list1.additem (str(d(i) i=i+1 loop end sub1=/理我们需要用到的变量:被查找的数key (由用户输入)、最大数的 下标high、最小数的下标low、位于数字系列中央的数字为第mid 其中 mid=fix(low+high)/2,应满足 lowhigh。回顾fix(涵数用回顾val()函数用学生完成对变量的声明和赋值dim key as integer dim high as integer dim low as integer dim mid a

26、s integer high=10:low=1 mid=fix(high+low)/2 法 key=val(text1.text) 法结合猜价格策略先把key与第mid元素进行比较,最好的情况: key=d(mid),这样可以直接输出key的位置,程序结束;如果 keyd(mid),则可以判断被找的数在d(mid)的前方,而d(mid)及其 后面部分不可能有key,可以排除,数组的规模缩小近一半,此时可 把d(mid)前的元素作为新数字系列的最高位,使其下标置high。即high=mid-1提问既然需要根据d(mid)和key的大小关系做出不同的决策,则 程序实现需要用什么控制结构?让学生结合

27、上述分析做此部分流程图片断培养学生由此及彼的能力既然keyd(mid)的情况可以如上操作,那keyd(mid)又当如何呢?请大家思考并小组讨论,之后在上面流程图的基础上划出另一分支。学生按流程图写出代码if key = d(mid) thenmsgbox (在第 mid 个位置!)elseif key d(mid) then high =mid - 1else: low = mid + 1end if引出循环结构在其中的运用教师每当有了新的high和low,总在算出新mid,再比较d(mid) 与key,相等则输出,否则确定新low或新high,这样重复的操作 可以用什么控制结构?学生循环结构

28、让小组讨论本循环的条件、循环体的组成,并在流程图中体现对照流程图写出代码do while low = highmid = fix(low + high) / 2)if key = d(mid) thenmsgbox (在第 mid 个位置! )exit doelseif key d(mid) then high = mid - 1 else: low = mid + 1 end if loop知识提升对规模为n的数组,通过1次查找折半,新的查找范围不会超过围不会超过n22n2,2次查找,新的查找范,则经过k次查找,所剩的查找范围不会超过n2k因此效率比顺序查找逐个排查要高得多。此程序初步成型,但不够完善,如不能对找不到的情况进行友好反 馈,请同学们结合顺序查

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!