Documente Academic
Documente Profesional
Documente Cultură
Algoritmi
Algoritm = procedur de calcul (en. computational procedure) bine definit care primete o anumit valoare / mulime de valori ca intrare i produce o anumit valoare / mulime de valori ca ieire Problem(computaional) =relaiecerutntreintrarei ieire Algoritm = instrument pentru rezolvarea unri probleme = procedur de calcul care realizeaz relaia cerut ntre intrare i ieire
- complexitatea ca medie a mrimilor resursei consumate pentru toate intrrile de mrime n (de exemplu, pentru toi vectorii de lungime n);
-complexitatea n cazul cel mai defavorabil (de exemplu, pentru anumii algoritmi de sortare, cazul cel mai defavorabil este cel n care vectorul de intrare este ordonat descresctor); - complexitatea n cazul cel mai favorabil (de exemplu, pentru anumii algoritmi de sortare, cazul cel mai favorabil este cel n care vectorul de intrare este ordonat cresctor);
Complexitatea de timp a algoritmilor se evalueaz de obicei ca numr de operaii elementare efectuate (de exemplu, numrul de comparri ntre elementele unui vector, n cazul unui algoritm de sortare).
Exemplu:Sortareaprininseriedirect
pas iterativ (1): se ia componenta A[2] i se insereaz la locul ei n vectorul sortat de lungime 1, A[1], producnd un vector sortat de lungime 2.
pas iterativ (i): (pas) vectorul este mprit n dou pri: A[1], , A[i] este sortat cresctor i se numete destinaie, iar A[i+1], , A[n] este nc nesortat i se va numi surs. Se ia prima component dn surs, A[i+1], i se caut s se insereze la locul ei n destinaie. Cutarea locului lui A[i+1] n destinaie se face linear, parcurgnd destinaia de la dreapta la stnga i mutnd pe rnd cte o poziie la dreapta componentele care sunt mai mari dect valoarea de inserat, pn cnd gsim locul valorii x = A[i+1] i o inserm.
Sortareaprininseriedirect
procedure InsDir (A) {sortare prn insertie directa a vectorului A[1..n]} for i:= 2 to n do x:= A[i]; {se caut locul valorii x n destinaie} j:= i- 1; while (j > 0) and (x < A[j]) do A[j+1]:= A[j] j:= j- 1 endwhile {inserarea lui x la locul lui} A[j+1]:= x endfor endproc.
Sortareaprininseriedirect (continuare)
procedure InsDir1(A) {s. prn insertie directa a vectorului A[1..n] cu componenta marcaj A[0]} for i:= 2 to n do {se introduce valoarea n componenta marcaj} A[0]:= A[i]; {se caut locul valorii n destinaie} j:= i-1; while (A[0] < A[j]) do A[j+1]:= A[j] j:= j-1 endwhile A[j+1]:= A[0] endfor endproc.
Structur de date
Colecie finit de date omogene
o anume organizare - structur un anumit tip de acces la date
Operaii de baz
Traversarea
operaia care acceseaz fiecare element al structurii, o singura dat, n vederea procesrii (vizitarea elementului)
cutarea
se caut un element cu cheie dat n structura cu sau fr succes const dintr-o traversare - eventual incomplet a structurii, n care vizitarea revine la comparaia cu elementul cutat problema cheilor multiple - gsirea primei apariii, a tuturor apariiilor
tergerea
extragerea unui element al structurii (eventual n vederea unei procesri), cu pstrarea tipului structurii pe elementele rmase Inserarea i tergerea - n reprezentarea mulimilor cu caracter dinamic are costuri mici
Operaii (continuare)
Iniializarea structurii cu structura vid Crearea - prin inserari repetate
(1) iniializarea structurii cu structura vid (2) un ciclu repetitiv (de lungime variabil) (a) se ia cte un element dintr-un fiier de intrare; (b) pentru fiecare asemenea element se apeleaz o procedur ce implementeaz operaia de inserare.
Operaii (continuare)
Combinare (en. merge)
din dou structuri de acelai tip se produce o alt structur, de acelai tip, ce conine reuniunea elementelor structurilor de intrare
ex: interclasarea a dou structuri liniare ordonate
Sortarea
ordonarea total a elementelor
sortarea mulimilor statice sortarea mulimilor dinamice
Observaii
Legtura operaiilor ntre ele
inserare/tergere - inverse una alteia inserare/tergere - sunt precedate de cutarea locului n care se fac cutarea - traversare (eventual incomplet)
Nelineare
arborescente grafuri
Bibliografie
1. D.E. Knuth :"Tratat de programarea calculatoarelor", vol. I si III 2. T. H. Cormen, C. E. Leiserson, R. L. Rivest: "Introduction to Algorithms", The MIT Press, 1990 3. N. Wirth: "Algorithms + Data Structures = Programs", Prentice Hall Inc., 1976 4. A. V. Aho, J. E. Hopcroft, J. D. Ullman: "Data Structures and Algorithms", Addison-Wesley Publ. Comp., 1983 5. S. Baase: "Computer Algorithms: Introduction to Design and Analysis", Addison-Wesley Publ. Comp., 1988 6. L. Nyhoff, S. Leestma: "Advanced programming n Pascal with Data Structures", MacMillan Publ. Comp. N.Y., 1988 7. L. Livovschi, H. Georgescu: "Sinteza si analiza algoritmilor", Ed. Stiintifica si Enciclopedica, Bucuresti, 1986 8. C. Ionescu Texe, I. Zsako: "Structuri arborescente cu aplicatiile lor", Ed. Tehnica, Bucuresti, 1990 9. I. Tomescu: "Data Structures", Editura Univ. dn Bucuresti, 1997 10. Rodica Ceterchi "Structuri de date", Editura Univ. dn Bucuresti, 2001