Levenshtein C
entier DistanceDeLevenshtein(caractere chaine1[1..longueurChaine1],
caractere chaine2[1..longueurChaine2])
// D est un tableau de longueurChaine1+1 rangées et longueurChaine2+1 colonnes
// D est indexé à partir de 0, les chaînes à partir de 1
déclarer entier D[0..longueurChaine1, 0..longueurChaine2]
// i et j itèrent sur chaine1 et chaine2
déclarer entier i, j, coûtSubstitution
pour i de 0 à longueurChaine1
D
[
i
,
0
]
]
:=
i
{\displaystyle D[i,0]]:=i}
{\displaystyle D[i,0]]:=i}
pour j de 0 à longueurChaine2
D
[
0
,
j
]
]
:=
j
{\displaystyle D[0,j]]:=j}
{\displaystyle D[0,j]]:=j}
pour i de 1 à longueurChaine1
pour j de 1 à longueurChaine2
si chaine1[i] = chaine2[j] alors coûtSubstitution := 0
sinon coûtSubstitution:= 1
D
[
i
,
j
]
]
:=
{\displaystyle D[i,j]]:=}
{\displaystyle D[i,j]]:=} minimum(
D[i-1, j ] + 1, // effacement du nouveau caractère de chaine1
D[i, j-1] + 1, // insertion dans chaine2 du nouveau caractère de chaine1
D[i-1, j-1] + coûtSubstitution // substitution
)
renvoyer D[longueurChaine1, longueurChaine2]
Gotta Go fast