Reklama
Dzisiaj jest 9 stycznia 2025 r.
Chcę dodać własny artykuł
Reklama
Reklama
Reklama

Odległość Levenshteina

Odległość Levenshteina

Odległość Levenshteina, wprowadzona przez Władimira Lewensztejna w 1965 roku, jest miarą różnicy między dwoma napisami. Definiuje się ją jako najmniejszą liczbę operacji, które trzeba wykonać, aby przekształcić jeden napis w drugi. Do operacji tych zalicza się: wstawienie znaku, usunięcie znaku oraz zamianę znaku na inny.

Reklama

Zastosowania

Miara ta znajduje zastosowanie w różnych dziedzinach, takich jak:

  • maszynowe rozpoznawanie mowy
  • analiza DNA
  • rozpoznawanie plagiatów
  • korekta pisowni

Przykłady obliczeń

Odległość Levenshteina między napisami można zilustrować na kilku przykładach:

Reklama
  • między „pies” a „pies” wynosi 0, ponieważ napisy są identyczne.
  • między „granat” a „granit” wynosi 1, wymagając zamiany litery a na i.
  • między „orczyk” a „oracz” wynosi 3, co wymaga usunięcia liter y i k, oraz wstawienia a.
  • między „marka” a „ariada” wynosi 4, co wymaga usunięcia m, zamiany k na i, oraz dodania d i a.

Obliczanie odległości

Odległość Levenshteina można obliczyć przy użyciu programowania dynamicznego. Poniżej przedstawiono uproszczony algorytm:

int LevenshteinDistance(char s[1..m], char t[1..n]) {
    declare int d[0..m, 0..n]
    for i from 0 to m
        d[i, 0] := i
    for j from 1 to n
        d[0, j] := j
    for i from 1 to m
        for j from 1 to n
            if s[i] = t[j] then cost := 0
            else cost := 1
            d[i, j] := minimum(d[i-1, j] + 1, d[i, j-1] + 1, d[i-1, j-1] + cost)
    return d[m, n]
}

Uogólnienia

Odległość Levenshteina jest uogólnieniem odległości Hamminga. Istnieją także inne rozszerzenia, takie jak:

  • Odległość Damerau-Levenshteina, która dodatkowo uwzględnia zamianę miejscami sąsiednich znaków.
  • Umożliwienie operacji na blokach ciągów znaków, co jest przydatne w przetwarzaniu tekstów.

Te warianty są często określane jako odległości transformacyjne lub edycyjne, co wymaga precyzyjnego określenia zestawu używanych operacji.

Reklama

Linki zewnętrzne

Reklama