




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.3 最长公共子序列最长公共子序列n定义:一个给定序列的定义:一个给定序列的子序列子序列是在该序是在该序列中删去若干元素后得到的序列。列中删去若干元素后得到的序列。找出找出a, b, c, d的所有子序列的所有子序列思考:有思考:有n个元素的序列至多有多少个子序个元素的序列至多有多少个子序列?列?2n(包括空)(包括空)说说“至多至多”是因为子序列可能相等(但是因为子序列可能相等(但具有不同下标序列)具有不同下标序列)公共子序列公共子序列n定义:如果序列定义:如果序列z既是序列既是序列x的子序列又的子序列又是序列是序列y的子序列,则称的子序列,则称z是是x和和y的公的公共子序列。共子序列。n
2、找出找出x = (a, b, c, d, a, b), y = (b, d, c, a, b, a)的所有公共子序列。的所有公共子序列。最长公共子序列最长公共子序列n找出找出x和和y的最长公共子序列。的最长公共子序列。n对于任意给定的对于任意给定的x和和y,它们的最长公共,它们的最长公共子序列唯一吗?举例说明。子序列唯一吗?举例说明。n不一定。如不一定。如a, b与与b, an本节的问题是只找出一个最长公共子序本节的问题是只找出一个最长公共子序列。列。最长公共子序列的结构最长公共子序列的结构设序列设序列x=x1, x2, , xm, y=y1, y2, , yn, z=z1, z2, , zk
3、,则则(1) 若若xm = yn, 则则zk - 1 是是xm 1和和yn 1的的最长公共子序列;最长公共子序列;如:如:x = , c, y = , c, 则则z = , c最长公共子序列的结构最长公共子序列的结构(续续)(2)若若xm yn, 且且zk xm,则,则z是是xm 1和和y的最长公共子序列;的最长公共子序列;如:如:x = , c, y = , b, zk c, 则则在计算最长公共子序列时,可不考虑在计算最长公共子序列时,可不考虑x的最后一个元素的最后一个元素c最长公共子序列的结构最长公共子序列的结构(续续)(3)若若xm yn, 且且zk yn,则,则z是是x和和yn 1的最
4、长公共子序列的最长公共子序列如:如:x = , c, y = , b, zk b, 则则在计算最长公共子序列时,可不考在计算最长公共子序列时,可不考虑虑y的最后一个元素的最后一个元素b最长公共子序列的结构最长公共子序列的结构(续续)n两个序列的最长公共子序列包含了两个序列的最长公共子序列包含了这两个序列的前缀的最长公共子序这两个序列的前缀的最长公共子序列,因此,最长公共子序列问题具列,因此,最长公共子序列问题具有最优子结构性质。有最优子结构性质。讨论讨论可否根据序列的第可否根据序列的第1个元素来重述本问个元素来重述本问题?这样做有什么优缺点?题?这样做有什么优缺点?可以。这样做不利于描述,如前
5、面可以。这样做不利于描述,如前面xm1可以方便地表示可以方便地表示x前前m 1 个元素,改个元素,改后就比较麻烦。从递归的角度来看,后就比较麻烦。从递归的角度来看,一般也是从后面增减元素。一般也是从后面增减元素。n当当xm = yn时,有一个子问题,即时,有一个子问题,即 :找出:找出xm 1和和yn 1的最长公共子序列的最长公共子序列n当当xm yn时,有两个子问题,即时,有两个子问题,即 (1)找出找出xm 1和和y的最长公共子序列,的最长公共子序列, (2)找出找出x和和yn 1的的最长公共子序列。而这两个子问题都包含了最长公共子序列。而这两个子问题都包含了同一个子问题同一个子问题(xm
6、 1, yn1) 。 因此,本问题因此,本问题满足子问题重叠性质。满足子问题重叠性质。问题分析问题分析令令cij记录记录xi和和yj的最长公共子序列的长度,的最长公共子序列的长度,则有则有 0 i = 0, j = 0cij = ci - 1j - 1 + 1 xi = yj maxcij - 1 , ci - 1j xi yj问题分析问题分析(续续)n显然不应以递归方式(自顶向下,即先考虑显然不应以递归方式(自顶向下,即先考虑最后一个字符)设计算法,而应设计动态规最后一个字符)设计算法,而应设计动态规划算法,即从第一个字符开始考虑。划算法,即从第一个字符开始考虑。问题分析问题分析(续续)计算
7、最优值计算最优值程序跟踪程序跟踪x = a c b d y = a b d a c b00000011110111101222012330000001331022220213302213ijxi=yj ci-1j=cij-111y2n3n4y21ny2ny补充习题补充习题n1. x=b, c, a, d y=c, a, b, d,求x与y的最长公共子序列,并画出数组c与b. c b00000000110111101222012230000002213013220213302221i:j:补充习题补充习题(答案答案)n1. x=b, c, a, d y=c, a, b, d,求x与y的最长公共子序列,并画出数组c与b. c b00000000110111101222012230000002213013220213302221i: 1 2 3j: 1 2 3 4 1 2 3 4 1 2 3 4讨论讨论结构化与面向对象程序设计的联系与区别?结构化与面向对象程序设计的联系与区别?面向对象的局部来看是结构化的。面向对象的局部来看是结构化的。结构化的基本思想是结构化的基本思想是“自顶向下,逐步求精自顶向下,逐步求精”,面向对象的基本意图是提高软件模块的面向对象的基本意图是提高软件模块的复用性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大唐电力盘锦市2025秋招采矿工程专业面试追问及参考回答
- 湘潭市中石油2025秋招面试半结构化模拟题及答案油气储运与管道岗
- 国家能源凉山自治州2025秋招面试专业追问及参考电气工程岗位
- 中国广电天水市2025秋招笔试行测题库及答案互联网运营
- 中国移动汕头市2025秋招笔试题库含答案
- 茂名市中石油2025秋招笔试模拟题含答案市场营销与国际贸易岗
- 国家能源惠州市2025秋招心理测评常考题型与答题技巧
- 临沂市中石化2025秋招笔试模拟题含答案财务与审计岗
- 国家能源宿迁市2025秋招机械工程类面试追问及参考回答
- 国家能源南平市2025秋招心理测评常考题型与答题技巧
- 工业机器人离线编程与应用-认识FANUC工业机器人
- JCT 932-2013 卫生洁具排水配件
- 法院宣传稿范文大全500字
- 3.2.2新能源汽车电机控制器结构及工作原理课件讲解
- 机场摆渡车司机合同
- 【正版授权】 ISO 9227:2022/Amd 1:2024 EN Corrosion tests in artificial atmospheres - Salt spray tests - Amendment 1: Footnote of Warning
- JTG-D40-2011公路水泥混凝土路面设计规范
- 夹芯板安装施工工艺方案
- 2024年广东佛山市交通投资集团有限公司招聘笔试参考题库附带答案详解
- 2024年03月广东佛山市顺德区飞鹅永久墓园管理处招考聘用管理员工笔试历年(2016-2023年)真题荟萃带答案解析
- 4岁儿童睡前故事大全
评论
0/150
提交评论