Matakuliah : T0026/Struktur Data Tahun : 2005 Versi : 1/1 Pertemuan 16 B-Tree
Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mahasiswa dapat merumuskan program modular untuk mengimplementasikan ADT B-tree
pengertian dan kegunaan B-Tree Contoh B-Tree Operasi - operasi B-Tree Outline Materi pengertian dan kegunaan B-Tree Contoh B-Tree Operasi - operasi B-Tree implementasi program B-Tree
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: tidak ada subtree kosong di atas leaf seluruh leaf berada dalam satu level (rata) tiap node mempunyai beberapa anak, kecuali leaf
B-Tree: Balanced Multiway Search Tree Kriteria B-Tree dengan orde m: Tiap node mempunyai subtree/child maksimal m, dengan notasi n, Ao, (K1, A1), (K2, A2), … , (Kn, An) A1 A0 A2 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
B-Tree: Balanced Multiway Search Tree Tiap node mempunyai child minimal m/2, kecuali ROOT minimal 2 Tiap node berisi key maksimal m-1 Tiap node berisi key minimal m/2, kecuali ROOT boleh kurang dari m/2 atau 0(empty) B-Tree dengan level tertinggi l, jumlah node dalam tree maksimal ml-1
20 10 15 20 25 B-tree: Contoh orde m=5 Root sebagai leaf Ascending order 20 10 15 20 25 Root sebagai leaf Jumlah key maksimal dalam satu node m-1 10 15 25 27 Jumlah key minimal dalam satu node m/2 20 10 15 25 27 57 63 79 80 81 95 99 20 40 78 90 Jumlah child maksimal m
B-Tree: Insert Tree tumbuh ke atas Algoritma Insert (newkey) Search leaf p yang sesuai untuk newkey Cek jumlah node di p If p not full (n< m-1), newkey langsung masuk, selesai 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.
Contoh Insert order 5 (1) Insert (k) a b g k f split a a b Insert (d) Insert (a) a Insert (b) a b Insert (d) a b d g k f Insert (f) a b f Insert (g) a b f g Insert (h) Insert (m) a b d g h k m f FULL ! n=m-1
Contoh Insert order 5 (2) a b d g h k m f a b d g h f j k m +j +e, +s, +i, +r a b d e g h i f j k m r s
Contoh Insert order 5 (3) a b d e g h i f j k m r s +x a b d e g h i f j r k m s x +c, +l, +n, +t, +u d e g h i c f j r k l m n s t u x a b
Contoh Insert order 5 (4) d e g h i c f j r k l m n s t u x a b +p d e n p m r j
Search key x yang akan di-delete B-Tree: Delete (1) Algoritma: 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 Cek target leaf p If p merupakan ROOT, If n>1, langsung delete x If n=1, tree menjadi empty
If p bukan root If n(p)>m/2: langsung delete B-Tree: Delete (2) 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.
Contoh Delete (1) -h, -r d e g h i c f k l s t u x a b n p m r j m s g i t u x n>m/2 Digantikan key dari leaf
Contoh Delete (2) Jumlah key = m/2 : rotasi d e g i c f k l t u x a b n p m s j -p n s m t u x
Contoh Delete (3) Jumlah key = m/2, tetapi jumlah key di sibling terdekat juga minimum (m/2): gabung d e g i c f k l u x a b n s m t j -d a b c e f j m t a b c e g i k l u x n s f j m t