在O(mn)中求解字符串对齐

时间:2012-04-23 14:57:30

标签: string algorithm

我需要用O(nm)来解决以下问题。 n = | T | m = | P | 其中T,P两个字符串 f是评分函数。

算法应返回T的子串T',使得得分(P,T')值最大。

得分(A,B)是根据f

对齐A和B的最大值

我知道如果f是离散的,我可以从DIST矩阵得到它,这是一个Monge矩阵(意味着矩阵的对角线的权重不大于C是一个常数,水平和垂直边缘是0或其他一些常数),但在这种情况下,f是从(sigma * { - })x(sigma * { - })到R(其中' - '是间隙)的一般函数。

任何想法?

1 个答案:

答案 0 :(得分:0)

您已经注意到有几种算法可以计算图中最短路径,其弧为(i,j)→(i + 1,j),(i + 1,j + 1),(i, j + 1)。该算法的最一般形式是允许单独指定每个弧长,具有以下含义。

  • (i,j)→(i + 1,j):将P的第(i + 1)个字母与T中的间隙对齐的成本
  • (i,j)→(i + 1,j + 1):将第(i + 1)字母P与第(j + 1)字母T对齐的成本
  • (i,j)→(i,j + 1):将P中的间隙与T的第(j + 1)个字母对齐的成本

成本可能是负面的。要解决子字符串问题,请将所有(i,j)→(i,j + 1)个弧的成本设为零,以便我们可以从T中删除而不会受到惩罚。