p9 2,3 tree dan a,b tree

Download Report

Transcript p9 2,3 tree dan a,b tree

2,3 tree dan a,b tree
Disadur dari Materi Kuliah: Annisa, Dept. Ilmu Komputer FMIPA IPB
Balanced Tree = AVL Tree?
AVL Tree menjamin tree selalu berada dalam
keadaan (minimal) complete binary tree atau almost
balanced tujuan utama perfect binary tree
 Good performance in searches, insertion, deletion
 AVL-tree tetap saja masih punya
perbedaan level.
 Rearranged method to keep balanced tree  high
cost

maintaining perfect balanced tree without
rearranged like AVL-tree.
 mengizinkan jumlah key yang dapat
ditampung oleh sebuah node bervariasi.

2, 3 Tree main idea
Each node in 2,3 tree is permitted to
contain either one or two search key and
to have either two or three descendants
 Semua leaves adalah subtree kosong dan
berada tepat satu level dibawahnya.

2,3 tree
2,3 Tree Rule of placement

Degree 2 (node berderajat 2)
◦ key subtree kiri < keyroot <keysubtree
kanan
B
◦A<B<C
A

C
Degree 3 (node berderajat 3)
◦ key subtree kiri < key root1 < key subtree tengah <
key root2 < key subtree kanan
◦ A<B<C<D<E
B
D
A
C
E
2,3 tree example
H
J
D
A
E
F
I
K
N
L
O
P
2,3 Tree Insertion
• Insert pada node dengan 1 elemen, langsung
masuk
• Insert pada node dengan 2 elemen, urutkan
search key, dan key yang di tengah naik
menjadi parent.
A
A B
B
A B C
A
C
Example
Masukkan ke dalam sebuah 2,3 tree
masukan berikut:
 10, 20, 4, 8, 15, 30, 1, 2, 9, 6

10, 20, 4, 8, 15, 30, 1, 2, 9, 6
10
10
10 20
4
20
10
10 20
10
4 8
15 20
4 8
15
12
4
20
8 15
30
20
1
8 15
10
10
4
4
30
12 8 9
10
4 8
20
15
30
30
1 2
6
20
9
15
30
Masukkan 16
 Masukkan 31
 Masukkan 7

10
4
1
Example
2
8
6 7
20
9
15 16
30 31
2,3 tree deletion
◦ Jika pada leaf dengan 2 elemen langsung
hapus
◦ Jika pada leaf dengan 1 elemen lihat sibling
 Jika sibling ada dua elemen:
X1
X2X3
X3
D
X2
X1
 Jika sibling berderajat hanya 1 elemen:
X1
X2
X2 X1
D
Delete 7, 16
 Delete 6
 Delete 20

10
4
1
2
8
20
6
9
15
30 31
10
4
10
4
1
2
30
8
9
Example
15
1
31
2
20
8
9
15
30 31

Delete 30
4 10
1
Example
2
8
9
15 31
B-trees dan (A,b)-trees
Generalization of 2, 3 tree
 Menjamin tree menjadi pendek
 Menjamin tree berada dalam keadaan
perfect balanced tree

2,3 tree is an a,b tree
Setiap leaf berada pada level yang sama
Root memiliki paling sedikit 1 key dan
paling banyak m-1 key (memiliki 2
sampai m subtree)
 M adalah branching factor dari a,b tree
(m=3 untuk 2,3 tree)
 Semua node kecuali root mempunyai
paling banyak m-1 search key (m anak),
atau sedikitnya m/2-1 search key (m/2
anak.


Rule of a,b tree
• Jumlah key pada masing-masing node adalah satu
lebih kecil daripada jumlah anak yang tidak kosong.
Jika jumlah anak minimum m/2 , maka jumlah
key untuk setiap node adalah key ≥ m/2 - 1 dan
minimum sebanyak key = m/2 - 1.
Jika m =5, maka jumlah anak minimum adalah
5/2, maka jumlah key minimum adalah sama
dengan 5/2 - 1.
• Root mempunyai paling banyak m children, tapi
diperbolehkan sedikitnya mempunyai 2 children
atau 0 children jika tree terdiri dari dari root saja.
Terminologi
Key
Masukan pada node-node, baik root maupun
children dan leaf.
Branching factor
Faktor percabangan node
Tree Kurus
Jika banyaknya cabang dari suatu node m/2
Tree Gemuk
Jika banyaknya cabang dari suatu node m
Definisi

a,b tree merupakan generalisasi dari tree, terutama 2,3 tree
B
A
D
C
E
2,3 tree adalah juga a,b tree dengan ordo atau m=3
• Semua leaf berada pada level yang sama
• Semua node internal kecuali root mempunyai paling banyak m anak, atau
sedikitnya m/2 anak.
Misal : Jika m = 3, maka jumlah anak paling banyak adalah 3, dan paling
sedikit adalah 3/2
◦ Jumlah key pada masing-masing node adalah satu lebih kecil
daripada jumlah anak yang tidak kosong.
Jika jumlah anak minimum m/2 , maka jumlah key untuk
setiap node adalah key ≥ m/2 - 1 dan minimum sebanyak key =
m/2 - 1.
Jika m =5, maka jumlah anak minimum adalah 5/2, maka
jumlah key minimum adalah sama dengan 5/2 - 1.
◦ Root mempunyai paling banyak m children, tapi diperbolehkan
sedikitnya mempunyai 2 children atau 0 children jika tree terdiri
dari dari root saja.
Contoh (A,b)-tree dengan Order 5
Yang key-nya adalah 26 huruf dalam
abjad
L
D G
C
H I
A B
C
S W
J K
E F
M N
P Q
R
T U V
X Y
Z
Proses pada A,b Tree

Inserting atau penyisipan
1.
Key baru tersebut ditambahkan pada “leaf node”
yang sesuai.
Jika node sebelumnya tidak penuh , maka proses
penyisipan dapat diselesaikan.
Jika setelah ditambahkan nodenya menjadi penuh
(key ≥ m), maka node tersebut pecah menjadi dua
node pada level yang sama , kemudian median key
disisipkan pada parent node.
Jika parent menjadi penuh juga, ulangi langkah
diatas untuk parent.
2.
3.
4.
Misalkan untuk a,b tree m=3
Insert 40
10
4 8
10 30
4 8
20 30
Insert 21
20
40
21
Insert 22
10 30
10
4 8
20 21
30
40
4
8
20
22
40
#Contoh inserting pada B- Tree ordo 5#
1. INSERT A, G, F, B
2. INSERT K
F
AG F B
AB
3. INSERT D, H, M
4. INSERT J
FJ
F
ABD
G K
GHKM
ABD
GH
KM
5. INSERT E, S, I, R
6. INSERT X
FJ
FJR
ABDE
KMRS
GHI
KM
ABCD
DD
SX
GHI
KM
7. INSERT C, L, N, T, U
CFJR
AB
DE
GHI
KLMN
STUX
8. INSERT P
J
CF
AB
DE
MR
GHI
KL
NP
STUX
Deletion atau penghapusan
Langkah-langkahnya,sbb:
1.
Jika entri yang akan dihapus tidak berada pada sebuah
leaf, maka cari successor atau predecessornya untuk
menggantikan tempat (seperti dalam BST).
2.
Jika berisi key sebanyak ≥ m/2 - 1, maka satu di
antaranya dapat dihapus secara langsung.
3.
Jika berisi kurang dari jumlah minimum entri (jumlah key
< m/2 - 1) maka pinjam dari sibling kiri atau sibling
kanan, yang mempunyai
key > m/2 - 1.
4.
Jika kedua sibling hanya memiliki jumlah key minimum,
maka ambil sebuah key dari parent, kemudian gabungkan
dengan salah satu sibling menjadi node baru.
5.
Jika parent jadi kekurangan key, ulangi langkah diatas.

100
30
1
50
200
31
51 52
101
300
201
301 302
delete 51
100
30
1
31
50
200
52
101
201
300
301 302
delete 201
100
30
1
50
31
200
52
101
301
300
302
delete 31
100
30
1
200
50 52
101
300
301
302
#Contoh penghapusan B-tree
order 5#
1. HAPUS H, R
J
CF
AB
DE
MR
GHI
GI
KL
NP
STUX
TUX
2. HAPUS P
J
CF
AB
DE
MS
GI
KL
NP
TUX
3. HAPUS D
J
CF
AB
DE
MT
GI
KL
NS
SP
UX
J
F
AB CE
MT
GI
KL
NS
UX
Rumus-rumus pada a,b tree
Jika T adalah sebuah B-tree dengan order m (dimana setiap node
internalnya penuh dan mempunyai m anak) berisi n key dan p node,
maka
p = n/(m-1) ………………(1)
dengan m-1 adalah isi dari setiap node yang ada di T.
Pada umumnya ada satu node (root) pada level 0 dan m node pada
level 1, m2 node pada level 2, …, mk node pada level k, sehingga
total jumlah node (p) pada tree merupaka penjumlahan dari deret
geometri
p = 1+ m+m2+…+mk
atau
p = (mk+1 – 1)/(m-1) ……..(2)
Hasil gabungan antara persamaan (1) dan (2) adalah sebagai
berikut:
k = mlog (n+1) – 1
di mana
k = tinggi tree (nomor level dari leaf terbawah)
m = banyaknya cabang node (branching factor)
n = banyaknya node
#Contoh Kasus#
Diketahui :
m1 = 100
n1 = 1000000
m2 = 10 n2 = 1000000
Ditanya : tinggin tree dan bandingkan keduanya
Jawab:
k = mlog (n+1)-1
k1 = 100log (1000000+1)-1
= 3-1
=2
k2 = 10log (1000000+1) -1
= 6-1 = 5
Kesimpulan:
Sebuah B-tree dengan order 100 dapat menyimpan 1000000
record pada 3 level (0,1,dan 2). Hal ini hanya perlu
mengakses 3 node untuk menemukan key yang dicari.
Sedangkan pada B-tree dengan order 10 dapat menyimpan
1000000 record pada 6 level dengan mengakses sebanyak 6
node yang berbeda untuk menemukan sebuah key.