- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[算法分析与设计实验指导书
算法分析与设计
本书是为配合《》而编写的上机指导,其目的是使学生消化理论知识,加深对讲授内容的理解,增强实践动手能力。
上机实验注意事项如下:
(1)课前认真做好预习,准备好实验工具,熟悉实验流程和手段。
(3)课中实验时,一人一组,独立上机调试,上机时出现疑问,可以举手询问实验指导老师,或者与周边同学小声讨论,鼓励独立解决问题。
(4)课后按时按质按量整理出实验报告。
实验内容覆盖:等。实验一
实验目的与要求
递归与分治的基本思想
递归与分治方法。
递归与分治方法的基本思想是:将一个难以解决的大问题,分割成一些规模较小的、相同的子问题,以便各个击破,分而治之。
递归。
递归问题分析时,要把握如下两个要素:
递归出口。
递归公式。
其中:
递归出口给出了最简单情况下问题的解。
递归公式则给出了一般意义下大问题(原问题)和小问题(子问题)之间的递归关系。通过递归公式,一个难以解决的大问题会随着递归不断多个小问题,小问题继续递归变为更小的小问题,直到最后到达递归出口得到解。
实验棋盘覆盖
ChessBoard的输入参数:tr是左上角方格的行坐标(table row),tc是左上角方格的列坐标(table column);dr是特殊方格的行坐标,dc是特殊方格的列坐标;size是棋盘大小。
以覆盖左上角为例,
if (dr tr+s dc tc + s)
该判断条件判断特殊方格是否在左上角小棋盘中。
如果在,就直接进行递归,即:ChessBoard(tr, tc, dr, dc, s)。
如果不在,那么首先用t号骨牌覆盖(具体选择P21中的哪种骨牌,参见前述说明)。覆盖之后,左上角的小棋盘就变成了特殊小棋盘,此时就可以递归处理了,即:ChessBoard(tr, tc, tr+s-1, tc+s-1, s)。
【问题】前后两次递归,ChessBoard的参数为什么这样设置?
快速排序
1. 快速排序的基本思路。
假设需要排序的数存储在数组“a[p], a[p+1], ……, a[r]”中。为了描述方便,将上述数组简记为:a[p:r]。
首先,以a[p]为基准元素,将a[p:r]划分为三段,分别是:a[p: q-1], a[q], a[q+1: r]。其中,a[p: q-1]中的任何一个元素都小于等于a[q];a[q]小于等于a[q+1: r]中的任何一个元素。注意:算法工作时,以a[p]为基准进行a[p:r]划分;a[q]是在划分完成时确定的。
对划分得到的a[p: q-1]和a[q+1: r]类似地,进行划分。
注意到a[p: q-1], a[q], a[q+1: r]的关系,不要任何计算,数组a[p: r]就已经自动排好序。
【问题】快速排序的上述思想中,是如何体现“将大问题划分为相同或相似的小问题”的?
实验内容
完成实验二 动态规划
实验目的与要求
理解动态规划的基本思想。
理解课本中示例代码并调试通过。
根据自己的理解,回答实验指导书中的问题。
动态规划的基本思想
动态规划问题需要满足两个特征,分别是:
最优子结构性质。即:大问题的最优解当中,包含了子问题的最优解。这是利用动态规划解决问题的最关键特征。
重叠子问题。即:动态规划问题中,许多子问题被重复计算。因此,动态规划将这些需要重复计算的子问题保存下来,当下次需要的时候,只需要查询即可,从而能够提高算法的效率。
动态规划本质上也是一种“递归与分治”的思想。只是,与普通的递归与分治问题相比,动态规划问题具有自己另外的特征,即:最优子结构性质+重叠子问题,从而在递归与分治的基础上,再采用特殊手段(如记录重叠子问题),可以进一步提升效率。也就是说,动态规划问题是一种特殊的“递归与分治”问题。
动态规划方法有一种变形,叫做备忘录方法。两者的关系是:备忘录方法是动态规划的一种变形,两者的思想是一致的。两者的区别是:动态规划方法采用自底向上的方法,备忘录方法采用自顶向下的方法。两者的适用场景是:如果一个问题的所有子问题都需要至少求解一次时,采用动态规划方法较好;如果一个问题中只是部分子问题需要求解时,采用备忘录方法较好。
实验代码分析和说明
本部分实验完成“矩阵连乘”问题(P45-P48)矩阵连乘问题1. 矩阵连乘问题基本思想。
假设有任意矩阵A…*Aj共有(j-i+1)个矩阵相乘。为了描述方便,记为A[i:j]。即:A[i:j]= Ai*Ai+1*…*Aj。显然,A[i:j]一定是有一个最优的计算次序的,虽然不知道这个最优次序是多少,但是不妨假设是从Ak处断开。换句话说,对于A[i:j],其最优计算次序为: (Ai*…*Ak) * (Ak+1*…*Aj)。显然,上述计算次数由三部分构成。构成1:(Ai*…*Ak)的计算次数,用X表示;构成2:(Ak+1*…*A
文档评论(0)