Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
Analiza eficient,ei algoritmilor.
SD 2019/2020
Cont, inut
Analiza eficient,ei algoritmilor
Exemple de calcul
Ordin de cres, tere
Notat, ie asimptotica
FII, UAIC Curs 2 SD 2019/2020 2 / 52
Timp de execut, ie
“As soon as an Analytic Engine exists, it will necessarily guide thefuture course of the science. Whenever any result is sought byits aid, the question will arise—By what course of calculation canthese results be arrived at by the machine in the shortest time?”Charles Babbage (1864)
Mas, ina analiticaFII, UAIC Curs 2 SD 2019/2020 3 / 52
Provocare
Pentru date de intrare de dimensiuni mari, programul rezolva problema?
Knuth (1970): Sa utilizam metode s, tiint, ifice pentru a ıntelegeperformant,a algoritmilor.
FII, UAIC Curs 2 SD 2019/2020 4 / 52
Analiza eficient,ei algoritmilor
I Analiza complexitat, ii.
I Estimarea volumului de resurse de calcul necesare executieialgoritmului:I spatiu de memorie: spatiul necesar stocarii datelor;I timp de executie: timpul necesar executiei algoritmului.
I Algoritm eficient: necesita un volum rezonabil de resurse de calcul:I eficienta se masoara ın raport cu spatiul de memorie, sau cu timpul de
executie;
I Utilitate:I pentru a stabili performanta algoritmului si a furniza garantii asupra
acesteia;I pentru a compara algoritmi.
FII, UAIC Curs 2 SD 2019/2020 5 / 52
Analiza eficientei timp
“It is convenient to have a measure of the amount of work involvedin a computing process, even though it be a very crude one. Wemay count up the number of times that various elementary opera-tions are applied in the whole process and then given them variousweights. We might, for instance, count the number of additions,subtractions, multiplications, divisions, recording of numbers, andextractions of figures from tables. In the case of computing withmatrices most of the work consists of multiplications and writingdown numbers, and we shall therefore only attempt to count thenumber of multiplications and recordings.”
— Alan Turing, Bounding-off errors in matrix processes, 1947
FII, UAIC Curs 2 SD 2019/2020 6 / 52
Analiza eficientei timp
Trebuie sa stabilimI. Un model de calcul.Modelul von Neumann – RAM (random access machine):
I prelucrarile sunt executate secvential;
I memoria consta dintr-o multime infinita de celule;
I timpul pentru accesarea datelor este acelasi (nu depinde de locatiaacestora ın memorie);
I celulele de memorie pastreaza valori ”mici” (limitate polinomial ındimensiune)
I timpul de executie al unei prelucrari nu depinde de valorile operanzilor.
FII, UAIC Curs 2 SD 2019/2020 7 / 52
Modelul de calcul
I Implica o abstractizare, o simplificare bruta.
I Memoria externa:I ıntr-o masina reala exista o ierarhie complexa a memoriei;I exista algoritmi special proiectati pentru seturi de date mari care
trebuiesc pastrate ın memoria externa;I memoria rapida – de dimensiune limitata / memoria externa –
nelimitata;I exista operatii speciale de intrare/iesire care transfera informatie ıntre
cele doua tipuri.
I Procesare paralela:I (SIMD (Single Instruction, Multiple Data) - executie paralela a unei
instructiuni, pe date diferite;I multithreading simultan - rularea mai multor fire de executie pe un
procesor;I procesoare multiple, procesoare multicore, etc.;I sisteme distribuite.
FII, UAIC Curs 2 SD 2019/2020 8 / 52
Analiza eficientei timp
II. O unitate de masura a timpului de executie
I Pseudocod (curs 1):I variabile si tipuri elementare de date; instructiuni; proceduri si functii.
I Timpul necesar executiei unei prelucrari elementare:I operatii elementare: atribuire, operatii aritmetice, comparatii, operatii
logice;I fiecare operatie elementara necesita o unitate de timp pentru a fi
executata.
I Timpul total de executie este egal cu numarul prelucrarilor elementareexecutate.
FII, UAIC Curs 2 SD 2019/2020 9 / 52
Dimensiunea problemei
I Ipoteza: volumul resurselor de calcul necesare depinde de volumuldatelor de intrare.
I Dimensiunea problemei: volumul de memorie necesar stocarii datelede intrare.
I Este exprimata ın:I numarul de componente ale datelor de intrare sauI numarul de biti necesari stocarii datelor de intrare.
I Numarul de biti necesari stocarii valorii n este [log2n] + 1.
FII, UAIC Curs 2 SD 2019/2020 10 / 52
Dimensiunea problemei - exemple
I Testul de primalitate pentru un numar n: n ( sau log2n ).
I Minimul unui tablou: x [0..n − 1]: n.
I Suma a doua matrici (m × n): m × n.
FII, UAIC Curs 2 SD 2019/2020 11 / 52
Cont, inut
Analiza eficient,ei algoritmilor
Exemple de calcul
Ordin de cres, tere
Notat, ie asimptotica
FII, UAIC Curs 2 SD 2019/2020 12 / 52
Exemplul 1. Suma primelor n numere ıntregi
Intrare: n >= 1Iesire: suma s = 1 + 2 + · · ·+ nDimensiunea problemei: n
Function suma(n)begin
1 s ← 02 i ← 13 while i <= n do4 s ← s + i5 i ← i + 1
6 return send
Operatie Cost Nr. repetari
1 c1 12 c2 13 c3 n+14 c4 n5 c5 n
T (n) = (c3 + c4 + c5)n + (c1 + c2 + c3)
= a ∗ n + b
FII, UAIC Curs 2 SD 2019/2020 13 / 52
Exemplul 1. Suma primelor n numere ıntregi
Intrare: n >= 1Iesire: suma s = 1 + 2 + · · ·+ nDimensiunea problemei: n
Function suma(n)begin
1 s ← 02 i ← 13 while i <= n do4 s ← s + i5 i ← i + 1
6 return send
Operatie Cost Nr. repetari
1 c1 12 c2 13 c3 n+14 c4 n5 c5 n
T (n) = (c3 + c4 + c5)n + (c1 + c2 + c3)
= a ∗ n + b
FII, UAIC Curs 2 SD 2019/2020 13 / 52
Exemplul 1. Suma primelor n numere intregi
Consideram ca 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 ← 0for 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 2019/2020 14 / 52
Exemplul 2. Inmult, irea a doua matrici
Intrare: A(m × n),B(n × p)Iesire: C = A ∗ B, Ci ,j =
∑nk=1 AikBkj , 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 do2 for j ← 0 to p − 1 do3 c[i , j ]← 04 for k ← 0 to n − 1 do5 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 2019/2020 15 / 52
Exemplul 2. Inmult, irea a doua matrici
Intrare: A(m × n),B(n × p)Iesire: C = A ∗ B, Ci ,j =
∑nk=1 AikBkj , 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 do2 for j ← 0 to p − 1 do3 c[i , j ]← 04 for k ← 0 to n − 1 do5 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 2019/2020 15 / 52
Exemplul 2. Inmult, irea a doua matrici
Operat, ie Cost Nr. repetari
1 2(m+1) 12 2(p+1) m3 1 mp4 2(n+1) mp5 2 mpn
T (m, n, p) = 4mnp + 5mp + 4m + 2
Observat, ie: nu este necesar sa se completeze ıntreg tabelul; este suficientsa se contorizeze operat, ia dominanta.
I Cea mai frecventa (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 2019/2020 16 / 52
Exemplul 2. Inmult, irea a doua matrici
Operat, ie Cost Nr. repetari
1 2(m+1) 12 2(p+1) m3 1 mp4 2(n+1) mp5 2 mpn
T (m, n, p) = 4mnp + 5mp + 4m + 2
Observat, ie: nu este necesar sa se completeze ıntreg tabelul; este suficientsa se contorizeze operat, ia dominanta.
I Cea mai frecventa (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 2019/2020 16 / 52
Exemplul 3. Minimul unui tablou
Intrare: x [0..n − 1], n ≥ 1Iesire: m = min(x [0..n − 1])Dimensiunea problemei: n
Function minim(x [0..n − 1])begin
1 m← x [0]2 i ← 13 while i < n do4 if x [i ] < m then5 m← x [i ]6 i ← i + 1
7 return mend
Operat, ie Cost Nr. repetari
1 1 12 1 13 1 n4 1 n-15 1 t(n)6 1 n-1
T (n) = 3n + t(n)
FII, UAIC Curs 2 SD 2019/2020 17 / 52
Exemplul 3. Minimul unui tablou
Intrare: x [0..n − 1], n ≥ 1Iesire: m = min(x [0..n − 1])Dimensiunea problemei: n
Function minim(x [0..n − 1])begin
1 m← x [0]2 i ← 13 while i < n do4 if x [i ] < m then5 m← x [i ]6 i ← i + 1
7 return mend
Operat, ie Cost Nr. repetari
1 1 12 1 13 1 n4 1 n-15 1 t(n)6 1 n-1
T (n) = 3n + t(n)
FII, UAIC Curs 2 SD 2019/2020 17 / 52
Exemplul 3. Minimul unui tablou
Timpul de execut, ie depinde de:
I dimensiunea problemei;
I proprietat, 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 nefavorabilI x [0] > x [1] > ... > x [n − 1]⇒ t(n) = n − 1⇒ T (n) = 4n − 1
I 3n <= T (n) <= 4n − 1Limita inferioara s, i limita superioara depind liniar de dimensiuneaproblemei.
I Daca se ia ın calcul doar operat, ia de baza (comparat, ia x [i ] < m):T (n) = n − 1
FII, UAIC Curs 2 SD 2019/2020 18 / 52
Exemplul 4. Cautarea secvent, iala
Intrare: x [0..n − 1], n >= 1 s, i v o valoare (cheie de cautare)Iesire: valoarea de adevar a afirmat, iei “v face parte din x [0..n − 1]”Dimensiunea problemei: n
Functioncauta(x [0..n − 1], v)
begin1 i ← 02 while x [i ]! = v and
i < n − 1 do3 i ← i + 14 if x [i ] == v then5 gasit ← true
else6 gasit ← false
return gasitend
Operat, ie Cost Nr. repetari
1 1 12 2 t(n)+13 1 t(n)4 1 15 1 16 1 1
T (n) = 1 + 3t(n) + 4
FII, UAIC Curs 2 SD 2019/2020 19 / 52
Exemplul 4. Cautarea secvent, iala
Intrare: x [0..n − 1], n >= 1 s, i v o valoare (cheie de cautare)Iesire: valoarea de adevar a afirmat, iei “v face parte din x [0..n − 1]”Dimensiunea problemei: n
Functioncauta(x [0..n − 1], v)
begin1 i ← 02 while x [i ]! = v and
i < n − 1 do3 i ← i + 14 if x [i ] == v then5 gasit ← true
else6 gasit ← false
return gasitend
Operat, ie Cost Nr. repetari
1 1 12 2 t(n)+13 1 t(n)4 1 15 1 16 1 1
T (n) = 1 + 3t(n) + 4
FII, UAIC Curs 2 SD 2019/2020 19 / 52
Exemplul 4. Cautarea secvent, iala
Timpul de execut, ie depinde de:
I dimensiunea problemei;
I proprietat, ile datelor de intrare.
I Cazul cel mai favorabilI x [0] = v ⇒ t(n) = 0⇒ T (n) = 5
I cazul cel mai nefavorabilI x [n − 1] = v sau
(v ! = x [0], ..., v ! = x [n − 1])⇒ t(n) = n − 1⇒ T (n) = 3n + 2
I Daca se considera ca operat, ie dominanta 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 2019/2020 20 / 52
Exemplul 5. Sortarea prin insertie
Intrare: o secvent, a de numere (a1, ..., an)Iesire: o permutare (aσ1 , ..., aσn) astfel ıncat aσ1 ≤ aσ2 ≤, . . . ,≤ aσnDimensiunea problemei: n
Procedure insertion-sort(a[0..n − 1], n)begin
1 for j ← 1 to n − 1 do2 key ← a[j ]3 i ← j − 14 while i >= 0 and a[i ] > key do5 a[i + 1]← a[i ]6 i ← i − 1
7 a[i + 1]← keyend
FII, UAIC Curs 2 SD 2019/2020 21 / 52
Exemplul 5. Sortarea prin insertie
Intrare: o secvent, a de numere (a1, ..., an)Iesire: o permutare (aσ1 , ..., aσn) astfel ıncat aσ1 ≤ aσ2 ≤, . . . ,≤ aσnDimensiunea problemei: n
Procedure insertion-sort(a[0..n − 1], n)begin
1 for j ← 1 to n − 1 do2 key ← a[j ]3 i ← j − 14 while i >= 0 and a[i ] > key do5 a[i + 1]← a[i ]6 i ← i − 1
7 a[i + 1]← keyend
FII, UAIC Curs 2 SD 2019/2020 21 / 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 2019/2020 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 2019/2020 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 2019/2020 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 2019/2020 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 2019/2020 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 2019/2020 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 2019/2020 22 / 52
Exemplul 5. Sortarea prin insert, ie
Operat, ie Cost Nr. repetari
1 c1 n2 c2 n − 13 c3 n − 14 c4
∑nj=2 tj
5 c5∑n
j=2(tj − 1)
6 c6∑n
j=2(tj − 1)
7 c7 n − 1
T (n) = c1n + c2(n − 1) + c3(n − 1) + c4∑n
j=2 tj + c5∑n
j=2(tj − 1) +c6
∑nj=2(tj − 1) + c7(n − 1)
FII, UAIC Curs 2 SD 2019/2020 23 / 52
Exemplul 5. Sortarea prin insert, ie
I Timpul de execut, ie depinde de:I dimensiunea problemei;I proprietat, ile datelor de intrare.
I Cazul cel mai favorabil: tabloul este sortat.tj = 1, j = 2, . . . , nT (n) = (c1 + c2 + c3 + c4 + c7)n − (c2 + c3 + c4 + c7)
I Cazul cel mai nefavorabil: tabloul este sortat ın ordine inversa.tj = j , j = 2, . . . , n
T (n) = c1n+(n−1)(c2+c3+c7)+c4(n(n+1)2 −1)+c5
n(n−1)2 +c6
n(n−1)2
= ( c42 + c52 + c6
2 )n2+(c1+c2+c3+ c42 −
c52 −
c62 +c7)n−(c2+c3+c4+c7)
I Cazul mediu: toate permutarile au aceeas, i probabilitate de aparit, ie.
I Este sortarea prin insert, ie un algoritm rapid?
FII, UAIC Curs 2 SD 2019/2020 24 / 52
Exemplul 5. Sortarea prin insert, ie
I Timpul de execut, ie depinde de:I dimensiunea problemei;I proprietat, ile datelor de intrare.
I Cazul cel mai favorabil: tabloul este sortat.tj = 1, j = 2, . . . , nT (n) = (c1 + c2 + c3 + c4 + c7)n − (c2 + c3 + c4 + c7)
I Cazul cel mai nefavorabil: tabloul este sortat ın ordine inversa.tj = j , j = 2, . . . , n
T (n) = c1n+(n−1)(c2+c3+c7)+c4(n(n+1)2 −1)+c5
n(n−1)2 +c6
n(n−1)2
= ( c42 + c52 + c6
2 )n2+(c1+c2+c3+ c42 −
c52 −
c62 +c7)n−(c2+c3+c4+c7)
I Cazul mediu: toate permutarile au aceeas, i probabilitate de aparit, ie.
I Este sortarea prin insert, ie un algoritm rapid?
FII, UAIC Curs 2 SD 2019/2020 24 / 52
Exemplul 5. Sortarea prin insert, ie
I Timpul de execut, ie depinde de:I dimensiunea problemei;I proprietat, ile datelor de intrare.
I Cazul cel mai favorabil: tabloul este sortat.tj = 1, j = 2, . . . , nT (n) = (c1 + c2 + c3 + c4 + c7)n − (c2 + c3 + c4 + c7)
I Cazul cel mai nefavorabil: tabloul este sortat ın ordine inversa.tj = j , j = 2, . . . , n
T (n) = c1n+(n−1)(c2+c3+c7)+c4(n(n+1)2 −1)+c5
n(n−1)2 +c6
n(n−1)2
= ( c42 + c52 + c6
2 )n2+(c1+c2+c3+ c42 −
c52 −
c62 +c7)n−(c2+c3+c4+c7)
I Cazul mediu: toate permutarile au aceeas, i probabilitate de aparit, ie.
I Este sortarea prin insert, ie un algoritm rapid?
FII, UAIC Curs 2 SD 2019/2020 24 / 52
Exemplul 5. Sortarea prin insert, ie
I Timpul de execut, ie depinde de:I dimensiunea problemei;I proprietat, ile datelor de intrare.
I Cazul cel mai favorabil: tabloul este sortat.tj = 1, j = 2, . . . , nT (n) = (c1 + c2 + c3 + c4 + c7)n − (c2 + c3 + c4 + c7)
I Cazul cel mai nefavorabil: tabloul este sortat ın ordine inversa.tj = j , j = 2, . . . , n
T (n) = c1n+(n−1)(c2+c3+c7)+c4(n(n+1)2 −1)+c5
n(n−1)2 +c6
n(n−1)2
= ( c42 + c52 + c6
2 )n2+(c1+c2+c3+ c42 −
c52 −
c62 +c7)n−(c2+c3+c4+c7)
I Cazul mediu: toate permutarile au aceeas, i probabilitate de aparit, ie.
I Este sortarea prin insert, ie un algoritm rapid?
FII, UAIC Curs 2 SD 2019/2020 24 / 52
Analiza algoritmilor
I Cazul cel mai favorabilI O margine inferioara a timpului de execut, ie;
I Identificarea algoritmilor ineficient, i:I daca un algoritm are un cost ridicat ın cazul cel mai favorabil, atunci el
nu reprezinta o solut, ie acceptabila.
I Cazul cel mai nefavorabilI Cel mai mare timp de execut, ie ın raport cu toate datele de intrare
posibile;
I O margine superioara a timpului de execut, ie;
I Marginea superioara este mai importanta decat cea inferioara.
FII, UAIC Curs 2 SD 2019/2020 25 / 52
Analiza ın cazul mediu
I Exista situat, ii cand cazul cel mai favorabil s, i cel mai nefavorabil suntcazuri rare (except, ii):I analiza ın cele doua cazuri nu furnizeaza suficienta informat, ie.
I Analiza ın cazul mediu furnizeaza informatii privind comportareaalgoritmului ın cazul unor date de intrare arbitrare.I Se bazeaza pe cunoas, terea distribut, iei de probabilitate a datelor de
intrare.
I Cunoas, terea (estimarea) probabilitat, ii de aparit, ie a fiecareia dintreinstant,ele posibile ale datelor de intrare.
I Timpul mediu de executie este media timpilor de execut, iecorespunzatori instant,elor datelor de intrare.
FII, UAIC Curs 2 SD 2019/2020 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 clasa);
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) = P1T1(n) + P2T2(n) + ... + PmTm(n)
I Daca toate clasele au aceeas, i probabilitate de aparit, ie:
Ta(n) = (T1(n) + T2(n) + ... + Tm(n))/m
FII, UAIC Curs 2 SD 2019/2020 27 / 52
Exemplul 4. Cautarea secvent, iala (revizitat)
I Ipoteze:I probabilitatea ca v sa se afle ın tablou: p
I v apare cu aceeas, i probabilitate pe fiecare pozit, ie din tablou;I probabilitatea ca v sa se afle pe pozit, ia k: p/n;
I probabilitatea ca v sa nu se afle ın tablou: 1− p.
I Ta(n) = p(1+2+..+n)n + (1− p)n = p(n+1)
2 + (1− p)n = (1− p2 )n + p
2
I daca p = 0.5, atunci Ta(n) = 34n + 1
4 ;I timpul mediu depinde liniar de dimensiunea datelor de intrare.
I Observat, ie: timpul mediu nu este ın mod necesar media aritmetica atimpilor de execut, ie corespunzatori cazurilor extreme.
FII, UAIC Curs 2 SD 2019/2020 28 / 52
Etapele analizei algoritmilor
1. Identificarea dimensiunii problemei.
2. Identificarea operat, iei dominante.
3. Estimarea timpului de execut, ie (determinarea numarului de execut, iiale operat, iei dominante).
4. daca timpul de execut, ie depinde de proprietat, ile datelor de intrare,atunci se analizeaza: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 2019/2020 29 / 52
Analiza eficient,ei algoritmilor
I Scopul principal: determinarea modului ın care timpul de execut, iecres, te odata cu cres, terea dimensiunii problemei.
I Nu e necesar sa se cunoasca expresia detaliata a timpului de execut, ie
I Este suficient sa se identifice:I ordinul de cres, tere al timpului de execut, ie;
I clasa de eficient, a (complexitate) careia ıi apart, ine algoritmul.
FII, UAIC Curs 2 SD 2019/2020 30 / 52
Cont, inut
Analiza eficient,ei algoritmilor
Exemple de calcul
Ordin de cres, tere
Notat, ie asimptotica
FII, UAIC Curs 2 SD 2019/2020 31 / 52
Ordin de cres, tere
I Termen dominant: termen care devine semnificativ mai mare decatceilalt, i atunci cand dimensiunea problemei cres, te.I Dicteaza comportarea algoritmului cand 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 2019/2020 32 / 52
Ordin de cres, tere
I Ordin de cres, tere: caracterizeaza cres, terea termenului dominant altimpului de execut, ie ın raport cu dimensiunea problemei.
I Ce se ıntampla cu termenul dominant cand dimensiunea problemeicres, te de k ori?
T1(n) = an T ′1(kn) = akn = kT1(n) liniarT2(n) = alogn T ′2(kn) = alog(kn) = T2(n) + alogk logaritmicT3(n) = an2 T ′3(kn) = a(kn)2 = k2T3(n) patraticT4(n) = an T ′4(kn) = akn = (an)k = T4(n)k exponent, ial
FII, UAIC Curs 2 SD 2019/2020 33 / 52
Ordin de cres, tere
I Ordin de cres, tere: caracterizeaza cres, terea termenului dominant altimpului de execut, ie ın raport cu dimensiunea problemei.
I Ce se ıntampla cu termenul dominant cand dimensiunea problemeicres, te de k ori?
T1(n) = an T ′1(kn) = akn = kT1(n) liniarT2(n) = alogn T ′2(kn) = alog(kn) = T2(n) + alogk logaritmicT3(n) = an2 T ′3(kn) = a(kn)2 = k2T3(n) patraticT4(n) = an T ′4(kn) = akn = (an)k = T4(n)k exponent, ial
FII, UAIC Curs 2 SD 2019/2020 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 realizeaza pentru valori mari ale dimensiunii problemei
(cazul asimptotic).
Exemplu:T 1(n) = 10n + 10T 2(n) = n2
FII, UAIC Curs 2 SD 2019/2020 34 / 52
O comparat, ie a ordinelor de cres, tere
Dependent,a timpilor de execut, ie a diferit, i algoritmi ın raport cudimensiunea problemei (consideram un procesor ce realizeaza 106
instruct, iuni pe secunda); daca timpul de execut, ie depas,es, te 1025 ani,afis, am “nu”.
n log2n nlog2n 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 2019/2020 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), calculam limn→∞T1(n)T2(n)
I daca lim = 0: T 1(n) are un ordin de cres, tere mai mic decat T 2(n);
I daca lim = c , c > 0 constanta: T 1(n) s, i T 2(n) au acelas, i ordin decres, tere;
I daca lim =∞: T 1(n) are un ordin de cres, tere mai mare decat T 2(n).
FII, UAIC Curs 2 SD 2019/2020 36 / 52
Cont, inut
Analiza eficient,ei algoritmilor
Exemple de calcul
Ordin de cres, tere
Notat, ie asimptotica
FII, UAIC Curs 2 SD 2019/2020 37 / 52
Analiza asimptotica
I Analiza timpilor de execut, ie pentru valori mici ale dimensiuniiproblemei nu permite diferent, ierea ıntre algoritmi eficient, i siineficient, i.
I Diferent,ele dintre ordinele de cres, tere devin din ce ın ce maisemnificative pe masura ce dimensiunea problemei cres, te.
I Analiza asimptotica: studiul proprietat, ilor timpului de execut, ieatunci cand dimensiunea problemei tinde catre infinit (probleme dedimensiune mare).I algoritmul poate fi ıncadrat ın diferite clase identificate prin notat, ii: O,
Ω, Θ
FII, UAIC Curs 2 SD 2019/2020 38 / 52
Ordine de cres, tere asimptotica. Notat, ia O
Fie f , g : N→ R+ doua funct, ii care depind de dimensiunea problemei.
Definitie
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 2019/2020 39 / 52
Notat, ia O
Pentru valori suficient de mari ale lui n, f (n) este marginita superior deg(n) multiplicata cu o constanta pozitiva.
FII, UAIC Curs 2 SD 2019/2020 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
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 2019/2020 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 2019/2020 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 2019/2020 41 / 52
Notat, ia O - proprietat, 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. Daca T (n) = adnd + ad−1nd−1 + ... + a1n + a0 atunci T (n) ∈ O(nk)pentru orice k >= d .
I exemplu: n ∈ O(n2)
4. Daca pentru cazul cel mai nefavorabil obt, inem T (n) <= g(n), atunciT (n) ∈ O(g(n)).I Cautarea secvent, iala: 5 ≤ T (n) ≤ 3n + 2⇒ algoritmul este din
clasa O(n).
FII, UAIC Curs 2 SD 2019/2020 42 / 52
Notatia Ω
Definitie
Ω(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 2019/2020 43 / 52
Notat, ia Ω
Pentru valori mari ale lui n, funct, ia f (n) este marginita inferior de g(n)multiplicata eventual cu o constanta pozitiva.
FII, UAIC Curs 2 SD 2019/2020 44 / 52
Notat, ia Ω - proprietat, i
1. f (n) ∈ Ω(f (n)) (reflexivitate).
2. f (n) ∈ Ω(g(n)), g(n) ∈ Ω(h(n))⇒ f (n) ∈ Ω(h(n)) (tranzitivitate).
3. Daca T (n) = adnd + ad−1nd−1 + ... + a1n + a0 atunci T (n) ∈ Ω(nk)pentru orice k <= d .I exemplu: n2 ∈ Ω(n)
FII, UAIC Curs 2 SD 2019/2020 45 / 52
Notat, ia Θ
Definitie
Θ(g(n)) =f (n) : ∃c1, c2 > 0, n0 ∈ N a.ı. ∀n ≥ n0 : c1g(n) ≤ f (n) ≤ c2g(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 2019/2020 46 / 52
Notat, ia Θ
Pentru valori suficient de mari ale lui n, f (n) este marginita, atat superiorcat s, i inferior de g(n) multiplicata cu nis, te constante pozitive.
FII, UAIC Curs 2 SD 2019/2020 47 / 52
Notat, ia Θ - proprietat, 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. Daca T (n) = adnd + ad−1nd−1 + ... + a1n + a0 atunci T (n) ∈ Θ(nd).
5. Θ(cg(n)) = Θ(g(n)) pentru orice constanta c .Cazuri particulare:I Θ(c) = Θ(1)I Θ(logah(n)) = Θ(logbh(n)) pentru orice a, b > 1
6. Θ(f (n) + g(n)) = Θ(maxf (n), g(n))
FII, UAIC Curs 2 SD 2019/2020 48 / 52
Notat, ia Θ - proprietat, 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 exista constante c s, i n0 astfel ıncat cn2 ≤ 10nlgn + 5 pentruorice n ≥ n0.
8. Θ(g(n)) ⊂ Ω(g(n)).
Exemplu: f (n) = 10nlgn + 5, g(n) = nf (n) ≥ 10g(n) pentru orice n ≥ 1⇒ f (n) ∈ Ω(g(n))Dar nu exista constante c s, i n0 astfel ıncat 10nlgn + 5 ≤ cn pentruorice n ≥ n0.
9. Θ(g(n)) = O(g(n)) ∩ Ω(g(n)).
FII, UAIC Curs 2 SD 2019/2020 49 / 52
Notat, ia Θ - exemple
1. Inmult, irea a doua matrici: T (m, n, p) = 4mnp + 5mp + 4m + 2.
Extinderea definit, iei (ın cazul ın care dimensiunea problemei depindede mai multe valori):
f (m, n, p) ∈ Θ(g(m, n, p)) daca exista c1, c2 > 0 s, i m0, n0, p0 ∈ Nastfel ıncat c1g(m, n, p) ≤ f (m, n, p) ≤ c2g(m, n, p) pentru oricem ≥ m0, n ≥ n0, p ≥ p0.
Astfel T (m, n, p) ∈ Θ(mnp).
2. Cautare secvent, iala: 5 ≤ T (n) ≤ 3n + 2.Daca T (n) = 5 atunci nu se poate gasi c1 astfel ıncat 5 ≥ c1n pentruvalori suficient de mari ale lui n ⇒ T (n) nu apart, ine lui Θ(n).
FII, UAIC Curs 2 SD 2019/2020 50 / 52
Notat, ia Θ - exemple
Cand n este suficient de mare, un algoritm cu o complexitate Θ(n2) estemai eficient decat unul cu complexitatea Θ(n3).
FII, UAIC Curs 2 SD 2019/2020 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(logkn) = clasa algoritmilor polilogaritmici;A |TA(n) = O(n) = clasa algoritmilor liniari;A |TA(n) = O(n2) = clasa algoritmilor patratici;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 2019/2020 52 / 52