最小編輯距離算法
編輯距離(Edit Distance),又稱Levenshtein距離,是指兩個字串之間,由一個轉成另外一個所需的編輯操做次數。最小編輯距離,是指所需最小的編輯操做次數。數組
編輯操做包含:插入、刪除和替換三種操做。函數
動態規劃的核心思想是:將待求解的問題分解爲若干個子問題(階段),按順序求解子階段,前一子問題的解,爲後一子問題的求解提供了有用的信息。在求解任一子問題時,列出各類可能的局部解,經過決策保留那些有可能達到最優的局部解,丟棄其餘局部解。依次解決各子問題,最後一個子問題就是初始問題的解。spa
因爲動態規劃解決的問題多數有重疊子問題這個特色,爲減小重複計算,對每個子問題只解一次,咱們將其不一樣階段的不一樣狀態保存在一個二維數組中。3d
最小編輯距離算法僞代碼:blog
輸入:字符串1-str1 字符串2-str2 字符串
輸出:最小編輯距離it
實質問題:io
求解動態規劃矩陣。假設咱們以str1爲主串(即對str1進行操做)table
算法:
# |
A |
B |
C |
D |
|
# |
|||||
A |
|||||
C |
|||||
D |
#表示在串前能夠插入任何字符。
# |
A |
B |
C |
D |
|
# |
0 |
1 |
2 |
3 |
4 |
A |
1 |
||||
C |
2 |
||||
D |
3 |
矩陣方向 |
編輯操做 |
計算公式 |
向右走:Right |
刪除 |
|
向下走:Down |
插入 |
|
對角線:Diagonal |
替換|匹配 |
|
循環計算整個矩陣
# |
A |
B |
C |
D |
|
# |
0 |
1 |
2 |
3 |
4 |
A |
1 |
0 |
1 |
2 |
3 |
C |
2 |
1 |
1 |
1 |
2 |
D |
3 |
2 |
2 |
2 |
1 |
5. 即爲最小編輯距離
最小編輯距離一般做爲一種類似度計算函數被用於多種實際應用中,詳細以下:(特別的,對於中文天然語言處理,通常以詞爲基本處理單元)