Prezentarea se încărcă. Vă rugăm să așteptați

Prezentarea se încărcă. Vă rugăm să așteptați

TDA şir Structuri de date şi algoritmi -laborator-

Prezentări similare


Prezentarea pe tema: "TDA şir Structuri de date şi algoritmi -laborator-"— Transcriere de prezentare:

1 TDA şir Structuri de date şi algoritmi -laborator-
s.l. dr. ing. Ciprian-Bogdan Chirilă Universitatea Politehnica Timişoara 2014

2 Cuprins TDA şir Tehnici de căutare în şiruri Concluzii model matematic
notaţii operatori implementare cu tablouri Tehnici de căutare în şiruri căutarea de şiruri directă căutarea de şiruri Boyer-Moore Concluzii

3 TDA şir – modelul matematic
Un şir este o secvenţă finită de caractere (c1,c2,…,cn) unde: ci este un caracter n precizează lungimea secvenţei Când n=0 secvenţa corespunzătoare desemnează şirul vid

4 TDA şir - notaţii s, sub, u – şiruri c – valoare de tip caracter
b – valoare booleană poz, lung – întregi pozitivi

5 TDA şir - operatori CreazaSirVid(s) SirVid(s)->b
LungSir(s)->lung Pozitie(sub,s)->poz Concat(u,s) CopiazaSubsir(u,s,poz, lung) StergeSir(s,poz,lung) InsereazaSir(sub,s,poz) FurnizeazaCar(s,poz) AdaugaCaractere(s,c) StergeSubsir(sub,s,poz) StergeToateSubsir(s,sub)

6 TDA şir – implementare cu tablouri
char s[100]; // declaratie tablou char c; // declaratie variabila tip caracter int i; // declaratie variabila de tip indice strcpy(s,"Hello World!\n"); printf("%s",s); s[5]='&'; i=6; c=s[i]; printf("%c\n",s[i]);

7 Căutare de şiruri directă
Se cere să se determine poziţia primei apariţii în şirul s a modelului p. În căutarea directă modelul este deplasat “paralel cu şirul”, cu câte o poziţie până la găsirea lui sau până la când numărul poziţiilor netestate din şir e mai mic decât lungimea modelului.

8 Căutare de şiruri directă - cod
int CautareDirecta(char *s, int n, char *p, int m) { int i,j; i=-1; do i++;j=0; while((j<m) && (s[i+j]==p[j])) j++; } while((j<m) && (i<n-m)); return j==m ? i : -1;

9 Căutare de şiruri directă – demo 1
MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA

10 Căutare de şiruri directă – demo 2
MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA

11 Căutare de şiruri directă – demo 3
MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA

12 Căutare de şiruri directă – demo 4
MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA

13 Căutare de şiruri Boyer-Moore
Este o metodă mai performantă care se bazează pe informaţii obţinute din precompilarea modelului de căutat; Se compară perechi de caractere pornind de la ultimul caracter din model; Dacă apare inegalitate, modelul va fi deplasat spre dreapta a.î. în dreptul caracterului unde a apărut nepotrivirea, să se afle un caracter identic din model;

14 Căutare de şiruri Boyer-Moore - cod
int CautareBoyerMoore(char *s, int n, char *p, int m) { int d[256]; int i,j,k; for(i=0;i<256;i++) d[i]=m; for(j=0;j<m-1;j++) d[p[j]]=m-j-1;

15 Căutare de şiruri Boyer-Moore - cod
i=m;j=m; while((j>0) && (i<=n)) { j=m; k=i; while((j>0) && (s[k-1]==p[j-1])) k--; j--; } if(j>0) i=i+d[s[k-1]]; return j==0 ? i-m : -1;

16 Căutare de şiruri Boyer-Moore – demo
MARE_E_MAREA_MARMARA MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA MARMARA MARE_E_MAREA_MARMARA

17 Concluzii Salturi mai mari la căutarea Boyer-Moore faţă de cea directă; Aplicaţii practice ale şirurilor de caractere: baze de date (câmpuri de tip şir de caractere); procesoare de texte (Word, PageMaker, etc); compilatoare, interpretoare (textul sursă al programelor sunt văzute ca şiruri de caractere !!!)


Descărcați ppt "TDA şir Structuri de date şi algoritmi -laborator-"

Prezentări similare


Publicitate de la Google