編輯距離演算法

2021-06-21 14:07:40 字數 1094 閱讀 4493

編輯距離(edit distance),又稱levenshtein距離,是俄羅斯科學家vladimir levenshtein在2023年提出的。是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。

例如將"skill"轉換為"ceill"

skill——>ckill (s轉換為c)

ckill——>ceill(k轉換為e)

共需要兩步轉換,故"skill"與"ceill"的編輯距離為2

演算法過程

str1或str2的長度為0返回另乙個字串的長度。 if(str1.length==0) return str2.length; if(str2.length==0) return str1.length;

初始化(n+1)*(m+1)的矩陣d,並讓第一行和列的值從0開始增長。

掃瞄兩字串(n*m級的),如果:str1[i] == str2[j],用temp記錄它,為0。否則temp記為1。然後在矩陣d[i,j]賦於d[i-1,j]+1 、d[i,j-1]+1、d[i-1,j-1]+temp三者的最小值。

掃瞄完後,返回矩陣的最後乙個值d[n][m]即是它們的距離。

public class editdistance

public static int getdistance(string str1,string str2)

for(int j=0;j<=m;j++)

for(int i=0;i

def min(a,b,c):

if(a>b):

m=belse:

m=areturn m if m

#include#include using namespace std;

int min(int a,int b,int c)

int distance(string s1,string s2)

if(0==n) return m;

if(0==m) return n;

for(int x=0;x<=n;x++)

for(int y=0;y<=m;y++)

for(int i=0;i

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

編輯距離概念描述 編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將kitten一字轉成sitting sitten k s sittin e i sitting g 俄...

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

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 ...