mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-12-19 08:59:05 +08:00
Add Levenshtein.
This commit is contained in:
45
src/algorithms/string/levenshtein-distance/README.md
Normal file
45
src/algorithms/string/levenshtein-distance/README.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Levenshtein Distance
|
||||
|
||||
The Levenshtein distance is a string metric for measuring the
|
||||
difference between two sequences. Informally, the Levenshtein
|
||||
distance between two words is the minimum number of
|
||||
single-character edits (insertions, deletions or substitutions)
|
||||
required to change one word into the other.
|
||||
|
||||
## Definition
|
||||
|
||||
Mathematically, the Levenshtein distance between two strings
|
||||
`a` and `b` (of length `|a|` and `|b|` respectively) is given by
|
||||

|
||||
where
|
||||
|
||||

|
||||
|
||||
where
|
||||

|
||||
is the indicator function equal to `0` when
|
||||

|
||||
and equal to 1 otherwise, and
|
||||

|
||||
is the distance between the first `i` characters of `a` and the first
|
||||
`j` characters of `b`.
|
||||
|
||||
Note that the first element in the minimum corresponds to
|
||||
deletion (from `a` to `b`), the second to insertion and
|
||||
the third to match or mismatch, depending on whether the
|
||||
respective symbols are the same.
|
||||
|
||||
## Example
|
||||
|
||||
For example, the Levenshtein distance between `kitten` and
|
||||
`sitting` is `3`, since the following three edits change one
|
||||
into the other, and there is no way to do it with fewer than
|
||||
three edits:
|
||||
|
||||
1. **k**itten → **s**itten (substitution of "s" for "k")
|
||||
2. sitt**e**n → sitt**i**n (substitution of "i" for "e")
|
||||
3. sittin → sittin**g** (insertion of "g" at the end).
|
||||
|
||||
## References
|
||||
|
||||
- [Wikipedia](https://en.wikipedia.org/wiki/Levenshtein_distance)
|
||||
Reference in New Issue
Block a user