rangkuman DS semester 2
Final Review
NIM : 2301862802
Nama : Jefry
Kelas : CB01
Lecturer : Ferdinand Ariandy Luwinda (D4522) dan Henry Chong (D4460)
Pengertian AVL Tree dalam Struktur Data
AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.
Gambar AVL Tree
Penambahan node di AVL Tree
Untuk menjaga tree tetap imbang, setelah penyisipan sebuah node,
dilakukan pemeriksaan dari node baru → root. Node pertama yang memiliki
|balance factor| > 1 diseimbangkan. Proses penyeimbangan dilakukan dengan: Single rotation dan Double rotation
Single Rotation
Single
rotation dilakukan bila kondisi AVL tree waktu akan ditambahkan node
baru dan posisi node baru seperti pada gambar 2. T1, T2, dan T3 adalah
subtree yang urutannya harus seperti demikian serta height- nya harus
sama (≥ 0). Hal ini juga berlaku untuk AVL tree yang merupakan citra
cermin (mirror image) gambar 2.
Gambar 2
Double Rotation
Double
rotation dilakukan bila kondisi AVL tree waktu akan ditambahkan node
baru dan posisi node baru seperti pada gambar 3. T1, T2, T3, dan T4
adalah subtree yang urutannya harus seperti demikian. Tinggi subtree T1
harus sama dengan T4 (≥ 0), tinggi subtree T2 harus sama dengan T3 (≥
0). Node yang ditambahkan akan menjadi child dari subtree T2 atau T3.
Hal ini juga berlaku untuk AVL tree yang merupakan citra cermin (mirror
image) gambar 3.
Gambar 3
Menghapus node di AVL Tree
Proses
menghapus sebuah node di AVL tree hampir sama dengan BST. Penghapusan
sebuah node dapat menyebabkan tree tidak imbang Setelah menghapus sebuah
node, lakukan pengecekan dari node yang dihapus → root. Gunakan single
atau double rotation untuk menyeimbangkan node yang tidak imbang.
Pencarian node yang imbalance diteruskan sampai root.
B-Trees
(Balanced Tree Data)
B-tree
adalah suatu metode untuk menyimpan dan menemukan suatu file (disebut juga
records atau keys) dalam suatu database. Algoritma b-tree meminimalkan jumlah
dari media yang harus dilalui untuk mencapai suatu record database yang
diinginkan sehingga akan mempercepat proses.
Gambar 3. Struktur dari sebuah tree
B-tree lebih dianjurkan ketika pengaksesan
ke nodes adalah menggunakan media harddisk bukan RAM (Random Access Memory).
Dibutuhkan waktu seribu kali lebih lambat untuk mengakses elemen data dari
harddisk dibanding RAM, karena struktur harddisk yang memiliki bagian-bagian
mekanik yang bergerak. Metode b-tree sangat menghemat waktu dimana setiap nodes
bisa mempunyai beberapa cabang (disebut dengan children) jika dibanding dengan
binary-tree yang hanya mempunyai dua children. Ketika terdapat beberapa
children dalam suatu nodes, maka suatu record dapat ditemukan dengan hanya
melewati beberapa nodes saja dibandingkan dengan node yang hanya mempunyai dua
children.
Gambar 4. Struktur dari sebuah b-tree
Dalam sebuah tree (pohon),
record disimpan dalam suatu lokasi yang disebut leaves (cabang). Suatu record
dalam b-tree selalu berada pada titik akhir. Jumlah maksimal dari children
setiap node disebut order. Jumlah dari disk access yang dibutuhkan disebut
depth. Pada gambar diatas (kanan) menunjukkan sebuah b-tree dengan 3 buah order
untuk menuju suatu record yang ada dalam 8 leaves. Pada gambar kiri adalah
binary-tree dengan depth 4 dan b-tree dengan depth 3. Jelas terlihat bahwa
metode b-tree memungkinkan pengaksesan record lebih cepat dengan asumsi semua
sistem parameter adalah sama.
Red Black Tree
I.Syarat Red Black Tree
Red Black Tree dapat disebut sebagai BST (Binary Search Tree) kalau memenuhi syarat berikut :
1. Setiap node mempunyai warna antara hitam atau merah.
2. Root nya selalu berwarna hitam (default).
3. Semua external node berwarna hitam.
4. Kalau sebuah node (parent) merah, maka node (children) nya berganti menjadi hitam.
Jadi dapat disimpulkan bahwa :
1. Tidak ada node (children) berwarna merah yang mempunyai node (parent) berwarna merah.
II.Push
Cara push RBT sama dengan BST, tetapi yang membedakan adalah bahwa node baru (root) adalah merah.
Lalu, disini diadakan pengecekan dimana kondisi nya adalah :
1. Kalau parent nya hitam, maka tidak ada kesalahan.
2. Kalau parent nya merah, maka terjadi kesalahan, karena balik ke
kesimpulan pertama bahwa tidak ada node (children) berwarna merah yang
mempunyai node (parent) berwarna merah.
Cara membenarkan jika terjadi kesalahan :
1. Pertama kita anggap node baru adalah q, lalu parent nya adalah p dan sibling dari parent adalah s.Kalau parent tidak mempunyai sibling maka s berwarna hitam.
2. Kalau s merah, maka ganti p dan s menjadi hitam dan orang tua dari p menjadi merah.
3. Kalau s adalah hitam, maka lakukan rotasi (single atau double), ganti
titik pivot terakhir menjadi hitam, dan child nya menjadi merah.
Berikut adalah kasus - kasus dalam push RBT :
1.

Disini dapat dilihat bahwa node baru nya adalah X dan parent dari X berwarna hitam, jadi tidak ada kesalahan.
2.
Disini kita dapat lihat bahwa node yang baru di masukan adalah X (gambar
kiri) atau Z (gambar kanan), terus parent nya berwarna merah, maka
disinilah kesalahan itu terjadi.Nah cara membetulkan nya adalah dengan
mengubah uncle dan parent dari X (gambar kiri) atau Z (gambar kanan) ke
hitam, lalu ganti grandparent nya ke warna merah.
3.
Pada gambar ini kita dapat melihat node baru yang akan dimasukkan adalah X (Z pada gambar kanan).
Lalu kita cek bahwa parent nya adalah merah, jadi terjadi kesalahan.Lalu
disini kita melihat bahwa parent dan grandparent dari X serta Z berada
dalam 1 jalur (left-left atau right-right), maka untuk membetulkan nya
adalah dengan melakukan single rotate.
Cara untuk melakukan single rotate adalah dengan melihat alur nya, jika
alur nya left-left maka kita akan melakukan rotate ke arah kanan dan
sebalik nya, dimana titik pivot nya berada di grandparent dan ubah warna
parent menjadi hitam dan anak - anak nya menjadi merah.
4.
Pada kasus ini, kita dapat melihat bahwa node yang baru dimasukan adalah
Y.Lalu parent nya berwarna merah, maka disini terjadi lah
kesalahan.Kemudian disini terlihat bahwa jalan dari Y ke parent berbeda
dengan jalan dari Y ke grand parent, oleh karena itu kita akan melakukan
double rotate untuk membenarkan nya.
Cara untuk melakukan double rotate adalah dengan mengambil pivot pertama
pada X lalu pindahkan Y sehingga menjadi child dari Z dan X menjadi
child dari Y, lalu lakukan single rotate (left-left atau right-right).
Setelah selesai, maka ganti posisi pivot yang terakhir menjadi hitam dan anak - anak nya menjadi merah.
III.Delete
Setelah belajar cara untuk push, maka kita akan belajar cara untuk menghapus nya, cara nya hampir mirip dengan di BST.
Misal nya seperti ini :
1. Misalkan node yang mau di hapus adalah M lalu anak nya adalah C.
2. Kalau M adalah merah, lalu maka tinggal mengganti M dengan C yang berarti warna C seharus nya adalah hitam.
3. Kalau M adalah hitam dan C adalah merah, ganti M dengan C dan ubah warna C menjadi hitam.
Lalu bagaimana kalau M dan C adalah hitam ?
Maka, langkah yang akan kita lakukan adalah :
1. Ganti M dengan C, lalu kita ganti nama C menjadi N (ini disebut
double black), dan parent nya menjadi P, sibling nya menjadi S, lalu SL
adalah anak kiri dan SR adalah anak kanan.
2. Kalau S berwarna merah tukar warna N dan P, lalu putar di P
3. Kalau S, SL dan SR berwarna hitam maka ganti warna S ke merah
4. Kalau S adalah hitam dan SL atau SR adalah merah, maka lakukan single atau double rotate.
Berikut adalah kasus - kasus dalam delete RBT :
1.
Dalam kasus ini dapat kita lihat bahwa a adalah double black node,
sibling nya berwarna merah jadi kita putar di X dan ganti warna X dan Y.
2.
Dalam kasus ini a adalah double black node, sibling nya adalah black dan
anak dari sibling tersebut adalah node berwarna hitam, jadi ganti warna
sibling menjadi merah.
3.
Dalam kasus ini a adalah double black node, sibling nya berwarna hitam
dan anak dari sibling tersebut berwarna merah, jadi lakukan single atau
double rotation.
Head dan Tries
Heap
Heap adalah suatu Binary Tree lengkap yang menggunakan persyaratan Heap. Di dalam heap terdapat dua tipe heap yaitu Min Heap dan Max Heap. Min Heap adalah sebuah Binary Tree dimana root dari tree tersebut adalah angka terkecil atau memiliki nilai terkecil dibandingkan seluruh node didalam tree tersebut sedangkan Max Heap adalah sebaliknya yaitu Binary Tree dimana root dari tree tersebut adalah angka terbesar dari tree tersebut.
Berikut adalah contoh dari Min Heap dan Max Heap:
Min Heap
Aturan dalam membuat Min Heap:
1. Value dari suatu parent harus lebih kecil dari value anaknya
2. Root dari tree adalah value terkecil yang ada didalam tree
3. Value terbesar terdapat di salah satu node leaf
Max Heap
Aturan dalam membuat Max Heap:
1. Value dari suatu parent harus lebih besar dari value anaknya
2. Root dari tree adalah value terbesar yang ada didalam tree
3. Value terkecil terdapat di salah satu node leaf

Min-Max Heap
Min-Max Heap adalah gabungan dari Min Heap dan Max Heap. Karena Min-Max Heap adalah gabungan dari Min dan Max Heap maka aturan dari kedua heap tersebut disatukan menjadi seperti berikut:
1. Root menggunakan aturan Min Heap.
2. Setiap node yang memiliki height ganjil mengikuti aturan Min Heap.
3. Setiap node yang memiliki height genap mengkuti atuan Max Heap.

Tries
Tries adalah Binary Tree dimana isi dari tersebut adalah kumpulan dari kata-kata. Tree ini dibuat untuk mempermudah pencarian suatu kata-kata (biasanya digunakan pada saat pembuatan fitur search pada kamus).
Heap adalah suatu Binary Tree lengkap yang menggunakan persyaratan Heap. Di dalam heap terdapat dua tipe heap yaitu Min Heap dan Max Heap. Min Heap adalah sebuah Binary Tree dimana root dari tree tersebut adalah angka terkecil atau memiliki nilai terkecil dibandingkan seluruh node didalam tree tersebut sedangkan Max Heap adalah sebaliknya yaitu Binary Tree dimana root dari tree tersebut adalah angka terbesar dari tree tersebut.
Berikut adalah contoh dari Min Heap dan Max Heap:
Min Heap
Aturan dalam membuat Min Heap:
1. Value dari suatu parent harus lebih kecil dari value anaknya
2. Root dari tree adalah value terkecil yang ada didalam tree
3. Value terbesar terdapat di salah satu node leaf
Max Heap
Aturan dalam membuat Max Heap:
1. Value dari suatu parent harus lebih besar dari value anaknya
2. Root dari tree adalah value terbesar yang ada didalam tree
3. Value terkecil terdapat di salah satu node leaf
Min-Max Heap
Min-Max Heap adalah gabungan dari Min Heap dan Max Heap. Karena Min-Max Heap adalah gabungan dari Min dan Max Heap maka aturan dari kedua heap tersebut disatukan menjadi seperti berikut:
1. Root menggunakan aturan Min Heap.
2. Setiap node yang memiliki height ganjil mengikuti aturan Min Heap.
3. Setiap node yang memiliki height genap mengkuti atuan Max Heap.
Tries
Tries adalah Binary Tree dimana isi dari tersebut adalah kumpulan dari kata-kata. Tree ini dibuat untuk mempermudah pencarian suatu kata-kata (biasanya digunakan pada saat pembuatan fitur search pada kamus).




























Comments
Post a Comment