Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 4

B-Stabla Primjena binarnih stabala u organizaciji B-stabla prvi put su prikazali R. Bayer i E. McCreight 1972 god.

Primjenjuju se za organizaciju indeksa u datotekama. B-stablo je najbra struktura za pretragu. B-Stabla nisu isto to i binarna stabla. B-Stablo reda m B-stabla su balansirana stabla koja se primjenjuju za pohranjivanje podataka na vanjske memorije. Balansirana stabla znai da svako B-stablo sa n vorova ima visinu O(log n). Svaki vor B-Stabla moe imati vie djece, do nekoliko tisua. B-Stabla reda n imaju sljedea svojstva: 1. Svi listovi imaju istu dubinu (svi putovi od korijena do lista imaju istu duljinu) 2. Korijen stabla ima najmanje dva djeteta 3. Svaki vor osim korijena i listova ima, ima izmeu m/2 i m djece 4. Svaki unutarnji vor ima sa (r+1) djece ima r kljueva k1<.....<kr 5. Vrijednost svih kljueva u podstablu s korijenom pi nalaze se izmeu ki i ki+1 6. Svi kljuevi u p0 su manji od k1 i svi kljuevi u pr su vei od kr

Slika pokazuje stablo 3 reda Red B-stabla odreuje vor s najveim brojem pokazivaa (broj strelica koje izlaze iz vora)

Pretraivanje B-stabla Pretraivanje je slino pretraivanju binarnog stabla. Algoritam pronalaska nekog kljua k u Bstablu ima sljedee korake: Prvo pretraiti korijenski vor 1. Ako klju pretraivanja B-stabla nije u korijenskom voru pronai prvi klju k1 koji zadovoljava uvijet k<k1 2. Redom se itaju unutarnji vorovi oblika (a0 k1, a1 k2, ....,kr, ar) i usporeuje klju pretraivanja k redom s k1, k2,....,kr 3. Ako je ki<=ki+1 onda se slijedi vor kojeg pokazuje ai. Ako je k<k1, onda se slijedi vor sa adresom a0. Ako je k>kr, onda slijediti adresu ar. Kada se stigne do lista u njemu se nalazi zadani klju pretraivanja k U B-stablu se uvijek nastoji pronai par (k,a) gdje je k vrijednost kljua pretraivanja, a a je adresa pripadnog sloga u osnovnoj datoteci. Zato se slijedi put od korijena B-stabla do lista koji uva klju pretraivanja k. List uva parove (k,a) gdje je k vrijednost kljua (vrijednost atributa po kojem je datoteka indeksirana), a je pointer-adresa odgovarajueg sloga u osnovnoj datoteci.Jednom slogu osnovne datoteke se pridruuje jedan par (k,a) u listovima B-stabla. Parovi (k,a) unutar lista su sortirani u rastuem redosljedu od k.

Slika pokazuje parove unutar lista sortirane u rastuem redosljedu od k

Umetanje u B-stablo Umetanje novog kljua u B-stablo reda m temelji se na pronalaenju odgovarajueg mjesta kljuu u B-stablu. Ako vrjednost kljua nije nije pohranjena u B-stablu, onda je mjestu kljuu u voru na najnioj razini stabla. Promatra se uvijek vor roditelj i razlikuju se dva sluaja: 1. U voru ima jo mjesta za umetanje kljua i vrijednost kljua se moe pridruiti voru. Operacija umetanja je dovrena. 2. vor je popunjen sa maksimalnim brojem kljueva (maksimalni broj kljueva je za jedan manji od reda B-stabla i jednak je (m-1), a m je red B-stabla. Novi klju se dodaje tom voru i dobiva se vor s m kljueva.

Slijedi podijela vorova po sredini to pokazuje sljedea slika

Nastaju dva nova vora koji imaju minimalan broj kljueva m/2

Brisanje u B-Stablu Ako u B-Stablu treba obrisati neki klju, onda se ta operacija ograniava samo na kljueve u vorovima na najnioj razini B-Stabla. Razlikuju se sljedee mogunosti: 1. Klju koji se izbacuje iz stabla smjeten je na najnioj razini B-Stabla i vor ima vie od minimalnog broja djece m/2. Tada se klju moe obrisati bez dodatnih radnji. 2. Nakon brisanja kljua u nekom voru, vor bi imao manje od minimalnog broja djece (manje ili jednako m/2-1)

Izjednaavanje sa susjedom lijevo pomou vora roditelj

You might also like