1、替換
2、插入
3、刪除
注意,a[i]=b[i]表示a和b的對應位置字元已經相同,因此在這種情況下,是不需要經過任何的編輯操作的。
例如,給定字串a和b如下:
string stra = "sight";1、替換,將a中的『s』替換為『c』;string strb = "cite";
2、刪除,將a中的『g』刪除;
3、刪除,將a中的『h』刪除;
4、插入,將『t』插入到a的末尾
至此,盡力4步編輯操作,可以將a完全抓化為b。而且這也是成本最小的(編輯次數最少)編輯方案。
其實有了前面的dna序列對齊問題的求解後,在求解這個編輯距離問題就很清晰。
在dna序列對齊問題中,打分規則b和c的兩種細分情況剛好對應了編輯距離問題的替換、插入、刪除三種編輯操作,打分規則a則對應了不需要編輯操作(可以想象為複製操作)的情況。
最高得分的序列對齊方案也就是用需要盡量多的複製操作和盡量少的替換、插入、刪除操作完成對齊任務(當然這裡有乙個內在的約束條件)。
}其子問題的求解如下:
最短編輯距離 python 最短編輯距離演算法實現
一,演算法介紹 在cs124課程的第一周提到 求解兩個字串相似度的演算法 minimum edit distance 最短編輯距離 演算法。該演算法在nlp 自然語言處理 中也會用到。如何定義相似度呢?任給兩個字串x 和y,使用以下三種操作將 字串x 變到 字串y 插入 insert 操作 刪除操作...
最短編輯距離
給定兩個字串a和b,現在要將a經過若干操作變為b,可進行的操作有 刪除 將字串a中的某個字元刪除。插入 在字串a的某個位置插入某個字元。替換 將字串a中的某個字元替換為另乙個字元。現在請你求出,將a變為b至少需要進行多少次操作。輸入格式 第一行包含整數n,表示字串a的長度。第二行包含乙個長度為n的字...
最短編輯距離
題目鏈結 給定兩個字串a和b,現在要將a經過若干操作變為b,可進行的操作有 刪除 將字串a中的某個字元刪除。插入 在字串a的某個位置插入某個字元。替換 將字串a中的某個字元替換為另乙個字元。現在請你求出,將a變為b至少需要進行多少次操作。輸入格式 第一行包含整數n,表示字串a的長度。第二行包含乙個長...