Documente Academic
Documente Profesional
Documente Cultură
SEMESTRUL II
2013/2014
Lect. dr. Trmbia Maria-Gabriela
1
Cuprinsul cursului
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Bibliografie
1. CORMEN, THOMAS H. - LEISERSON, CHARLES - RIVEST, RONALD R.:
Introducere n algoritmi. Cluj-Napoca: Editura Computer Libris Agora, 2000.
2. SIMONAS SALTENIS:Algorithms and Data Structures, 2002.
3. STANDISH, T.A.: Data Structures, Algorithms & Software Principles in C, AddisonWesley, 1995
4. FRENTIU M., POP H.F., SERBAN G.: Programming Fundamentals, Ed.Presa
Universitara Clujeana, Cluj-Napoca, 2006, 234 pagini
5. SEDGEWICK, R.: Algorithmen, Addison-Wesley,1998
6. WIRTH, N.: Algorithmen und Datenstrukturen, Pascal Version, 5 Auflage, B.G.
Teubner Stuttgart,1998
7. NICULESCU V., CZIBULA G.: Structuri fundamentale de date. O perspective
orientate obiect. Editura Casa Cartii de Stiinta, Cluj-Napoca,2011
8. HOROWITZ, E.: Fundamentals of Data Structures in C++. Computer Science Press,
1995.
9. MOUNT, DAVID M.: Data Structures. University of Maryland, 1993.
10. AMBSBURY, WAYNE: Data Structures. From Arrays to Priority Queues, 1993.
11. BRUNO R. PREISS, Data Structures and Algorithms with Object-Oriented Design
Patterns in C++, 1997.
Lect. Dr. Trimbitas Maria-Gabriela
1. Introducere
Structuri de date
Algoritmi
Algoritm
Reprezentarea
algoritmilor
Descriere verbal
Grafic: Structograme, diagrame de flux, etc.
Pseudocod
Limbaj de programare
.
Teza lui Church Toate formele de
reprezentare ale algoritmilor sunt echivalente.
i n Pascal
PROGRAM cmmdc (Input,Output);
VAR a,b: Integer;
BEGIN
ReadLn(a,b);
WHILE (a > 0) AND (b > 0) DO
IF a > b THEN
a := a-b;
ELSE b := b-a;
IF b=0 THEN
WriteLn(a)
ELSE WriteLn(b)
END.
Observatie: ?
10
11
12
Stil n proiectarea SD
Un program poate rezolva corect o problem, dar poate fi un program
slab din multe puncte de vedere:
o are un timp de execuie relativ mare;
o utilizeaz spaiu de memorie excedentar;
o dificil de depanat, de citit, de modificat;
o greu reutilizabil sau nereutilizabil n alte proiecte (programe).
SD trebuie concepute astfel nct s nlture neajunsurile de mai sus;
3 reguli generale:
R1: Rafinarea pas cu pas (Stepwise refinement);
R2: Abstractizare:
o grupare unor componente n mod logic;
o s poat fi reutilizate de alte SD, sau alte programe;
o detaliile de implementare s fie amnate pn la codificare;
o separarea descrierii logice de implementare.
R3: Independen de limbaj.
Lect. Dr. Cioban Vasile
13
Exemplu rafinare: paii n abstractizarea (prin rafinare) unei stive de elemente de tipul TE
step 1: stiva de elemente de tipul TE
step 2: stiv cu alocarea dinamic a elementelor de tipul TE
step 3: stiv cu alocarea dinamic o obiectelor care reprezint elemente de tipul TE
Exemplu abstractizare
Versiunea 1
Nume = String[15];
Persoan =
Record
NumeFam,Prenume:Nume;
CodTelefon:
0..1000;
NrTelefon:
String[9];
Ziua:
1..31;
Luna:
1..12;
Anul:
1900..2100;
End;
Versiunea 2
Nume = String[15];
TipTelefon =
Record
CodTelefon: 0..1000;
NrTelefon: String[9];
End;
DataCalend =
Record
Ziua:1..31;
Luna:1..12;
Anul:1900..2100;
End;
Persoana =
Record
NumeFam,Prenume: Nume;
Telefon:
TipTelefon;
DataNasterii: DataCalend;
End;
14
2. Complexiti
15
Observaii preliminare:
1. Afirmaiile despre complexitatea algoritmilor i a problemelor
trebuie s fie de regul independente de un anumit model de
main i anumite proprieti ale implementrii, ca i de
detaliile technologice
2. La studiul funciilor de complexitate nu intereseaz att de
mult evoluia exact a valorilor unei funcii f:N->R+ ci
tendina acesteia, comportamentul ei de cretere
(comportament asimptotic) atunci cnd crete argumentul
16
17
18
19
20
Prof. Dr. Hans Joachim Pflug
21
Prof. Dr. Hans Joachim Pflug
22
23
Reflexivitate:
Simetrie:
Antisimetrie:
24
Notaia(g(n))
Notaia(g(n))
Exemplu:
Exemplu:
n2+1000n
f(n2)
g(n)=n2
Fie f(n) =
demonstrm c
cu
deci se caut c>0 i n0N astfel nct pentru toi nn0 f(n)cn2
f(n) = n2+1000n n2+1000n2=1001n2 => c=1001, n0=1
25
Notaia (g(n))
26
O(g) este mulimea tuturor funciilor care cresc asimptotic cel mult la fel
de repede ca cg.
De exemplu:
27
Demonstraie:
28
Denumire
constant
logaritmic
linear
quadratic
cubic
polinomial
superlinear
exponential
n!
Factorial
Exemplu
Instructiuni elementare
Cautare binara
Minimum unui sir
Procedee simple de sortare
Inversarea matricelor
Programare Lineara
Procedee eficiente de sortare
brute-force search,
Backtracking
Permutari,Problema comisvoiajorului, Met.Kramer
29
Regul de baz:
Cea mai mic clas de complexitate (n notatia O) rezult din TA(n) prin:
o Extragerea termenului dominant(cel mai mare) i prin
o Renunarea la coeficieni
De exemplu:
T(n)=60n2+ 4n TO(n2);
T(n)=lg(n) + 1 TO(lg(n))=O(log(n)),
de ce?
30
(f) este mulimea tuturor funciilor asimptotice care cresc cel puin
la fel de repede ca i cg.
Exemplu:
deoarece
pentru
31
Exist o limit superioar c1i o limit inferioar c2, astfel nct din
punct de vedere asimptotic pentru toi n>n0) este adevrat:
c1g(n)f(n)c2g(n)
Exemplu:
f(n) = 2n+ 7n +10
=> f(n) (n) pentru n0 = 9
Demonstraie:
3n 2n+7n+10 2 n pentru n0= 9
32
33
(1),
n 1
sau
T(n) n
2T (1) (n), n 1
(1),
n 1
T(n) n
2T
(n), n 1
2
0,
n 1
T(n) n
2T
n, n 1
2
Teorema master
35
0,
n 1
T(n) n
2T
n, n 1
2
i aplicnd Teorema master avem a=b=2 => f(n)=(n), deci ne aflm n cazul 2
=> T(n) = (n log n)
36
37
38
function MATMULT(A,B,l,m,n)
C = zeroes(l,n)
// zeroizare matrice rezultat C
for i = 1 to l
// ciclu dupa liniile lui C
for k = 1 to n
// ciclu dupa coloanele lui C
for j = 1 to m
// ciclu dupa coloanele A / liniile lui B
C(i,k) = C(i,k) + A(i,j) * B(j,k) // calculul sumei de produse
end
end
end
return C
Ordinea pentru cele trei ciluri for poate fi schimbat. Deoarece cele trei
cicluri sunt independente unele de altele, numrul operaiilor este de ordinul
O(lmn)
Ca urmare timpul de execuie pentru matrice ptratice (l=m=n) este cubic,
deci de ordinul O(n3)
Lect. Dr. Trimbitas Maria-Gabriela
39
40