Rangkuman Pertemuan 8 – Struktur Data
Nama: Wilson Nursalim
NIM: 1901516495
Rangkuman Pertemuan 8
www.binus.ac.id
www.skyconnectiva.com
Heap
Heap adalah complete binary tree yang memenuhi syarat heap.
Min Heap
- Setiap node memiliki nilai yang lebih kecil dari nilai anaknya.
- Elemen paling kecil terletak pada Root
- Elemen paling besar terletak pada salah satu leaf
- Heaps biasanya diimplementasi dengan menggunakan array
- Setiap elemen disimpan secara berurutan mulai dari index 1 (urutannya dari atas ke bawah dan dari kiri ke kanan)
- Root disimpan pada index 1
Hubungan antar Node (anggap index node adalah x) :
- Parent(x) = x / 2
- Left-child(x) = 2 * x
- Right-child(x) = 2 * x + 1
Operasi-operasi pada Min Heap :
- find-min : untuk mencari elemen paling kecil pada heap.
- insert : untuk memasukkan elemen baru ke dalam heap.
- delete-min : untuk menghapus elemen paling kecil dari heap.
Insertion pada Min Heap :
- Masukkan elemen baru pada ujung akhir heap (setelah index dari elemen terakhir yang dimasukkan)
- Bandingkan nilai elemen yang dimasukkan dengan parent. Bila nilai node yang baru saja dimasukkan lebih kecil dari parent, Tukar node dengan parent. Lanjutkan proses ini ke atas sampai nilai parent lebih kecil dari nilai node atau node sudah mencapai root.
Klik gambar untuk memperbesar
Deletion pada Min Heap :
- Gantilah root dengan elemen terakhir pada heap.
- Kurangi jumlah elemen pada heap
- Bandingkan nilai root dengan nilai left child dan right child. Bila ada nilai anaknya yang lebih kecil dari nilai root, Tukar root dengan anaknya (anak yang nilainya paling kecil). Lanjutkan proses ini ke bawah sampai nilai node lebih kecil dari nilai kedua anaknya atau node sudah mencapai leaf (tidak punya anak lagi).
Klik gambar untuk memperbesar
Max Heap
- Setiap node memiliki nilai yang lebih besar dari nilai anaknya.
- Elemen paling besar terletak pada Root
- Elemen paling kecil terletak pada salah satu leaf
NOTE = Max Heap memiliki sifat yang mirip dengan Min Heap, tetapi digunakan untuk mencari elemen terbesar.
Min-Max Heap
- Kondisi heap berganti antara minimum dan maximum antar level
- Setiap elemen pada level genap lebih kecil dari anak-anaknya (min-level).
- Setiap elemen pada level ganjil lebih besar dari anak-anaknya (max-level).
- Elemen paling kecil terletak pada Root
- Elemen paling besar terletak pada salah satu anak Root (left child / right child).
Min-Max Heap memungkinkan kita dapat mencari nilai terkecil dan terbesar dari Heap pada waktu yang sama.
Insertion pada Min-Max Heap :
- Masukkan elemen baru pada ujung akhir heap (setelah index dari elemen terakhir yang dimasukkan)
- Bila node baru terletak pada min-level :
– Jika node baru lebih besar dari parent, Tukar nilai node dengan parent, lalu Upheapmax dari parent.
– Else: Upheapmin node baru - Bila node baru terletak pada max-level :
– Jika node baru lebih kecil dari parent, Tukar nilai node dengan parent, lalu Upheapmin dari parent.
– Else: Upheapmax node baru
< Upheapmin >
- Bandingkan nilai node dengan grand-parent. Bila nilai node lebih kecil, Tukar nilai node dengan grand-parent dan Lanjutkan Upheapmin dari grand-parent.
< Upheapmax >
- Bandingkan nilai node dengan grand-parent. Bila nilai node lebih besar, Tukar nilai node dengan grand-parent dan Lanjutkan Upheapmax dari grand-parent.
Deletion pada Min-Max Heap :
-> Deletion elemen terkecil
- Gantilah root dengan elemen terakhir pada heap.
- Kurangi jumlah elemen pada heap
- Downheapmin dari Root
-> Deletion elemen terbesar
- Gantilah left child atau right child dari root (tergantung mana yang lebih besar) dengan elemen terakhir pada heap.
- Kurangi jumlah elemen pada heap
- Downheapmax dari node tersebut.
< Downheapmin >
- m adalah elemen terkecil dari antara anak-anak dan cucu-cucu dari node.
- Bila m adalah cucu dari node :
- Jika nilai m lebih kecil dari node, maka :
- Tukar nilai m dengan node
- Bila sesudah ditukar nilai m lebih besar dari parent-nya, Tukar nilai m dengan parent.
- Lanjutkan Downheapmin dari m
- Jika nilai m lebih kecil dari node, maka :
- Bila m adalah anak dari node :
- Jika nilai m lebih kecil dari node, Tukar nilai m dengan node.
< Downheapmax >
- Prosesnya sama dengan Downheapmin, tetapi relational operator-nya dibalik.
Tries
Tries adalah struktur data Tree yang digunakan untuk menyimpan string.
Contoh: 1. Algo, 2. Api, 3. Bom, 4. Bos, 5. Bosan, 6. Bor.
Hashing
- Hashing adalah mengubah sebuah string of characters menjadi suatu key yang merepresentasikan string aslinya.
- Hashing digunakan untuk index dan mengambil item pada database karena mencari hashed key jauh lebih cepat daripada mencari original value.
h[ ] | Value |
0 | atan |
1 | |
2 | char |
3 | define |
4 | exp |
5 | float |
6 | |
… | |
25 |
- Hash table adalah sebuah tabel dimana kita menyimpan original string. Index dari tabel adalah hashed key, sedangkan value yang disimpan adalah original string.
- Bila lebih dari 1 data memiliki hash-key yang sama maka terjadilah collision.
Cara menangani Collision:
- Linear Probing
Mencari empty slot selanjutnya lalu masukkan string baru kesana.
- Chaining =
Masukkan string ke dalam slot sebagai linked-list