You are on page 1of 21

B-STABLA

Vukovi Dijana Elektrotehniki fakultet, Banja Luka 2009

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)

m/2i-1 = (m/2h - 1)/(m/2 - 1)


i=1

n 1 + 2(m/2h - 1) n + 1 2m/2h h logm/2(n+1)/2


B-stabla

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

Maksimalna vjerovatnoda preloma broj preloma/min broj kljueva


(n 2) / (1 + (n - 1)(m/2 - 1))
1 / (m/2 - 1)

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

vorovi grananja indeksni deo, listovi pristupni deo

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

You might also like