什么是 莱文斯坦距离算法 (Levenshtein Distance Algorithm) ?
Levenshtein Distance,莱文斯坦距离,通常被称为编辑距离(Edit Distance)。该算法的概念是俄罗斯科学家弗拉基米尔·莱文斯坦(Levenshtein · Vladimir)于1965年提出。
它是用来计算两个字串之间,通过替换、插入、删除等操作将字符串str1转换成str2所需要操作的最少次数。
也存在其他编辑距离的定义方式:例如 Damerau-Levenshtein 距离就是一种莱文斯坦距离的变种,但允许以单一操作交换相邻的两个字符(称为字符转置),如 AB→BA 的距离是 1(交换)而非 2(先删除再插入、或者两次替换); LCS(最长公共子序列)距离只允许删除、加入字元; Jaro 距离只允许字符转置; 汉明距离只允许取代字元。
例子:
kitten和sitting的莱文斯坦距离是3。将kitten变为sitting的最小处理方式如下:
- kitten →sitten(将k改为s)
- sitten → sittin(将e改为i)
- sittin → sitting(最后加入g)