第二章 Edit Distance
本篇內容將講述Edit Distance(編輯距離的定義詳見正文),具體又包含5個方面的內容:
- Defining Minimum Edit Distance
- Computing Minimum Edit Distance
- Backtrace for Computing Alignments
- Weighted Minimum Edit Distance
- Minimum Edit Distance in Computational Biololgy
1. Definition of Minimum Edit Distance
Edit Distance用於衡量兩個strings之間的相似性。
兩個strings之間的Minimum edit distance是指把其中一個string通過編輯(包括插入,刪除,替換操作)轉換爲另一個string的最小操作數。
如上圖所示,d(deletion)代表刪除操作,s(substitution)代表替換操作,i(insertion)代表插入操作。
(爲了簡單起見,後面的Edit Distance 簡寫爲ED)
如果每種操作的cost(成本)爲1,那麼ED = 5.
如果s操作的cost爲2(即所謂的Levenshtein Distance),ED = 8.
2. Computing Minimum Edit Distance
那麼如何找到兩個strings的minimun edit distance呢?要知道把一個string轉換爲另一個string可以有很多種方法(或者說“路徑“)。我們所知道起始狀態(第一個string)、終止狀態(另一個string)、基本操作(插入、刪除、替換),要求的是最短路徑。
對於如下兩個strings:
X的長度爲n
Y的長度爲m
我們定義D(i,j)爲 X 的前i個字符 X[1...i] 與 Y 的前j個字符 Y[1...j] 之間的距離,其中0<i<n, 0<j<m,因此X與Y的距離可以用D(n,m)來表示。
假如我們想要計算最終的D(n,m),那麼可以從頭開始,先計算D(i, j) (i和j從1開始)的值,然後基於前面的結果計算更大的D(i, j),直到最終求得D(n,m)。
算法過程如下圖所示:
上圖中使用的是”Levenshtein Distance“即替換的成本爲2.
請讀者深入理解一下上圖中的循環體部分: D(i,j)可能的取值爲:
1. D(i-1, j) +1 ;
2. D(i, j-1) +1 ;
3. D(i-1, j-1) + 2 (當X新增加的字符和Y新增加的字符不同時,需要替換)或者 + 0(即兩個字符串新增加的字符相同)
下圖即對字符串 INTENTION 和 EXECUTION 一步步求ED形成的表。左上角畫紅圈的8就是兩個字符串間的最小ED。
3. Backtrace for Computing Alignments
上一節課我們求得了Edit distance,但是僅有Edit distance也是是不夠的,有時我們也需要把兩個strings中的每個字符都一一對應起來(有的字母會與“空白”對應),這可以通過Backtrace(追蹤)ED的計算過程得到。
通過上一節我們知道,D(i, j)的取值來源有三種,D(i-1, j)、D(i, j-1)或者D(i-1, j-1),下表通過添加箭頭的方式顯而易見地給出來整個表格的計算過程(下面的陰影表示的只是一種路徑,你會發現得到最後結果的路徑不是惟一的,因爲每個單元格數字可能由左邊、下邊或者左下邊的得到)。
從表格右上角開始,沿着追蹤的剪頭,就可以拎出一條路徑出來(不惟一),這條路徑的剪頭可以輕易的展現是通過哪種方法(插入、刪除、替換)完成的。
表格右上角陰影部分四個格子,路徑只有一條,我們也可以很輕易地看出最後四個字母是相同的,但這種情況並不絕對,比如中間的陰影6格也只有一種路徑,可是卻分別對應於字母e和c。
算法實現“尋找路徑”的思想很簡單——就是給每個單元格定義一個指針,指針的值爲LEFT/DOWN/DIAG(不明白爲什麼他爲什麼說是指針),如下圖所示。
想一下普通的情況,如下圖,從(0,0)到(M,N)的任何一條非下降路徑都對應於兩個strings間的一個排列,而最佳的排列由最佳的子排列組成。
簡單思考一下算法的性能
Time: O(nm)
Space: O(nm)
Backtrace: O(n+m)
4. Weighted Minimum Edit Distance
ED也可以添加權重,因爲在拼寫中,某些字母更容易寫錯。如下圖顯示的混淆矩陣,數值越大就代表被誤寫的可能性越高。如a就很可能被誤寫爲e,i,o,u
衆所周知,鍵盤排佈會對誤寫產生影響。
Weighted Min Edit Distance的算法如下圖所示
這幅圖將del、ins、sub三種操作都定義了不同的權重,在“萊溫斯基距離“中,del和ins的cost都是1,sub是2。
5. Minimum Edit Distance in Computational Biology
本段講述Minimum Edit Distance在計算生物學中的應用。比如比較如下圖(上班部分)兩個基因組序列,我們希望最後能把兩個序列對齊(下半部分),進而研究不同的基因片段的功能等。
在Natural Language Processing我們討論了最小distance和weight,而在Computational Biology中我們將要介紹最大Similarity(相似性)和scores。
在Computational Biology中有個重要算法——Needleman-Wunsch算法。
(未完待續)