Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pertemuan 16
B-Tree
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :
Outline Materi
pengertian dan kegunaan B-Tree Contoh B-Tree Operasi - operasi B-Tree implementasi program B-Tree
B-Tree
Data sangat banyak biasa disimpan di disk eksternal. Waktu akses disk lebih panjang. Perlu tree dengan height terbatas, dan node yang berisi beberapa data/key. Sekali akses node, membaca beberapa key sekaligus. Balanced Multiway Tree:
1. tidak ada subtree kosong di atas leaf 2. seluruh leaf berada dalam satu level (rata) 3. tiap node mempunyai beberapa anak, kecuali leaf
4
B-Tree:
Kriteria B-Tree dengan orde m: 1. Tiap node mempunyai subtree/child maksimal m, dengan notasi n, Ao, (K1, A1), (K2, A2), , (Kn, An)
K1 K2 Kn
N<m
Ai : child I Ki < Key di node Ai < Ki+1 Kriteria ini berlaku untuk semua node di sembarang level
A0
A1
A2
An
B-Tree:
2. Tiap node mempunyai child minimal m/2, kecuali ROOT minimal 2 3. Tiap node berisi key maksimal m-1 4. Tiap node berisi key minimal m/2, kecuali ROOT boleh kurang dari m/2 atau 0(empty) 5. B-Tree dengan level tertinggi l, jumlah node dalam tree maksimal ml-1
20
Root sebagai leaf
20 10 15 25 27
10 15 20 25
Jumlah key maksimal dalam satu node m-1
20
40
78
90
10 15
25 27
79 80 81
95 99
B-Tree: Insert
Tree tumbuh ke atas Algoritma Insert (newkey) 1. Search leaf p yang sesuai untuk newkey 2. Cek jumlah node di p
a) If p not full (n< m-1), newkey langsung masuk, selesai b) If (n=m-1), SPLIT p menjadi 2, yaitu
Node p: m/2-1, Ao, (K1,A1), , (K m/2-1, A m/2-1) Node q: m-m/2, Am/2, (Km/2+1,Am/2+1), , (K m, A m)
(lihat notasi di slide 3)
Dan key Km/2 masuk ke node parent p dan q. Cek apakah n<m-1 pada node parent (ulang langkah 2). SPLITing dapat menjalar ke node-node ancestor.
8
a a b
Insert (k)
split
a b
Insert (b)
g k
f g k f g h k m
9
Insert (d)
Insert (f)
a b f
a b d a b f g
Insert (g)
FULL ! n=m-1
a b d
+j
g h k m
f j
a b d
g h
k m
f j
g h i k m r s
10
a b d e
g h i
k m r s
f j r k m c f j r g h i k l m n s t u x
11
s x
a b
d e
g h i
k l m n
s t u x
+p
c f a b d e g h i
j
m r k l n p s t u x
12
If p merupakan ROOT,
b) If p bukan root
If n(p)>m/2: langsung delete If n(p)=m/2: cek jumlah key di node sibling terdekat kiri atau kanan (node q)
If jumlah key q diatas minimum n(q)>m/2: rotasi key (yang melibatkan 3 node: q, parent dan p) Hasil rotasi, jumlah key di q menjadi n(q)-1, jumlah key di p setelah dilete menjadi m/2 If jumlah key q minimum n(q)=m/2: p dan q gabung (melibatkan satu key di parent) Hasil gabung setelah delete, jumlah node n(p)=m-1 Cek jumlah key di node parent (ulang langkah b). Rotasi atau penggabungan dapat menjalar ke node-node ancestor pada path menuju Root.
14
-h, -r j
Digantikan key dari leaf
c f
n>m/2
m r
g h i g i k l n p
m s
s t u x t u x
a b
d e
15
-p
m t
c f
a b d e g i k l
m s
n p n s t u x u x
16
Jumlah key = m/2, tetapi jumlah key di sibling terdekat juga minimum (m/2): gabung
-d c f a b a b c e d e g i j f j m t k l m t n s u x
f j m t
a b c e g i k l n s u x
17