算法设计-最长公共子序列
9页1、最长公共子序列(LCS)算法一 算法要求及分析1. 算法要求:利用bi,j,设计一个算法求出全部的LCS;利用”会计方法”,分析所编算法的时间复杂度的最坏情况。 2. 算法分析:该部分思路同课件二 算法详细设计为了求出全部的LCS,需要设计两个功能函数:LCS_L和LCS_Output,函数LCS_L实现计算LCS长度及每个子问题的由来;函数LCS_Output用递归方法实现输出所有LCS。具体设计实现思路:1. 声明全局变量 二维动态数组C和b。数组C记录所要求的LCS的长度;数组b记录Ci,j是通过哪一个子问题的值求得的。定义枚举类型记录不同的遍历方向。2. 用动态规划法实现功能函数LCS_L,得出数组C和b。函数实现思路:首先动态分配和初始化二维数组C和b,然后计算出C和b。根据Xi和Yj的关系,计算得出Ci,j:若Xi=Yj,则执行Ci,jCi-1,j-1+1且bij=ual;若Xi!=Yj,则分为三种情况: 若Ci-1,jCi,j-1则Ci,j取Ci-1,j且bij=up;若Ci-1,jCi,j-1则Ci,j取Ci,j-1且bij=le;若Ci-1,j=Ci,j-1则Ci,j
2、取Ci-1,j且bij=uol;3. 根据C和b编写输出函数LCS_Output输出所有的LCS。函数实现思路:设置变量cur_len记录当前的数组下标,变量len保存当前LCS数组的元素个数。依次扫描二维数组b,从最后一个开始,根据b的值来判断递归方向:当b的值是ual时,LCS数组保存当前字符,len+,沿对角线递归(递归完成要回溯);len等于LCS的长度时即找到一个LCS序列并输出;当b的值是up时,向上递归;当b的值是le时,向左递归;当b的值是uol时,要找出所有的LCS,故既要向左也要向上递归。4. 主函数给出不同的测试数据输出相应的最长公共子序列长度和所有的最长公共子序列。三 算法流程图开始1. 功能函数LCS_L详细流程图开始动态分配二维数组C和b定义int型变量i,j初始化数组C的第0行和第0列 i m ?N j =0 & j=0?N Ylen当前值等于LCS的长度 ?输出一个LCSY Nbij = ual ? Y记录当前值;利用回溯方法,使i-1,j-1递归功能函数LCS_Output; Nbij = up ? Y使i-1递归调用功能函数LCS_Output;bi
3、j = le ? N使j-1递归调用功能函数LCS_Output;Y N使i-1递归函数LCS_Output;使j-1递归函数LCS_Output; 结束四 测试结果通过四组数据(见程序)测试均得到正确结果,截图如下:五 分析和总结1. 结果分析:第一组数据为课件上的例题,结果正确;第二组数据为无最长公共子序列例题,结果正确;第三组数据为较长较多的公共子序列例题,结果正确;第四组数据为一个但多次有重复的最长公共子序列例题,结果正确。2. 时间复杂度分析:显然用于求解出数组C和b的功能函数LCS_L时间复杂度O(mn);由功能函数LCS_Output可知,求出所有的LCS实际上根据搜索不同的方向递归遍历出所有符合要求的序列,故时间复杂度取决于遍历的路径数。遍历的路径数目分为:最好情况下,即m=n并且一直沿着对角线方向搜索,时间复杂度为O(n);最坏的情况下,即两个序列不存在最长公共子序列,此时数组C所有值为0,数组b所有的值都为uol(向上或者向左搜索)。最坏情况下的时间复杂度即是求出从点S(m,n)到i=0或者j=0(i=0且j=0除外)的所有的路径。Q(0,n) S(m,n)Q(0,
《算法设计-最长公共子序列》由会员大米分享,可在线阅读,更多相关《算法设计-最长公共子序列》请在金锄头文库上搜索。
2022年学校食品安全工作计划(精选3篇)
航空材料技术服务项目申请报告参考模板
关于学校自我鉴定模板汇总七篇
电大《传感器与检测技术》试题及答案小抄参考
苏教版小学六年级语文下册第5单元试卷及答案
早退的检讨书
工业园人力资源部经理岗位说明书
小学数学三年级下册第六单元试卷
工厂转让合同范本(六篇)
2023年河北省廊坊市香河县淑阳镇新华社区工作人员(综合考点共100题)模拟测试练习题含答案
2022年抢抓机遇求真务实
小学一年级语文教案春到梅花山教学设计一
融资借款合同经典版(8篇)
人事行政管理工作经验心得
2023年幼儿园中班保育员工作计划标准模板(五篇).doc
运输服务投资项目可研报告
办公自动化及其他设备询价采购文件
2022年元旦国旗下讲话喜迎新年 畅想未来
2023年最新版离婚协议书电子版(三篇)
青年中国说演讲稿
2022-07-25 20页
2022-10-13 14页
2023-11-08 26页
2023-10-04 5页
2023-03-28 4页
2024-01-30 7页
2022-11-18 55页
2023-07-26 22页
2023-04-20 2页
2023-06-04 4页