Professional Documents
Culture Documents
B-stabla
Problemi sa stablom m -arnog pretraivanja: popunjenost nebalansiranost B-stabla (Bayer, McCreight 1972. godine) Definicija B-stabla reda m: stablo m -arnog pretraivanja korijen (ako nije list) ima najmanje dva podstabla vorovi grananja imaju najmanje m/2 podstabala ovim se poboljava iskoridenost prostora i smanjuje se broj nivoa listovi imaju najmanje m/2 - 1 kljueva svi listovi na istom nivou obezbjeuje balansiranost
B-stabla
B-stabla
Osobine: garantovana 50% popunjenost i balansiranost relativno jeftino odravanje Indeksne strukture u datotekama
A 65 B 15 31 40 54 C 73 85
6 D
11
18 25 E
33 38 F
42 45 49 52 G
57 60 63 H
66 69 I
75 78 J
87 89 91 99 K
B-stabla
Operacije
Pretraivanje kao u stablu m -arnog pretraivanja uspjeno moe da se zavri na bilo kom nivou neuspjeno se zavrava u listovima Garantovane performanse
n 1 + (
h 2m/2i-1)(m/2 i=1 h
- 1)
Operacije
Umetanje garantovana 50% popunjenost i balansiranost relativno jeftino odravanje
Algoritam pokuava umetanje u list ako list nije pun, umetanje uz pomeranje vedih (sortiranje) ako je pun, prelamanje (list je pun ako je broj kljueva u njemu jednak m-1, gdje m predstavlja red stabla)
Prelom manji kljuevi idu stari list vedi kljuevi idu u novi list srednji klju (na poziciji m/2 ) migrira kod oca eventualna propagacija do korijena i njegov prelom
B-stabla
B-stabla
a) Stablo reda 5 (slajd 3) sluaj: broj kljueva u listu je manji od 4 b) i c) Stablo reda 5 (slajd 3) sluaj: broj kljueva u listu je jednak 4 - prelom
B H a) H B + 59 =
57 60 63
A C
57 59 60 63
A C
b) I
73 85
J K I + 95 = J
73 85 91
K1 K2
87 89 91 99
87 89
A
95 99
40 65
B G c) B1 + 43 = D E B2 C
42 45 49 52
15 31
F G1
45 54
G2 H
42 43
49 52
B-stabla
Performanse
Razlike od stabla m -arnog pretraivanja raste odozdo nagore vorovi na gornjim nivoima obino nisu puni pretraivanje malo due (manje kljueva oko korijena) garantovane performanse najgori sluaj oko 3h obradanja disku
B-stabla
Operacije
Brisanje iz lista ukloni se klju ako ostane bar m/2 - 1 kljueva, samo pomjeranje ako nema dovoljno, proba da preuzme jedan klju od desnog ili lijevog brata posredno preko oca ako ne moe da se preuzme spajanje (inverzno prelomu) list + lijevi (ili desni) brat + razdvojni klju iz oca (m/2 - 2) + (m/2 - 1) + 1 <= m 1 eventualna propagacija do korijena Brisanje iz vora grananja klju zamijeni mesto sa svojim sljedbenikom brisanje iz lista
B-stabla
Operacije
C K K - 89 = C
87 89 91 99
A B
87 91 99
A B
a)
15 31 40 54
D E F G H D E F
15 31 42 54
G H
33 38
A B
42 45 49 52 - 33 = b)
38 40
A B
45 49 52
15 31 40 54
D E F G H - 11 = D1
31 40 54
F G H
6 11
18 25
6 15 18 25
c)
B-stabla
Operacije
A C A
73 85
I J K B - 66 =
54
C
66 69
75 78
15 31 40
D E F G H
65 85
K
d)
A B B
I1 69 73 75 78 A
15 31 40 54
D E F G H - 40 = D E F
15 31 42 45
G H
42 45 49 52 e)
45 49 52
B-stabla
Performanse
Iste kao kod umetanja Optimizacije brisanja bez fizikog uklanjanja Iskoridenje prostora bolje (oko 70%) vorovi oko korijena u baferima
B-stabla
B*-stabla
Najskuplji dio umetanja u B-stablu - prelom Ideja to vie odloiti prelom redistribucija kljueva meu bradom B*-stablo Definicija B*-stabla reda m: stablo m -arnog pretraivanja svaki vor, osim korijena, ima najvie m podstabala svaki vor, osim korijena i listova, ima najmanje (2m -1)/3 podstabala korijen ima od 2 do 2(2m -2)/3+1 podstabla svi listovi na istom nivou vor, ako nije list, sa k podstabala ima k -1 kljueva
B*-stabla
Operacije
Minimalna popunjenost oko 2/3 Pretraivanje kao i u B-stablu Umetanje kada je list pun, pokuava se prelivanje sa desnim ili lijevim bratom list (m-1)+brat(j)+umetnuti klju + razdvojni klju (m + j + 1)/ 2 + 1- vi klju je razdvojni ako ne moe prelivanje, onda prelom 2-na-3 (2m -2)/3, (2m -1)/3, (2m /3 kljueva, 2 razdvojna kljua moe propagacija do korena
B*-stabla
Operacije
Pri brisanju spajanje 3-u-2 U odnosu na B-stabla bolja popunjenost manja visina, efikasnije operacije
X
X
50
a) Y Z
c)
+10 +78
Y
39
Z
7 15 21 30 39 41
X b)
59 65 70
7 10 15 21 30 33
X
41 50 59 65 70 78
+33
Y
39
Z
d) Y
+45
Z1
30 50
Z2
7 15 21 30 33
41 50 59 65 70
7 10 15 21
33 39 41 45
59 65 70 78
B*-stabla
B+-stabla
Problem sekvencijalni pristup B+-stabla vorovi grananja: svaki klju razdvaja dva pokazivaa pi-1Ki pi ali nema fizikih adresa zapisa najvie m , a najmanje m /2 podstabala (korijen min 2 podstabla) kljuevi u voru ureeni - Ki < Kj ako je i < j Ki < Kx Ki+1 u podstablu Ti Listovi: najmanje m /2 kljueva u ureenom poretku uz klju, fizika adresa odgovarajudeg zapisa svi listovi na istoj dubini listovi uvezani u ulananu listu po poretku kljueva
B+-stabla
B+-stabla
A 57 B 16 27 41 D 6 16 E 20 27 F 30 35 41 G 45 57 H 60 65 71 I 73 80 71 80 J 84 89 C
Svaki klju iz indeksnog dela se replicira u listu (kao najvedi u lijevom podstablu)
B+-stabla
Operacije
Sekvencijalni pristup efikasan ulijevo do najmanjeg kljua, pa po ulananoj listi nalaenje sljedbenika (u istom ili susjednom listu) pristup zapisima sa kljuevima u zadatom opsegu Ostale operacije sline kao u B-stablu
Pretraivanje kada se naie na isti klju u indeksnom delu, ide se u lijevo podstablo i uspjeno i neuspjeno se zavravaju u listu fiksne, garantovane performanse
B+-stabla
Operacije
Umetanje umetanje u pun list izaziva prelom manji kljuevi i srednji klju (na poziciji m/2 ) idu u stari list vedi kljuevi idu u novi list (ulanava se) srednji klju migrira kod oca prelom u indeksnom dijelu - migracija srednjeg kljua Brisanje klju se ukloni iz lista ako je najdesniji, prethodnik ga zamjenjuje u voru grananja ako padne ispod minimuma, proba preuzimanje ako ne moe preuzimanje, onda spajanje
B+-stabla
Operacije
A C C A + 68 = H
a)
H
71 80
65 71 80
H1
60 65 71
60 65
68 71
27 57
A B B + 28 = B1 C
b)
16 27 41
F
16
F
30 41
F1
30 35 41
D E
28 30
35 41
B+-stabla
Operacije
A C C A - 71 = H
a)
H
71 80
65 80
60 65 71
60 65
A B - 20 = E G D
b)
16 27 41
E D F
16 30 41
F
20 27
30 35 41
27 30
35 41
B+-stabla
Osobine
Popunjenost vorova slina kao u B-stablu Vii stepen grananja za istu veliinu vora Fiziki isti format u indeksnom i pristunom dijelu Primjena u indeksno-sekvencijalnim datotekama
B+-stabla