Levenshtein algorithm - fail-fast if edit distance is bigger than a given threshold
对于Levenshtein算法,我已经找到了Delphi的此实现。
我需要一个版本,该版本会在达到最大距离后立即停止,并返回到目前为止的距离。
我的第一个想法是在每次迭代后检查当前结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 | for i := 1 to n do for j := 1 to m do begin d[i, j] := Min(Min(d[i-1, j]+1, d[i,j-1]+1), d[i-1,j-1]+Integer(s[i] <> t[j])); // check Result := d[n, m]; if Result > max then begin Exit; end; end; |
我收集的是查找levenstein距离(如果它小于
如果是这样,达到大于
我不擅长Delphi,但我认为代码应如下所示:
1 2 3 4 5 6 7 8 9 10 11 | for i := 1 to n do begin; min := MAX + 1 for j := 1 to m do begin; d[i, j] := Min(Min(d[i-1, j]+1, d[i,j-1]+1), d[i-1,j-1]+Integer(s[i] <> t[j])); min := Min(min, d[i,j]) end; if min >= MAX then Exit; end; |