算法分析期中试卷.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文档。上传文档
查看更多
算法分析期中试卷

?算法分析?期中考试卷 1、已知如下多段图,请用动态规划方法的向后处理法写出求解此问题的递推公式并完成对各结点的计算。 2、有0-1背包问题如下: N=6,C=20,W={5,3,2,10,4},P={11,8,15,12,18} 用动态规划思想求解最优装包方案。(题目好像有问题,应该是N=5【即有五件物品】,我是根据N= 5计算的。) 解:根据0-1背包的思路,即,一件物品不能够分开,也即是两种情况,1和0。 动态规划的思想是从物品中寻找一个最优值。然后在从剩下的物品中寻找最优值。其思想与贪心算法类似。 3、对于任何正整数n以下算法计算n!. 其时间复杂性几何? 是多项式时间的吗? m=1 For i=1 to n do m=m*i Endfor Output m 解答:时间复杂度为n。 4、用贪心算法求解背包问题。 M=15的背包,4件物品的重量为:(W1,W2,W3,W4)=(2,4,9,6),物品的价值为(P1,P2,P3,P4)=(10,10,12,18)。 解:贪心算法解背包问题的基本步骤是:首先计算每种物品的单位重量的价值。如题可以得出4件物品的单位价值为(V1,V2,V3,V4)=(5,5/2,4/3,3)。然后依据贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。设背包实际物品的重量为M(最开始为0)。首先选择单位重量价值最高的物品1放入包中,即M=2,接着再放入物品4,则M=8,再放入物品2,则可得M=12,这是,就不能把物品3全部放入背包中,只能放3个重量的物品3。这样,就把背包装满了,装入的物品重量为(W!,W2,W3,W4)=(2,4,3,6)。装满后背包的总价值为10+10+4/3*3+18=42。 两个字符序列x:{A,C,B,D,C,B},y:{A,D,C,A,B,A}用动态规划算法求出二者的最长公共子序列。 动态规划问题的步骤 第一节、问题描述 什么是最长公共子序列呢?好比一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则S 称为已知序列的最长公共子序列。 举个例子,如:有两条随机序列,如 1 3 4 5 5 ,and 2 4 5 5 7 6,则它们的最长公共子序列便是:4 5 5。 第二节、LCS问题的解决思路 穷举法 解最长公共子序列问题时最容易想到的算法是穷举搜索法,即对X的每一个子序列,检查它是否也是Y的子序列,从而确定它是否为X和Y的公共子序列,并且在检查过程中选出最长的公共子序列。X和Y的所有子序列都检查过后即可求出X和Y的最长公共子序列。X的一个子序列相应于下标序列{1, 2, …, m}的一个子序列,因此,X共有2m个不同子序列(Y亦如此,如为2^n),从而穷举搜索法需要指数时间(2^m * 2^n)。 动态规划算法 事实上,最长公共子序列问题也有最优子结构性质。 记: Xi=﹤x1,?,xi﹥即X序列的前i个字符 (1≤i≤m)(前缀) Yj=﹤y1,?,yj﹥即Y序列的前j个字符 (1≤j≤n)(前缀) 假定Z=﹤z1,?,zk﹥∈LCS(X , Y)。 若xm=yn(最后一个字符相同),则不难用反证法证明:该字符必是X与Y的任一最长公共子序列Z(设长度为k)的最后一个字符,即有zk = xm = yn 且显然有Zk-1∈LCS(Xm-1 , Yn-1)即Z的前缀Zk-1是Xm-1与Yn-1的最长公共子序列。此时,问题化归成求Xm-1与Yn-1的LCS(LCS(X , Y)的长度等于LCS(Xm-1 , Yn-1)的长度加1)。 若xm≠yn,则亦不难用反证法证明:要么Z∈LCS(Xm-1, Y),要么Z∈LCS(X , Yn-1)。由于zk≠xm与zk≠yn其中至少有一个必成立,若zk≠xm则有Z∈LCS(Xm-1 , Y),类似的,若zk≠yn 则有Z∈LCS(X , Yn-1)。此时,问题化归成求Xm-1与Y的LCS及X与Yn-1的LCS。LCS(X , Y)的长度为:max{LCS(Xm-1 , Y)的长度, LCS(X , Yn-1)的长度}。 由于上述当xm≠yn的情况中,求LCS(Xm-1 , Y)的长度与LCS(X , Yn-1)的长度,这两个问题不是相互独立的:两者都需要求LCS(Xm-1,Yn-1)的长度。另外两个序列的LCS中包含了两个序列的前缀的LCS,故问题具有最优子结构性质考虑用动态规划法。 也就是说,解决这个LCS问题,你要求三个方面的东西:1、LCS(Xm-1,Yn-1)+1;2、LCS(Xm-1,Y),LCS(X,Yn-1);3、max{LCS(Xm-1,Y),LCS(X,Yn-1)}。 行文至此,其实对这个LCS的动

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档