Levenshtein distance上的維基百科文章在其possible modifications部分中指出,「[可以分別存儲插入,刪除和替換的數量」。Levenshtein距離,單獨跟蹤插入/刪除/替換
這是如何完成的?我在article中創建了基於矩陣的動態編程解決方案的實現,其中矩陣的每個單元格都有一個用於刪除/插入/替換的單獨值,但是對於我而言,我似乎無法解決邏輯。
直觀地看,如果我發現需要在同一步驟中進行刪除和插入操作,那麼這些應該成爲替代。
爲了使我想要的完全清楚,下面是源字符串「mat」和目標字符串「catch」的示例矩陣。我期望這需要一次替換(即將「m」改爲「c」)和兩次插入(即附加「ch」)。每個單元格都是「刪除/插入/替換」。
C A T C H +-----+-----+-----+-----+-----+-----+ |D/I/S|0/1/0|0/2/0|0/3/0|0/4/0|0/5/0| +-----+-----+-----+-----+-----+-----+ M |1/0/0|0/0/1|0/1/1|0/2/1|0/3/1|0/4/1| +-----+-----+-----+-----+-----+-----+ A |2/0/0|1/0/1|0/0/1|0/1/1|0/2/1|0/3/1| +-----+-----+-----+-----+-----+-----+ T |3/0/0|2/0/1|1/0/1|0/0/1|0/1/1|0/2/1| +-----+-----+-----+-----+-----+-----+
有沒有人計算出這個算法?
就是這樣 - 我沒有再找到這三個值中的最小值。相反,我想要分別查找並存儲這三個值。 – ulatekh
@ulatekh增加了一些細節。 – Dukeling
現在我明白你的意思了!事實上,這是解決方案。謝謝! 但上面,你指的是右上角,我認爲你的意思是左上角。 – ulatekh