我正在经历Levenshtein distance algorithm,其中我掌握了一些初步步骤,但是在后续步骤中它开始计算"成本" ,我很难理解它。我没有达到计算成本的目的,以及它如何帮助算法实现其目标。请帮我理解这个算法。
答案 0 :(得分:2)
有许多不同的方法可以通过插入/删除/替换来编辑第一个字符串以获取第二个字符串(实际上是无限多个)。每个都有一个特定的基本编辑操作计数。
Levenshtein距离定义为所需的最小操作次数,即最短序列的长度。尽管可以通过几种不同的编辑序列来实现,但这个数字已经明确定义。
这与欧几里德距离的情况非常相似:您可以按照不同的轨迹从一个点到另一个点,但只有直线达到最小路径长度。
更新:
需要补充的是,为不同的操作分配不同的成本可以提供更大的灵活性,并允许对一个或另一个给予青睐。更重要的是,您可以为每个字符分配单独的权重,例如,交易一个' O'对于一个' 0'被认为是更严重的"而不是插入空格。
成本最小化原则仍然存在。
答案 1 :(得分:0)
可以使用Levenshtein distance计算两个字符串a
和b
的{{3}},Dynamic Programming此处定义了一个表,用于存储{{1}前缀对的成本}和a
。这里的成本恰好是Levenshtein距离,即编辑步骤的数量。