2015算法分析与设计实验指导书.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2015算法分析与设计实验指导书

太 原 工 业 学 院 实 验 指 导 书 院(系) 实验课程 实验教师 2015年6月9日 目录 实验一、递归与分治算法实验 3 一、实验类型 3 二、实验目的与任务 3 三、预习要求 3 四、实验基本原理 3 五、实验内容 3 六、实验步骤 4 实验二 动态规划算法实验 5 一、实验类型 5 二、实验目的与任务 5 三、预习要求 5 四、实验基本原理 5 五、实验内容 6 六、实验步骤 6 实验三、贪心算法实验 7 一、实验类型 7 二、实验目的与任务 7 三、预习要求 7 四、实验基本原理 7 五、实验内容 8 六、实验步骤 8 实验四、回溯算法实验 9 一、实验类型 9 二、实验目的与任务 9 三、预习要求 9 四、实验基本原理 9 五、实验内容 9 六、实验步骤 10 实验一、递归与分治算法实验 一、实验类型 综合性 二、实验目的与任务 1. 熟悉Java上机环境; 2. 基本掌握递归算法的原理方法。 三、预习要求 1. 认真阅读算法设计教材,了解递归算法原理; 2. 设计用递归算法求解阶乘函数、Ackerman函数、排列问题、整数划分问题的递归程序。 四、实验基本原理 分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。 分治法解题的一般步骤: 1.分解,将要解决的问题划分成若干规模较小的同类问题; 2.求解,当子问题划分得足够小时,用较简单的方法解决; 3.合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。 一言以蔽之:分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 由此可知,分治法求解很自然地可用一个递归过程来表示。分治与递归像一对孪生兄弟,经常同时应用在算法设计中,并由此产生许多高效算法。 五、实验内容 1.将正整数n表示成一系列正整数之和: n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。正整数n的这种表示称为正整数n的划分。求正整数n的不同划分个数。 2.设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。 3.Hanoi塔问题。设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,…,n,现要求将塔座a上的圆盘移到塔座b上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则: 规则1:每次只能移动1个圆盘; 规则2:任何时刻都不允许将较大的圆盘压在较小的圆盘之上; 规则3:在满足移动规则1和2的前提下,可将圆盘移至a,b,c中任一塔座上。 六、实验步骤 1. 分析问题,根据问题的描述分析出该问题的递归形式; 2. 根据问题的递归形式,写出问题的算法; 3. 使用java语言实现算法,添加必要的初始数据和结果输出; 4. 调试程序,直到结果正确为止; 5. 完成实验报告,实验报告主要有以下几部分: (1)阐述实验目的和实验内容; (2)阐述求解问题的算法原理(算法流程图和算法描述); (3)提交实验程序的功能模块; (4)记录最终测试数据和测试结果。 实验二 动态规划算法实验 一、实验类型 综合性实验 二、实验目的与任务 1. 掌握动态规划算法的基本方法; 2. 掌握动态规划算法中最优子结构的分析; 3. 掌握递归求解最优值的方法; 4. 掌握最优解的构造。 三、预习要求 1. 认真阅读算法设计教材,了解动态规划原理; 2. 掌握矩阵连乘、最长公共子序列以及电路布线问题的最优子结构性质、子问题递归形式和最优值的计算方法。 四、实验基本原理 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,希望找到具有最优值的解。 动态规划算法与分治法类似,其基本思想也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。 由于动态规划解决的问题多数有重叠子问题这个特点,为减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一个二维数组中。 与分治法最大的差别是:适合于用动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)。 能采用动态规划求解的问题的一般要具有3个性质: 1.最优子结构:如果问题的最优解

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档