萊文斯坦距離(LD)用於衡量兩個字元串之間的相似度。以下我們稱這兩個字元串分別為 s (原字元串) 和 t(目標字元串)。萊文斯坦距離被定義為''將字元串 s變換為字元串 t 所需的刪除、插入、替換操作的次數''。
例如:
- s="test", t="test", 那么 LD(s,t)=0,因為不需要做任何變換兩者已相等;
- s="test", t="tent", 那么 LD(s,t)=1,因為s變換為t只需做一次替換(將"s"替換為"n")。
萊文斯坦距離越大,字元串的相似程度越低。
萊文斯坦距離以俄國科學家Vladimir levenshtein命名,他於1965年發明了這個算法。如果你對Levenshtein這個詞的發音有問題,也可以稱這個距離為編輯距離。
萊文斯坦距離被套用於以下領域:
- 拼寫檢查
- 語音識別
- DNA分析
- 剽竊檢測
算法
代碼
代碼請參考原文網站。該網站給出了 Java、C++、Visual Basic三種語言的實現,又在頁面最下方的連結中給出了Perl、PL/SQL、TSQL、C#、Delphi、PHP等數十種語言的實現方式。