7.3.3 DP算法
近似串匹配的DP算法十分简单,假定只要求出样本P在文本T中的K-近似匹配的第一次出现,即给出第一次K-近似匹配时,字符pm在文本Text中所处位置的下标。算法可以表示为:
算法7.4 近似串匹配算法ASM
int ASM(char[] P, char[] T, int m, int n, int K){
int i,j,k,D[m][n];
for(j=1;j<=n;j++) D[0][j]=0;
for(i=0;i<=m;i++) D[i][0]=i;
for(j=1;j<=n;j++){
for(i=1;i<=m;i++){
if(P[i]==T[j])
D[i][j]=min{D[i-1][j-1],D[i-1][j]+1,D[i][j-1]+1};
else
D[i][j]=min{D[i-1][j-1]+1,D[i-1][j]+1,D[i][j-1]+1};
if(D[m][j]<=K) return j;
}
}
}