1. 程式人生 > >漢明距離 vs 編輯距離

漢明距離 vs 編輯距離

1 漢明距離

        在資訊理論中,兩個等長字串之間的漢明距離是兩個字串對應位置的不同字元的個數。例如,1011101 與 1001001 之間的漢明距離是 2。

        漢明距離是以理查德·衛斯里·漢明的名字命名的,漢明在誤差檢測校正碼的基礎性論文中首次引入這個概念。在通訊中累計定長二進位制字中發生翻轉的錯誤資料位,所以它也被稱為訊號距離。漢明重量分析在包括資訊理論、編碼理論、密碼學等領域都有應用。它是用來衡量2個二進位制碼字之間的相似程度的。

2 編輯距離

        編輯距離,又稱Levenshtein距離,是指兩個字串之間,由一個轉成另一個所需的最少編輯操作次數。許可的編輯操作包括將一個字元替換成另一個字元,插入一個字元,刪除一個字元。例如,kitten與sitting之間的編輯距離為3。

        應用: DNA分析、拼字檢查、語音辨識、抄襲偵測。

3 個人理解

3.1 理論分析

        漢明距離更多的是強調向量,即每一位的值都有相應的實際意義。而編輯距離強調更多的是一個字串轉化為另外一個的最快速度,沒有考慮不同位的含義。

        比如說,有兩個物件A=”909”,B=”090”。A與B的漢明距離H(A, B) = 3,編輯距離ED(A, B) =2。

        若附加物件A,B的描述為其空間位置資訊,H(A, B) = 3表示在三個維度上均不相同;ED(A,B) = 2表示操作兩個維度便可完全相同。顯然在這種情況下用漢明距離比編輯距離更具有合理性。而在誤差檢測和校正碼時,多數情況向量維度是相同的,並且每一位都對應著特定的描述資訊,也即這些時候多數是用漢明距離。

        若附加物件的A,B的描述文字資訊(即拼字檢查),顯然用編輯距離表示更能反映A,B之間的相似程度。總之,在一些與序列相關但每一位又沒有特定的含義的應用適合用編輯距離。

3.2 已知論文

        一些與文字相似度相關的論文都用編輯距離來表示兩個文字描述資訊的相關程度,甚至一些圖的相似程度也用圖的編輯距離來表示其相近程度。至今只看到一篇文章是用漢明距離來表示文字相關程度的,即Spatio-Textual Similarity Joins。這無疑與上述理解存在一定的誤差。

        今兒上午討論了論文HmSearch: An Efficient Hamming Distance Query Processing Algorithm,該論文提到在模式匹配、資訊檢索等領域扮演者重要的角色。以往的方法都是針對漢明距離的計算特性,將n為向量平均分成k’份,同時也完成了對每部分漢明距離的最大值給出限定。若兩個物件的漢明距離滿足要求,則超高該限定值的部分至多為m個(計算公式,詳見論文)。作者提出了更為緊確的過濾方案和一個過濾-識別技術,其中位運算的應用更是出神入化。關於該論文的總結稍後奉上。

歡迎大家隨時指正錯誤或補充資訊。