![Page 1: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/1.jpg)
Dorel Lucanu Algoritmica si programare
Curs 3 - Agenda
recursiearbori binariaplicatie: reprezentarea expresiilor ca arboricoada cu prioritati si max-heapcolectii de multimi disjuncte si “union-find”
![Page 2: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/2.jpg)
Dorel Lucanu Algoritmica si programare
Subprograme recursive
subprogramul f() apeleaza directsubprogramul g() daca blocul care definestef() include un apel al lui g()subprogramul f() apeleaza indirectsubprogramul g() daca f() apeleaza direct un subprogram h() si h() apeleaza direct sauindirect g()f() este definit recursiv daca se autoapeleaza direct sau indirect
![Page 3: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/3.jpg)
Dorel Lucanu Algoritmica si programare
Subprograme recursive: Fibonacci
function fibRec(n)if (n <= 1) then return nelse return fibRec(n-1) + fibRec(n-2)
endfibRec(5)
fibRec(4)
fibRec(3)
fibRec(2)
fibRec(0)fibRec(1)
fibRec(1)
fibRec(2)
fibRec(3)
fibRec(2)
fibRec(0)fibRec(1)
fibRec(1)
fibRec(0)fibRec(1)
![Page 4: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/4.jpg)
Dorel Lucanu Algoritmica si programare
Fibonacci – nerecursiv
function fib(n)if (n<=1) return n
// k = 0fk_1 ← 0 // fib[k-1]fk ← 1 // fib[k]for k ← 2 to n dofk_2 ← fk_1fk_1 ← fkfk ← fk_2 + fk_1
return fk;end
![Page 5: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/5.jpg)
Dorel Lucanu Algoritmica si programare
Functii recursive: conversie binara
procedure convert(x)1.if (x != 0)2.then convert(x/2)3. print(x % 2)}
convert(12)
convert(6)
convert(3)
convert(1)
convert(0) ─
11
1
110
1100
12 3
x adr.retur
stiva arborele apelurilor
0 1 33 36 3
![Page 6: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/6.jpg)
Dorel Lucanu Algoritmica si programare
Functii recursive: turnurile din Hanoi
sursa intermediar destinatie
sursa intermediar destinatie
sursa intermediar destinatie
![Page 7: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/7.jpg)
Dorel Lucanu Algoritmica si programare
Functii recursive: turnurile din Hanoi
procedure muta(n, a, b, c)// a = sursa// b = destinatia// c = intermediarif (n = 1) then print(a, “->”, b);else muta(n-1, a, c, b);
print(a, “->”, b);muta(n-1, c, b, a);
end
![Page 8: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/8.jpg)
Dorel Lucanu Algoritmica si programare
Tipul de date abstract ArbBin
obiecte : arbori binari• un arbore binar este o colectie de noduri cu
proprietatile:1.orice nod are 0, 1 sau 2 succesori (fiii, copiii)2.orice nod, exceptand unul singur – radacina, are
un singur nod predecesor (tata, parintele)3.radacina nu are predecesori4.fiii sunt ordonati: fiul stang, fiul drept (daca un
nod are un singur fiu, trebuie mentionat care)5.nodurile fara fii formeaza frontiera arborelui
![Page 9: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/9.jpg)
Dorel Lucanu Algoritmica si programare
Arbori binari: exemplu
C
DMK A
E G
IFL
H
B
![Page 10: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/10.jpg)
Dorel Lucanu Algoritmica si programare
Arbori binari: definitia recursiva:
arborele cu nici un nod (vid) este arborebinardaca v este un nod si t1, t2 sunt arboribinari atunci arborele care are pe v ca radacina, t1 subarbore stang al radacinii sit2 subarbore drept al radacinii, este arborebinar
t2t1
v
![Page 11: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/11.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin: operatii
insereaza()intrare:
un arbore binar t, adresa unui nod cu cel mult un fiu (tatal noului nod), tipulfiului adaugat (stinga, dreapta) siinformatia e din noul nod
iesirearborele la care s-a adaugat un nod cememoreaza e; noul nod nu are fii
![Page 12: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/12.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin: inserare
C
DMK A
E G
IFL
H
BX
Y
![Page 13: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/13.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin: eliminare
elimina()intrare:
un arbore binar t, adresa un nod farafii si adresa nodului-tata
iesirearborele din care s-a eliminat nodul de pe frontiera dat
![Page 14: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/14.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin: eliminare
C
L
DMK A
E G
IF
H
B
![Page 15: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/15.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin :parcurgere preordine
parcurgePreordine()intrare
un arbore binar t, o proceduraviziteaza()
iesirearborele binar t dar cu nodurile procesatecu viziteaza()in ordinea:
radacina (R)subarborele stanga (S)subarborele dreapta (D)
![Page 16: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/16.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin :parcurgere preordine - exemplu
C
L
DMK A
E G
IF
H
B
C, E, K, B, H, A, L, F, G, M, D, I
![Page 17: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/17.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin :parcurgere inordine
parcurgeInordine()intrare
un arbore binar t, o proceduraviziteaza()
iesirearborele binar t dar cu nodurile procesatecu viziteaza()in ordinea S R D
![Page 18: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/18.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin :parcurgere inordine - exemplu
C
L
DMK A
E G
IF
H
B
K, H, B, E, L, A, F, C, M, G, I, D
![Page 19: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/19.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin: parcurgere postordine
parcurgePostordine()intrare
un arbore binar t, o proceduraviziteaza()
iesirearborele binar t dar cu nodurile procesatecu viziteaza()in ordinea S D R
![Page 20: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/20.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin: parcurgere BFS
parcurgeBFS()intrare
un arbore binar t, o proceduraviziteaza()
iesirearborele binar t dar cu nodurile procesatecu viziteaza()in ordinea BFS (penivele)
![Page 21: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/21.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin: parcurgere BFS - exemplu
C
L
DMK A
E G
IF
H
B
C, E, G, K, A, M, D, B, L, F, I, H
![Page 22: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/22.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin : implementare cu structuri inlantuite
reprezentarea obiectelor
C
E G
B
H
K A
L F
M D
I
![Page 23: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/23.jpg)
Dorel Lucanu Algoritmica si programare
ArbBin : structura unui nod
un nod v este o structura cu trei campuri:v->inf /* informatia memorata in nod */v->stg /* adresa fiului stanga */v->drp /* adresa fiului dreapta */
![Page 24: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/24.jpg)
Dorel Lucanu Algoritmica si programare
Arbori binari: parcurgePreordine()
procedure parcurgePreordine(v)if (v = NULL) then returnelse viziteaza(v)
parcurgePreordine(v->stg) parcurgePreordine(v->drp)
end
![Page 25: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/25.jpg)
Dorel Lucanu Algoritmica si programare
Arbori binari: implementarea parcurgerii BFS
C
DMK A
E G
Coada = C( E G K A M D )
![Page 26: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/26.jpg)
Dorel Lucanu Algoritmica si programare
Arbori binari: implementarea parcurgerii BFS
procedure parcurgeBFS(t)begin
if (t = NULL) then returnelse C ← (t)
while (not esteVida(C))citeste(C, v)viziteaza(v)elimina(C)if (v→stg ≠ NULL)then insereaza(C, v->stg)if (v→drp ≠ NULL)then insereaza(C, v->drp)
end
![Page 27: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/27.jpg)
Dorel Lucanu Algoritmica si programare
Aplicatie: expresii intregi
Expresii intregidefinitieexemple
Reprezentarea expresiilor ca arborisimilaritati intre cele doua definitiiarborele asociat unei expresiinotatiile pref-, in- si postfixate si parcurgeri
ale arborilor
![Page 28: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/28.jpg)
Dorel Lucanu Algoritmica si programare
Definitia expresiilor intregi
<int> ::= ... –2 | -1 | 0 | 1 | 2 ... <expr_int> ::= <int>
| <exp_int> <op_bin> <exp_int>| (<exp_int>)
<op_bin> ::= + | − | * | / | %
reguli de precedenta12-5*2 este (12-5)*2 sau 12-(5*2)reguli de asociere15/4/2 este (15/4)/2 sau 15/(4/2)?15/4*2 este (15/4)*2 sau 15/(4*2)?
![Page 29: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/29.jpg)
Dorel Lucanu Algoritmica si programare
Expresiile reprezentate ca arbori
-12 + 17 * 5 – (43 + 34 / 21 * 66)
−
+ +
* *
/
-12
17 5
34 21
66
43
![Page 30: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/30.jpg)
Dorel Lucanu Algoritmica si programare
Notatiile postfixate si prefixate
notatia postfixata se obtine prin parcurgepostordine-12 17 5 * + 43 34 21 / 66 * + -notatia prefixata se obtine prin parcurgepreordine- + -12 * 17 5 + 43 * / 34 21 66
−
+ +
* *
/-12
17 5
34 21
66
43
![Page 31: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/31.jpg)
Dorel Lucanu Algoritmica si programare
Coada cu prioritati: tip de data abstract
obiecte de tip data: structuri de date in care elementele sunt numite atomi; orice atom un camp-cheie numit prioritate
![Page 32: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/32.jpg)
Dorel Lucanu Algoritmica si programare
Coada cu prioritati:operatii
citesteintrare: o coada cu prioritati Ciesire: atomul din C cu cheia cea mai mare
eliminaintrare: o coada cu prioritati Ciesire: C din care s-a eliminat atomul cu cheia cea mai mare
insereazaintrare: o coada cu prioritati C si un atom at iesire: C la care s-a adaugat at
![Page 33: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/33.jpg)
Dorel Lucanu Algoritmica si programare
maxHeap
arbori binari completi cu proprietatea: pentruorice nod, cheia din acel nod este mare decitsau egala cu cheile din nodurile fiiexemplu
12
437 1
9 8
5 2
![Page 34: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/34.jpg)
Dorel Lucanu Algoritmica si programare
maxHeap: eliminarea
12
437 1
9 8
5 2
![Page 35: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/35.jpg)
Dorel Lucanu Algoritmica si programare
maxHeap: inserarea
12
437 1
9 8
5 2
10
![Page 36: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/36.jpg)
Dorel Lucanu Algoritmica si programare
maxHeap:implementarea cu tablouri
(∀k) 1 ≤ k ≤ n-1 ⇒ a[k] ≤ a[(k-1)/2]
876543210
12
437 1
9 8
5 2
0
21
3
7 8
4 5 6
12 9 8 7 1 3 4 5 2
![Page 37: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/37.jpg)
Dorel Lucanu Algoritmica si programare
maxHeap: inserare
procedure insereaza(a, n, cheie)begin
n ← n+1a[n-1] ← cheiej ← n-1heap ← falsewhile ((j > 0) and not heap) do
k ← [(j-1)/2]if (a[j] > a[k])then swap(a[j], a[k])
j ← kelse heap ← true
end
![Page 38: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/38.jpg)
Dorel Lucanu Algoritmica si programare
maxHeap - elimina
procedure elimina(a, n)begin
a[0] ← a[n-1]n ← n-1j ← 0heap ← falsewhile ((2*j+1 < n) and not heap) do
k ← 2*j+1if ((k < n-1) and (a[k] < a[k+1]))then k ← k+1if (a[j] < a[k])then swap(a[j], a[k])
j ← kelse heap ← true
end
![Page 39: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/39.jpg)
Dorel Lucanu Algoritmica si programare
maxHeap: timp de executie
inaltime (adancime) arbore = lungimea celuimai lung drum de la radacina la frontieralungime drum = numar arcen =2k+1-1inaltime arbore = k = log (n+1)-1operatiile inserare/eliminare necesita timpulO(inaltime abore) = O(log n)
0
21
3 4 5 6
![Page 40: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/40.jpg)
Dorel Lucanu Algoritmica si programare
Colectii de multimi disjuncte: tip de data abstract
obiecte: colectii de submultimi disjuncte (partitii) ale unei multimi universoperatii:
find()intrare: o colectie C, un element x din universiesire: submultimea din C la care apartine x
union()intrare: o colectie C, doua elemente x si y din universiesire: C in care componentele lui x si resp. y sint reunite
single()intrare: o colectie C, un element x din universiesire: C la care componenta lui x are pe x ca unic element
![Page 41: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/41.jpg)
Dorel Lucanu Algoritmica si programare
Colectii de multimi disjuncte: “union-find”
structura “union-find”multimea univers = {0,1, ..., n-1}submultime = arborecolectie = padurereprezentarea unei paduri prin legaturaparinte
2
6
1 3 0
5
8
4
7
9
9876543210
-159-1-18-1665parinte
![Page 42: Curs 3 - Agendadlucanu/cursuri/ap/resurse/...iesire: atomul din C cu cheia cea mai mare elimina intrare: o coada cu prioritati C iesire: C din care s-a eliminat atomul cu cheiaceamaimare](https://reader034.vdocuments.mx/reader034/viewer/2022052616/60a45f1e6cb3d8279a7f63d3/html5/thumbnails/42.jpg)
Dorel Lucanu Algoritmica si programare
Colectii de multimi disjuncte: “union-find”
function find(C, i)begin
temp ← iwhile (parinte[temp] >= 0) do
temp ← parinte[temp]return temp
endprocedure union(C, i, j)begin
ri ← find(i)rj ← find(j)if (ri ≠ rj)then parinte[rj] ← ri
end