Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Arbori multici
8.5.1. Generaliti
Pn n prezent au fost studiate cu predilecie structuri de arbori n care fiecare nod avea
cel mult doi descendeni.
Desigur, acest lucru este pe deplin justificat dac spre exemplu, se dorete s se
reprezinte descendena unei persoane din punctul de vedere al strmoilor,
Deoarece n acest caz, fiecare pas necesit un acces la disc (care este
n situaia n care arborele crete aleator, n cel mai defavorabil caz ( cnd
degenereaz n lista liniar) numrul de accese poate ajunge ns la 104.
Un criteriu foarte potrivit n acest scop a fost postulat de R.Bayer n 1970 i anume:
Fiecare pagin cu excepia uneia, conine ntre n i 2n noduri, unde n este o
constant dat.
Astfel ntr-un arbore cu N noduri, a crui dimensiune maxim a unei pagini este
2n noduri, n cel mai ru caz, se fac lognN accese la pagini pentru a cuta o
cheie precizat.
Factorul de utilizare al memoriei este de cel puin 50%, deoarece orice pagin
este cel puin pe jumtare plin.
25
10 20
02 05 07 08
30 40
13 14 15 18
22 24
26 27 28
32 35 38
41 42 45 46
k1
p0
k2
p1
k3
p2
p3 ...
km-1
pm-2
km
pm-1
pm
Spre exemplu, dac m este mare se poate utiliza cutarea binar, n caz contrar,
cutarea liniar.
Dac cheia x nu se gsete n pagina curent este valabil una din urmtoarele situaii:
1. ki<x<ki+1, pentru li<m. Cutarea continu n pagina pi.
2. km<x. Cutarea continu n pagina pm.
3. x<k1. Cutarea continu n pagina po.
Dac pointerul la pagina desemnat de algoritmul de mai sus este vid, atunci nu exist
nici un nod cu cheia x i cutarea este terminat, adic s-a ajuns la baza arborelui ntro pagin terminal.
8.5.2.3. Inseria nodurilor n arbori B
+15
20
20
7 10 18
26 30 35 40
7 10 15 18
26 30 35 40
(a)
+22
20
7 10 15 18
B
20 30
26 30 35 40
C
7 10 15 18
(b)
22 26
C
35 40
D
RefPagina=^pagina;
indice=0..nn;
nod=RECORD
cheie:integer;
p:RefPagina;
contor:integer
END;
[8.9.2.3.a]
pagina=RECORD
m:indice; {nr curent de elemente n pagin}
p0:RefPagina;
elemente:ARRAY[1..nn] OF nod
END;
-------------------------------------------------------------
p0 indic pagina urma cu chei mai mici dect cea mai mic cheie din
pagin
Dac h este adevrat, parametrul u indic nodul care trebuie pasat n direcia
rdcinii.
Se precizeaz faptul c procesul de inserie ncepe ntr-o pagin ipotetic, de tip nod
special situat virtual sub nivelul terminal.
Noul nod, este transmis imediat, via parametrul u paginii terminale pentru
adevrat inserie.
Dac parametrul h devine adevrat dup apelul procedurii Cauta din programul
principal, acesta indic necesitatea scindrii paginii rdcin.
Deoarece pagina rdcin are un rol special, acest proces trebuie programat separat.
El const de fapt din alocarea unei noi pagini rdcin i inserarea unui singur nod
transmis prin parametrul u.
10 15 (20) 30 40
+35, 7, 26,18, 22
20
10 15
30 40
20
7 10 15 18
22 26 (30) 35 40
+5
20 30
7 10 15 18
22 26
35 40
+42, 13, 46,27, 8, 32
10 20 30
5 7
15 18
22 26
35 40
+38, 24, 45, 25
10 20 30 40
5 7 8
13 15 18
22 26 27
32 35
42 46
10 20 30 40
5 7 8
13 15 18
22 24 (25) 26 27
32 35 38
42 45 46
10 20 (25) 30 40
5 7 8
13 15 18
22 24
26 27
32 35 38
42 45 46
25
10 20
5 7 8
13 15 18
30 40
22 24
26 27
32 35 38
42 45 46
(3) Prin urmare dac arborele conine N noduri, n memoria principal trebuie
s ncap cel puin k pagini.
(4) Acesta este unul din factorii care limiteaz dimensiunea 2n a paginii.
De fapt n memorie trebuie s existe mai mult de k pagini din cauza scindrilor care
apar.
n acest caz nodul n cauz trebuie nlocuit cu unul dintre cele dou noduri
adiacente, care sunt n pagini terminale i prin urmare pot fi uor suprimate.
(1) Se nainteaz spre pagina terminal P de-a lungul celor mai din dreapta
pointeri ai subarborelui stng al cheii de suprimat;
(2) Se nlocuiete nodul de suprimat cu cel mai din dreapta nod al lui P ;
(3) Se reduce dimensiunea lui P cu 1.
Dac m<n apare fenomenul numit "subdepire" care este indicat de valoarea
adevrat a lui h.
Acesta este procesul invers scindrii paginii, proces care poate fi urmrit
n figura 8.9.2.3.a, dac se imagineaz suprimarea cheii cu numrul 22.
Din nou, extragerea cheii din mijloc din pagina strmo, poate determina
subdepirea, situaie care poate fi rezolvat fie prin echilibrare fie prin
contopire.
-45, -25
25
10 20
578
30 40
13 15 18
22 24
26 27
32 35 38
24
10 20
5 7 8
42 45 46
30 40
13 15 18
22
26 27
32 35 38
42 45 46
-24
24
10 18
5 7 8
30 40
13 15
20 22
26 27
32 35 38
42 45 46
contopire
22
10 18
5 7 8
30 40
13 15
20
26 27
32 35 38
42 45 46
-38, -32
10 22 30 40
5 7 8
13 15 18 20
26 27
32 35 38
5 7 8
13 15 18 20
26 27
35 40 42 46
15 18 20
5 7
26 30 35 40
7 10
20 30 35 40
10 20 30 40
42 46