Sunteți pe pagina 1din 70

Analiza eficient, ei algoritmilor.

SD 2017/2018
Cont, inut

Analiza eficient, ei algoritmilor

Exemple de calcul

Ordin de cres, tere

Notat, ie asimptotică

FII, UAIC Curs 2 SD 2017/2018 2 / 52


Timp de execut, ie
“As soon as an Analytic Engine exists, it will necessarily guide the
future course of the science. Whenever any result is sought by its
aid, the question will arise—By what course of calculation can
these results be arrived at by the machine in the shortest time?”
Charles Babbage (1864)

Mas, ina analitică


FII, UAIC Curs 2 SD 2017/2018 3 / 52
Provocare

Pentru date de intrare de dimensiuni mari, programul rezolva problema?

Knuth (1970): Să utilizăm metode s, tiint, ifice pentru a ı̂ntelege


performant, a algoritmilor.

FII, UAIC Curs 2 SD 2017/2018 4 / 52


Analiza eficient, ei algoritmilor

I Analiza complexităt, ii.

I Estimarea volumului de resurse de calcul necesare execuţiei


algoritmului:
I spaţiu de memorie: spaţiul necesar stocării datelor;
I timp de execuţie: timpul necesar execuţiei algoritmului.

I Algoritm eficient: necesită un volum rezonabil de resurse de calcul:


I eficienţa se măsoară ı̂n raport cu spaţiul de memorie, sau cu timpul de
execuţie;

I Utilitate:
I pentru a stabili performanţa algoritmului şi a furniza garanţii asupra
acesteia;
I pentru a compara algoritmi.

FII, UAIC Curs 2 SD 2017/2018 5 / 52


Analiza eficientei timp

“It is convenient to have a measure of the amount of work


involved in a computing process, even though it be a very crude
one. We may count up the number of times that various
elementary operations are applied in the whole process and then
given them various weights. We might, for instance, count the
number of additions, subtractions, multiplications, divisions,
recording of numbers, and extractions of figures from tables. In
the case of computing with matrices most of the work consists of
multiplications and writing down numbers, and we shall therefore
only attempt to count the number of multiplications and
recordings.”

— Alan Turing, Bounding-off errors in matrix processes, 1947

FII, UAIC Curs 2 SD 2017/2018 6 / 52


Analiza eficienţei timp

Trebuie să stabilim


I. Un model de calcul.
Modelul von Neumann – RAM (random access machine):
I prelucrările sunt executate secvenţial;
I memoria constă dintr-o mulţime infinită de celule;
I timpul pentru accesarea datelor este acelaşi (nu depinde de locaţia
acestora ı̂n memorie);
I celulele de memorie păstreaza valori ”mici” (limitate polinomial ı̂n
dimensiune)

I timpul de execuţie al unei prelucrări nu depinde de valorile operanzilor.

FII, UAIC Curs 2 SD 2017/2018 7 / 52


Modelul de calcul
I Implică o abstractizare, o simplificare brută.

I Memoria externă:
I ı̂ntr-o maşină reală există o ierarhie complexă a memoriei;
I există algoritmi special proiectaţi pentru seturi de date mari care
trebuiesc păstrate ı̂n memoria externă;
I memoria rapidă – de dimensiune limitată / memoria externă –
nelimitată;
I există operaţii speciale de intrare/ieşire care transferă informaţie ı̂ntre
cele două tipuri.

I Procesare paralelă:
I (SIMD (Single Instruction, Multiple Data) - execuţie paralelă a unei
instrucţiuni, pe date diferite;
I multithreading simultan - rularea mai multor fire de execuţie pe un
procesor;
I procesoare multiple, procesoare multicore, etc.;
I sisteme distribuite.
FII, UAIC Curs 2 SD 2017/2018 8 / 52
Analiza eficienţei timp

II. O unitate de masură a timpului de execuţie

I Pseudocod (curs 1):


I variabile şi tipuri elementare de date; instrucţiuni; proceduri şi funcţii.

I Timpul necesar execuţiei unei prelucrări elementare:


I operaţii elementare: atribuire, operaţii aritmetice, comparaţii, operaţii
logice;
I fiecare operaţie elementară necesită o unitate de timp pentru a fi
executată.

I Timpul total de execuţie este egal cu numărul prelucrărilor elementare


executate.

FII, UAIC Curs 2 SD 2017/2018 9 / 52


Dimensiunea problemei

I Ipoteză: volumul resurselor de calcul necesare depinde de volumul


datelor de intrare.

I Dimensiunea problemei: volumul de memorie necesar stocării datele


de intrare.
I Este exprimată ı̂n:
I numărul de componente ale datelor de intrare sau
I numărul de biţi necesari stocării datelor de intrare.

I Numărul de biţi necesari stocării valorii n este [log2 n] + 1.

FII, UAIC Curs 2 SD 2017/2018 10 / 52


Dimensiunea problemei - exemple

I Testul de primalitate pentru un număr n: n ( sau log2 n ).

I Minimul unui tablou: x[0..n − 1]: n.

I Suma a două matrici (m × n): m × n.

FII, UAIC Curs 2 SD 2017/2018 11 / 52


Cont, inut

Analiza eficient, ei algoritmilor

Exemple de calcul

Ordin de cres, tere

Notat, ie asimptotică

FII, UAIC Curs 2 SD 2017/2018 12 / 52


Exemplul 1. Suma primelor n numere ı̂ntregi

Intrare: n >= 1
Ieşire: suma s = 1 + 2 + · · · + n
Dimensiunea problemei: n

FII, UAIC Curs 2 SD 2017/2018 13 / 52


Exemplul 1. Suma primelor n numere ı̂ntregi

Intrare: n >= 1
Ieşire: suma s = 1 + 2 + · · · + n
Dimensiunea problemei: n

Function suma(n) Operaţie Cost Nr. repetări


begin 1 c1 1
1 s←0 2 c2 1
2 i ←1 3 c3 n+1
3 while i <= n do 4 c4 n
4 s ←s +i 5 c5 n
5 i ←i +1
6 return s T (n) = (c3 + c4 + c5)n + (c1 + c2 + c3)
end =a∗n+b

FII, UAIC Curs 2 SD 2017/2018 13 / 52


Exemplul 1. Suma primelor n numere intregi

Considerăm că toate prelucrarile elementare au acelas, i cost unitar.

I T (n) = 3(n + 1);

I Constantele ce intervin ı̂n expresie nu sunt importante.

I Timpul de execut, ie depinde liniar de dimensiunea problemei.

I Algoritm echivalent:
s←0
for i ← 1 to n do
s ←s +i
I gestiunea contorului: 2(n + 1) operat, ii;
I calculul sumei: (n + 1) operat, ii (init, ializarea s, i actualizarea lui s).

FII, UAIC Curs 2 SD 2017/2018 14 / 52


Exemplul 2. Înmult, irea a două matrici

Intrare: A(m × n), B(n × p) P


Ieşire: C = A ∗ B, Ci,j = nk=1 Aik Bkj , i = 1, . . . , m, j = 1, . . . , p
Dimensiunea problemei: mnp

FII, UAIC Curs 2 SD 2017/2018 15 / 52


Exemplul 2. Înmult, irea a două matrici

Intrare: A(m × n), B(n × p) P


Ieşire: C = A ∗ B, Ci,j = nk=1 Aik Bkj , i = 1, . . . , m, j = 1, . . . , p
Dimensiunea problemei: mnp

Function produs(a[0..m − 1, 0..n − 1], b[0..n − 1, 0..p − 1])


begin
1 for i ← 0 to m − 1 do
2 for j ← 0 to p − 1 do
3 c[i, j] ← 0
4 for k ← 0 to n − 1 do
5 c[i, j] ← c[i, j] + a[i, k] ∗ b[k, j]
6 return c[0..m − 1, 0..p − 1]
end

FII, UAIC Curs 2 SD 2017/2018 15 / 52


Exemplul 2. Înmult, irea a două matrici

Operat, ie Cost Nr. repetări


1 2(m+1) 1
2 2(p+1) m
3 1 mp
4 2(n+1) mp
5 2 mpn
T (m, n, p) = 4mnp + 5mp + 4m + 2

FII, UAIC Curs 2 SD 2017/2018 16 / 52


Exemplul 2. Înmult, irea a două matrici

Operat, ie Cost Nr. repetări


1 2(m+1) 1
2 2(p+1) m
3 1 mp
4 2(n+1) mp
5 2 mpn
T (m, n, p) = 4mnp + 5mp + 4m + 2

Observat, ie: nu este necesar să se completeze ı̂ntreg tabelul; este suficient
să se contorizeze operat, ia dominantă.

I Cea mai frecventă (costisitoare) operat, ie: a[i, k] ∗ b[k, j].


I Estimare timp de execut, ie: T (m, n, p) = mnp.

FII, UAIC Curs 2 SD 2017/2018 16 / 52


Exemplul 3. Minimul unui tablou

Intrare: x[0..n − 1], n ≥ 1


Ieşire: m = min(x[0..n − 1])
Dimensiunea problemei: n

FII, UAIC Curs 2 SD 2017/2018 17 / 52


Exemplul 3. Minimul unui tablou

Intrare: x[0..n − 1], n ≥ 1


Ieşire: m = min(x[0..n − 1])
Dimensiunea problemei: n

Function minim(x[0..n − 1])


begin Operat, ie Cost Nr. repetări
1 m ← x[0] 1 1 1
2 i ←1 2 1 1
3 while i < n do 3 1 n
4 if x[i] < m then 4 1 n-1
5 m ← x[i] 5 1 t(n)
6 i ←i +1 6 1 n-1
7 return m T (n) = 3n + t(n)
end

FII, UAIC Curs 2 SD 2017/2018 17 / 52


Exemplul 3. Minimul unui tablou
Timpul de execut, ie depinde de:
I dimensiunea problemei;
I proprietăt, ile datelor de intrare.

Trebuie analizate cazurile extreme:


I cazul cel mai favorabil
I x[0] <= x[i], i = 0, . . . , n − 1 ⇒ t(n) = 0 ⇒ T (n) = 3n

I cazul cel mai nefavorabil


I x[0] > x[1] > ... > x[n − 1] ⇒ t(n) = n − 1 ⇒ T (n) = 4n − 1

I 3n <= T (n) <= 4n − 1


Limita inferioară s, i limita superioară depind liniar de dimensiunea
problemei.

I Dacă se ia ı̂n calcul doar operat, ia de baza (comparat, ia x[i] < m):
T (n) = n − 1
FII, UAIC Curs 2 SD 2017/2018 18 / 52
Exemplul 4. Căutarea secvent, ială
Intrare: x[0..n − 1], n >= 1 s, i v o valoare (cheie de căutare)
Ieşire: valoarea de adevăr a afirmat, iei “v face parte din x[0..n − 1]”
Dimensiunea problemei: n

FII, UAIC Curs 2 SD 2017/2018 19 / 52


Exemplul 4. Căutarea secvent, ială
Intrare: x[0..n − 1], n >= 1 s, i v o valoare (cheie de căutare)
Ieşire: valoarea de adevăr a afirmat, iei “v face parte din x[0..n − 1]”
Dimensiunea problemei: n

Function cauta(x[0..n − 1], v )


begin
1 i ←0 Operat, ie Cost Nr. repetări
2 while x[i]! = v and i < n − 1 1 1 1
do 2 2 t(n)+1
3 i ←i +1 3 1 t(n)
4 if x[i] == v then 4 1 1
5 gasit ← true 5 1 1
else 6 1 1
6 gasit ← false T (n) = 1 + 3t(n) + 4
return gasit
end
FII, UAIC Curs 2 SD 2017/2018 19 / 52
Exemplul 4. Căutarea secvent, ială

Timpul de execut, ie depinde de:


I dimensiunea problemei;
I proprietăt, ile datelor de intrare.

I Cazul cel mai favorabil


I x[0] = v ⇒ t(n) = 0 ⇒ T (n) = 5

I cazul cel mai nefavorabil


I x[n − 1] = v sau
(v ! = x[0], ..., v ! = x[n − 1]) ⇒ t(n) = n − 1 ⇒ T (n) = 3n + 2

I Dacă se consideră ca operat, ie dominantă comparat, ia x[i]! = v :


I cazul cel mai favorabil: T (n) = 2;
I cazul cel mai nefavorabil: T (n) = n + 2.

FII, UAIC Curs 2 SD 2017/2018 20 / 52


Exemplul 5. Sortarea prin insertie
Intrare: o secvent, ă de numere (a1 , ..., an )
Ieşire: o permutare (aσ1 , ..., aσn ) astfel ı̂ncât aσ1 ≤ aσ2 ≤, . . . , ≤ aσn
Dimensiunea problemei: n

FII, UAIC Curs 2 SD 2017/2018 21 / 52


Exemplul 5. Sortarea prin insertie
Intrare: o secvent, ă de numere (a1 , ..., an )
Ieşire: o permutare (aσ1 , ..., aσn ) astfel ı̂ncât aσ1 ≤ aσ2 ≤, . . . , ≤ aσn
Dimensiunea problemei: n
Procedure insertion-sort(a[0..n − 1], n)
begin
1 for j ← 1 to n − 1 do
2 key ← a[j]
3 i ←j −1
4 while i >= 0 and a[i] > key do
5 a[i + 1] ← a[i]
6 i ←i −1
7 a[i + 1] ← key
end

FII, UAIC Curs 2 SD 2017/2018 21 / 52


Sortare prin insert, ie - exemplu

8 1 4 9 2 6

FII, UAIC Curs 2 SD 2017/2018 22 / 52


Sortare prin insert, ie - exemplu

8 1 4 9 2 6

8 1 4 9 2 6

FII, UAIC Curs 2 SD 2017/2018 22 / 52


Sortare prin insert, ie - exemplu

8 1 4 9 2 6

8 1 4 9 2 6
1 8 4 9 2 6

FII, UAIC Curs 2 SD 2017/2018 22 / 52


Sortare prin insert, ie - exemplu

8 1 4 9 2 6

8 1 4 9 2 6
1 8 4 9 2 6
1 4 8 9 2 6

FII, UAIC Curs 2 SD 2017/2018 22 / 52


Sortare prin insert, ie - exemplu

8 1 4 9 2 6

8 1 4 9 2 6
1 8 4 9 2 6
1 4 8 9 2 6
1 4 8 9 2 6

FII, UAIC Curs 2 SD 2017/2018 22 / 52


Sortare prin insert, ie - exemplu

8 1 4 9 2 6

8 1 4 9 2 6
1 8 4 9 2 6
1 4 8 9 2 6
1 4 8 9 2 6
1 2 4 8 9 6

FII, UAIC Curs 2 SD 2017/2018 22 / 52


Sortare prin insert, ie - exemplu

8 1 4 9 2 6

8 1 4 9 2 6
1 8 4 9 2 6
1 4 8 9 2 6
1 4 8 9 2 6
1 2 4 8 9 6
1 2 4 6 8 9

1 2 4 6 8 9

FII, UAIC Curs 2 SD 2017/2018 22 / 52


Exemplul 5. Sortarea prin insert, ie

Operat, ie Cost Nr. repetări


1 c1 n
2 c2 n−1
3 c3 n−1
P n
4 c4 t
Pn j=2 j
5 c5 (t − 1)
Pnj=2 j
6 c6 j=2 j − 1)
(t
7 c7 n−1
Pn Pn
Pn= c1 n + c2 (n − 1) + c3 (n − 1) + c4
T (n) j=2 tj + c5 j=2 (tj − 1) +
c6 j=2 (tj − 1) + c7 (n − 1)

FII, UAIC Curs 2 SD 2017/2018 23 / 52


Exemplul 5. Sortarea prin insert, ie
I Timpul de execut, ie depinde de:
I dimensiunea problemei;
I proprietăt, ile datelor de intrare.

FII, UAIC Curs 2 SD 2017/2018 24 / 52


Exemplul 5. Sortarea prin insert, ie
I Timpul de execut, ie depinde de:
I dimensiunea problemei;
I proprietăt, ile datelor de intrare.

I Cazul cel mai favorabil: tabloul este sortat.


tj = 1, j = 2, . . . , n
T (n) = (c1 + c2 + c3 + c4 + c7 )n − (c2 + c3 + c4 + c7 )

FII, UAIC Curs 2 SD 2017/2018 24 / 52


Exemplul 5. Sortarea prin insert, ie
I Timpul de execut, ie depinde de:
I dimensiunea problemei;
I proprietăt, ile datelor de intrare.

I Cazul cel mai favorabil: tabloul este sortat.


tj = 1, j = 2, . . . , n
T (n) = (c1 + c2 + c3 + c4 + c7 )n − (c2 + c3 + c4 + c7 )

I Cazul cel mai nefavorabil: tabloul este sortat ı̂n ordine inversă.
tj = j, j = 2, . . . , n
T (n) = c1 n+(n−1)(c2 +c3 +c7 )+c4 ( n(n+1) 2 −1)+c5 n(n−1)
2 +c6 n(n−1)
2
= ( c24 + c25 + c26 )n2 +(c1 +c2 +c3 + c24 − c25 − c26 +c7 )n−(c2 +c3 +c4 +c7 )

FII, UAIC Curs 2 SD 2017/2018 24 / 52


Exemplul 5. Sortarea prin insert, ie
I Timpul de execut, ie depinde de:
I dimensiunea problemei;
I proprietăt, ile datelor de intrare.

I Cazul cel mai favorabil: tabloul este sortat.


tj = 1, j = 2, . . . , n
T (n) = (c1 + c2 + c3 + c4 + c7 )n − (c2 + c3 + c4 + c7 )

I Cazul cel mai nefavorabil: tabloul este sortat ı̂n ordine inversă.
tj = j, j = 2, . . . , n
T (n) = c1 n+(n−1)(c2 +c3 +c7 )+c4 ( n(n+1) 2 −1)+c5 n(n−1)
2 +c6 n(n−1)
2
= ( c24 + c25 + c26 )n2 +(c1 +c2 +c3 + c24 − c25 − c26 +c7 )n−(c2 +c3 +c4 +c7 )

I Cazul mediu: toate permutările au aceeas, i probabilitate de aparit, ie.

I Este sortarea prin insert, ie un algoritm rapid?


FII, UAIC Curs 2 SD 2017/2018 24 / 52
Analiza algoritmilor

I Cazul cel mai favorabil


I O margine inferioară a timpului de execut, ie;
I Identificarea algoritmilor ineficient, i:
I dacă un algoritm are un cost ridicat ı̂n cazul cel mai favorabil, atunci el
nu reprezintă o solut, ie acceptabilă.

I Cazul cel mai nefavorabil


I Cel mai mare timp de execut, ie ı̂n raport cu toate datele de intrare
posibile;
I O margine superioară a timpului de execut, ie;
I Marginea superioară este mai importantă decât cea inferioară.

FII, UAIC Curs 2 SD 2017/2018 25 / 52


Analiza ı̂n cazul mediu

I Există situat, ii când cazul cel mai favorabil s, i cel mai nefavorabil sunt
cazuri rare (except, ii):
I analiza ı̂n cele două cazuri nu furnizează suficientă informat, ie.

I Analiza ı̂n cazul mediu furnizează informatii privind comportarea


algoritmului ı̂n cazul unor date de intrare arbitrare.
I Se bazează pe cunoas, terea distribut, iei de probabilitate a datelor de
intrare.

I Cunoas, terea (estimarea) probabilităt, ii de aparit, ie a fiecăreia dintre


instant, ele posibile ale datelor de intrare.

I Timpul mediu de executie este media timpilor de execut, ie


corespunzatori instant, elor datelor de intrare.

FII, UAIC Curs 2 SD 2017/2018 26 / 52


Analiza ı̂n cazul mediu
I Ipoteze privind distribut, ia de probabilitate a datelor de intrare:
I datele de intrare pot fi grupate ı̂n clase (timpul de execut, ie este acelas, i
pentru datele din aceeas, i clasă);

I avem m clase cu date de intrare;

I probabilitatea de aparit, ie a unei date din clasa k este Pk ;

I timpul de execut, ie pentru date din clasa k este Tk (n).

I Timpul mediu de execut, ie este:

Ta (n) = P1 T1 (n) + P2 T2 (n) + ... + Pm Tm (n)

I Dacă toate clasele au aceeas, i probabilitate de aparit, ie:

Ta (n) = (T1 (n) + T2 (n) + ... + Tm (n))/m

FII, UAIC Curs 2 SD 2017/2018 27 / 52


Exemplul 4. Căutarea secvent, ială (revizitat)

I Ipoteze:
I probabilitatea ca v să se afle ı̂n tablou: p
I v apare cu aceeas, i probabilitate pe fiecare pozit, ie din tablou;
I probabilitatea ca v să se afle pe pozit, ia k: p/n;
I probabilitatea ca v să nu se afle ı̂n tablou: 1 − p.

p(1+2+..+n) p(n+1)
I Ta (n) = n + (1 − p)n = 2 + (1 − p)n = (1 − p2 )n + p
2

I dacă p = 0.5, atunci Ta (n) = 43 n + 14 ;


I timpul mediu depinde liniar de dimensiunea datelor de intrare.

I Observat, ie: timpul mediu nu este ı̂n mod necesar media aritmetică a
timpilor de execut, ie corespunzatori cazurilor extreme.

FII, UAIC Curs 2 SD 2017/2018 28 / 52


Etapele analizei algoritmilor

1. Identificarea dimensiunii problemei.

2. Identificarea operat, iei dominante.

3. Estimarea timpului de execut, ie (determinarea numărului de execut, ii


ale operat, iei dominante).
4. dacă timpul de execut, ie depinde de proprietăt, ile datelor de intrare,
atunci se analizează:
I cazul cel mai favorabil;
I cazul cel mai nefavorabil;
I cazul mediu.

5. Se stabiles, te ordinul (clasa) de complexitate.

FII, UAIC Curs 2 SD 2017/2018 29 / 52


Analiza eficient, ei algoritmilor

I Scopul principal: determinarea modului ı̂n care timpul de execut, ie


cres, te odată cu cres, terea dimensiunii problemei.

I Nu e necesar să se cunoasca expresia detaliată a timpului de execut, ie

I Este suficient să se identifice:


I ordinul de cres, tere al timpului de execut, ie;
I clasa de eficient, ă (complexitate) căreia ı̂i apart, ine algoritmul.

FII, UAIC Curs 2 SD 2017/2018 30 / 52


Cont, inut

Analiza eficient, ei algoritmilor

Exemple de calcul

Ordin de cres, tere

Notat, ie asimptotică

FII, UAIC Curs 2 SD 2017/2018 31 / 52


Ordin de cres, tere

I Termen dominant: termen care devine semnificativ mai mare decât


ceilalt, i atunci când dimensiunea problemei cres, te.
I Dictează comportarea algoritmului când dimensiunea problemei cres, te.

Timp de execut, ie Termen dominant


T 1(n) = an + b an
T 2(n) = alogn + b alogn
T 3(n) = an2 + bn + c an2
T 4(n) = an + bn + c an
(a > 1)

FII, UAIC Curs 2 SD 2017/2018 32 / 52


Ordin de cres, tere

I Ordin de cres, tere: caracterizează cres, terea termenului dominant al


timpului de execut, ie ı̂n raport cu dimensiunea problemei.

FII, UAIC Curs 2 SD 2017/2018 33 / 52


Ordin de cres, tere

I Ordin de cres, tere: caracterizează cres, terea termenului dominant al


timpului de execut, ie ı̂n raport cu dimensiunea problemei.

I Ce se ı̂ntâmplă cu termenul dominant când dimensiunea problemei


cres, te de k ori?

T1 (n) = an T10 (kn) = akn = kT1 (n) liniar


T2 (n) = alogn T20 (kn) = alog (kn) = T2 (n) + alogk logaritmic
T3 (n) = an2 T30 (kn) = a(kn)2 = k 2 T3 (n) pătratic
T4 (n) = an T40 (kn) = akn = (an )k = T4 (n)k exponent, ial

FII, UAIC Curs 2 SD 2017/2018 33 / 52


Ordin de cres, tere
Permite compararea a doi algoritmi:
I algoritmul cu ordinul de cres, tere mai mic este mai eficient;
I comparat, ia se realizează pentru valori mari ale dimensiunii problemei
(cazul asimptotic).

Exemplu:
T 1(n) = 10n + 10
T 2(n) = n2

FII, UAIC Curs 2 SD 2017/2018 34 / 52


O comparat, ie a ordinelor de cres, tere
Dependent, a timpilor de execut, ie a diferit, i algoritmi ı̂n raport cu
dimensiunea problemei (considerăm un procesor ce realizează 106
instruct, iuni pe secundă); dacă timpul de execut, ie depas, es, te 1025 ani,
afis, ăm “nu”.

n log2 n nlog2 n n2 n3 2n n!
10 < 1 sec < 1 sec < 1 sec < 1 sec < 1 sec 4 sec
30 < 1 sec < 1 sec < 1 sec < 1sec 18 min nu
50 < 1 sec < 1 sec < 1 sec < 1sec 36 ani nu
102 < 1 sec < 1 sec < 1 sec 1 sec 1017 ani nu
103 < 1 sec < 1 sec 1 sec 18 min nu nu
104 < 1 sec < 1 sec 2 min 12 zile nu nu
105 < 1 sec 2 sec 3 ore 32 ani nu nu
106 < 1 sec 20 sec 12 zile 31710 ani nu nu

FII, UAIC Curs 2 SD 2017/2018 35 / 52


Ordin de cres, tere

Pentru a compara ordinele de cres, tere a doi timpi de execut, ie T 1(n) s, i


T 2(n), calculăm limn→∞ T 1(n)
T 2(n)

I dacă lim = 0: T 1(n) are un ordin de cres, tere mai mic decât T 2(n);

I dacă lim = c, c > 0 constantă: T 1(n) s, i T 2(n) au acelas, i ordin de


cres, tere;

I dacă lim = ∞: T 1(n) are un ordin de cres, tere mai mare decât T 2(n).

FII, UAIC Curs 2 SD 2017/2018 36 / 52


Cont, inut

Analiza eficient, ei algoritmilor

Exemple de calcul

Ordin de cres, tere

Notat, ie asimptotică

FII, UAIC Curs 2 SD 2017/2018 37 / 52


Analiza asimptotică

I Analiza timpilor de execut, ie pentru valori mici ale dimensiunii


problemei nu permite diferent, ierea ı̂ntre algoritmi eficient, i si
ineficient, i.

I Diferent, ele dintre ordinele de cres, tere devin din ce ı̂n ce mai
semnificative pe masură ce dimensiunea problemei cres, te.

I Analiza asimptotică: studiul proprietăt, ilor timpului de execut, ie


atunci când dimensiunea problemei tinde către infinit (probleme de
dimensiune mare).
I algoritmul poate fi ı̂ncadrat ı̂n diferite clase identificate prin notat, ii: O,
Ω, Θ

FII, UAIC Curs 2 SD 2017/2018 38 / 52


Ordine de cres, tere asimptotică. Notat, ia O

Fie f , g : N → R+ două funct, ii care depind de dimensiunea problemei.

Definiţie
O(g (n)) = {f (n) : ∃c > 0, ∃n0 ∈ N a.ı̂. ∀n >= n0 , 0 <= f (n) <= cg (n)}.

Notat, ie: f (n) = O(g (n))

(f (n) are un ordin de cres, tere cel mult egal cu cel al lui g (n).)

FII, UAIC Curs 2 SD 2017/2018 39 / 52


Notat, ia O

Pentru valori suficient de mari ale lui n, f (n) este marginită superior de
g (n) multiplicată cu o constantă pozitivă.
FII, UAIC Curs 2 SD 2017/2018 40 / 52
Notat, ia O

Exemple:
1. T (n) = 3n + 3 ⇒ T (n) ∈ O(n)
4n >= 3n + 3, c = 4, n0 = 3, g (n) = n

FII, UAIC Curs 2 SD 2017/2018 41 / 52


Notat, ia O

Exemple:
1. T (n) = 3n + 3 ⇒ T (n) ∈ O(n)
4n >= 3n + 3, c = 4, n0 = 3, g (n) = n

2. 3n2 − 100n + 6 = O(n2 )


3n2 > 3n2 − 100n + 6

FII, UAIC Curs 2 SD 2017/2018 41 / 52


Notat, ia O

Exemple:
1. T (n) = 3n + 3 ⇒ T (n) ∈ O(n)
4n >= 3n + 3, c = 4, n0 = 3, g (n) = n

2. 3n2 − 100n + 6 = O(n2 )


3n2 > 3n2 − 100n + 6

3. 3n2 − 100n + 6 = O(n3 )


0.01n3 > 3n2 − 100n + 6

FII, UAIC Curs 2 SD 2017/2018 41 / 52


Notat, ia O - proprietăt, i

1. f (n) ∈ O(f (n)) (reflexivitate).

2. f (n) ∈ O(g (n)), g (n) ∈ O(h(n)) ⇒ f (n) ∈ O(h(n)) (tranzitivitate).

3. Dacă T (n) = ad nd + ad−1 nd−1 + ... + a1 n + a0 atunci T (n) ∈ O(nk )


pentru orice k >= d.
I exemplu: n ∈ O(n2 )

4. Dacă pentru cazul cel mai nefavorabil obt, inem T (n) <= g (n), atunci
T (n) ∈ O(g (n)).
I Căutarea secvent, ială: 5 ≤ T (n) ≤ 3n + 2 ⇒ algoritmul este din
clasa O(n).

FII, UAIC Curs 2 SD 2017/2018 42 / 52


Notatia Ω

Definiţie
Ω(g (n)) = {f (n): ∃c > 0, n0 ∈ N a.ı̂. ∀n >= n0 : f (n) ≥ cg (n)}

Notat, ie: f (n) = Ω(g (n))

(f (n) are un ordin de cres, tere cel put, in la fel de mare ca cel al lui g (n).)

Exemple:
1. T (n) = 3n + 3 ⇒ T (n) ∈ Ω(n)
3n <= 3n + 3, c = 3, n0 = 1, g (n) = n

2. 5 <= T (n) <= 3n + 2 ⇒ T (n) ∈ Ω(1)


c = 5, n0 = 1, g (n) = 1

FII, UAIC Curs 2 SD 2017/2018 43 / 52


Notat, ia Ω

Pentru valori mari ale lui n, funct, ia f (n) este marginită inferior de g (n)
multiplicată eventual cu o constantă pozitivă.
FII, UAIC Curs 2 SD 2017/2018 44 / 52
Notat, ia Ω - proprietăt, i

1. f (n) ∈ Ω(f (n)) (reflexivitate).

2. f (n) ∈ Ω(g (n)), g (n) ∈ Ω(h(n)) ⇒ f (n) ∈ Ω(h(n)) (tranzitivitate).

3. Dacă T (n) = ad nd + ad−1 nd−1 + ... + a1 n + a0 atunci T (n) ∈ Ω(nk )


pentru orice k <= d.
I exemplu: n2 ∈ Ω(n)

FII, UAIC Curs 2 SD 2017/2018 45 / 52


Notat, ia Θ

Definiţie
Θ(g (n)) =
{f (n) : ∃c1 , c2 > 0, n0 ∈ N a.ı̂. ∀n ≥ n0 : c1 g (n) ≤ f (n) ≤ c2 g (n)}.

Notat, ie: f (n) = Θ(g (n))


(f (n) are acelas, i ordin de cres, tere ca s, i g (n).)

Exemple:
1. T (n) = 3n + 3 ⇒ T (n) ∈ Θ(n)
c1 = 2, c2 = 4, n0 = 3, g (n) = n

2. Determinarea minimului unui tablou:


3n <= T (n) <= 4n − 1 ⇒ T (n) ∈ Θ(n)
c1 = 3, c2 = 4, n0 = 1

FII, UAIC Curs 2 SD 2017/2018 46 / 52


Notat, ia Θ

Pentru valori suficient de mari ale lui n, f (n) este marginită, atât superior
cât s, i inferior de g (n) multiplicată cu nis, te constante pozitive.
FII, UAIC Curs 2 SD 2017/2018 47 / 52
Notat, ia Θ - proprietăt, i

1. f (n) ∈ Θ(f (n)) (reflexivitate).

2. f (n) ∈ Θ(g (n)), g (n) ∈ Θ(h(n)) ⇒ f (n) ∈ Θ(h(n)) (tranzitivitate).

3. f (n) ∈ Θ(g (n)) ⇒ g (n) ∈ Θ(f (n)) (simetrie).

4. Dacă T (n) = ad nd + ad−1 nd−1 + ... + a1 n + a0 atunci T (n) ∈ Θ(nd ).

5. Θ(cg (n)) = Θ(g (n)) pentru orice constantă c.


Cazuri particulare:
I Θ(c) = Θ(1)
I Θ(loga h(n)) = Θ(logb h(n)) pentru orice a, b > 1

6. Θ(f (n) + g (n)) = Θ(max{f (n), g (n)})

FII, UAIC Curs 2 SD 2017/2018 48 / 52


Notat, ia Θ - proprietăt, i

7. Θ(g (n)) ⊂ O(g (n)).


Exemplu: f (n) = 10n lg n + 5, g (n) = n2
f (n) ≤ g (n) pentru orice n ≥ 36 ⇒ f (n) ∈ O(g (n))
Dar nu există constante c s, i n0 astfel ı̂ncât cn2 ≤ 10nlgn + 5 pentru
orice n ≥ n0 .

8. Θ(g (n)) ⊂ Ω(g (n)).


Exemplu: f (n) = 10nlgn + 5, g (n) = n
f (n) ≥ 10g (n) pentru orice n ≥ 1 ⇒ f (n) ∈ Ω(g (n))
Dar nu există constante c s, i n0 astfel ı̂ncât 10nlgn + 5 ≤ cn pentru
orice n ≥ n0 .

9. Θ(g (n)) = O(g (n)) ∩ Ω(g (n)).

FII, UAIC Curs 2 SD 2017/2018 49 / 52


Notat, ia Θ - exemple

1. Înmult, irea a două matrici: T (m, n, p) = 4mnp + 5mp + 4m + 2.

Extinderea definit, iei (ı̂n cazul ı̂n care dimensiunea problemei depinde
de mai multe valori):

f (m, n, p) ∈ Θ(g (m, n, p)) dacă există c1 , c2 > 0 s, i m0 , n0 , p0 ∈ N


astfel ı̂ncât c1 g (m, n, p) ≤ f (m, n, p) ≤ c2 g (m, n, p) pentru orice
m ≥ m0 , n ≥ n0 , p ≥ p0 .

Astfel T (m, n, p) ∈ Θ(mnp).

2. Căutare secvent, ială: 5 ≤ T (n) ≤ 3n + 2.


Dacă T (n) = 5 atunci nu se poate găsi c1 astfel ı̂ncât 5 ≥ c1 n pentru
valori suficient de mari ale lui n ⇒ T (n) nu apart, ine lui Θ(n).

FII, UAIC Curs 2 SD 2017/2018 50 / 52


Notat, ia Θ - exemple

Când n este suficient de mare, un algoritm cu o complexitate Θ(n2 ) este


mai eficient decât unul cu complexitatea Θ(n3 ).

FII, UAIC Curs 2 SD 2017/2018 51 / 52


Clasificarea algoritmilor folosind notat, ia O

O(1) ⊂ O(log n) ⊂ O(logk n) ⊂ O(n) ⊂ O(n2 ) ⊂ · · · ⊂ O(nk+1 ) ⊂ O(2n )

{A |TA (n) = O(1)} = clasa algoritmilor constant, i;


{A |TA (n) = O(log n)} = clasa algoritmilor logaritmici;
{A |TA (n) = O(log k n)} = clasa algoritmilor polilogaritmici;
{A |TA (n) = O(n)} = clasa algoritmilor liniari;
{A |TA (n) = O(n2 )} = clasa algoritmilor pătratici;
{A |TA (n) = O(nk+1 )} = clasa algoritmilor polinomiali;
{A |TA (n) = O(2n )} = clasa algoritmilor exponent, iali.

(k ≥ 2)

FII, UAIC Curs 2 SD 2017/2018 52 / 52

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