最小編輯距離演算法

2022-08-28 19:24:11 字數 1246 閱讀 1350

最小距離演算法用來計算兩個字串之間的相似度,這次主要是因為對搜尋結果的rerank需要用這個演算法做一下優化。

一、簡介

1.最小編輯距離演算法又稱 min edit distance,是用來計算兩個字串相似性的比較常用的演算法,主要應用場景包括抄襲檢測,拼寫檢查,相似度計算等等方面,這次主要是對搜尋結果rerank時需要用到此演算法,python版的實現已放在我的github上。

2. 此演算法是利用source串經過插入,刪除,更改三種操作轉換為目標串所花費資源的多少來衡量兩個字串的相似度的,插入刪除等操作分別有相應的權重,一般我們會將插入和刪除設為1,更改設為2。

二、 演算法偽碼:

資料:

1. m =len(source)

2. n =len(target)

3. insert_cost = 1

4. delete_cost = 1

計算過程:

1. distance_matrix =[n][m]

2. distance_matrix[0][0] = 0

3. distance_matrix[1~n][0] = insert_cost * i ( for i=1

to n)

4. distance_matrix[0][1~m] = delete_cost * i ( for i=1

to m)5.

for i = 1

to n:

for j = 1

to m:

distance_matrix[i][j] =min(

distance_matrxi[i-1][j] +insert_cost,

distance_matrix[i-1][j-1] = (target[i-1] == source[j-1] ? 0 : 2

),distance_matrix[i][j-1] =delete_cost)

6. result = distance_matrix[n][m]

三、概念,理解

1. 狀態轉移方程:d(i,j) = min (d(i-1,j) + insert_cost(source(i)), d(i-1,j-1)+ substitle_cost(source(i),target(j)), d(i,j-1) + delete_cost(target(j))

2. 計算過程中3,4步的原理

以insert操作來舉例,每次*i 的操作相當於在source串上做insert操作來達到與target串相同的目的。

最小編輯距離

題目描述給定兩個字串str1和str2,再給定三個整數ic,dc和rc,分別代表插入 刪除和替換乙個字元的代價,請輸出將str1編輯成str2的最小代價。輸入 abc adc 5,3,2 輸出 2 輸入 abc adc 5,3,100 輸出 8 分析使用動態規劃進行解題,dp i j 表示str1的...

最小編輯距離

dp i j 代表字串word1 0.i 1 與word2 0.j 1 的最小編輯距離。插入舉例 x ex vs y exp 前面的兩個ex都是相同,則編輯距離不變為0,x沒有第三個字元,這裡如果我們插入了乙個字元即可。dp i j dp i j 1 1 刪除舉例 x exp vs y ex 我故意...

最小編輯距離

當前狀態一定不能從後面的狀態推出 解dp題步驟 1.定義dp陣列 2.建立狀態轉移方程 3.確定初始狀態 4.驗證 迴圈順序 對於兩個字串a和b,我們需要進行插入 刪除和修改操作將a串變為b串,定義c0,c1,c2分別為三種操作的代價,請設計乙個高效演算法,求出將a串變為b串所需要的最少代價。給定兩...