int LevenshteinDistance(char s[1..m], char t[1..n])
{
// for all i and j, d[i,j] will hold the Levenshtein distance between
// the first i characters of s and the first j characters of t;
// note that d has (m+1)x(n+1) values
declare int d[0..m, 0..n]
for i from 0 to m
d[i, 0] := i // the distance of any first string to an empty second string
for j from 0 to n
d[0, j] := j // the distance of any second string to an empty first string
for j from 1 to n
{
for i from 1 to m
{
if s[i] = t[j] then
d[i, j] := d[i-1, j-1] // no operation required
else
d[i, j] := minimum
(
d[i-1, j] + 1, // a deletion
d[i, j-1] + 1, // an insertion
d[i-1, j-1] + 1 // a substitution
)
}
}
return d[m,n]
}
|
|
k |
i |
t |
t |
e |
n |
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
s |
1 |
1 |
2 |
3 |
4 |
5 |
6 |
i |
2 |
2 |
1 |
2 |
3 |
4 |
5 |
t |
3 |
3 |
2 |
1 |
2 |
3 |
4 |
t |
4 |
4 |
3 |
2 |
1 |
2 |
3 |
i |
5 |
5 |
4 |
3 |
2 |
2 |
3 |
n |
6 |
6 |
5 |
4 |
3 |
3 |
2 |
g |
7 |
7 |
6 |
5 |
4 |
4 |
3 |
| |
|
|
S |
a |
t |
u |
r |
d |
a |
y |
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
S |
1 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
u |
2 |
1 |
1 |
2 |
2 |
3 |
4 |
5 |
6 |
n |
3 |
2 |
2 |
2 |
3 |
3 |
4 |
5 |
6 |
d |
4 |
3 |
3 |
3 |
3 |
4 |
3 |
4 |
5 |
a |
5 |
4 |
3 |
4 |
4 |
4 |
4 |
3 |
4 |
y |
6 |
5 |
4 |
4 |
5 |
5 |
5 |
4 |
3 |
|
No comments:
Post a Comment