算法分析与设计实验报告..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文档。上传文档
查看更多
算法分析与设计实验报告.

电子科技大学 示范性软件 学院 标 准 实 验 报 告 (实验)课程名称 算法分析与设计 电子科技大学教务处制表 电 子 科 技 大 学 实 验 报 告 学生姓名: 学 号:292310507 指导教师:林劼 一、实验室名称:主楼A2-412实验室 二、实验项目名称: 实验项目一:分治和递归算法实现 实验项目二:动态规划算法实现 实验项目三:贪心算法实现 三、实验原理: 实验项目一: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 在求解一个输入规模为n,而n的取值又很大的问题时,直接求解往往非常困难。这时,可以先分析问题本身所具有的某些特性,然后从这些特性出发,选择某些适当的设计策略来求解。这种方法,就是所谓的分治法。 实验项目二: 动态规划的基本模型如下:   (1)确定问题的决策对象。 (2)对决策过程划分阶段。 (3)对各阶段确定状态变量。 (4)根据状态变量确定费用函数和目标函数。 (5)建立各阶段状态变量的转移过程,确定状态转移方程。 实验项目三: 贪婪算法及贪婪算法可解决的问题通常大部分都有如下的特性:   (1) 有一个以最优方式来解决的问题。为了构造问题的解决方案,有一个候选的对象的集合:比如不同面值的硬币。   (2) 随着算法的进行,将积累起其它两个集合:一个包含已经被考虑过并被选出的候选对象,另一个包含已经被考虑过但被丢弃的候选对象。   (3) 有一个函数来检查一个候选对象的集合是否提供了问题的解答。该函数不考虑此时的解决方法是否最优。   (4) 还有一个函数检查是否一个候选对象的集合是可行的,也即是否可能往该集合上添加更多的候选对象以获得一个解。和上一个函数一样,此时不考虑解决方法的最优性。   (5) 选择函数可以指出哪一个剩余的候选对象最有希望构成问题的解。   (6) 最后,目标函数给出解的值。   为了解决问题,需要寻找一个构成解的候选对象集合,它可以优化目标函数,贪婪算法一步一步的进 行。起初,算法选出的候选对象的集合为空。接下来的每一步中,根据选择函数,算法从剩余候选对象中选出最有希望构成解的对象。如果集合中加上该对象后不可 行,那么该对象就被丢弃并不再考虑;否则就加到集合里。每一次都扩充集合,并检查该集合是否构成解。如果贪婪算法正确工作,那么找到的第一个解通常是最优 的 四、实验目的: 实验项目一: 加深对分治和递归算法原理及实现过程的理解。 实验项目二: 加深对动态规划算法原理及实现过程的理解。 实验项目三: 加深对贪心算法原理及实现过程的理解。 五、实验内容: 实验项目一: 利用合并排序算法对字符数组a[]={12,1,8,5,6,4,5}从小到大排序。 (2)用分治算法实现元素选择。 使用分治算法编程,求解线性序列中第k小元素。 A.给定线形序列集中n个元素和一个整数k,1=k=n。输出这n个元素中第k小元素的值及其位置。 B.简述该算法的原理,步骤。对该算法与直接排序查找进行比较。 C.编写并调试程序 测试要求:元素个数不少于10,分三种情况:k=1,k=n;k=中位数 实验项目二: 用动态规划实现矩阵链乘法问题;用动态规划算法求解最长公共子序列问题。 (1) 现在要求计算一个由8个矩阵组成的乘法,A1*A2* A3*A4* A5*A6* A7*A8。已知矩阵的维数如下,要求给矩阵添上七个括号使得基本乘法运算次数最少,并给出其运算次数。 A1:30*35 A2:35*25 A3:25*20 A4:20*30 A5:30*5 A6:5*30 A7:30*5 A8:5*25 (2) 若给定序列,则另一序列,是X的子序列是指在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有;zj=xij。例如Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}.给定2个序列X,Y,当另序列Z即是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。 给定2个序列X={B,C,D,D,A,C,B},Y={C,D,B,B,A,B},编写动态规划算法找出X,Y的最长公共子序列。 实验项目三: (1) 理解Dijkstra算法的原理,用Dijkstra算法编程找出从s到t的最短路径,图中每条边旁边的数字为此边的长度。 (2) 根据给定的N个权值构造一棵哈夫

文档评论(0)

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

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

1亿VIP精品文档

相关文档