多维弦的Levenshtein距离算法

时间:2013-09-14 02:16:54

标签: string algorithm data-structures

我正在为多维字符串寻找Levenshtein距离(编辑距离)的扩展。我不确定是否存在多维的正式定义,但这就是我所说的:

1-D字符串:是常规字符串

二维字符串:类似于一维字符串列表

dfdsfdsfdsf
dsffgdfdgfdsdaf
dsfdsf
fdgfdgfdg

N-D字符串:是(N-1)-D字符串列表

如何计算这些多维弦之间的Levenshtein距离?

1 个答案:

答案 0 :(得分:3)

编辑距离基于将一个字符串转换为另一个字符串的最低成本操作顺序。如果这些操作代表罕见的错误,则该距离粗略衡量一个字符串被破坏成另一个字符串的概率。

要找到2-d变体,您必须决定允许哪种操作,这取决于您想要解决的原因。如果一个列表中的每个字符串映射到另一个列表中的相应字符串,那么您可能只需要在结果对中编辑距离的总和。如果根本没有对应关系,您可以计算出所有n * m个字符串对的编辑距离,然后找到最小的成本匹配,它将第一个列表中的一个字符串与第二个列表中的一个字符串相关联,并对匹配进行评分与匹配的字符串对的编辑距离之和。如果损坏进程插入和删除整个字符串,以及在字符串中插入和删除字符,那么您最终可能会计算所有字符串对之间的编辑距离,并使用这些成本执行类似两个列表之间的编辑距离计算的操作字符串而不是两个字符列表 - 这一切都取决于您为什么要这样做以及哪些操作可能会将一个字符串列表转换为另一个字符串列表。