ระยะห่าง Levenshtein ระหว่างสองสตริงหมายถึงจำนวนการแก้ไขขั้นต่ำที่จำเป็นในการแปลงสตริงหนึ่งเป็นสตริงอื่นด้วยการดำเนินการแก้ไขเช่น การแทรก การลบ หรือการแทนที่อักขระตัวเดียว
ตัวอย่างเช่น: ระยะห่างระหว่างแมวกับเสื่อคือ 1 −
cat mat(substitution of ‘c’ with ‘m’)
นี่คือโปรแกรม C++ เพื่อใช้อัลกอริธึมการคำนวณ Levenshtein Distance
อัลกอริทึม
Begin Take the strings as input and also find their length. For i = 0 to l1 dist[0][i] = i For j = 0 to l2 dist[j][0] = j For j=1 to l1 For i=1 to l2 if(s1[i-1] == s2[j-1]) track= 0 else track = 1 done t = MIN((dist[i-1][j]+1),(dist[i][j-1]+1)) dist[i][j] = MIN(t,(dist[i-1][j-1]+track)) Done Done Print the Levinstein distance: dist[l2][l1] End
ตัวอย่าง
#include <iostream> #include <math.h> #include <string.h> using namespace std; #define MIN(x,y) ((x) < (y) ? (x) : (y)) //calculate minimum between two values int main() { int i,j,l1,l2,t,track; int dist[50][50]; //take the strings as input char s1[] = "tutorials"; char s2[] = "point"; //stores the lenght of strings s1 and s2 l1 = strlen(s1); l2= strlen(s2); for(i=0;i<=l1;i++) { dist[0][i] = i; } for(j=0;j<=l2;j++) { dist[j][0] = j; } for (j=1;j<=l1;j++) { for(i=1;i<=l2;i++) { if(s1[i-1] == s2[j-1]) { track= 0; } else { track = 1; } t = MIN((dist[i-1][j]+1),(dist[i][j-1]+1)); dist[i][j] = MIN(t,(dist[i-1][j-1]+track)); } } cout<<"The Levinstein distance is:"<<dist[l2][l1]; return 0; }
ผลลัพธ์
The Levinstein distance is:8