【问题标题】:How to solve LCS(Longest Common Subsequence) with a gap condition如何解决具有间隙条件的 LCS(最长公共子序列)
【发布时间】:2013-10-08 12:09:40
【问题描述】:

我知道一般的 LCS 问题和算法。

是这样的:

LCS(Xi, Yj) = [0 (i = 0 or j = 0)
           or LCS(Xi-1, Yj-1) + 1 (xi = yj)
           or max(LCS(Xi, Yj-1), LCS(Xi-1, Yj)) (xi != yj)]

但是如果我们添加一个间隙条件呢?

例如:

String A is cttauaucagu
String B is cautauatcgu

if no gap condition
lcs = cauauagu

if gap = 1 (lcs gap is under 1)
lcs = auaua

if gap = 0 (lcs gap is under 0)
lcs = taua

视觉表现:

我该如何解决这个问题?

如何制作 DP 表?

【问题讨论】:

标签: algorithm dynamic-programming lcs


【解决方案1】:

这种情况下的解决方案并没有太大的不同。您将不得不向 dp 添加另外 2 个参数 - 两个字符串的公共子序列中包含的最后一个元素的索引。然后在 dp 的每一步只搜索给定字符串中 the_last_included_element 和 the_last_included_element + gap + 1 之间的相等元素。

【讨论】:

  • 能否提供该部分的伪代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2021-12-14
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多