Algorithm 矩阵中序列的Matlab最佳匹配
我想在NxN矩阵中找到整数序列的最佳匹配。问题是我不知道如何提取这个最佳匹配的位置。下面的代码,我应该计算编辑距离,但我想知道在我的网格编辑距离最短的地方Algorithm 矩阵中序列的Matlab最佳匹配,algorithm,matlab,edit,distance,levenshtein-distance,Algorithm,Matlab,Edit,Distance,Levenshtein Distance,我想在NxN矩阵中找到整数序列的最佳匹配。问题是我不知道如何提取这个最佳匹配的位置。下面的代码,我应该计算编辑距离,但我想知道在我的网格编辑距离最短的地方 function res = searchWordDistance(word,grid) % wordsize = length(word); % extract the actual size % [x ,y] = find(word(1) == grid); D(1,1,1)=0; for i=2:length(word)+1
function res = searchWordDistance(word,grid)
% wordsize = length(word); % extract the actual size
% [x ,y] = find(word(1) == grid);
D(1,1,1)=0;
for i=2:length(word)+1
D(i,1,1) = D(i-1,1,1)+1;
end
for j=2:length(grid)
D(1,1,j) = D(1,1,j-1)+1;
D(1,j,1) = D(1,j-1,1)+1;
end
% inspect the grid for best match
for i=2:length(word)
for j=2:length(grid)
for z=2:length(grid)
if(word(i-1)==grid(j-1,z-1))
d = 0;
else
d=1;
end
c1=D(i-1,j-1,z-1)+d;
c2=D(i-1,j,z)+1;
c3=D(i,j-1,z-1)+1;
D(i,j,z) = min([c1 c2 c3]);
end
end
end
我用这段代码(在一个更小的维度中)比较了两个字符串。
以5x5矩阵为例编辑
15 17 19 20 22
14 8 1 15 24
11 4 17 3 2
14 2 1 14 8
19 23 5 1 22
现在,如果我有一个序列
[4,1,1]
和[15,14,12,14]
,应该使用算法来找到它们。第一个是完美匹配(对角线从(3,2)开始)。第二个数字位于第一列,是该序列最接近的匹配项,因为只有一个数字是错误的 你所说的查找NxN矩阵中整数序列的最佳匹配是什么意思。首先,定义一个矩阵5x5
,给出您的输入数组和所需的输出最佳匹配。这将有助于我们更清楚地了解你的问题。你应该尽量用一个复杂度最低的模板来表示你的问题(如果可能的话)。你说的最接近,是指最相同的数字,还是最小的总差异?哪一个最接近于最相同的数字。我发布的算法已经做到了这一点。它告诉我们两个向量之间的距离。(将一个转换为另一个需要多少操作)。所以数字的位置也很重要。(我们可能需要在中间插入一个以使它们相同)。我想知道是否有可能在一个向量和一个2维矩阵上,而不是仅仅在两个向量上进行。