我需要用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(其中' - '是间隙)的一般函数。
任何想法?
答案 0 :(得分:0)
您已经注意到有几种算法可以计算图中最短路径,其弧为(i,j)→(i + 1,j),(i + 1,j + 1),(i, j + 1)。该算法的最一般形式是允许单独指定每个弧长,具有以下含义。
成本可能是负面的。要解决子字符串问题,请将所有(i,j)→(i,j + 1)个弧的成本设为零,以便我们可以从T中删除而不会受到惩罚。