动态规划算法设计与应用.docVIP

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

实验报告 课程 算法设计与分析实验 实验名称 动态规划算法设计与应用 第 1 页 一、实验目的 1.加深对动态规划算法的基本原理的理解,掌握用动态规划方法求解最优化问题的方法步骤及应用; 2.用动态规划设计整数序列的最长递增子序列问题的算法,分析其复杂性,并实现; 3.用动态规划设计求凸多边形的三角剖分问题的算法,分析其复杂性,并实现。 4.选做题:用动态规划设计求解0/1背包问题的算法,分析其复杂性,并实现。 二、实验内容 (一) 最长递增子序列问题 1.问题描述 求一个由n个整数组成的整数序列的最长递增子序列。一个整数序列的递增子序列可以是序列中非连续的数按照原序列顺序排列而成的。 最长递增子序列是其递增子序列中长度最长的。 2. 具体要求(若在ACM平台上提交程序,必须按此要求)――平台上1700题 输入:输入的第一行是一个正整数n,表示测试例个数。接下来几行是n个测试例的数据,每个测试例的数据由两行组成,其中第一行为一个正整数k (k=500),表示整数序列的长度,第二行给出整数序列,整数之间用一个空格隔开。(设给出的每个整数序列的最长递增子序列都是唯一的。) 输出:对于每个测试例输出两行,第一行为最长递增子序列的长度,第二行为最长递增子序列,整数之间用一个空格隔开。两个测试例的输出数据之间用一个空行隔开,最后一个测试例后无空行。 3. 测试数据 输入:3 5 3 1 4 2 3 6 1 3 9 5 2 6 20 1 2 7 13 3 5 10 24 12 4 9 16 53 6 83 8 23 11 31 47 输出:3 1 2 3 4 1 3 5 6 10 1 2 3 5 10 12 16 23 31 47 4. 设计与实现的提示 (1) 寻找最优子结构、写出递归方程是问题的关键。 (2) 以Ai为末元素的最长递增子序列S(i)),等于以使S(j)i), 最大的那个Aj为末元素的递增子序列最末再加上Ai;如果这样的元素不存在,那么Ai自身构成一个长度为1的以Ai为末元素的递增子序列。以Ai为末元素的最长递增子序列 (n=500),表示凸多边形的顶点个数;第二行含2n个实数x1 , y1 , x2 , y2 , …xn , yn ,按顺时针方向依次给出n个顶点的坐标值(xi, yi) i=1, 2, …, n,整数之间用一个空格隔开。 输出:对于每个测试例输出一行,含一个实数(精确到小数点后三位),表示最优三角剖分的n-3条弦的长度之和。两个测试例的输出数据之间用一个空行隔开,最后一个测试例后无空行。 3. 测试数据 输入: 2 6 1 2 2 1.5 2 0.5 1 0 0 0.5 0 1.5 9 723 1220 463 1074 370 842 317 534 524 192 992 87 1378 355 1683 855 1301 1131 输出: 5.606 4928.722 4. 设计与实现的提示 (1) 凸(n+1)边形的最优三角剖分是该凸多边形的所有三角剖分中弦长最短的那个剖分。 (2) 本题与课本7.3节中的矩阵链相乘问题非常相似。寻找最优子结构、写出递归方程是问题的关键,注意递归方程的参数的设置。 (3) 将凸(n+1)边形三角剖分时,注意弦长不要重复计算。 5. 扩展内容 本题只要求计算出最优值。如果要求最优解,在求最优值过程中,要记录下改最优值对应的三角剖分的信息。 (三) 选做题――0/1背包问题 1. 问题描述 设有一个容量为C的背包,n个物品的集合U={u1, u2, …, un},物品uj的体积和价值分别为sj和vj,C, sj, vj都是正整数。在U中选择物品装入背包,使得装入背包的物品总价值最大。设每种物品或完全装入或完全不装入背包。 2. 具体要求 输入:输入的第一行是一个正整数m,表示测试例个数,接下来几行是m个测试例的数据。每个测试例的数据由三行组成,第一行含两个正整数n和C,其中, n (n=100)表示给定的是n个物品的集合U={u1, u2, …, un},C(C=5000)表示背包的容量;第二行含n个整数s1 , s2 , …sn,表示n个物品的体积;第三行含n个整数v1 , v2 , …vn,表示n个物品的价值,整数之间用一个空格隔开。 输出:对于每个测试例输出2行数据,其中,第一行含一个整数,表示装入背包物品的最大总价值;第2行含n个整数x1 , x2 , …xn,表示u1, u2, …, un 这n个物品是否放入背包。其中xi ={1, 0} , (i=1,2, …,n)。 如果xi =1,表示物品ui放入背包;如果xi =0,表示物品ui不放入背包。每个xi之间用一个空格隔开,两个测试例的输出数据之间用一个空行隔开

文档评论(0)

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

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

1亿VIP精品文档

相关文档