




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析上机报告姓名:学号:日期:上机题目:最长公共子序列算法实验环境:CPU: 2.10GHz ; 内存: 6G ; 操作系统:Win7 64位 ;软件平台:Visual Studio2008 ;一、算法设计与分析:题目一:计算最优值给定两个序列X=x1,x2, .,xm 和Y=y1,y2, .,yn ,找出X和Y的最长公共子序列。一个给定序列的子序列是在该序列中删去若干个元素后得到的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。例如,若X=A,B,C,B,D,A,B,Y= B,D,C,A,B,A,序列B,C,A是X和Y的一个公共子序列,序列B,C,B,A也是X和Y的一个公共子序列,且为最长公共子序列。最长公共子序列问题具有最优子结构性质。设序列X= x1,x2, .,xm 和Y= y1,y2, .,yn 的最长公共子序列为Z= z1,z2, .,zk,则(1) 若xm =yn ,则zk =xm =yn ,且Zk-1 是Xm-1 和Yn-1 的最长公共子序列。(2) 若xm !=yn 且zk !=xm ,则Z是Xm-1 和Y的最长公共子序列。(3) 若xm !=yn 且zk !=yn ,则Z是X和Yn-1 的最长公共子序列。其中,Xm-1 = x1,x2, .,xm-1 ;Yn-1 = y1,y2, .,yn-1;Zk-1 = z1,z2, .,zk-1。解法: 引进一个二维数组c,用cij记录Xi与Yj 的LCS 的长度,bij记录cij是通过哪一个子问题的值求得的,以决定搜索的方向。我们是自底向上进行递推计算,那么在计算ci,j之前,ci-1j-1,ci-1j与cij-1均已计算出来。此时我们根据Xi = Yj还是Xi != Yj,就可以计算出cij。问题的递归式写成:题目二:构造最长公共子序列 由算法LCS_LENGTH计算得到的数组b可用于快速构造序列X=和Y=的最长公共子序列。首先从bm,n开始,沿着其中的箭头所指的方向在数组b中搜索。当bi,j中遇到时,表示Xi与Yj的最长公共子序列是由Xi-1与Yj-1的最长公共子序列在尾部加上xi得到的子序列;当bi,j中遇到时,表示Xi与Yj的最长公共子序列和Xi-1与Yj的最长公共子序列相同;当bi,j中遇到时,表示Xi与Yj的最长公共子序列和Xi与Yj-1的最长公共子序列相同。二、核心代码:题目一:计算最优值/b = 0左 1左上 2上void LCS(char X,int SizeX,char Y,int SizeY,int (*c) SIZE_Y + 1 ,int (*b)SIZE_Y+1 )int i,j;for(i=0;i= SizeX;i+)ci0 = 0;for(j=0;j= SizeY;j+)c0j = 0;for(i=1;i=SizeX;i+)for(j=1;j= cij-1 )cij = ci-1j;bij = 2;elsecij = cij-1;bij = 0;题目二:构造最长公共子序列void PrintLCS( char X, int (*b)SIZE_Y+1, int i, int j )if( 0 = i | 0 = j )return;if( 1 = bij )PrintLCS(X,b,i-1,j-1);cout Xi-1;elseif( 2 = bij )PrintLCS(X,b,i-1,j);elsePrintLCS(X,b,i,j-1);三、结果与分析:由于每次调用至少向上或向左(或向上向左同时)移动一步,故最多调用(m + n)次就会遇到i = 0或j = 0的情况,此时开始返回。返回时与递归调用时方向相反,步数相同,故算法时间复杂度为(m + n)。附录(源代码)算法源代码(C+描述)#include using namespace std;#define SIZE_X 7#define SIZE_Y 6/b = 0左 1左上 2上void LCS(char X,int SizeX,char Y,int SizeY,int (*c) SIZE_Y + 1 ,int (*b)SIZE_Y+1 )int i,j;for(i=0;i= SizeX;i+)ci0 = 0;for(j=0;j= SizeY;j+)c0j = 0;for(i=1;i=SizeX;i+)for(j=1;j= cij-1 )cij = ci-1j;bij = 2;elsecij = cij-1;bij = 0;void PrintLCS( char X, int (*b)SIZE_Y+1, int i, int j )if( 0 = i | 0 = j )return;if( 1 = bij )PrintLCS(X,b,i-1,j-1);cout Xi-1;elseif( 2 = bij )PrintLCS(X,b,i-1,j);elsePrintLCS(X,b,i,j-1);int main()char Y = B,D,C,A,B,A,0;char X = A,B,C,B,D,A,B,0;cout X= X endlY= Y endlXY的最长公共子序列为:endl;int bSIZE_X+1SIZE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个性化定制离婚协议书模板
- 物流运输合同签订与仓储管理流程图
- 离异父母子女抚养费增加及支付金额调整协议
- 物业分公司7月物业费收缴及使用专项合同
- 离婚协议签订时双方子女国际交流及留学协议
- 煤炭运输合同范本:煤炭行业运输安全标准
- 房地产销售团队核心信息保密及竞业限制合同样本
- 讲师礼仪培训纲要
- 生字记得快课件
- 乳房标本解剖课件
- 地铁轨道安全培训报道课件
- (2025秋新版)二年级上册道德与法治全册教案
- 老挝药品注册管理办法
- 2025年社工工作者考试真题及答案
- 建设工程项目协同作业方案
- 同城理发店转租合同范本
- 问题解决策略:反思 课件 北师大版数学八年级上册
- 2025年国防竞赛题库及答案
- 鹿寨县城南水厂寨沙分厂建设项目环评报告
- 森林火灾应急处置
- GB/T 45972-2025装配式建筑用混凝土板材生产成套装备技术要求
评论
0/150
提交评论