实验二最长公共子序列问题

实验二最长公共子序列问题

ID:22281521

大小:65.48 KB

页数:5页

时间:2018-10-28

实验二最长公共子序列问题_第1页
实验二最长公共子序列问题_第2页
实验二最长公共子序列问题_第3页
实验二最长公共子序列问题_第4页
实验二最长公共子序列问题_第5页
资源描述:

《实验二最长公共子序列问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验二最长公共子序列问题一、实验目的:1、理解动态规划算法的概念;2、掌握动态规划算法的基本耍素;3、掌握设计动态规划算法的步骤;4、通过应用范例学4动态规划算法的设计技巧与策略;二、实验内容及要求:1、使用动态规划算法解决最长公共子序列问题:给定两个序列X={xl,x2,…,xmWQY={yl,y2,…,yn},找出X和Y的最长公共子序列。。2、通过上机实验进行算法实现。3、保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。三、实验原理:动态规划(dynamicprogramming)是运筹学的一个分支,是求解决策过程(decisionprocess)最优

2、化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研宄多阶段决策过程(multistepdecisionprocess)的优化问题时,提出了著名的最优化原理(principleofoptimality),把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法动态规划。1957年出版丫他的名著DynamicProgramming,这是该领域的第一本著作。算法总体思想:1)动态规划算法与分治法类似,其基木思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。2)与分治法不

3、同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是独立的。子问题中存在大量的公共子问题,在分治求解过程中被多次重复计算,保存计算结果,为后面的计算直接引用,减少重复计算次数这就是动态规划的基本思想。3)用动态规划算法求解问题,可依据其递归式以自底向上的方式进行计算。在计算过程屮,保存已解决的子问题的答案。每个子问题只计算一次,而在后面需要时只要简单查一下,从而避免大量重复计算,最终得到多项式时间算法。动态规划基本步骤:1)找出最优解的性质,并刻划其结构特征。2)递归地定义最优值。3)以自底向上的方式计算出最优值。4)根据计算最优值时得到的信息,构造最优解。

4、前三个步骤是动态规划算法的基本步骤。在只需求出最优值的情况,步骤四可以省去。若需要求最优解,则必须执行步骤四,根据所记录的信息,快速构造出最优解。四、程序代码:^include^include〈string〉^defineN20usingnamespacestd;intd[N][N];intLCSlength(char*a,char*b,intc[][N]){inti,j;intalen=strlen(a);intblen=strlen(b);for(i=0;i<=alen;i++)c[i][0]=0;for(j=0;j〈=blen;j++)c[0]

5、[j]=0;for(i=1;i<=alen;i++)for(j=1;j〈=blen;j++)==b[j-l])c[i][j]=c[i-l][j-1]+1;elsec[i][j]=c[i][j-l]〉c[i-l][j]?c[i][j_l]:c[i_l][j];returnc[alen][blen];char*LCS(char*s,char*a,char*b){intc[N][M];inti=strlen(a);intj=strlen(b);intk=LCSlength(a,b,c);s[k]=’’;while(k>0){if’(c[i][j]==c[i-l][j])i

6、—;elseif(c[i][j]==c[i][j-l])j—;else{s[—k]=a[i-l];i—;j—;returns;main(){char*s=newchar[N];charsi[N];chars2[N];cout<〈"请输入第一个字符申cin»sl;cmit<〈"请输入第二个字符串:";cin〉〉s2;长度为cout<〈"最长的公共子序列为:〃<〈LCS(s,si,s2)〈<""〈〈LCSlength(sl,s2,d)«endl;deletes;五、结果运行与分析:•C:UsersAdministratorDesktop2.exe*请遺取请-♦.Tr

7、-f.Tr霜列.WS续八人—子继NS^厶意入A-的-®abcdefbcdebcde长度为:口六、心得与体会:本次实验通过动态算法解决最长公共子序列问题,对于求两个序列的一个最长公共子序歹I』,LCSlength算法时间來性为0(alcn^blen),能够得到较满意的错果。但另一个方面,这种算法在对di_l][j]与c[i][j_l]值的比较中忽略了相等的情况,即在两个序列的最长公共子序列不唯一时不可能求出所有的最长公共子序列。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。