編輯距離及編輯距離演算法

2021-07-11 09:51:15 字數 599 閱讀 9847

編輯距離概念描述:編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。

例如將kitten一字轉成sitting:

sitten (k→s)

sittin (e→i)

sitting (→g)

俄羅斯科學家vladimir levenshtein在2023年提出這個概念。

問題:找出字串的編輯距離,即把乙個字串s1最少經過多少步操作變成程式設計字串s2,操作有三種,新增乙個字元,刪除乙個字元,修改乙個字元

思路:動態規劃

edit(i, j):它表示第乙個字串的長度為i的子串到第二

個字串的長度為j的子串的編輯距離。

狀態轉移方程:

edit(i, j) == min,i>0,j>0最後表示末尾字元是否相等

邊界情況:

if i == 0 且 j == 0,edit(i, j) = 0

if i == 0 且 j > 0,edit(i, j) = j

if i > 0 且j == 0,edit(i, j) = i

編輯距離及編輯距離演算法

include include include using namespace std const int max 1001 int maxlen max max int maxlen string str1,string str2 return maxlen len1 len2 int main ...

編輯距離及編輯距離演算法

include include include using namespace std const int max 1001 int maxlen max max int maxlen string str1,string str2 return maxlen len1 len2 int main ...

編輯距離演算法

字串編輯距離 是一種字串之間相似度計算的方法。給定兩個字串s t,將s轉換成t所需要的刪除,插入,替換操作的數量就叫做s到t的編輯路徑。而最短的編輯路徑就叫做字串s和t的編輯距離。舉個例子 s eeba t abac 我們可以按照這樣的步驟轉變 1 將s中的第乙個e變成a 2 刪除s中的第二個e 3...