HEAP
Heap merupakan sebuah complete binary tree yang memiliki beberapa sifat tertentu.
Min-Heap
- Data pada node lebih kecil dari data pada anaknya.
- Node dengan nilai terkecil terletak pada root.
- Node dengan nilai terbesar terletak pada leaf.
- Heap dapat diimplementasikan menggunakan linked-list, namun akan lebih mudah bila menggunakan array.
- Contoh Min-Heap:
Operasi dalam Min-Heap
- Find-Min
Mencari data terkecil pada Min-Heap (Root). - Insertion
- Insert data baru sebagai node terakhir dari heap.
- Lakukan Up-Heap
Bandingkan nilai data yang di-insert dengan parent-nya. Jika lebih kecil dari parent, maka tukar nilainya. - Upheap dihentikan jika nilai parent-nya lebih kecil dari current node atau jika current node adalah root.
- Deletion
- Tukar nilai dari data terakhir dengan root. Root sebagai current node.
- Karena data yang ingin dihapus sekarang berada pada leaf, langsung hapus.
- Lakukan Down-Heap
Bandingkan nilai current node dengan kedua anaknya. Jika salah satu anaknya lebih kecil dari current node, tukar posisi. Jika kedua anaknya lebih kecil nilainya dari current node, tukar posisi dengan anak yang nilainya paling kecil. - Down-Heap dihentikan jika current node bernilai lebih kecil dari kedua anaknya atau jika current node adalah leaf.
Max-Heap
- Merupakan kebalikan dari Min-Heap.
- Data pada node lebih besar dari data pada anaknya.
- Node dengan nilai terbesar terletak pada root.
- Node dengan nilai terkecil terletak pada leaf.
- Operasi pada Max-Heap hampir sama dengan operasi pada Min-Heap. Yang membedakan hanya konsepnya saja (data terbesar ada pada root, parent lebih besar dari anak).
Min-Max Heap
- Kondisi pada heap bergantian antara minimum dan maximum antar level.
- Element pada level genap bernilai lebih kecil dari anaknya (min-level).
- Element pada level ganjil bernilai lebih besar dari anaknya (max-level).
- Root memiliki nilai paling kecil dan kedua anaknya memiliki nilai paling besar.
- Contoh Min-Max Heap:
Operasi pada Min-Max Heap
- Insertion
- Insert data baru sebagai node terakhir dari heap.
- Lakukan Upheap
Proses Upheap pada Min-Max Heap:- Jika node baru ada pada Min-Level:
- Jika parent dari node baru lebih kecil dari node baru tersebut maka tukar nilai dan upheapmax dari parent.
- Selain di atas, upheapmin dari node baru.
- Jika node baru ada pada Max-Level:
- Jika parent dari node baru lebih besar dari node baru tersebut maka tukar nilai dan upheapmin dari parent.
- Selain di atas, upheapmax dari node baru.
- Upheapmin
- Bandingkan nilai dari current node dengan nilai dari grand-parent.
- Jika nilai dari current node lebih kecil dari parent-nya, maka tukar nilai.
- Upheapmax
- Bandingkan nilai dari current node dengan nilai dari grand-parent.
- Jika nilai dari current node lebih besar dari parent-nya, maka tukar nilai.
- Jika node baru ada pada Min-Level:
- Deletion
- Deletion dari data terkecil:
- Tukar nilai root dengan nilai dari data terakhir pada heap.
- Hapus data terakhir.
- Downheapmin dari root.
- Deletion dari data terbesar:
- Tukar nilai anak kiri atau anak kanan dari root dengan nilai dari data terakhir pada heap.
- Hapus data terakhir.
- Downheapmax dari node.
- Downheapmin
- m adalah anak dengan nilai terkecil dari current node dan grand-children.
- Jika m adalah grand-children dari current node, maka:
- Jika m lebih kecil dari current node, maka:
- Tukar nilainya.
- Jika m lebih besar dari parent-nya maka tukar nilainya.
- Lanjutkan downheapmin dari m.
- Jika m lebih kecil dari current node, maka:
- Jika m adalah children dari current node, maka:
- Jika m lebih kecil dari current node, maka:
- Tukar nilainya.
- Jika m lebih kecil dari current node, maka:
- Downheapmax
Kebalikan dari downheapmin.
- Deletion dari data terkecil:
_______________________________________________________________________
TRIES
Tries merupakan konsep struktur data yang digunakan untuk menyimpan string.
Contoh konsep Tries:
_______________________________________________________________________
HASHING
Pengertian Hashing:
- Hashing adalah transformasi sebuah string dari beberapa karakter yang lebih singkat atau suatu kunci yang mewakili string aslinya.
- Hashing digunakan untuk mengambil item dalam database karena lebih cepat untuk menemukan suatu item menggunakan hashed key daripada mencari value aslinya.
Hash Table
- Merupakan sebuah tabel (array) dimana kita menyimpan string aslinya.
- Index dari tabel tersebut berupa hashed key sementara nilainya (value) adalah string asli.
- Contoh Hash Table:
Fungsi dalam Hash:
- Mid-square
- Division
- Folding
Cara meng-handle collision:
- Linear Probing
Mencari slot kosong dan menempatkan string di slot kosong tersebut. - Chaining
Menempatkan string pada slot sebagai chained list (linked list).