最长公共子序列(LCS)问题

原创 2012年03月26日 20:14:05

         最长公共子序列也称作最长公共子串,英文缩写是LCS(Longest Common Subsequence)。其定义是:一个序列S,如果分别是两个或多个已知序列的子序列,且是符合此条件的子序列中最长的,则称S为已知序列的最长公共子序列。

        关于子序列的定义通常有两种方式,一种是对子序列没有连续的要求,其子序列的定义就是原序列中删除若干元素后得到的序列。另一种是对子序列有连续的要求,其子序列的定义是原序列中连续出现的若干个元素组成的序列。求解子序列是非连续的最长公共子序列问题是一个十分实用的问题,它可以描述两段文字之间的“相似度”,即它们的雷同程度,从而能够用来辨别抄袭。


有两篇博客对这个问题的算法做了很好的分析

一、这篇博客讲得浅显易懂

非连续:http://blog.csdn.net/orbit/article/details/6717125

连续:http://blog.csdn.net/orbit/article/details/6850706

二、这篇博客讲得很专业

http://www.cppblog.com/superKiki/archive/2010/05/08/114836.html

最长公共子序列(LCS问题)的DP解法

呃。。大一做过,毕竟是ACM入门DP题,但是大三的我已然忘了具体咋做了,只记得是DP,面试常会问这个问题,所以有必要搞明白。 题目描述略。 解题思想就是DP,DP无外乎需要知道两个东西,一是状态是什么...
  • u013303743
  • u013303743
  • 2016年04月23日 10:40
  • 834

动态规划解最长公共子序列问题(LCS)C语言加注释

【问题】 求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X=“x0,x1,...
  • baidu_20363843
  • baidu_20363843
  • 2015年10月27日 14:56
  • 3232

最长公共子序列(LCS问题)

先简单介绍下什么是最长公共子序列问题,其实问题很直白,假设两个序列X,Y,X的值是ACBDDCB,Y的值是BBDC,那么XY的最长公共子序列就是BDC。这里解决的问题就是需要一种算法可以快速的计算出这...
  • u011324138
  • u011324138
  • 2013年08月06日 20:51
  • 2313

Java-LCS最长公共子序列(动态规划实现)

一个序列S任意删除若干个字符得到新序列T,则T称为S的子序列。若两个序列X和Y的公共子序列中,长度最长的那个字序列称为X和Y的最长公共子序列(LCS)。 Xi表示字符串的前i个字符,Yj表示字符串的前...
  • qq_30507287
  • qq_30507287
  • 2016年10月16日 14:40
  • 2511

最长公共子序列理解心得之C/C++

今天在在做腾讯2017年暑期实习生编程题的时候遇到的求最长回文串个数,其中遇到了一个知识点,求最长公共子序列。 下面看一下百科给出的解释: 再看看算法与应用: 求公共子序列举例:...
  • no_sying_nothing
  • no_sying_nothing
  • 2016年08月12日 01:22
  • 651

算法学习 - 最长公共子序列(LCS)C++实现

最长公共子序列最长公共子序列的问题很简单,就是在两个字符串中找到最长的子序列,这里明确两个含义: 子串:表示连续的一串字符 。 子序列:表示不连续的一串字符。 所以这里要查找的是...
  • chenfs1992
  • chenfs1992
  • 2015年08月25日 23:30
  • 3977

Java实现算法导论中最长公共子序列(LCS)动态规划法

1、问题: 求两字符序列的最长公共字符子序列LCS 2、求解:动态规划法                      动态规划的思路就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是...
  • fjssharpsword
  • fjssharpsword
  • 2016年12月15日 17:49
  • 2258

算法导论-----最长公共子序列LCS(动态规划)

目录 一.概念梳理 二.最长公共子序列解决方案 方案1:蛮力搜索策略 方案2:动态规划策略 三、C代码实现 实现1 实现2(空间优化) 一.概念梳理  1. 子序列(subsequence): ...
  • so_geili
  • so_geili
  • 2016年12月19日 22:51
  • 2792

动态规划解决最长公共子序列LCS问题

子序列的定义:给定一个序列X=,另一个序列Z=,满足如下条件时称为X的子序列, 即存在一个严格递增的X的下标序列和所有的j=1,2,...,k,满足Zj=X[ik]下标序列,使得它们都相等。 如是X=...
  • liuchenjane
  • liuchenjane
  • 2016年09月22日 09:53
  • 437

LCS—记录,回溯输出最长公共子序列

输入 第1行:字符串A 第2行:字符串B (A,B的长度 输出 输出最长的子序列,如果有多个,随意输出1个。 输入示例 ab...
  • zwj1452267376
  • zwj1452267376
  • 2016年02月10日 20:13
  • 1215
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最长公共子序列(LCS)问题
举报原因:
原因补充:

(最多只允许输入30个字)