curs1 introducere

31
Tehnici de Proiectarea si Analiza Algoritmilor Dorel Lucanu

Upload: george2503

Post on 25-Jun-2015

450 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: curs1 Introducere

Tehnici de Proiectarea si Analiza Algoritmilor

Dorel Lucanu

Page 2: curs1 Introducere

Bibliografie

T.H. Cormen, C.E. Leiserson, R.L. Rivest: Introduction to Algorithms, MIT Press, 1990

T.H. Cormen, C.E. Leiserson, R.L. Rivest: Introducere in algoritmi, Libris Agora, 2000

D. Lucanu, M. Craus : Proiectarea algoritmilor, Polirom 2008

Pagina web a cursului: http://portal.info.uaic.ro/curs/tpaa/default.aspx

Page 3: curs1 Introducere

Evaluare

condiţii

activitate seminar, temele din timpul semestrului, testul scris criterii

minim 50% prezenţă la seminar

media la teme: minim 5

nota la test: minim 4 teme: vor fi 2 teme (aprox. sapt 5,10) a căror rezolvare va fi

prezentată sub formă de referat invidual testul scris: se va da pe in ultima saptamana şi va include

întrebări din toată materia Pentru stdenţii care refac disciplina, se poate recunoaşte oricare

dintre cele două componente, dacă punctajul este >= minimul pentru promovare

Page 4: curs1 Introducere

Evaluare

bonusuri: orice soluţie originală sau investigarea de subiecte strâns legate de tematica cursului poate aduce un bonus care, în condiţii de realizări semnificative, poate echivala una sau chiar ambele teme

formula notei finale

10% activitate seminar + 40% teme + 50% test scris + bonusuri

Temele pentru verificarea pe parcurs vor fi afişate pe pagină şi anunţate prin email.

În sesiunea de restanţe se va da doar testul scris. Punctajul de la teme va fi cel obţinut în timpul semestrului.

Refacerea temelor e posibila numai in anul urmator impreuna cu refacerea disciplinei

Page 5: curs1 Introducere

Curs 1

clasele O(f(n)), (f(n)), (f(n)) masuri de complexitate timp si spatiu complexitatea in cazul cel mai nefavorabil complexitatea medie complexitatea problemelor

problema sortarii cautare

cautare binaraarbore binar de cautare arbori echilibrati

• arbori AVL

Page 6: curs1 Introducere

Calcul asimptotic

clasele de functiiO(f(n)) = {g(n) | (c > 0, n0)(n n0) |g(n)| c|f(n)|}Ω(f(n)) = {g(n) | (c > 0, n0)(n n0) |g(n)| c|f(n)|}Θ(f(n)) = {g(n) | (c1,c2 > 0, n0)(n n0) c1|f(n)| |g(n)| c2|f(n)|}

conventiig(n) = O(f(n)) in loc de g(n) O(f(n)) O(g(n)) = O(f(n)) in loc de O(g(n) O(f(n))

expresiiO(f1(n)) + O(f2(n)) = {g1(n) + g2(n)| g1(n) O(f1(n)),

g2(n) O(f2(n))} exemplu

O(n log n) + O(n2) = O(n2)

Page 7: curs1 Introducere

Calculul unui algoritm (I)

s 0i 0while (i < m) do

i i+1s s + i

pas instructiunea s i m

1 s 0 - - 7

2 i 0 0 - 7

3 i < m 0 0 7

4 i i+1 0 0 7

5 s s + i 0 1 7

6 i < m 1 1 7

7 i i+1 1 1 7

8 s s + i 1 2 7

9 i < m 3 2 7

… ... … … …

starea memoriei

pas de calcul

Page 8: curs1 Introducere

Calculul unui algoritm (II)

configuratie = linie in tabelinstructiunea ce urmeaza a fi executatastarea memoriei = valorile curente ale variabilelor

relatia de tranzitie (trecerea de la o linie la alta in tabel)

c | c' executarea instructiunii din c peste starea memoriei din c produce c'

calcul finit: c0 | c1 | ... | cn

c0 configuratie initiala

cn configuratie finala

calcul infinit: c0 | c1 | ... | cn | ...

Page 9: curs1 Introducere

Complexitatile timp si spatiu ale programelor

Fie

P o problema, p P instanta (intrare),

A un algoritm pentru P,

c0 | c1 | ... | cn calculul generat de instanta p

timpul unui calcul t(ci) timpul necesar pentru ci | ci+1

TA(p) = ∑i=0,n-1t(ci)

spatiul unui calcul

s(ci) spatiul din ci

SA(p) = maxi=0,n s(ci)

Page 10: curs1 Introducere

Complexitatea timp si spatiu

s 0i 0while (i < m) do

i i+1s s + i

• nr. de biti pentru reprez. lui m este n = [log m] + 1

• luam m = 2n-1 • presupunem ca op. i < m si i i+1 se executa fiecare in timpul log i• prespunem ca op. s s + i se executa in timpul log s • rezulta un timp de calcul TA(p) = 2 + 2ilog i + ilog i*(i+1)/2 =

2 + 2log m! + log (m!)2/(2m) = 2 + 4log m! – log 2m = 2 + 4 Θ(m log m ) – m = Θ(m log m) = Θ(n 2n)

• timp de calcul exponential!?• spatiul SA (p) = n + n + 2n

Page 11: curs1 Introducere

Dimensiunea unei probleme

inconvenientul de a lucra cu instante:P: determinarea maximului dintr-un sirnumarul de instante: ?

dimensiunea unei problemefiecarei instante p ii atasam o marime g(p)definitia exacta: g(p) = lungimea reprezentarii lui pin practica g(p) reprezinta

• numarul elementelor dintr-un vector/multime

• numarul de varfuri ale unui (di)graf

• numarul de muchii/arce ale unui graf/digraf

• etc

Page 12: curs1 Introducere

Timpul de executie si spatiul in cazul cel mai nefavorabil

TA(n) = sup{TA(p) | p P, g(p) = n}

SA(n) = sup{SA(p) | p P, g(p) = n}

in general t(ci) este greu de precizat si depinde de marimile valorilor variabilelor din instructiunea itimpul de executie = o forma simplificata pentru t(ci)

• operatii elementare (adunare, inmultire etc)

• fiecare operatie elementara se executa intr-o unitate de timp

• t(ci) = numarul operatiilor elementare din instructiunea din ci

ce analizam = ce operatii elementare consideram

Page 13: curs1 Introducere

Calculul timpului de executie in cazul cel mai nefavorabil

atribuire x E

TE(n) (de multe ori o constanta) compunerea secventiala

A1 A2

TA1(n) + TA2(n) if-then-else

if Ethen A1else A2

max(TA1(n) , TA2(n)) + TE(n) while

while E doA1

m *( TA1(n) + TE(n)), m = nr. max. de iteratii

Page 14: curs1 Introducere

Exemplu: cautarea intr-un tablou

i 0while (x ≠ a[i] and i < n-1) do

i i+1if (x = a[i]) then poz ielse poz -1

g(p) = noperatii elementare: atribuire, adunare, comparatieTA(n) = 1 + (n-1)*6

SA(n) = n + 2

Page 15: curs1 Introducere

Timpul de executie mediu

functia de de masurare a timpului ca variabila aleatoare experienta = executia programului rezultatul experientei = timpul (spatiul) executiei

TA(p)

timpul de executie mediu = media variabilei aleatoare

TmedA(n) = M({TA(p) | p P, g(p) = n})

daca valorile pentru TA(p) sunt x0, x1, x2, …

probabilitatea cu care se obtine xi este qi

atunciTmed

A(n) = i xiqi

Page 16: curs1 Introducere

Timpul de executie mediu

exemplu: cautarea intr-un tablouvalori posibile pentru TA(p) :

xi-1 = 1 + i*6, i = 1,2,...,n

probabilitatea cu care se obtine xi

• q = probabilitatea ca x sa apara un tablou

• qi = probabilitatea ca x sa apara pe pozitia i = q/n

• TmedA(n) = ∑i=1,n (1+i*6)*(q/n) + (1+(n-1)*6)*(1-q)

Sortarea rapida (Quicksort)in cazul cel mai nefavorabil: O(n2)medie: O(n log n)

Page 17: curs1 Introducere

Complexitatea problemelor

P are complexitatea timp in cazul cel mai nefavorabil O(f(n)) daca exista un algoritm A care rezolva P si TA(n) = O(f(n))

P are complexitatea timp in cazul cel mai nefavorabil Ω(f(n)) daca orice algoritm A care rezolva P are TA(n) = Ω(f(n))

P are complexitatea timp in cazul cel mai nefavorabil Θ(f(n)) daca are atat complexitatea O(f(n)) cat si complexitatea Ω(f(n))

A este algoritm optim pentru P daca P are complexitatea Θ(TA(n)).

Page 18: curs1 Introducere

Complexitatea problemelor

Algoritmi de sortare bazati pe comparatii

sortare prin insertie: O(n2)

sortare rapida: O(n2)

sortarea sistematica (heapsort): O(n log n)

sortarea prin interclasare: O(n log n)

Problema sortarii are complexitatea in cazul cel mai

nefavorabil O(n log n)

Exista algoritmi de sortare mai performanti?

Page 19: curs1 Introducere

Dorel Lucanu Proiectarea algoritmilor 19

Modelul arborilor de decizie pentru sortare

operatia de baza: a[i] ? a[j] (pp. a[i] a[j]) constructia arborelui de decizie (recursiv)

nodul curent = comparatia curenta i?j (repr. a[i] ? a[j]) subarborele sting include comparatiile ce se efectueaza

daca a[i] < a[j] subarborele drept include comparatiile ce se efectueaza

daca a[i] > a[j] nodurile pe frontiera sunt etichetate cu permutari calcul: drum de la radacina la frontiera care respecta

constructia arbore de decizie pentru sortare = arbore decizie care

rezolva problema sortarii (orice calcul se opreste intr-un nod etichetat cu o permutare care ordoneaza elementele secventei de intrare)

Page 20: curs1 Introducere

Dorel Lucanu Proiectarea algoritmilor 20

Arborele de decizie pentru sortare: exemplu (insertSort)

0?1

1?2

0?2

0?2

1?2

0,1,2 1,0,2

0,2,1 2,0,1 1,2,0 2,1,0

<

<

<

<

<

>

>

>

>

>

Page 21: curs1 Introducere

Dorel Lucanu Proiectarea algoritmilor 21

Sortare: numar minim de comparatii

numarul minim in cazul cel mai nefavorabil

S(n) = mint max h(t, )

unde h(t, ) este inaltimea in t a nodului

2S(n) n! S(n) log (n!) = (n log n)Teorema:

Problema sortarii are complexitatea Ω(n log n) in modelul arborilor de decizie pentru sortare (algoritmilor de sortare bazati pe comparatii)

Radixsort si sortarea prin numarare au complexitatea O(n). Contrazic teorema de mai sus?

NU, deoarece nu fac parte din modelul arb. de decizie

Page 22: curs1 Introducere

Cautare in liste liniare - complexitate

Tip de date Implementare Cautare Inserare Stergere

Lista liniara

Tablouri O(n) O(1) O(n)

Liste inlantuite O(n) O(1) O(1)

Lista liniara ordonata

Tablouri O(log n) O(n) O(n)

Liste inlantuite O(n) O(n) O(1)

Page 23: curs1 Introducere

Cautare binara – aspect static - algoritm

function Poz(s, n, a)begin

p 0; q n-1m [(p+q)/2]while (s[m] != a && p < q) do

if (a < s[m])then q m-1else p m+1m [(p+q)/2]

if (s[m] = a)then return melse return -1;

end

Page 24: curs1 Introducere

Arborele binar asociat cautarii binare

T(p,q)m

T(p,m-1) T(m+1,q)

T = T(0,n-1)

n = 6

1 3 5

4

2

0

Page 25: curs1 Introducere

Cautare binara statica - complexitate

Lema

Daca 2h-1 ≤ n < 2h atunci inaltimea lui T este h.

Teorema

Timpul de executie pentru cazul cel mai nefavorabil pentru cautarea binara statica este O(log n).

Page 26: curs1 Introducere

Cautare binara: aspect dinamic – structura de date

arbore binar de cautarearbore binar cu proprietatea ca pentru orice nod v, valorile

memorate in subarborele la stinga lui v

< valoarea din v

<

valorile memorate in subarborele la dreapta lui v

echivalent: parcurgerea inordine listeaza elementele crescator operatii

cautareinserarestergere

Page 27: curs1 Introducere

Degenerarea cautarii binare in cautare liniara

30 50

40

10

0

20

30 50

40

20

30 50

400

20

30

40

20

30

40

20

35

30

40

20

35

32

elimina(10) elimina(0) elimina(50)

insereaza(35) insereaza(32)

Page 28: curs1 Introducere

Clase de arbori O(log n)-stabile

arbori echilibratiC clasa de arbori echilibrati (ntC) t are n noduri

h(t) (log n) clase O(log n)-stabile

C clasa O(log n)-stabila daca:

• C clasa de arbori echilibrati

• operatiile de inserare si eliminare se realizeaza in timpul O(log n) si in urma realizarii acestor operatii se obtin arbori ce apartin clasei C.

Page 29: curs1 Introducere

Arbori AVL

un arbore binar de cautare t este un arbore AVL-echilibrat daca pentru orice virf v,

h(vstg) h(vdrp) 1 Lema

t AVL-echilibrat t echilibrat (i.e., h(t) (log n)).

Page 30: curs1 Introducere

Arbori AVL

Teorema

Clasa arborilor AVL-echilibrati este O(log n) stabila.algoritmul de inserare

• nodurile au memorate si factorii de echilibrare ( {1, 0, 1})

• se memoreaza drumul de la radacina la nodul adaugat intr-o stiva (O(log n))

• se parcurge drumul memorat in stiva in sens invers si se actualizeaza factorii de echilibrare; nodurile dezichilibrate se reechilibeaza cu una dintre operatiile: rotatie stinga/dreapta simpla/dubla (O(log n)).

Page 31: curs1 Introducere

Rotatii

x

y x

y

A

A

B B

C

C

Rotatie dreapta simpla

Rotatie dreapta dubla

x

y

z

x

y

z

A

AB

BC

C

D

D