gpt4 book ai didi

algorithm - Levenshtein 算法 - 如果编辑距离大于给定阈值,则快速失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:56:00 34 4
gpt4 key购买 nike

对于 Levenshtein 算法,我找到了 this implementation for Delphi .

我需要一个在达到最大距离后立即停止并返回到目前为止找到的距离的版本。

我的第一个想法是在每次迭代后检查当前结果:

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 距离,如果它低于 MAX,对吗?

如果是这样,达到大于MAX 的值是不够的,因为它只意味着一些 路径比那个长,而不是不存在更短的路径.为确保找不到比 MAX 短的路径,必须监视到当前点的路径的最小可能长度,即距离表中一列的最小值。

我不擅长 Delphi,但我认为代码应该是这样的:

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;

关于algorithm - Levenshtein 算法 - 如果编辑距离大于给定阈值,则快速失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11735576/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com