Professional Documents
Culture Documents
Curs 01 - Performanta, Sortari
Curs 01 - Performanta, Sortari
October 3, 2012
AlgStrDat
October 3, 2012
1 / 16
Bibliograe
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 Cormen, Leiserson, Rivest, Stein - CLRS2 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. Sedgewick 6. Dasgupta, Papadimitriou, Vazirani
AlgStrDat
October 3, 2012
2 / 16
Algoritmi
AlgStrDat
October 3, 2012
3 / 16
Algoritmi
Structuri de Date
AlgStrDat
October 3, 2012
3 / 16
Algoritmi
AlgStrDat
October 3, 2012
3 / 16
Algoritmi
Corectitudine
se opreste relatia input/output dorita
AlgStrDat
October 3, 2012
4 / 16
Algoritmi
Corectitudine
se opreste relatia input/output dorita
Performanta
Masura a costurilor
timp (viteza) spatiu
AlgStrDat
October 3, 2012
4 / 16
Algoritmi
Corectitudine
se opreste relatia input/output dorita
Performanta
Masura a costurilor
timp (viteza) spatiu
Mai bine?
Se poate mai bine?
AlgStrDat
October 3, 2012
4 / 16
Algoritmi
Corectitudine
se opreste relatia input/output dorita
Performanta
Masura a costurilor
timp (viteza) spatiu
Mai bine?
Se poate mai bine?
AlgStrDat
October 3, 2012
4 / 16
2 Mari Probleme
Sortarea
Input Un vector (a1 , a2 , , an ) Output (a1 , a2 , , an ) a.i. a1 a2 an
AlgStrDat
October 3, 2012
5 / 16
2 Mari Probleme
Sortarea
Input Un vector (a1 , a2 , , an ) Output (a1 , a2 , , an ) a.i. a1 a2 an
Cautarea
Input O multime {a1 , a2 , , an } si o valoare x Output Este x {a1 , a2 , , an } ? Yes sau No
AlgStrDat
October 3, 2012
5 / 16
Sortarea
AlgStrDat
October 3, 2012
6 / 16
AlgStrDat
October 3, 2012
7 / 16
AlgStrDat
October 3, 2012
8 / 16
AlgStrDat
October 3, 2012
8 / 16
Mutari
Mmin = 2 + 2 + + 2 = 2(n 1) Mmax = 3 + 4 + + (n + 1) = (n + 1) (n + 2)/2 3 = (1/2)n2 + (3/2)n 2 Mmediu = Cmediu + 2(n 1) = (1/4)n2 + (9/4)n 5/2
AlgStrDat
October 3, 2012
8 / 16
Mutari
Mmin = 2 + 2 + + 2 = 2(n 1) Mmax = 3 + 4 + + (n + 1) = (n + 1) (n + 2)/2 3 = (1/2)n2 + (3/2)n 2 Mmediu = Cmediu + 2(n 1) = (1/4)n2 + (9/4)n 5/2 la pasul/iteratia i , avem Mi = Ci + 1.
AlgStrDat October 3, 2012 8 / 16
Performanta
Comparatii
Cmin = n 1 Cmax = (1/2)n2 + (1/2)n 1 Cmediu = (1/4)n2 + (1/4)n 1/2
AlgStrDat
October 3, 2012
9 / 16
Performanta
Comparatii
Cmin = n 1 Cmax = (1/2)n2 + (1/2)n 1 Cmediu = (1/4)n2 + (1/4)n 1/2
AlgStrDat
October 3, 2012
9 / 16
Performanta
Comparatii
Cmin = n 1 Cmax = (1/2)n2 + (1/2)n 1 Cmediu = (1/4)n2 + (1/4)n 1/2
Performanta
Comparatii
Cmin = n 1 Cmax = (1/2)n2 + (1/2)n 1 Cmediu = (1/4)n2 + (1/4)n 1/2
AlgStrDat
October 3, 2012
10 / 16
AlgStrDat
October 3, 2012
10 / 16
AlgStrDat
October 3, 2012
10 / 16
AlgStrDat
October 3, 2012
10 / 16
Notatia asimptotica
comportarea lui T (n) cind n
AlgStrDat
October 3, 2012
11 / 16
Notatia asimptotica
comportarea lui T (n) cind n
Formal
f : N R+
AlgStrDat
October 3, 2012
11 / 16
Notatia asimptotica
comportarea lui T (n) cind n
Formal
f : N R+ (f asimptotic pozitiva) O(g ) := {f | c > 0, n0 a.i. 0 f (n) cg (n) for all n n0 }
AlgStrDat
October 3, 2012
11 / 16
Notatia asimptotica
comportarea lui T (n) cind n
Formal
f : N R+ (f asimptotic pozitiva) O(g ) := {f | c > 0, n0 a.i. 0 f (n) cg (n) for all n n0 } (g ) := {f | c > 0, n0 a.i. 0 cg (n) f (n) for all n n0 }
AlgStrDat
October 3, 2012
11 / 16
Notatia asimptotica
comportarea lui T (n) cind n
Formal
f : N R+ (f asimptotic pozitiva) O(g ) := {f | c > 0, n0 a.i. 0 f (n) cg (n) for all n n0 } (g ) := {f | c > 0, n0 a.i. 0 cg (n) f (n) for all n n0 } (g ) := {f | c1 , c2 > 0, n0 a.i. 0 c1 g (n) f (n) c2 g (n) for all n n0 }
AlgStrDat
October 3, 2012
11 / 16
Notatia asimptotica
comportarea lui T (n) cind n
Formal
f : N R+ (f asimptotic pozitiva) O(g ) := {f | c > 0, n0 a.i. 0 f (n) cg (n) for all n n0 } (g ) := {f | c > 0, n0 a.i. 0 cg (n) f (n) for all n n0 } (g ) := {f | c1 , c2 > 0, n0 a.i. 0 c1 g (n) f (n) c2 g (n) for all n n0 }
AlgStrDat
October 3, 2012
12 / 16
Properties:
(g ) = O(g ) (g ) Tranzitivitate f = (g ), g = (h) = f = (h) f = O(g ), g = O(h) = f = O(h) f = (g ), g = (h) = f = (h) Reexivitate f = (f ) f = O (f ) f = (f ) Simetrie f = (g ) daca si numai daca g = (f ) Simetrie transpusa f = O(g ) daca si numai daca g = (f )
AlgStrDat October 3, 2012 13 / 16
MergeSort
MergeSort
MergeSort(A, 1, n) if n = 1 sortat MergeSort(A, 1, n/2) MergeSort(A, n/2, n) Merge cei 2 subvectori ordonati
AlgStrDat
October 3, 2012
14 / 16
MergeSort
MergeSort
MergeSort(A, 1, n) if n = 1 sortat MergeSort(A, 1, n/2) MergeSort(A, n/2, n) Merge cei 2 subvectori ordonati
Merge = interclasare
input: 2 vectori ordonati crescator a[1..n] si b [1..n] output: vector c [1..2n] = a b ordonat crescator
AlgStrDat
October 3, 2012
14 / 16
MergeSort
MergeSort
MergeSort(A, 1, n) if n = 1 sortat MergeSort(A, 1, n/2) MergeSort(A, n/2, n) Merge cei 2 subvectori ordonati
Merge = interclasare
input: 2 vectori ordonati crescator a[1..n] si b [1..n] output: vector c [1..2n] = a b ordonat crescator (n)
AlgStrDat
October 3, 2012
14 / 16
MergeSort - performanta
AlgStrDat
October 3, 2012
15 / 16
MergeSort - performanta
AlgStrDat
October 3, 2012
15 / 16
MergeSort - performanta
AlgStrDat
October 3, 2012
15 / 16
MergeSort - performanta
MergeSort - T (n)
T (n) = (nlogn)
AlgStrDat
October 3, 2012
15 / 16
MergeSort T (n) = (nlogn) InsertionSort T (n) = (n2 ) (nlogn) creste mai incet decat (n2 )
AlgStrDat
October 3, 2012
16 / 16
MergeSort T (n) = (nlogn) InsertionSort T (n) = (n2 ) (nlogn) creste mai incet decat (n2 ) n mare ?
AlgStrDat
October 3, 2012
16 / 16
MergeSort T (n) = (nlogn) InsertionSort T (n) = (n2 ) (nlogn) creste mai incet decat (n2 ) n mare ? pentru o aplicatie concreta, ce domeniu de valori are n?
AlgStrDat
October 3, 2012
16 / 16