fbpx
维基百科

萊文斯坦距離

莱文斯坦距离,又称Levenshtein距离,是编辑距离的一种。指两个字串之間,由一个转成另一个所需的最少编辑操作次数。

允许的编辑操作包括:

  1. 将一个字符替换成另一个字符
  2. 插入一个字符
  3. 刪除一个字符

俄羅斯科學家弗拉基米尔·莱文斯坦英语Vladimir Levenshtein在1965年提出這個概念。

定义 编辑

如果分别用    表示   两个字符串的长度,那么它们的列文斯坦距离为  ,它符合:

 

  是一个指示函数indicator function),当   时,其值为0,其他时候它等于 1 。

 表示   的前   个字符与   的前   个字符之间的列文斯坦距离。(    都是从1开始的下标)


注意:min运算中的第一个公式代表( 从   中)删除字符(以到达  );第二个公式代表插入字符;第三个代表替换(取决于当前字符是否相同)

例如 编辑

將“kitten”一字轉成“sitting”的萊文斯坦距离为3:

  1. kitten → sitten (k→s)
  2. sitten → sittin (e→i)
  3. sittin → sitting (插入g)

應用 编辑

演算法 编辑

動態規劃經常被用來作為這個問題的解決手段之一。

int LevenshteinDistcance(string str1[1..lenStr1], string str2[1..lenStr2]) int d[0..lenStr1, 0..lenStr2] int i, j, cost for i = 0 to lenStr2 d[i, 0] := i for j = 0 to lenStr1 d[0, j] := j for i = 1 to lenStr2 for j = 1 to lenStr1 if str2[i] = str1[j] cost := 0 else cost := 1 d[i, j] := min( d[i-1, j ] + 1, // 删除 d[i , j-1] + 1, // 插入 d[i-1, j-1] + cost // 替換 ) return d[lenStr1, lenStr2] 

參見 编辑


萊文斯坦距離, 此條目没有列出任何参考或来源, 2014年8月19日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 莱文斯坦距离, 又称levenshtein, 距离, 是编辑距离的一种, 指两个字串之間, 由一个转成另一个所需的最少编辑操作次数, 允许的编辑操作包括, 将一个字符替换成另一个字符, 插入一个字符, 刪除一个字符俄羅斯科學家弗拉基米尔, 莱文斯坦, 英语, vladimir, levenshtein, 在1965年提出這個概念,. 此條目没有列出任何参考或来源 2014年8月19日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 莱文斯坦距离 又称Levenshtein 距离 是编辑距离的一种 指两个字串之間 由一个转成另一个所需的最少编辑操作次数 允许的编辑操作包括 将一个字符替换成另一个字符 插入一个字符 刪除一个字符俄羅斯科學家弗拉基米尔 莱文斯坦 英语 Vladimir Levenshtein 在1965年提出這個概念 目录 1 定义 1 1 例如 2 應用 3 演算法 4 參見定义 编辑如果分别用 a displaystyle a nbsp 和 b displaystyle b nbsp 表示 a b displaystyle a b nbsp 两个字符串的长度 那么它们的列文斯坦距离为 lev a b a b displaystyle operatorname lev a b a b nbsp 它符合 lev a b i j max i j if min i j 0 min lev a b i 1 j 1 lev a b i j 1 1 lev a b i 1 j 1 1 a i b j otherwise displaystyle qquad operatorname lev a b i j begin cases max i j amp text if min i j 0 min begin cases operatorname lev a b i 1 j 1 operatorname lev a b i j 1 1 operatorname lev a b i 1 j 1 1 a i neq b j end cases amp text otherwise end cases nbsp 1 a i b j displaystyle 1 a i neq b j nbsp 是一个指示函数 indicator function 当 a i b j displaystyle a i b j nbsp 时 其值为0 其他时候它等于 1 lev a b i j displaystyle operatorname lev a b i j nbsp 表示 a displaystyle a nbsp 的前 i displaystyle i nbsp 个字符与 b displaystyle b nbsp 的前 j displaystyle j nbsp 个字符之间的列文斯坦距离 i displaystyle i nbsp 和 j displaystyle j nbsp 都是从1开始的下标 注意 min运算中的第一个公式代表 从 a displaystyle a nbsp 中 删除字符 以到达 b displaystyle b nbsp 第二个公式代表插入字符 第三个代表替换 取决于当前字符是否相同 例如 编辑 將 kitten 一字轉成 sitting 的萊文斯坦距离为3 kitten sitten k s sitten sittin e i sittin sitting 插入g 應用 编辑DNA分析 拼写檢查 語音辨識 抄襲偵測演算法 编辑動態規劃經常被用來作為這個問題的解決手段之一 int LevenshteinDistcance string str1 1 lenStr1 string str2 1 lenStr2 int d 0 lenStr1 0 lenStr2 int i j cost for i 0 to lenStr2 d i 0 i for j 0 to lenStr1 d 0 j j for i 1 to lenStr2 for j 1 to lenStr1 if str2 i str1 j cost 0 else cost 1 d i j min d i 1 j 1 删除 d i j 1 1 插入 d i 1 j 1 cost 替換 return d lenStr1 lenStr2 參見 编辑漢明距離 延森 香農距離 序列比對 Soundex 最长公共子序列 Floyd Warshall算法 Viterbi算法 取自 https zh wikipedia org w index php title 萊文斯坦距離 amp oldid 71758497, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。