31
Tehnici de Proiectarea si Analiza Algoritmilor Dorel Lucanu

Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

  • Upload
    ngoanh

  • View
    223

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Tehnici de Proiectarea si Analiza

Algoritmilor

Dorel Lucanu

Page 2: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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://www.infoiasi.ro/~dlucanu/

Page 3: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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 recumoaşte oricare

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

pentru promovare

Page 4: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Evaluare

bonusuri: orice soluţie originală sau investigarea de

subiecte strâns legate de tematica cursului poate aduce un

bonuscare, î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 sesiunile de restanţe şi extraordinare 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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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 binara

arbore binar de cautare

arbori echilibrati

• arbori AVL

Page 6: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Calcul asimptotic

clasele de functii

O(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)|} conventii

g(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))

expresii

O(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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Calculul unui algoritm (I)

s 0

i 0

while (i < m) do

i i+1

s 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

… ... … … …

Page 8: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Calculul unui algoritm (II)

configuratie = linie in tabel

instructiunea ce urmeaza a fi executata

starea memoriei = valorile curente ale variabilelor

relatia de tranzitie

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Complexitatile timp si spatiu ale programelor

Fie

P o problema, p P instanta,

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Complexitatea timp si spatiu

s 0

i 0

while (i < m) do

i i+1

s 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 + 2 ilog 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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Dimensiunea unei probleme

inconvenientul de a lucra cu instante:

P: determinarea maximului dintr-un sir

numarul de instante: ?

dimensiunea unei probleme

fiecarei instante p ii atasam o marime g(p)

definitia exacta: g(p) = lungimea reprezentarii lui p

in 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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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 i

timpul 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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Calculul timpului de executie in cazul cel mai nefavorabil

atribuire

x E

TE(n) (de multe ori o constanta)

compunerea secventialaA1

A2

TA1(n) + TA2(n)

if-then-elseif E

then A1

else A2

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

while

while E do

A1

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

Page 14: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Exemplu: cautarea intr-un tablou

i 0

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

i i+1

if (x = a[i])

then poz i

else poz -1

g(p) = n

operatii elementare: atribuire, adunare, comparatie

TA(n) = 1 + (n-1)*6

SA(n) = n + 2

Page 15: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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

atunci

TmedA(n) = i xiqi

Page 16: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Timpul de executie mediu

exemplu: cautarea intr-un tablou

valori 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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Cautare binara – aspect static - algoritm

function Poz(s, n, a)

begin

p 0; q n-1

m [(p+q)/2]

while (s[m] != a && p < q) do

if (a < s[m])

then q m-1

else p m+1

m [(p+q)/2]

if (s[m] = a)

then return m

else return -1;

end

Page 24: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Cautare binara: aspect dinamic – structura de date

arbore binar de cautare

arbore 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.

operatii

cautare

inserare

stergere

Page 27: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Clase de arbori O(log n)-stabile

arbori echilibrati

C clasa de arbori echilibrati ( n t C) 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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

Arbori AVL

un arbore binar de cautare t este un arbore AVL-echilibrat daca

pentru orice virf v,

h(v stg) h(v drp) 1

Lema

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

Page 30: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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: Tehnici de Proiectarea si Analiza Algoritmilordlucanu/cursuri/tpaa/resurse/Curs1.pdf · activitate seminar, temele din timpul semestrului, testul scris criterii minim 50% prezen

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