码迷,mamicode.com
首页 > 其他好文 > 详细

最长公共子序列(LCS)

时间:2018-10-09 18:11:30      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:应用   技术分享   因此   color   示例   字符   alt   分享图片   cab   

一、最长公共子序列介绍

  一个序列的子序列是在该序列中去若干元素后得到的序列。例如:“ABCD”和“BDF”都是“ABCDEFG”的子序列。

  最长公共子序列(Longest Common Subsequence,简写LCS)问题:给定两个序列X和Y,求X和Y长度最大的公共子序列。例如:X=“ABBCBDE”, Y="DBBCDB", LCS(X,Y)="BBCD"

  应用场景:字符串相似度比对、基因比对

1、LCS的最优子结构原理

  令X=<x1,x2,...,xm>和Y=<y1,y2,...,yn>为两个序列,Z=<z1,z2,...,zk>为X和Y的任意LCS。

  1.如果xm=yn,则zk=xm=yn且Zk-1是Xm-1和Yn-1的一个LCS。

  2.如果xm≠yn,那么zk≠xm意味着Z是Xm-1和Y的一个LCS。

  3.如果xm≠yn,那么zk≠yn意味着Z是X和Yn-1的一个LCS。

2、最优解的递推式

  技术分享图片

  c[i,j]表示Xi和Yj的LCS长度。

 二、示例及解析

  例如:要求a="ABCBDAB"与b="BDCABA"的LCS:

  由于最后一位"B"=?"A",因此LCS(a,b)应该来源于LCS(a[:-1],b)与LCS(a,b[:-1])中的一个。意思就是最后一位不一样,要不去除a的最后一位,要不去除b的最后一位。

  技术分享图片

 

最长公共子序列(LCS)

标签:应用   技术分享   因此   color   示例   字符   alt   分享图片   cab   

原文地址:https://www.cnblogs.com/xiugeng/p/9761535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!