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
© Copyright 2026 Paperzz