ALG!2

ALG!2



212 Rozdział 8. Przeszukiwanie teksfe

Rys. 8 - 3.

1

Wyszukiwanie

tekst przebadany \ tekst do zbadania

i

optymalnego prze-

i

sunięcia iv algo-

i

rytmie

wzorzec \

K-M-P.

i

ewentualne pokrycie się lej części wzorca, która znajduje się po lewej stronie przerywanej kreski, z tekstem, któiy umieszczony jest powyżej wzorca. W pewnym momencie może okazać się, że następuje pokrycie obu tych części. Zatrzymujemy wówczas przesuwanie i kontynuujemy testowanie (znak po znaku) zgodności obu części znajdujących się za kreską pionową.

Od czego zależy ewentualne pokrycie się oglądanych fragmentów tekstu i wzorca? Otóż, dość paradoksalnie badany tekst „nie ma tu nic do powiedzenia”- jeśli można to tak określić. Informacja o tym, jaki on był, jest ukryta w stwierdzeniu ,J-1 znaków było zgodnych” - w tym sensie można zupełnie o badany m tekście zapomnieć i analizując wyłącznie sam wzorzec, odkryć poszukiwane optymalne przesunięcie. Na tym właśnie spostrzeżeniu opiera się idea algorytmu K-M-t. Okazuje się, że badając samą strukturę wzorca można obliczyć, jak powinniśmy zmodyfikować indeks j w razie stwierdzenia niezgodności tekstu ze wzorcem na /-tej pozycji.

Zanim zagłębimy się w wyjaśnienia na temat obliczania owych przesunięć, popatrzmy na efekt ich działania na kilku kolejnych przykładach.

Rys. 8 - 4.

Przesuwanie

i-const j* i^const

się wzorca vr algorytmie K-M-P (i).

[runur

b b b 1 p\ 11 b h hi > bbM

MYM4

' b | 3 | 4 | • 1 ' 1 2 ] 3 [ 4 | 1 | 2 | 3 | 4

j“7 i|j-3

Na rysunku 8-4 możemy dostrzec, iż na siódmej pozycji wzorca3 (którym jest dość abstrakcyjny ciąg 12341234) została stwierdzona niezgodność. Jeśli zostawimy indeks i „w spokoju”, to modyfikując wyłącznie j możemy bez problemu kontynuować przeszukiwanie. Jakie jest optymalne przesunięcie wzorca? „Ślizgając” go wolno w prawo (patrz rysunek 8-3) doprowadzamy w pewnym momencie do nałożenia się ciągów 123 przed kreską - cała strefa niezgodności została „wyprowadzona” na prawo i ewentualne dalsze testowanie może być kontynuowane!

’ Licząc indeksy tablicy tradycyjnie od zera.


Wyszukiwarka

Podobne podstrony:
ALG 8 8.‘ 208 Rozdział 8. Przeszukiwanie tekstów Rys. H - 1. Algorytm typu
ALG 0 220 Rozdział 8. Przeszukiwanie tekstwI iLi kowej i przenosząc otrzymaną wartość do następnego
ALG!4 214 Rozdział 8. Przeszukiwanie tekstdw inicjacji tej tablicy. Funkcja inicjująca tablicę jest
ALG!6 216 Rozdział 8. Przeszukiwanie tekslói8.2.2.Algorytm Boyera i Moore’a Kolejny algorytm, który
ALG!8 218 Rozdział 8. Przeszukiwanie tekstów for(i—M 1,j —M-l; j>0; i — , j—) while(t[i]!=włj)) (
ALG!0 210 Rozdział 8. Przeszukiwanie tekstów Zaprezentowany w tym paragrafie algorytm wykorzystuje k
ALG 6 276__Rozdziału. Algorytmy numeryczne double simpson_f(double i *f) (double),//wskaźnik do f(x)
ALG 8 258 Rozdział 10. Elementy algorytmiki grafa 1 Rys. 10- 10. Przeszukiwanie grafu „ w głąb Listu
ALG 0 90 Rozdział 4. Algorytmy sortowania 90 Rozdział 4. Algorytmy sortowania Rys. 4 - 8. Sortowanie
ALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunk
ALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2
ALG9 Rozdział 7Algorytmy przeszukiwania Pojęcie „przeszukiwania” pojawiało się w tej książce już ki
ALG6 Rozdział 7. Algorytmy przeszukiwania r > dzielenie modulo RmM: H(v) = v% Rmax Przykład: Dla
ALG 0 200 Rozdział 7. Algorytmy przeszukiwania Rekordy E i F zostały zapamiętane w momencie stwierdz
ALG 2 202 Rozdział 7. Algorytmy przeszukiwani! gdzie a jest współczynnikiem zapełnienia tablicy T. A
ALG 4 204 Rozdział 7. Algorytmy przeszukiwania i (gdzie a jest, tak jak poprzednio, współczynnikiem
ALG&0 260 Rozdział 10. Elementy algorytmiki grafów przebadane podczas przeszukiwania. Dopiero potem

więcej podobnych podstron