Documente Academic
Documente Profesional
Documente Cultură
October 3, 2012
AlgStrDat
October 3, 2012
1 / 16
Bibliografie
AlgStrDat
October 3, 2012
2 / 16
Algoritmi
AlgStrDat
October 3, 2012
3 / 16
Algoritmi
Structuri de Date
AlgStrDat
October 3, 2012
3 / 16
Algoritmi
Structuri de Date
Algorithms + Data Structures = Programs
Niklaus Wirth, 1976
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
I
I
timp (viteza)
spatiu
AlgStrDat
October 3, 2012
4 / 16
Algoritmi
Corectitudine
se opreste
relatia input/output dorita
Performanta
Masura a costurilor
I
I
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
I
I
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 (a10 , a20 , , an0 ) a.i. a10 a20 an0
AlgStrDat
October 3, 2012
5 / 16
2 Mari Probleme
Sortarea
Input Un vector (a1 , a2 , , an )
Output (a10 , a20 , , an0 ) a.i. a10 a20 an0
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
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
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
October 3, 2012
9 / 16
AlgStrDat
October 3, 2012
10 / 16
AlgStrDat
October 3, 2012
10 / 16
AlgStrDat
October 3, 2012
10 / 16
AlgStrDat
October 3, 2012
10 / 16
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)
Reflexivitate
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
AlgStrDat
October 3, 2012
16 / 16
AlgStrDat
October 3, 2012
16 / 16
AlgStrDat
October 3, 2012
16 / 16