Anda di halaman 1dari 28

03 JANUARI 2023 •

UNIVERSITAS MIKROSKIL

Pemrograman
Komputer

Apriyanto Halim, S.Kom., M.Kom.


MINGGU-13

Agenda
Perkuliahan
Penyampaian Materi
Diskusi/Tanya Jawab
UNIVERSITAS MIKROSKIL

Materi Minggu 13
Struktur Data Dasar
Hash Table
Binary Heap
STRUKTUR DATA DASAR

Hash Table
Struktur data yang dapat menyimpan nilai dengan menggunakan cara
pengelompokkan
Menggunakan format array (biar lebih mudah diakses)
Biasanya terdapat keys (nilai unik) dan values (data yang disimpan)
Contoh:

Ketika kita ingin mengakses nilai 7 (values), maka kita harus menggunakan
indeks ke-2 (keys) untuk mengaksesnya.
STRUKTUR DATA DASAR

Hash Function
Fungsi ini juga disebut sebagai hashing
Fungsi yang digunakan untuk memetakan (menempatkan) nilai yang dimasukkan
ke dalam Hash Tabel
Sebagai contoh:
Keys Hashing Indeks
STRUKTUR DATA DASAR

Jenis-Jenis Fungsi Hash


Fungsi hash yang paling sering digunakan ada 2, yaitu:
Division Method
Teknik ini umumnya menggunakan operator modulus (sisa pembagian) untuk
menentukan key yang tepat.
h(m) = m mod i
m = nilai yang ingin diproses
i = ukuran tabel

Multiplication Method
Teknik ini umumnya dengan mengalikan nilai yang ingin diproses dengan angka
tertentu dan dibagi dengan ukuran tabel.
STRUKTUR DATA DASAR

Penerapan Hash Table-01


Langkah-langkah yang dilakukan dalam penerapan Hash Tabel, yaitu:
Tentukan terlebih dahulu panjang memory yang diperlukan

Membuat array sesuai dengan panjang yang ditentukan

Setelah itu, cetak hasil array yang telah dibuat:


STRUKTUR DATA DASAR

Penerapan Hash Table-02


Membuat fungsi hashing yang digunakan untuk penentuan indeks:
Pembuatan fungsi hashing dilakukan dengan menggunakan cara:
Anggap nilai keys yang digunakan merupakan nama pengguna tersebut.
Setelah itu, ubah masing-masing karakter menjadi kode ASCII.
Jumlah setiap kode ASCII tersebut
Moduluskan dengan panjang array yang digunakan.
NB: Fungsi hashing yang digunakan menggunakan fungsi modulasi.
STRUKTUR DATA DASAR

Penerapan Hash Table-03


Membuat fungsi untuk memasukkan data ke dalam hash table yang telah kita
buat sebelumnya:
Pembuatan fungsi ini tentunya dengan menggunakan cara:
Mencari keys terlebih dahulu dari fungsi hashing yang telah dibuat
sebelumnya.
Memasukkan nilai ke dalam array yang telah dibuat.
STRUKTUR DATA DASAR

Penerapan Hash Table-04


Memasukkan data satu per satu ke dalam hash table:
Data =
keys = "apri", values = 100
keys = "yanto", values = 80
keys = "halim", values = 65
STRUKTUR DATA DASAR

Penerapan Hash Table-05


Hasil hash table setelah dilakukan proses penambahan berubah menjadi:
Sebelum ditambahkan tiga buah data =

Setelah ditambahkan tiga buah data =

Dari data tersebut telihat ada perubahan pada indeks ke 3, 5 dan 8 sesuai dengan
tiga buah nilai yang kita masukkan pada langkah sebelumnya.
STRUKTUR DATA DASAR

Masalah Hash Table


Pada proses sebelumnya kita telah berhasil memasukkan tiga buah data ke dalam
hash table. Hanya saja, akan terjadi masalah jika data yang diinput ternyata
memiliki indeks yang sama. Sebagai contoh:
keys awal = apri => 97 +112 + 114 + 105 = 428 % 10 = 8
keys lain = ipar => 105 + 112 + 97 + 114 = 428 % 10 = 8

Apabila kita masukkan ke dalam array kita, maka data yang sebelumnya akan
terganti dengan data yang baru.

Hal ini kita sebut sebagai collision (tabrakan).


STRUKTUR DATA DASAR

Penanganan Collision
Collision merupakan proses yang terjadi ketika hashing yang dilakukan memberikan
nilai yang sama.

Ada dua cara yang bisa kita lakukan untuk mengatasi masalah tersebut, yaitu:
1. Menggunakan Channing (perantaian dengan pernerapan konsep linked list)
2. Menggunakan Probing (proses perpindahan nilai)
STRUKTUR DATA DASAR

Penanganan Collision:
Channing-1

Hal yang harus dilakukan adalah:


Membuat array yang dapat menyimpan lebih dari satu nilai. (Penerapan nested
array)
STRUKTUR DATA DASAR

Penanganan Collision:
Channing-2
Setiap data pada array, terdapat juga keys untuk menunjuk data tersebut.
(Menggunakan set di dalam nested array)

NB : Yang diberikan garis biru merupakan set.


STRUKTUR DATA DASAR

Penanganan Collision:
Channing-3

Hasil Hash Table yang baru akan menjadi seperti berikut:

Dari data Hash Table yang baru, dimana ada dua data pada tempat yang sama,
yaitu apri dan ipar. Sehingga, Hash Table sudah bisa kita gunakan.
STRUKTUR DATA DASAR

Kegunaan Hash Table


Pada penerapannya, Hash Table banyak sekali digunakan, yaitu :
Sidik jari pesan (terkait kriptografi)
Jenis berkas pada file
Verifikasi kata sandi
Penyesuaian pola
STRUKTUR DATA DASAR

Latihan

Buatlah fungsi untuk mencetak data yang ada di dalam


Hash Table menjadi bentuk berikut:
STRUKTUR DATA DASAR

Binary Heap
Binary heap merupakan binary tree yang lengkap atau setiap tingkat memiliki 2
buah anak (kiri dan kanan), kecuali tingkat terakhir.
Binary Heap terdiri dari 2 jenis, yaitu:
Binary Min Heap
Binary Max Heap
Beda kedua jenis tersebut hanya terdapat pada nilai yang pertama kali keluar.
Dimana untuk min, merupakan nilai yang paling kecil, sedangkan max untuk nilai
yang paling besar.
STRUKTUR DATA DASAR

Contoh Binary Heap

15
STRUKTUR DATA DASAR

Mengubah Tree menjadi Array


Terlebih dahulu mulai dari data
yang paling atas
Lanjut ke bawah mulai dari data
yang paling kiri
Lanjut ke sebelah kanan sampai
hapus
Lanjut ke bawah sampai tingkat
terakhir
STRUKTUR DATA DASAR

Binary Heap: Min Heap-1


Min Heaps merupakan binary heap yang digunakan untuk menentukan prioritas
terhadap nilai yang paling kecil yang duluan keluar.

Adapun proses yang dilakukan pada min heap ini adalah:


Nilai yang pertama keluar merupakan nilai yang paling kecil dan biasanya
terletak pada node root (paling atas).
Setelah nilai yang paling atas keluar, biasanya akan diganti dengan node yang
paling bawah sebelah kanan.
Setelah itu, nilai tersebut akan dibandingkan dengan semua nilai yang ada
anaknya (child node).
Hal ini juga akan dilakukan jika ada node baru yang masuk.
STRUKTUR DATA DASAR

Binary Heap: Min Heap-2


Proses-proses yang dilakukan pada Min Heap, yaitu:
Parent: Proses yang digunakan untuk menentukan posisi parent dari data
tersebut. Untuk menentukan indeks dari parent kita bisa menggunakan rumus:
([indeks dari child] - 1) / 2 (setelah itu dibulatkan ke bawah)
leftChild: Proses yang digunakan untuk menentukan posisi dari anak sebelah
kiri. Untuk menentukan indeks ini kita bisa menggunakan rumus : 2 * [indeks dari
parent] + 1
rightChild: Proses yang digunakan untuk menentukan posisi dari anak sebelah
kanan. Untuk menentukan indeks ini kita bisa menggunakan rumus : 2 * [indeks
dari parent] + 2
STRUKTUR DATA DASAR

Binary Heap: Min Heap-3


Proses-proses tambahan yang digunakan, yaitu:
hasParent: untuk memastikan apakah indeks tersebut memiliki parent
hasLeftChild: untuk memastikan apakah memiliki anak sebelah kiri
hasRightChild: untuk memastikan apakah memiliki anak sebelah kanan
parent: untuk mendapatkan data pada posisi parent
leftChild: untuk mendapatkan data pada posisi anak kiri
rightChild: untuk mendapatkan data pada posisi anak kanan
isFull (optional): memastikan apakah sudah penuh atau tidak
swap: digunakan untuk melakukan perpindah lokasi dari data
STRUKTUR DATA DASAR

Binary Heap: Min Heap-4


Proses utama yang digunakan, yaitu:
insert: untuk memasukkan data
heapifyUp: untuk memastikan data yang dimasukkan tidak lebih kecil dari
parentnya jika memiliki parent.
remove: untuk menghapus data pada root dan menggantinya dengan yang baru
(data yang paling akhir)
heapifyDown: untuk memastikan data yang dimasukkan tidak lebih besar dari
childnya jika memiliki child.
STRUKTUR DATA DASAR

Kegunaan Binary Heap


Pada penerapannya, Binary Heap banyak sekali digunakan, yaitu :
Mengurutkan data
Menentukan antrian prioritas
Algoritme Graph
STRUKTUR DATA DASAR

Demo Code
MATERI DAPAT DIAKSES DI MICROSOFT TEAMS

thanks!

Anda mungkin juga menyukai