Algorytm Levenshteina, służy do liczenia odległości edycyjnej (odległości Levenshteina). Jest to najmniejsza liczba działań prostych, przeprowadzająca jeden napis w drugi.
Działania proste to:
- wstawienie nowego znaku
- usuniecie znaku
- zamiana na inny znak
Idea algorytmu to stworzenie tablicy dwuwymiarowej, o wymiarach n+1 na m+1 gdzie n i m to odpowiednio długości porównywanych słów.
Pierwszy wiersz i kolumnę uzupełniamy wartościami od 0 do, odpowiednio n i m.
Następnie bierzemy po kolei wartości wiersza i porównujemy literkę dotyczącą tego wiersza z literą dotyczącą kolumny. Dokonujemy porównania liter na zasadzie każdy z każdym. Przy każdym porównaniu wykonujemy poniższą procedurę. Jeśli literki są identyczne, ustawiamy koszt na 0, jeśli nie, na 1. Teraz musimy daną komórkę wypełnić wartością, którą będzie minimum z:
- wartości komórki leżącej bezpośrednio nad naszą aktualną komórka zwiększonej o 1,
- wartości komórki leżącej bezpośrednio w lewo od naszej aktualnej komórki + 1
- wartości komórki leżącej bezpośrednio w lewą-górna stronę od aktualnej komórki + koszt
Po wykonaniu wszystkich porównań, naszą odległością edycyjną będzie wartość w komórce [n+1, m+1].
Odległość Levenshteina pomiędzy napisami identycznymi, np.
pies
pies
jest zerowa – skoro są identyczne, to potrzeba zero działań, by jeden z nich przeprowadzić na drugi.
Odległość Levenshteina pomiędzy napisami:
granat
granit
wynosi 1, ponieważ do przeprowadzenia pierwszego na drugi wystarcza jedno działanie: zamiana litery a na i.