70
Analiza eficient , ei algoritmilor. SD 2019/2020

Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

Analiza eficient,ei algoritmilor.

SD 2019/2020

Page 2: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 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

Page 3: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 4: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 5: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 6: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 7: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 8: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 9: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 10: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 11: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 12: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 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 12 / 52

Page 13: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 14: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 15: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 16: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 17: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 18: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 19: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 20: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 21: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 22: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 23: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 24: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 25: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 26: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 27: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 28: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 29: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 30: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 31: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 32: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 33: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 34: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 35: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 36: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 37: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 38: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 39: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 40: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 41: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 42: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 43: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 44: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 45: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 46: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 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 31 / 52

Page 47: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 48: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 49: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 50: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 51: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 52: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 53: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 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 37 / 52

Page 54: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 55: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 56: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 57: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 58: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 59: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 60: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 61: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 62: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 63: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 64: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 65: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 66: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 67: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 68: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 69: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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

Page 70: Analiza eficientei algoritmilor.sd/curs/curs-02.pdfCont, inut Analiza e cient, ei algoritmilor Exemple de calcul Ordin de cres, tere Notat, ie asimptotic a FII, UAIC Curs 2 SD 2019/2020

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