付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、最长公共子序列问题一实验目的:1. 加深对最长公共子序列问题算法的理解,实现最长公共子序列问题的求解算法;2. 通过本次试验掌握将算法转换为上机操作;3. 加深对动态规划思想的理解,并利用其解决生活中的问题。二实验内容:1. 编写算法:实现两个字符串的最长公共子序列的求解;2. 将输入与输出数据保存在文件之中,包括运行时间和运行结果;3. 对实验结果进行分析。三实验操作:1.最长公共子序列求解:将两个字符串放到两个字符型数组中,characterStringl和characterString2,当characterString1m=characterString2m时,找出这两个字符串m之前的
2、最长公共子序列,然后在其尾部加上characterString1m,即可得到最长公共子序列。当characterString1m工characterString2m时,需要解决两个子问题:即找出characterStringl(m-l)和characterString2的一个最长公共子序列及characterStringl和characterString2(m-1)的一个最长公共子序列,这两个公共子序列中较长者即为characterString1和characterString2的一个最长公共子序列。2.动态规划算法的思想求解:动态规划算法是自底向上的计算最优值。计算最长公共子序列长度的动态规
3、划算法LCS-Length以characterString1和characterString2作为输入,输出两个数组result和judgel,其中result存储最长公共子序列的长度,judgel记录指示result的值是由那个子问题解答得到的,最后将最终的最长公共子序列的长度记录到result中。以LCS-Length计算得到的数组judge1可用于快速构造序列最长公共子序列。首先从judgel的最后开始,对judgel进行配对。当遇到时,表示最长公共子序列是由characterStringl(i-l)和characterString2(j-1)的最长公共子序列在尾部加上character
4、Stringl(i)得到的子序列;当遇到“f”时,表示最长公共子序列和characterStringl(i-l)与characterString2(j)的最长公共子序列相同;当遇到“”时,表示最长公共子序列和characterString1(i)与characterString2(j-1)的最长公共子序列相同。如图所示:0i二tl或者j二。1+也吨-1/1i5j>O5ai-bjmaxb-1J,-1JL;Ji5J>0,ai/b|j代码实现:voidLCSLength(char*characterString1,char*characterString2,intlength1,intl
5、ength2,intjudge10000)intresult100100;for(inti=0;i<=length1;i+)resulti0=0;for(intj=1;j<=length2;j+)result0j=0;for(inti=1;i<=length1;i+)for(intj=1;j<=length2;j+)if(characterString1i-1=characterString2j-1)resultij=resulti-1j-1+1;judgeij=0;elseif(resulti-1j>=resultij-1)resultij=resulti-1j
6、;judgeij=1;elseresultij=resultij-1;judgeij=-1;voidLCS(intjudge10000,char*characterString1,intlengthl,intlength2)/得到最长公共子序列if(length1=0|length2=0)return;if(judgelength1length2=0)LCS(judge,characterString1,length1-1,length2-1);record(characterString1length1-1);/存入文件cout<<characterString1length1-
7、1;elseif(judgelength1length2=1)LCS(judge,characterString1,length1-1,length2);elseLCS(judge,characterString1,length1,length2-1);3. 备忘录算法实现:备忘录算法是从顶向下计算最优解的思想,备忘录方法的控制结构与直接递归方法的控制结构相同,但备忘录方法用一个表格来保存已解决的子问题的答案,避免了相同问题的重复求解。代码实现:intsearchLCS(char*characterString1,char*characterString2,intlength1,intleng
8、th2)if(judge2length1length2>-1)returnjudge2length1length2;if(length1=0|length2=0)judge2length1length2=0;elseif(characterString1length1-1=characterString2length2-1)judge2length1length2=searchLCS(characterString1,characterString2,length1-1,length2-1)+1;elsejudge2length1length2=max(searchLCS(charact
9、erString1,characterString2,length1,length2-1),searchLCS(characterString1,characterString2,length1-1,length2);returnjudge2length1length2;intmemorizedLCS(char*characterString1,char*characterString2)intlength1=strlen(characterString1);intlength2=strlen(characterString2);for(inti=1;i<=length1;i+)for(
10、intj=1;j<=length2;j+)judge2ij=-1;returnsearchLCS(characterString1,characterString1,length1,length2);4. 递归法:设有字符串characterStringl和characterString2,当两个数组的对应位置的字符相同时,则直接求解下一个位置,当不同时取两种情况中的最大值。时间复杂度公式:LCSiJ)=bj呵工bj1-fLC5(z+1J+1)m(LCS(iJ4lLCS(i+1J)代码实现:intrecursionLCS(inti,intj,intlength1)if(i>=len
11、gth1|j>=length2)return0;if(characterString1i=characterString2j)return1+recursionLCS(i+1,j+1);elsereturnrecursionLCS(i+1,j)>recursionLCS(i,j+1)?recursionLCS(i+1,j):recursionLCS(i,j+1);5. 穷举法:将数组characterStringl和characterString2两个字符串的所有字串求出,并将这些字串相互比较,直到找的最长公共子序列为止,当字符串的长度很长时,所要求取的子串序列相当多,故所开销的时间最多。四实验结果分析:当输入字符串长度分别为(20,20),(34,78),(98,145)时,在动态规划算法、备忘录算法、递归算法得到的时间分别为(0,0,0),(0,16,22),(0,16,34
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年鞍山市城管协管人员招聘考试备考试题及答案详解
- 2025年江西省景德镇市幼儿园教师招聘考试试题及答案解析
- 2026年IT专业培训行业分析报告及未来发展趋势报告
- 2026年豆类杂粮行业分析报告及未来发展趋势报告
- 2026年台灯软管行业分析报告及未来发展趋势报告
- 2026年特种氧化铝行业分析报告及未来发展趋势报告
- 2026年保温装饰一体化板行业分析报告及未来发展趋势报告
- 2026年医用臭氧治疗仪行业分析报告及未来发展趋势报告
- 2026年黑加仑饮料行业分析报告及未来发展趋势报告
- 2026年汽车影音设备行业分析报告及未来发展趋势报告
- 2026年公务乘车座次礼仪与司机沟通规范问答
- 2026年北京市西城区高三二模英语试卷(含答案)
- 2026重庆璧山文化旅游产业有限公司面向社会招聘5人备考题库及答案详解(各地真题)
- 济宁市2026届省属公费师范毕业生就业岗位需求备考题库(112个)含答案详解(能力提升)
- 【 道法 】社会主义市场经济体制课件-2025-2026学年统编版道德与法治八年级下册
- 2026届百师联盟高三下学期考前适应性训练(一) 英语试题+答案
- 2026四川三江新能源供应链科技有限责任公司第一批社会招聘7人笔试参考题库及答案解析
- 2026年高校基建处工程管理岗应聘笔试指南及项目流程
- 2026年煤矿采煤工试题及答案
- 2025四川宜宾市科技人才集团有限公司第三批员工招聘10人笔试历年参考题库附带答案详解
- 《马克思主义与社会科学方法论》课件第一讲马克思主义与社会科学方法论导论
评论
0/150
提交评论