ALG 8

ALG 8



8.‘

208

Rozdział 8. Przeszukiwanie tekstów

Rys. H - 1.

Algorytm typu

|— Fragmenty (jeszcze) zgodne

-i

biute-force prze-


szukiwania tekstu.

T

E

L

E

F | O

N

0

j

M-l


7]T]

N-l


wzorzec w    Badany tekst t

Cóż się jednak powinno stać z indeksami i oraz j podczas stwierdzenia niezgodności znaków? W takiej sytuacji cale poszukiwanie kończy się porażką, co zmusza nas do anulowania „szarej strefy” zgodności. Czynimy to poprzez cofnięcie się w tekście o to, co było zgodne, czyli o j-l znaków, wyzerowując przy okazji j. Omówmy jeszcze moment stwierdzenia całkowitej zgodności wzorca z tekstem. Kiedy to nastąpi? Otóż nie jest trudno zauważyć, że podczas stwierdzenia zgodności ostatniego znaku j powinno zrównać się z M. Możemy wówczas łatwo odtworzyć pozycję, od której wzorzec startuje w badanym tekście: będzie to oczywiście i-M.

Tłumacząc powyższe na C++ możemy łatwo dojść do następującej procedury:

fxt-l.cpp

int szukaj(char *w,char *t)

<

int i=0,j=0,M,N;

M-stilen(w);    // długość wzorca

N=strlen(t);    II długość tekstu

while(j<M SS i<N)

I

II


II


if(t[i)!—w[j]) I

i—j-i;

3 “-li

)

i++; j++; t

if (j—-M)

return i-M;

else

return -1;

Sposób korzystania z funkcji szukaj jest przedstawiony na przykładzie następującej funkcji niciizr.

void main()

// zwraca 2


char *b="abrakadabra",*a="rak cout « szukaj(a,b) << endl;


Wyszukiwarka

Podobne podstrony:
ALG!0 210 Rozdział 8. Przeszukiwanie tekstów Zaprezentowany w tym paragrafie algorytm wykorzystuje k
ALG!2 212 Rozdział 8. Przeszukiwanie teksfe Rys. 8 - 3. 1 Wyszukiwanie tekst przebadany tekst do
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!6 216 Rozdział 8. Przeszukiwanie tekslói8.2.2.Algorytm Boyera i Moore’a Kolejny algorytm, który
ALG!4 214 Rozdział 8. Przeszukiwanie tekstdw inicjacji tej tablicy. Funkcja inicjująca tablicę jest
ALG 0 220 Rozdział 8. Przeszukiwanie tekstwI iLi kowej i przenosząc otrzymaną wartość do następnego
ALG 8 258 Rozdział 10. Elementy algorytmiki grafa 1 Rys. 10- 10. Przeszukiwanie grafu „ w głąb Listu
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
143 tif 4. Z. ROZDZIELNIE WYSOKICH NAPIĘĆ Rys. 4,12. Przykłady rozwiązań konstrukcyjnych pól rozdzie
4.3. ROZDZIELNIE ŚREDNICH NAPIĘĆ Rys. 4.24. Rozdzielnica typu UNIARC 10/2 na napięcie 10 kV i prądy

więcej podobnych podstron