Sunteți pe pagina 1din 46

Analiza eficient, ei algoritmilor

SD 2014/2015

Continut

Analiza eficient, ei algoritmilor

Analiza funct, iilor recursive


Funct, ii recursive
Metoda substitutiei
Arborele de recursie
Teorema Master

FII, UAIC

Curs 3

SD 2014/2015

2 / 39

Clase de eficient, a

Clasa
logaritmic

Notat, ie
O(log n)

Exemplu
cautare binara

liniar

O(n)

cautare secvent, iala

patratic

O(n2 )

sortare prin insert, ie

cubic

O(n3 )

nmult, irea a doua matrici n n

exponent, ial

O(2n )

prelucrarea submult, imilor unei mult, imi cu


n elemente

factorial

O(n!)

prelucrarea permutarilor de ordin n

FII, UAIC

Curs 3

SD 2014/2015

3 / 39

Analiza empirica a eficient, ei algoritmilor

Utilizata atunci cand analiza teoretica a eficient, ei este dificila.

Scop:
I

formularea unei ipoteze init, iale privind eficient, a algoritmului;

verificarea unei afirmat, ii (ipoteze) privind eficient, a;

compararea algoritmilor;

analiza eficient, ei unei implementari.

FII, UAIC

Curs 3

SD 2014/2015

4 / 39

Analiza empirica a eficient, ei algoritmilor


I

Se stabiles, te scopul analizei.

Se alege o masura a eficient, ei


Exemplu: numarul de execut, ii ale unor operat, ii, timpul, etc.

Se stabilesc caracteristicile setului de date de intrare.

Se implementeaza algoritmul.

Se genereaza datele de intrare.

Se executa programul pentru toate datele de intrare; se nregistreaza


rezultatele.

Se analizeaza rezultatele.

FII, UAIC

Curs 3

SD 2014/2015

5 / 39

Continut

Analiza eficient, ei algoritmilor

Analiza funct, iilor recursive


Funct, ii recursive
Metoda substitutiei
Arborele de recursie
Teorema Master

FII, UAIC

Curs 3

SD 2014/2015

6 / 39

Continut

Analiza eficient, ei algoritmilor

Analiza funct, iilor recursive


Funct, ii recursive
Metoda substitutiei
Arborele de recursie
Teorema Master

FII, UAIC

Curs 3

SD 2014/2015

7 / 39

Funct, ii recursive

Funct, ia f() apeleaz


a direct funct, ia g() daca n definit, ia lui f() exista
un apel la g().

Funct, ia f() apeleaz


a indirect funct, ia g() daca f() apeleaza direct o
funct, ie h(), iar h() apeleaza direct sau indirect funct, ia g().

Funct, ia f() este definita recursiv daca ea se auto-apeleaza direct sau


indirect.

FII, UAIC

Curs 3

SD 2014/2015

8 / 39

Funct, ii recursive

Definit, ia unei funct, ii recursive cuprinde:


I

Testarea cazului de baz


a condit, ia de oprire a apelului recursiv.

Apelul recursiv (cazul general): o variabila (ntreaga) este


transmisa ca parametru funct, iei nsas, i, n as, a fel ca dupa un numar de
pas, i sa se atinga cazul de baza.

Observat, ie: Exista s, i funct, ii recursive fara parametri.

FII, UAIC

Curs 3

SD 2014/2015

9 / 39

Funct, ii recursive
Exemplul 1. Definit, ia funct, iei factorial:
I

Cazul de baza: 0! = 1;

Cazul general: n! = n ((n 1)!), n > 0.

Function factorial(n)
begin
if n <= 1 then
return 1
else
return (n factorial(n 1))
end

FII, UAIC

Curs 3

SD 2014/2015

10 / 39

factorial(4) - apel recursiv

FII, UAIC

Curs 3

SD 2014/2015

11 / 39

factorial(4) - apel recursiv

algoritmii recursivi: us, or de implementat;

costuri suplimentare: la fiecare apel recursiv se plaseaza o serie de


informat, ii ntr-o zona de memorie specifica (stiva programului).
FII, UAIC

Curs 3

SD 2014/2015

11 / 39

factorial(n) - varianta iterativa

Function factorial(n)
begin
produs 1
while n > 1 do
produs produs n
n n1
return produs
end

Observat, ie: Valoarea returnata de factorial(n) este corecta doar pentru


valorile lui n pentru care n! este mai mic sau egal decat cea mai mare
constanta ntreaga pe care o putem reprezenta !

FII, UAIC

Curs 3

SD 2014/2015

12 / 39

Recursie vs. iterat, ie. Fibonacci recursiv


Exemplul 2. S, irul lui Fibonacci:
I

f (0) = 0, f (1) = 1,

f (n) = f (n 1) + f (n 2), n > 1.

Function fib(n)
begin
if n <= 1 then
return n
else
return fib(n 1) + fib(n 2)
end

FII, UAIC

Curs 3

SD 2014/2015

13 / 39

Fibonacci recursiv: arbore apeluri

O(n )

FII, UAIC

Curs 3

SD 2014/2015

14 / 39

Numar de apeluri

fib(n)

apeluri

24

46368

150049

42

267914296

866988873

43

433494437

1402817465

FII, UAIC

Curs 3

SD 2014/2015

15 / 39

Recursie vs. iterat, ie: Fibonacci iterativ

Function ifib(n)
begin
f00
f11
if n <= 1 then
return n
else
for k 2 to n do
temp f 1
f1f1+f0
f 0 temp
return f 1
end

FII, UAIC

Curs 3

SD 2014/2015

16 / 39

Comparat, ie Fibonacci recursiv/iterativ

timp de executie (secunde)

60
Ruby
Scheme
Python
C
Java
C-gcc
(Python) Fibonacci iterativ

40

20

0
20

FII, UAIC

40

60

80

100 120 140 160 180 200


n

Curs 3

SD 2014/2015

17 / 39

Eficient, a algoritmilor recursivi

Pentru estimarea timpului de execut, ie:


I

se stabiles, te relat, ia de recurent, a care exprima legatura dintre timpul de


execut, ie corespunzator problemei init, iale s, i timpul de execut, ie
corespunzator problemei reduse;

se rezolva relat, ia de recurent, a.

Exemplu: pentru calculul factorialului, relat, ia de recurent, a pentru


timpul de execut, ie este:

0,
n=0
T (n) =
T (n 1) + 1, n > 1

FII, UAIC

Curs 3

SD 2014/2015

18 / 39

Rezolvarea recurent, elor


1. Metoda substitut, iei. Se ghices, te o limita s, i apoi se utilizeaza
induct, ia matematica pentru a demonstra corectitudinea.

2. Arborele de recursie. Convertes, te recurent, a ntr-un arbore (nodurile


reprezinta costuri).

3. Metoda master. Furnizeaza limite pentru recurent, e de forma


T (n) = aT (n/b) + f (n)
.
FII, UAIC

Curs 3

SD 2014/2015

19 / 39

Continut

Analiza eficient, ei algoritmilor

Analiza funct, iilor recursive


Funct, ii recursive
Metoda substitutiei
Arborele de recursie
Teorema Master

FII, UAIC

Curs 3

SD 2014/2015

20 / 39

1. Metoda substitut, iei

Se ghices, te solut, ia.

Se utilizeaza induct, ia matematica pentru a determina constantele s, i


pentru a demonstra ca solut, ia este corecta.

FII, UAIC

Curs 3

SD 2014/2015

21 / 39

Metoda substitut, iei - exemplu


Determinarea unei limite superioare pentru relat, ia T (n) = 2T (bn/2c) + n

FII, UAIC

Curs 3

SD 2014/2015

22 / 39

Metoda substitut, iei - exemplu


Determinarea unei limite superioare pentru relat, ia T (n) = 2T (bn/2c) + n
I Ghicim solut, ia: T (n) = O(n log n).
I Demonstr
am prin induct, ie ca T (n) cn log n, pentru c > 0.

FII, UAIC

Curs 3

SD 2014/2015

22 / 39

Metoda substitut, iei - exemplu


Determinarea unei limite superioare pentru relat, ia T (n) = 2T (bn/2c) + n
I Ghicim solut, ia: T (n) = O(n log n).
I Demonstr
am prin induct, ie ca T (n) cn log n, pentru c > 0.
Presupunem ca limita are loc pentru toate valorile pozitive m < n, n
particular pentru m = bn/2c: T (bn/2c) cbn/2c log(bn/2c).
T (n) 2(cbn/2c log(bn/2c)) + n
cn log(bn/2c) + n
= cn log n cn log 2 + n
= cn log n cn + n
cn log n, pentru c 1

FII, UAIC

Curs 3

SD 2014/2015

22 / 39

Metoda substitut, iei - exemplu


Determinarea unei limite superioare pentru relat, ia T (n) = 2T (bn/2c) + n
I Ghicim solut, ia: T (n) = O(n log n).
I Demonstr
am prin induct, ie ca T (n) cn log n, pentru c > 0.
Presupunem ca limita are loc pentru toate valorile pozitive m < n, n
particular pentru m = bn/2c: T (bn/2c) cbn/2c log(bn/2c).
T (n) 2(cbn/2c log(bn/2c)) + n
cn log(bn/2c) + n
= cn log n cn log 2 + n
= cn log n cn + n
cn log n, pentru c 1
Trebuie sa aratam ca solut, ia este valida s, i pentru condit, iile limita.
T (1) = 1 c1 log 1 = 0
Cazuri de baza: T(2) s, i T(3) ( n0 = 2 )
T (2) = 4 s, i T (3) = 5, T (2) c2 log 2 s, i T (3) c3 log 3 c 2.
FII, UAIC

Curs 3

SD 2014/2015

22 / 39

Metoda substitut, iei - subtilitat, i


I

Scaderea unui termen de ordin inferior (pentru a consolida ipoteza


inductiva).
Exemplu: T (n) = T (bn/2c) + T (dn/2e) + 1
I
I

Ghicim solut, ia: T (n) = O(n).


Demonstram prin induct, ie ca T (n) cn, pentru c > 0.
T (n) cbn/2c + cdn/2e + 1
= cn + 1

Demonstram prin induct, ie ca T (n) cn d, d >= 0 const.


T (n) (cbn/2c d) + (cdn/2e d) + 1
= cn 2d + 1
cn d, pentru d 1
Trebuie sa alegem constanta c suficient de mare pentru a satisface
condit, iile limita.

FII, UAIC

Curs 3

SD 2014/2015

23 / 39

Metoda substitut, iei - subtilitat, i

Evitarea capcanelor
Exemplu: T (n) = 2T (bn/2c) + n
Demonstram fals ca T (n) = O(n) ghicind T (n) cn s, i
argumentand:
T (n) 2(cbn/2c) + n
cn + n
= O(n), fals!!
Eroarea: nu am demonstrat forma exacta a ipotezei inductive.

FII, UAIC

Curs 3

SD 2014/2015

24 / 39

Metoda substitut, iei - subtilitat, i

Schimbare de variabila.
Exemplu: T (n) = 2T (bsqrt(n)c) + log n
Simplificam recurent, a printr-o schimbare de variabila m = log n.
T (2m ) = 2T (2m/2 ) + m
Redenumim S(m) = T (2m ), s, i avem S(m) = 2S(m/2) + m.
S(m) = O(m log m),
T (n) = T (2m ) = S(m) = O(m log m) = O(log n log log n).

FII, UAIC

Curs 3

SD 2014/2015

25 / 39

Continut

Analiza eficient, ei algoritmilor

Analiza funct, iilor recursive


Funct, ii recursive
Metoda substitutiei
Arborele de recursie
Teorema Master

FII, UAIC

Curs 3

SD 2014/2015

26 / 39

2. Arborele de recursie

Metoda substitut, iei: implica ghicirea solut, iei (!)

Arborele de recursie:

permite vizualizarea ieterarii unei recurent, e;

fiecare nod reprezinta costul unei subprobleme;

se calculeaza suma costurilor pe nivele s, i apoi se nsumeaza aceste


costuri pentru a determina costul total al recursiei.

Arborele de recursie poate fi utilizat pentru a genera o valoare pentru


metoda substitut, iei.

FII, UAIC

Curs 3

SD 2014/2015

27 / 39

Iterarea unei recurent, e


Iterarea relat, iei de recurent, a:
I

direct
a
I

I
I

se pornes, te de la cazul particular s, i se construiesc termeni succesivi


folosind relat, ia de recurent, a;
se identifica forma termenului general T (n);
se verifica prin calcul direct sau induct, ie matematica.

invers
a
I

se pornes, te de la cazul T (n) s, i se inlocuies, te T (h(n)) cu valoarea


corespunzatoare, apoi se inlocuies, te T (h(h(n))) s, i as, a mai departe,
pana se ajunge la cazul particular;
se efectueaza calculele s, i se obt, ine T (n).

FII, UAIC

Curs 3

SD 2014/2015

28 / 39

Iterarea unei recurent, e - exemplu n!


T (n) =

FII, UAIC

0,
n=0
T (n 1) + 1, n > 1

Curs 3

SD 2014/2015

29 / 39

Iterarea unei recurent, e - exemplu n!


T (n) =

0,
n=0
T (n 1) + 1, n > 1

Iterare directa
T (1) = 0
T (2) = 1
T (3) = 2
...
T (n) = n 1

FII, UAIC

Curs 3

SD 2014/2015

29 / 39

Iterarea unei recurent, e - exemplu n!


T (n) =

0,
n=0
T (n 1) + 1, n > 1

Iterare directa

Iterare inversa

T (1) = 0
T (2) = 1
T (3) = 2
...
T (n) = n 1

T (n) = T (n 1) + 1
T (n 1) = T (n 2) + 1
...
T (2) = T (1) + 1
T (1) = 0

T (n) = n 1

FII, UAIC

Curs 3

SD 2014/2015

29 / 39

Iterarea unei recurent, e - exemplu


T (n) = 3T (n/4) + n
n
n
T (n) = n + 3(b c) + 3T (b c)
4
16
n
n
n
= n + 3b c + 9(b c + 3T (b c))
4
16
64
n
n
n
= n + 3b c + 9b c + 27T (b c)
4
16
64
...

X
3
n
( )i + (nlog4 3 xT (1))
4
i=0

= 4n + (nlog4 3 xT (1))
= O(n)
Observat, ie: utilizarea seriilor geometrice:
1 + x + x 2 + ... + x n =
FII,2UAIC

1x n+1
1x ,

pentru x 6= 1
Curs 3

SD 2014/2015

30 / 39

Arborele de recursie - exemplu

T (n) = 3T (bn/4c) + (n2 )

FII, UAIC

Curs 3

SD 2014/2015

31 / 39

Arborele de recursie - exemplu

T (n) = 3T (bn/4c) + (n2 )


I

Cream arborele de recursie pentru T (n) = 3T (n/4) + cn2 , c > 0

FII, UAIC

Curs 3

SD 2014/2015

31 / 39

Arborele de recursie - exemplu

FII, UAIC

Curs 3

SD 2014/2015

32 / 39

Arborele de recursie - exemplu

Dimensiunea unei subprobleme corespunzatoare unui nod de


adancime i: n/4i dimensiunea subproblemei ajunge la n = 1 cand
n/4i = 1 i = log4 n arborele are log4 n + 1 nivele.

Numarul de noduri de la nivelul i: 3i .

Fiecare nod de pe nivelul i are costul: c(n/4i )2 .

Costul total al nodurilor de la nivelul i: 3i c(n/4i )2 = (3/16)i cn2


(Ultimul nivel log4 n: nlog4 3 T (1).)

FII, UAIC

Curs 3

SD 2014/2015

33 / 39

Arborele de recursie - exemplu

3
3
3 2
cn + ( )2 cn2 + ... + ( )log4 n1 cn2 + (nlog4 3 )
16
16
16

T (n) = cn2 +
=

logX
4 n1

i=0

3 i 2
) cn + (nlog4 3 )
16

X
3
( )i cn2 + (nlog4 3 )
<
16
i=0

1
cn2 + (nlog4 3 )
1 (3/16)
16
= cn2 + (nlog4 3 )
13
= O(n2 )
=

FII, UAIC

Curs 3

SD 2014/2015

34 / 39

Arborele de recursie - exemplu

Utilizam metoda substitut, iei pentru a verifica ca T (n) = O(n2 ) este o


limita superioara pentru relat, ia T (n) = 3T (bn/4c) + (n2 ).

Aratam ca T (n) dn2 , pentru d > 0


T (n) 3T (bn/4c) + cn2
3dbn/4c2 + cn2
3d(n/4)2 + c(n2 )
3
= dn2 + cn2
16
dn2 , pentru d (16/13)c

FII, UAIC

Curs 3

SD 2014/2015

35 / 39

Continut

Analiza eficient, ei algoritmilor

Analiza funct, iilor recursive


Funct, ii recursive
Metoda substitutiei
Arborele de recursie
Teorema Master

FII, UAIC

Curs 3

SD 2014/2015

36 / 39

3. Teorema Master
I

Furnizeaza o metoda de rezolvare a recurent, elor de forma


T (n) = aT (n/b) + f (n) unde a 1 s, i b > 1 sunt constante, iar f (n)
este o funct, ie asimptotic pozitiva.

Teorema Master:
Fie a 1 s, i b > 1 constante, f (n) o funct, ie s, i T (n) definita pe
numere ntregi nenegative prin relat, ia de recurent, a:
T (n) = aT (n/b) + f (n). Avem:
1. Daca f (n) = O(nlogb a ) pentru  > 0 constant, atunci
T (n) = (nlogb a ).
2. Daca f (n) = (nlogb a ), atunci T (n) = (nlogb a log n).
3. Daca f (n) = (nlogb a+ ) pentru  > 0 constant, s, i daca
af (n/b) cf (n) pentru c < 1 s, i n suficient de mare, atunci
T (n) = (f (n)).
FII, UAIC

Curs 3

SD 2014/2015

37 / 39

Teorema Master - exemple

T (n) = 9T (n/3) + n
a = 9, b = 3, f (n) = n s, i nlogb a = nlog3 9 = (n2 ).
Cum f (n) = O(nlog3 9 ), cu  = 1, putem aplica cazul 1 al teoremei
master T (n) = (n2 ).

T (n) = T (2n/3) + 1
a = 1, b = 3/2, f (n) = 1 s, i nlogb a = nlog3/2 1 = n0 = 1.
Cum f (n) = (nlogb a ) = (1), putem aplica cazul 2 al teoremei
master T (n) = (log n).

FII, UAIC

Curs 3

SD 2014/2015

38 / 39

Teorema Master - exemple


I

T (n) = 3T (n/4) + n log n


a = 3, b = 4, f (n) = n log n s, i nlogb a = nlog4 3 = O(n0.793 )
Cum f (n) = (nlog4 3+ ), cu  0.2, putem aplica cazul 3 al teoremei
master daca are loc condit, ia:
af (n/b) = 3(n/4) log(n/4) (3/4)n log n = cf (n) pentru c = 3/4 s, i
n suficient de mare. Rezulta T (n) = (n log n).

Metoda master nu se poate aplica pentru T (n) = 2T (n/2) + n log n


a = 2, b = 2, f (n) = n log n s, i nlogb a = n
Cum f (n) = n log n este asimptotic mai mare decat nlogb a = n, putem
aplica cazul 3 (fals!!).
f (n) nu este polinomial mai mare.
f (n)/nlogb a = (n log n)/n = log n este asimptotic mai mic decat n ,
pentru orice constanta pozitiva .
FII, UAIC

Curs 3

SD 2014/2015

39 / 39

S-ar putea să vă placă și