cautare fuzzy

C Throk lungime x | x | = M este scris ca x2 x1. xm. unde xi reprezintă ith simbolul x.

Substring xi xi + 1. xj linia x, unde i<=j<=m. будет обозначаться x(i,j). В случае, когда i>j, cu care se confruntă substring notată xR (i, j).

De obicei x va indica proba dorită și y - un șir de text; | X | = M, | y | = N, și, desigur, m<=n.

x = Trismegistul
| X | = 12
x (7,10) = GIST
Xr () = pietre 7,4

Liniile de sarcini potrivite generalizate include găsirea subșirurilor ale textului aproape de o linie de model dat, de asemenea, referire la șiruri de sarcini de potrivire ca fuzzy. Fuzzy problemă de potrivire șir poate fi formulată după cum urmează:

Să se dea o probă x, | x | = M, iar textul y, | y | = N, m, n> 0 si m 0 și funcția distanța d. Doriți să găsiți toate aparițiile textului s y astfel încât d (x, s)

Hamming Distanța de [Hamming, 1982] între două linii de aceeași lungime este definită ca numărul de poziții la care simbolurile nu se potrivesc. Acest lucru este echivalent cu minim de conversie scăzută a primului rând la a doua, atunci când operația de înlocuire este permisă numai o singură greutate. Dacă este permis compararea șirurilor de lungime variabilă, inserție, de obicei, de asemenea, necesară și îndepărtarea. Dacă da aceeași greutate ca și înlocuirea prețului minim de conversie totală va fi egală cu una dintre valorile propuse de Levenshtein [Levinstein, 1965]. O altă valoare egală cu prețul minim de conversie, în cazul în care sunt permise numai inserarea și ștergerea. Aceasta echivalează cu eliminarea 1 tarifare și lipire și înlocuind 2, deoarece acesta poate fi înlocuit cu o pereche de inserare ștergere. Prima dintre aceste valori, ne referim mai jos Levinstein distanta. iar al doilea - distanța de editare.

Problema constă astfel în faptul că, pentru o funcție de distanță dată pentru a găsi toate aparițiile textului care sunt separate din probă cu cel mult k. În cazul în care d este distanța Hamming, sarcina este numit prin compararea cu șiruri nepotriviri k. în cazul în care d - Levenshtein la distanță, sarcina este numit prin compararea șiruri cu diferențe k (sau, uneori, erori).

Naiv la problema de potrivire linii care necesită timp O (mn), ușor de adaptat la sarcina k nepotriviri, permițând k nepotriviri când comparații subșir de caractere în text.

Cu toate acestea, ca și pentru problema de potrivire rânduri pentru k nepotriviri sarcini k și diferențele au fost inventate abordări mai eficiente.

Algoritmul lor este mult mai bine în cazul în care proporția k O (m / log n). Pentru alfabetelor nemarginite se algoritm mai rapid dacă k proporțională cu O (log 1/2 m). Este cu siguranță excelent atunci când k limita este O (log 1/2 m). Rețineți, totuși, că, pentru k mari, adică, atunci când k este egal cu O (m), performanțele sale nu este mai bună decât o adaptare directă, cu un timp de pătratică, abordare de programare dinamică.

Din motive practice, în special recomanda
aGREP zip

În cazul în care scopul de cautare fuzzy - pentru a exclude o eroare typesetter, metoda este optimizat pentru căutare este foarte similar cu modelul de evenimente descrise în articol
Încercări pentru șir de potrivire aproximativă zip

De asemenea, am recomanda pentru a vizita site-ul ITMAN. este dedicat exclusiv căutării neclare și, în opinia mea, este destul de interesant.