download

Matakuliah
Tahun
Versi
: T0026/Struktur Data
: 2005
: 1/1
Pertemuan 16
B-Tree
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mahasiswa dapat merumuskan program
modular untuk mengimplementasikan ADT
B-tree
2
Outline Materi
•
•
•
•
pengertian dan kegunaan B-Tree
Contoh B-Tree
Operasi - operasi B-Tree
implementasi program B-Tree
3
B-Tree
Balanced Multiway Search 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:
Balanced Multiway Search 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
A0
A1
A2
An
Kriteria ini berlaku untuk
semua node di
sembarang level
5
B-Tree:
Balanced Multiway Search 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
6
B-tree: Contoh orde m=5
Ascending order
20
10 15 20 25
Jumlah key maksimal
dalam satu node m-1
Root sebagai leaf
20
10 15
Jumlah key minimal
dalam satu node m/2
25 27
20
10 15
25 27
40
78
90
57 63
Jumlah child
maksimal m
79 80 81
95 99
7
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
Contoh Insert order 5 (1)
Insert (a)
a
Insert (k)
f
split
a b
Insert (b)
a b
Insert (d)
Insert (f)
g k
f
a b f
a b d
Insert (g)
a b f g
Insert (h)
Insert (m)
g k
f
FULL ! n=m-1
a b d
g h k m
9
Contoh Insert order 5 (2)
f
a b d
g h k m
f j
+j
a b d
g h
+e, +s, +i, +r
k m
f j
a b d e
g h i
k m r s
10
Contoh Insert order 5 (3)
f j
a b d e
g h i
+x
k m r s
f j r
a b d e
g h i
+c, +l, +n, +t, +u
a b
k m
s x
c f j r
d e
g h i
k l m n
s t u x
11
Contoh Insert order 5 (4)
c f j r
a b
d e
g h i
+p
k l m n
j
c f
a b
s t u x
d e
m r
g h i
k l
n p
s t u x
12
B-Tree: Delete (1)
Algoritma:
1. Search key x yang akan di-delete
If x berada pada node bukan leaf, maka x akan diganti
oleh salah satu key pada leaf descendant, key
terkecil atau terbesar (ikut aturan binary tree),
menjadi problem delete key di leaf
2.
Cek target leaf p
a)
If p merupakan ROOT,


If n>1, langsung delete x
If n=1, tree menjadi empty
13
B-Tree: Delete (2)
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
Contoh Delete (1)
-h, -r
j
Digantikan key dari leaf
c f
m r
m s
n p
s t u x
n>m/2
a b
d e
g h i
g i
k l
t u x
15
Contoh Delete (2)

Jumlah key = m/2 : rotasi
j
-p
m t
c f
a b
d e
m s
g i
k l
n p
t u x
n s
u x
16
Contoh Delete (3)

Jumlah key = m/2, tetapi jumlah key di sibling
terdekat juga minimum (m/2): gabung
-d
j
f j m t
c f
a b
d e
g i
k l
m t
n s
u x
n s
u x
a b c e
f j m t
a b c e
g i
k l
17