Professional Documents
Culture Documents
B Stablo
B Stablo
http://cis.stvincent.edu/html/tutoria ls/swd/btree/btree.html
Uvod
ISAM (Index-Sequential Access Method, IBM sredina 60-tih godina 20. veka) Nedostaci: sekvencijalno pretraivanje indeksa Poboljanje: indeks nad indeksom Uoptavanje: drvoidna indeksna struktura
svaki nivo osim nivoa lista je redak indeks ilustracija
ISAM
Definicije
Graf
Usmereni graf je ure eni par (A, r), gde je A konani skup a r binarna relacija nad skupom A. Elemente skupa A zovemo vorovi, a elemente skupa r potezi. Ako je (ai, aj ) r poteg, kae se da je vor ai neposredni prethodnik vora aj , a da je vor aj neposredni sledbenik vora ai; tako e, vor ai je izlazni vor potega (ai, aj ), a vor aj je ulazni vor potega (ai, aj ). Ulazni red vora ai je broj potega kojima je taj vor ulazni vor, a izlazni red vora ai je broj potega kojima je taj vor izlazni vor. Putanja duine n od vora ai do vora ak u grafu je niz vorova (ai, ai+1, ... , ai+n), takvih da je ai+n = ak i (aj, aj+1) r za svako j = i, i + 1, ..., i+n-1. Putanja od vora ai do vora ak, duine vee od 1, za koju vai da je ai = ak, zove se ciklus.
Stablo
Stablo Graf je stablo ako zadovoljava sledee uslove:
ulazni red svakog vora (osim jednog) je 1; ulazni red jednog vora je 0, i taj vor se zove koren stabla; izlazni red svakog vora je 0 i konaan; graf ne sadri cikluse.
vorovi bez neposrednih sledbenika zovu se listovi stabla (izlazni red svakog lista je 0); visina stabla je maksimalna duina putanje od korena do nekog lista stabla. vorovi neposredni sledbenici istog vora zovu se braa
Stablo reda m
Stablo reda m je stablo u kome je izlazni red svakog vora manji ili jednak m (svaki vor ima najvie m sledbenika). Svaki vor sadri odre en broj kljueva; vor sa k sledbenika sadri tano k - 1 kljueva. Ako su kljuevi i podstabla ure eni kao kod stabla pretrage, stablo reda m naziva se stablom pretrage reda m. Primer: stablo pretrage reda 4 (prvi red vora prikazuje kljueve, drugi red pokazivae na vorove sledbenike). U realnoj situaciji, umesto kljua bie ceo slog, pa e u prvom redu biti niz slogova koji ukljuuje klju i pridruene podatke (ili klju i redni broj sloga, ako su slogovi smeteni u posebnoj datoteci).
U tom sluaju, stablo pretrage reda 4 (slino za m) treba da zadovolji sledee uslove u vezi sa ure enjem kljueva:
Ne govorimo o duplikatima
B-stablo
Posebno poeljna osobina stabla pretrage reda m, kada je u pitanju efikasnost njegovog pretraivanja, jeste balansiranost koja oznaava da je duina puta od korena do svakog lista jednaka. Visina stabla: logmBr, Br ukupan broj kljueva u stablu; obino 3-4 (npr. 10000000 kljueva, m=50, visina 4)
Jedna specifina struktura balansiranog stabla, poznata kao Bstablo, posluila je kao osnov za izgradnju niza struktura podataka koje se koriste u implementaciji indeksa. Struktura specijalizovana za korienje na disku vorovi blokovi fiksne veliine na disku stranice Puno kljueva na jednoj stranici, puno sledbenika, veliki red m velika efikasnost pristupa podacima na disku
B-stablo
B-stablo reda m je stablo pretrage reda m takvo da:
Svi listovi su na najniem nivou (stablo je balansirano) Svi unutranji vorovi (osim moda korena) imaju najmanje ceil(m / 2) (nepraznih) sledbenika. Koreni vor, ako nije list, ima najmanje 2 sledbenika, a ako je istovremeno i list onda nema sledbenika (i stablo se sastoji samo od tog jednog vora) Svaki list sadri najmanje ceil(m / 2) - 1 kljueva
B-stablo je osnovna drvoidna indeksna struktura Sadri podatke (kljueve tj. slogove) na svim nivoima Popunjenost stranice min 50%, u proseku oko 70% Modifikacije: B* stablo, B+ stablo, sa veom popunjenou / razdvojenim indeksom od podataka / sekvencijalnou nad podacima
(4) Ako se pocepa koreni vor, srednji klju ide u novi koreni vor; visina stabla se poveava za 1
Unoenje kljua S:
cepanje lista i unutranje stranice; novi koren, poveanje visine stabla
(2) Ako se brie klju iz unutranjeg vora, onda se umesto njega penje najmanji klju iz njegovog sledbenika; klju koji se penje brie se iz vora u kome je bio pravilo se primenjuje rekurzivno i svodi na brisanje iz lista
Izbrisati klju T (pravilo 2). Svodi se na brisanje, iz lista, neposrednog sledbenika u ure enju, W (penje se na mesto T)
Izbrisati klju R (pravilo 1.2.1). Svodi se na rotaciju, tj. prelivanje iz desnog suseda (X, penje se) preko roditeljskog kljua W (sputa se)
Izbrisati klju E (pravilo 1.2.2). vor se spaja sa levim bratom uz dodavanje kljua D iz roditeljskog vora. Unutranji vor sa kljuem G spaja se sa bratom uz sputanje kljua M. Visina drveta se smanjuje za 1.
B-stablo primer 2.
Izbrisati klju C korak 1 (pravilo 2):
B*-stablo
Cepanje pune stranice u B-stablu je skupa operacija Umesto cepanja prelivanje u susedne vorove - brau B*-stablo pretrage reda m je balansirano stablo pretrage reda m za koje vai:
Svaki vor, osim korena i listova, ima najmanje (2m1)/3 neposrednih sledbenika (podstabala), to podie popunjenost na najmanje 2/3 Koren ima najmanje 2 neposredna sledbenika vor koji nije list ima k neposrednih sledbenika i k-1 kljueva
B*-stablo - operacije
Pretraivanje kljua je isto kao kod B-stabla Unoenje (uvek u list) analogno unoenju u B-stablo, OSIM to:
Ako je list pun, pokuava se prelivanje desnim ili levim bratom:
urede se svi kljuevi iz lista, izabranog brata, razdvojni klju (iz neposrednog prethodnika) i klju koji se unosi (ukupno m-1+k+1+1 kljueva) floor((m+k+1)/2) kljueva (manjih ili veih, u zavisnosti od toga da li se preliva iz desnog ili levog brata) ostaje na starom listu, a ostali idu u desni / levi brat (sredinji se penje)
Ako prelivanje ne uspe, cepaju se 2 vora (i puni list i njegov brat) na 3 vora, tako to u prvi ide floor((2m-2)/3), u drugi floor((2m-1)/3) a u trei floor((2m)/3) kljueva, a u vor neposredni prethodnik idu dva razdvojna kljua Prethodno pravilo se propagira po potrebi sve do korena
B*-stablo - operacije
Brisanje: spajanje 3 vora u 2 (ako je potrebno) Bolja popunjenost, manja visina i efikasnije operacije u odnosu na B-stabla
B*-stablo - primer