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

String 求解O(mn)中的字符串对齐,string,algorithm,String,Algorithm,我需要用Onm解决以下问题。 n=| T| m=| P| 其中T,P是两个字符串 f是一个评分函数 该算法应返回一个T'的子字符串,使scoreP,T'值为最大值 scoreA,B是根据f的路线A和B的最大值 我知道我可以从DIST矩阵得到它,这是一个Monge矩阵,如果f是离散的,这意味着矩阵的对角线的权重不大于常数C,水平和垂直边是0或其他常数,但在这种情况下,f是从sigma*{-}xsigma*{-}到R的一般函数,其中“-”是一个间隙 有什么想法吗?您已经注意到,有几种算法可以计算弧为

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

该算法应返回一个T'的子字符串,使scoreP,T'值为最大值

scoreA,B是根据f的路线A和B的最大值

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


有什么想法吗?

您已经注意到,有几种算法可以计算弧为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:将P的i+1字母与T的j+1字母对齐的成本 i、 j→ i、 j+1:将P中的间隙与T的j+1字母对齐的成本
成本可能是负的。为了解决子串问题,将所有i,j→ i、 j+1弧为零,这样我们就可以从T中删除而不受惩罚。

这闻起来像是家庭作业。是吗?你觉得蛮力怎么样?我需要介绍一些字符串算法,我遇到了waterman算法,Hirschberg算法和其他一些算法。但是,在Omn中,每个人都成功地解决了类似这样的问题,并对评分函数进行了大量假设。我只是想提出一个更好的,如果它存在的话。蛮力是不好的,因为它会在^2*myes上运行,但needleman wunsh也会在f上假设一些事情,正如我上面所描述的。6个小时后,我仍然不知道如何在Onm中根据你的建议这样做。你能再解释一下吗?谢谢。这是一个非循环图,所以我们不用堆,而是可以按任何拓扑顺序访问节点,并放松当前节点的每个传出弧。0,0,0,1,0,2,…,1,0,1,…,m,n是一种可能的顺序,正如0,0,1,0,2,0,…,0,1,1,1,…,m,n和其他许多顺序一样。哦,子字符串而不是子序列。将间隙的成本保持在P中,但将长度为零的弧从新源s添加到0,i表示所有i,并从m添加到新汇t,i表示所有i。