Documente Academic
Documente Profesional
Documente Cultură
valStg
valStg valMij
valStg<
x< valStg y< valMij<z
valMij
2-3-arbori : definitie
h
h
cautare in 2-3-arbore
function poz23Arb(t, a)
begin
p t
while (p != NULL) do
switch(cmp(a, p))
case 1: p p->stg; break;
case 2: p p->mij; break;
case 3: p p->drp; break;
case 4: return p;
return p
end
inserare in 2-3-arbore
35 80;
30; 60 100;
80;
30; 60 100;
40
10; 20 35; 50; 70; 90; 110; 120
inserare 2-3-arbore (continuare)
80;
40
30; 60; 100;
40; 80
subprograme necesare
radNoua(t, x, q)
• creeaza o noua radacina cu cheia x
t: intrare – rad subarb. stg.
iesire – noua rad.
q rad. subarb. drp
poz23ArbMod(t, x, s)
• memoreaza drumul de la radacina la x in stiva s
insInNod(p, x, q)
• insereaza x innodul p
parametri sunt similari subprogramului radNoua()
imparte(p, x, q)
• sparge un nod
parametri sunt similari subprogramului insInNod()
inserare 2-3-arbore (continuare)
procedure ins23Arb(t, x)
begin
if (t == NULL) then radNoua(t, x, NULL)
else p = poz23ArbMod(t, x, s)
if (p == NULL) then throw ”x in t”
else q NULL
while(true) do
if (p->valMij = )
then insInNod(p, x, q); break
imparte(p, x, q)
if (p = t)
then radNoua(t, x, q); break;
else p = top(s);
pop(s);
end
stergere 2-3-arbore
40; 80
30; 100;
combina 40; 80
30; 100;
80;
30; 40 100;
40; 80
modifica p
atat timp cat p are zero elemente && p nu e radacina
fie r radacina lui p
fie q fratele lui p (stg. sau drp. dupa caz)
daca q este de aritate 3
atunci roteste
altfel combina
r devine p
Teorema
Clasa 2-3-arborilor este O(log n)-stabila.
2-3-4-arbori
function B-Tree-Search(v, k)
i 0;
while (i < v->nrChei k > v->cheie[i]) do
i i + 1
if (i <= v->nrChei k = v->cheie[i] )
then return (v, i)
if (v->tipNod = frunza) then return NULL
citesteDisk(v->fiu[i])
return B-Tree-Search(v->fiu[i], k)
end
B-arbori: insertia
70
40 100
20 60 80 110
50 90
arbori bicolori - proprietati
Notatie
bh(x) = numarul de noduri negre aflate pe un drum din x pe
frontiera (x nu se considera)
bh(x) nu depinde de drum (ultima conditie)
Lema
Subarborele cu radacina in x contine cel putin
2 bh( x )
1
noduri interne.
Teorema
Inaltimea unui arbore bicolor este cel mult 2log(n + 1).
Teorema
Arborii bicolori sint echilibrati.
arbori bicolori - inserare
11
2 14
1 7 unchiul lui x 15
5 8 y
x 4
recolorare
arbori bicolori - inserare
11
unchiul lui x
2 14 y
1 7 x 15
5 8
4
roteste stanga
arbori bicolori - inserare
11
unchiul lui x
7 14 y
x 2 8 15
1 5
4
roteste dreapta
arbori bicolori - inserare
2 11
1 5 8 14
15
4
recoloreaza
arbori bicolori - inserare
2 11
1 5 8 14
15
4
Hashing (dispersie)
Tipul de data abstract TabelaDeSimboluri
entitati de tip data: o colectie de perechi (nume, atribute)
in care numele identifica unic perechea
operatii:
• Atribut(TS, nume) – cauta numele in tabela TS
numele nume si intoarce atributele acestuia (daca il
gaseste)
• Insereaza(TS, nume, atribut)- insereaza
in tabela TS perechea (nume, atribut)
• Elimina(TS,nume) – cauta in tabela TS numele
nume si daca-l gaseste il elimina impreuna cu
atributele sale.
Hashing (dispersie)
operatii
• cautarea
i = h(nume)
if (T[i] )
then return T[i]->atrib
• inserarea
i = h(nume)
if (T[i] )
then throw “ERR: coliziune”
else T[i]->atrib atribut
• eliminarea
i = h(nume)
if (T[i] )
then T[i]
Hashing (continuare II)
coliziunea
inlantuire
• numarul mediu de comparatii in cazul cautarilor cu
succes = 1 + b/2, unde b = #S/p este factorul de
incarcare al tabelei
adresare deschisa liniara
• se cerceteaza pe rind pozitiile
h(x,i), i = 0,1,2, ...
unde h(x,i) =(h1(x)+i) % p
• numarul mediu de comparatii in cazul cautarilor
FARA succes = 1/(1-b)
• numarul mediu de comparatii in cazul cautarilor CU
succes = ½(1 + 1/(1-b))
Arbori digitali - I
algoritmul de cautare
function poz(a, m, t)
i 0
p t
while ((p != NUL) && (i<m)) do
p succ[a[i]]
i i+1
return p
end
Arbori digitali - III
compactarea lanturilor
Arbori digitali - V