strona główna
artykuły i recenzje
poradniki
galeria zdjęć
fotoblog

Levenshtein+

Dodano: Poniedziałek, 15 stycznia 2007, godzina 16:08:20
Kategoria: Inne

Osoby w temacie będą wiedziały o co chodzi. ;)
Potrzebne będzie: tablica (kwadratowa o rozmiarze od 0 do maksymalnej długości
wzorca/słowa jakie zamierzacie porównywać). Pierwszy wiersz i kolumnę musicie
wypełnić kolejno liczbami od 1 do długości wzorca/słowa. W podanym poniżej
przykładzie n to długość wzorca, m długość słowa. Wartość w komórce [m,n]
tablicy jest naszą szukaną - jeżeli większa lub mniejsza od 2, to oba wyrazy są
podobne! Funkcja min jest wbudowana w Pascala - zwraca mniejszą wartość z dwóch
podanych. Nie zapomnijcie przed każdym użyciu funkcji wyzerować tablicę!

FUNCTION levenstein(wzor,slowo : wyraz):INTEGER;
VAR i,j,n,m : INTEGER; {zmienne pomocnicze}
BEGIN

n:=LENGTH(wzor);
m:=LENGTH(slowo);
for i:=0 TO n DO odleglosc[i,0]:=i;
for j:=0 TO m DO odleglosc[0,j]:=j;

FOR i:=1 TO n DO
BEGIN
FOR j:=1 TO m DO BEGIN
IF(slowo[j]=wzor[i]) THEN odleglosc[i,j]:=odleglosc[i-1,j-1] ELSE
IF(slowo[j-1]=wzor[i]) AND (slowo[j]=wzor[i-1]) THEN odleglosc[i,j]:=odleglosc[i-2,j-2]+1
ELSE
odleglosc[i,j]:=min(odleglosc[i-1,j-1]+1,min(odleglosc[i,j-1]+1,odleglosc[i-1,j]+1));
END;
END;

levenstein:=t[n,m];
END; { levenstein }

PS. Tylko nie kopiować słowo w słowo! Więcej

tutaj
i

tutaj
.
PS2. Podziękowania dla Błażeja za rozszerzenia algorytmu o czeski błąd (dodanie
jednego warunku).

» Podobne wpisy (według tagów)

» komentarzy: 4 «

espa
Dodany: Wtorek, 16 stycznia 2007 o godzinie: 19:34:51

mam pytanie bo nie dziala mi to i wyskakuje przy kompilacji(Argument to LENGTH must be of type varying, char, or string, not array) tablice zadeklarowalem array(0..20,0..20) of integer i nie wiem co z tym zrobic :/

espa
Dodany: Środa, 17 stycznia 2007 o godzinie: 17:33:35

hmm nie odpisales a mowiles ze odpisales :P albo ja tego nie widze no nie wiem bo dalej mi to nie kompiluje sie cos z tymi deklaracjami mam chyba zle ale nie wiem gdzie

Pepe2k
Dodany: Środa, 17 stycznia 2007 o godzinie: 18:53:55

O kurcze… zapomnialem zatwierdzic komentarza i lezal w spamie :P Chodzi o deklaracje w funkcji- wzor,slowo : wyraz
wyraz to musi byc jakis zadeklarowany wczesniej typ! U mnie to jest tak:
TYPE
wyraz : VARAING [25] OF CHAR

espa
Dodany: Sobota, 20 stycznia 2007 o godzinie: 01:47:35

sorry ze tak cie mecze ale mam problem z tym programem bo nie wiem jak wczytac te wyrazy do tej tablicy kwadratowej tzn jak to wczytywac z tego pliku zeby to potem porownywac z wzorcem ktory tez gdzies trzeba wczytac tylko nie wiem gdzie myslalem o tym algorytmie z wykladow ‘wczytaj wyraz” ale jak to zrobic na ta tablice kwadratowa no nie mam pojecia

» dodaj komentarz «





» Komentarze dodane przez niezarejestrowanych użytkowników muszą być zatwierdzone przez moderatora


» kategorie wpisów

Co nowego na stronie (wpisów: 43)
Dzikie.NET (wpisów: 16)
Humor (wpisów: 46)
Inne (wpisów: 34)
Kapsle Tymbark (wpisów: 29)
Moje projekty i pomysły (wpisów: 43)
Narzekam na… (wpisów: 16)
Nowości w galerii (wpisów: 12)
Nowości, ciekawostki (wpisów: 595)
O mnie (wpisów: 36)
Wordpress (wpisów: 1)
Zabawki (wpisów: 9)
Zdjęcie bez komentarza (wpisów: 91)
Zdjęcie z komentarzem (wpisów: 23)
Strony w domenie tech-blog.pl wykorzystują pliki cookies w celach statystycznych, analizy oglądalności oraz na potrzeby wyświetlania reklam. Jeżeli nie wyrażasz na to zgody, zmień ustawienia wykorzystywanej przeglądarki internetowej. Więcej informacji na stronie Polityka prywatności i cookies (ciasteczka).

» archiwum wpisów

styczeń 2014 (wpisów: 2)
grudzień 2013 (wpisów: 6)
listopad 2013 (wpisów: 27)
październik 2013 (wpisów: 21)
wrzesień 2013 (wpisów: 27)
sierpień 2013 (wpisów: 8)
lipiec 2013 (wpisów: 8)
czerwiec 2013 (wpisów: 6)
maj 2013 (wpisów: 16)
kwiecień 2013 (wpisów: 17)
marzec 2013 (wpisów: 18)
luty 2013 (wpisów: 22)
styczeń 2013 (wpisów: 19)
grudzień 2012 (wpisów: 20)
listopad 2012 (wpisów: 33)
październik 2012 (wpisów: 25)
wrzesień 2012 (wpisów: 15)
maj 2012 (wpisów: 1)
kwiecień 2012 (wpisów: 1)
marzec 2012 (wpisów: 1)
styczeń 2012 (wpisów: 2)
grudzień 2011 (wpisów: 1)
listopad 2011 (wpisów: 7)
październik 2011 (wpisów: 4)
wrzesień 2011 (wpisów: 1)
sierpień 2011 (wpisów: 3)
lipiec 2011 (wpisów: 2)
czerwiec 2011 (wpisów: 3)
maj 2011 (wpisów: 1)
marzec 2011 (wpisów: 3)
luty 2011 (wpisów: 5)
styczeń 2011 (wpisów: 5)
grudzień 2010 (wpisów: 6)
listopad 2010 (wpisów: 2)
październik 2010 (wpisów: 1)
wrzesień 2010 (wpisów: 4)
sierpień 2010 (wpisów: 2)
lipiec 2010 (wpisów: 4)
kwiecień 2010 (wpisów: 4)
marzec 2010 (wpisów: 12)
luty 2010 (wpisów: 4)
styczeń 2010 (wpisów: 1)
listopad 2009 (wpisów: 1)
październik 2009 (wpisów: 1)
wrzesień 2009 (wpisów: 1)
sierpień 2009 (wpisów: 3)
lipiec 2009 (wpisów: 2)
czerwiec 2009 (wpisów: 6)
kwiecień 2009 (wpisów: 1)
marzec 2009 (wpisów: 25)
luty 2009 (wpisów: 9)
styczeń 2009 (wpisów: 13)
grudzień 2008 (wpisów: 7)
listopad 2008 (wpisów: 11)
październik 2008 (wpisów: 1)
wrzesień 2008 (wpisów: 9)
sierpień 2008 (wpisów: 49)
lipiec 2008 (wpisów: 2)
czerwiec 2008 (wpisów: 39)
maj 2008 (wpisów: 52)
kwiecień 2008 (wpisów: 49)
marzec 2008 (wpisów: 58)
luty 2008 (wpisów: 38)
styczeń 2008 (wpisów: 12)
grudzień 2007 (wpisów: 16)
listopad 2007 (wpisów: 2)
październik 2007 (wpisów: 8)
wrzesień 2007 (wpisów: 16)
sierpień 2007 (wpisów: 7)
lipiec 2007 (wpisów: 3)
czerwiec 2007 (wpisów: 3)
maj 2007 (wpisów: 11)
kwiecień 2007 (wpisów: 11)
marzec 2007 (wpisów: 16)
luty 2007 (wpisów: 9)
styczeń 2007 (wpisów: 13)
grudzień 2006 (wpisów: 5)
listopad 2006 (wpisów: 4)
październik 2006 (wpisów: 13)
wrzesień 2006 (wpisów: 15)
sierpień 2006 (wpisów: 8)
lipiec 2006 (wpisów: 5)
czerwiec 2006 (wpisów: 39)
maj 2006 (wpisów: 38)
All rights reserved Copyright 2006-2012 Piotr Dymacz