Matrix 加权编辑距离的相似矩阵

Matrix 加权编辑距离的相似矩阵,matrix,dynamic-programming,levenshtein-distance,edit-distance,Matrix,Dynamic Programming,Levenshtein Distance,Edit Distance,我想实现对基本编辑距离算法的修改。即加权编辑距离。(上下文:尝试创建搜索引擎时出现拼写错误) 例如,用a代替s的成本将低于用p代替s的成本 使用DP的算法需要进行简单更改,即: d[i, j] := minimum(d[i-1, j] + 1, // deletion d[i, j-1] + 1, // insertion

我想实现对基本编辑距离算法的修改。即加权编辑距离。(上下文:尝试创建搜索引擎时出现拼写错误)

例如,用a代替s的成本将低于用p代替s的成本

使用DP的算法需要进行简单更改,即:

d[i, j] := minimum(d[i-1, j] + 1,                         // deletion
                         d[i, j-1] + 1,                   // insertion
                         d[i-1, j-1] + substitutionCost)  // substitution

我看了看,但我在任何地方都找不到这样一个矩阵,它能给我所有字母对的适当替换成本。我的意思是,我希望成本是基于键盘上字母之间的距离。还没有人明确定义这样一个矩阵吗

> p>我编写了一个C++代码,应该是正确的,我也假设了密钥是对称放置的:

#include<bits/stdc++.h>

using namespace std;

string s[3];
int mat[35][35];

int main() {
    s[0] = "qwertyuiop";
    s[1] = "asdfghjkl;";
    s[2] = "zxcvbnm,./";

    for(int i = 0;i < 10;i++){
        for(int j = 0;j < 3;j++){
            for(int k = 0;k < 10;k++){
                for(int l = 0;l < 3;l++){
                    if(j == 1 && i > 8) continue;if(l == 1 && k > 8) continue;
                    if(j == 2 && i > 6) continue;if(l == 2 && k > 6) continue;
                    int st1 = s[j][i] - 'a';
                    int st2 = s[l][k] - 'a';
                    mat[st1][st2] = abs(j-l) + abs(i-k);
                }
            }
        }
    }
    for(int i = 0;i < 26;i++){
        for(int j = 0;j < 26;j++){
            cout << (char)(i+'a') << " " << (char)(j+'a') << " " << mat[i][j] << endl;
        }
    }

return 0;
}
#包括
使用名称空间std;
字符串s[3];
int mat[35][35];;
int main(){
s[0]=“qwertyuiop”;
s[1]=“asdfghjkl;”;
s[2]=“zxcvbnm,./”;
对于(int i=0;i<10;i++){
对于(int j=0;j<3;j++){
对于(int k=0;k<10;k++){
对于(int l=0;l<3;l++){
如果(j==1&&i>8)继续;如果(l==1&&k>8)继续;
如果(j==2&&i>6)继续;如果(l==2&&k>6)继续;
int st1=s[j][i]-“a”;
int st2=s[l][k]-“a”;
mat[st1][st2]=abs(j-l)+abs(i-k);
}
}
}
}
对于(int i=0;i<26;i++){
对于(int j=0;j<26;j++){

不能投票结束话题。问题不是关于编程部分,而是关于“在哪里可以找到替代成本矩阵?”对不起!那么我应该在哪里发布这个问题?我不知道,可能是reddit