最长公共子序列
来源:互联网 发布:全国城市mysql数据库 编辑:程序博客网 时间:2024/06/06 02:40
## 问题描述 ##
给定两个序列X={x1,x2,x3,…xm};y={y1,y2,y3,…yn}求X和Y公共最长子序列。本节将展示如何用动态规划方法高效地求解LCS问题.
## 步骤一 ##
刻画最长公共子序列的特征,如果用暴力方法求解LCS问题,就要穷举X的所有子序列,对每个子序列检查它是否也是Y的子序列,记录找到的最长子序列,所以呢,X有2的m次方个子序列,因此暴力方法的运行时间为指数阶,对较长的序列不适用
我们也可以将其认为具有最优子结构的问题
## 一个递归解 ##
在求X={x1,x2,x3,… xm}和Y={y1,y2,y3,…yn};的一个LCS时,我们需要求解一个或两个子问题,如果Xm=Yn,那么我们应该求解X(m-1)和Y(n-1)的一个LCS,将这个数据追加到LCS的末尾,
但是如果X序列和Y序列不相同的话,我们需要解决的解释两个子问题。即X(m-1)和Y以及Y(n-1)和X。在求得的的LCS结果中取最长,但是问题是在这些子问题中,有很多交叉。
## 计算LCS的长度 ##
伪代码如下:
这是我画的理解图:
## 构造LCS ##
我们可以利用LCS-LENGTH()函数返回的表b快速构造LCS
其中i代表X.length,j代表Y.length
## 发个博客累了一个下午,自己给自己一个赞吧。。。 ##
0 0
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列...
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- Crontab 定时器的使用
- git常用命令
- 蓝桥杯OJ刷题日记——09-基础练习 特殊回文数
- C++终极复习篇(一)----HelloWorld
- 上转型 与 下转型的实例
- 最长公共子序列
- 部落卫队问题
- 2015河南科技学院高校CSDN俱乐部--PPT操作讲解
- 移动应用效率对比
- iOS 7: 使用Base64编解码NSData和NSString对象
- 光标 与 输入法 之 android:imeOptions属性
- Oracle环境变量NLS_LANG
- Objective-C NSArray & NSMutableArray
- Spark Scala 范例