My first Magazine pemrograman-kompetitif-dasar | Page 117

10.2 Heap Algoritma 51 Pencarian perwakilan kelompok dari suatu elemen x yang efisien dengan path compression. 1: 2: 3: 4: 5: 6: 7: 8: function FIND R EPRESENTATIVE (x) if par[x] = x then return x else par[x] ← FIND R EPRESENTATIVE (par[x]) return par[x] end if end function . Catat elemen representatifnya Operasi check Operasi untuk memeriksa apakah a dan b berada pada kelompok yang sama dapat dilakukan dengan memeriksa apakah keduanya memiliki perwakilan kelompok yang sama. Hal ini ditunjukkan pada Algoritma 52. Algoritma 52 Implementasi pemeriksaan apakah a dan b berada pada kelompok yang sama. function CHECK (a, b) return FIND R EPRESENTATIVE (a) = FIND R EPRESENTATIVE (b) 3: end function 1: 2: 10.1.2 Analisis Kompleksitas Apabila seluruh parent elemen sudah dikenakan path compression, maka setiap elemen langsung menunjuk ke elemen perwakilan kelompoknya. Artinya, kini fungsi FIND R EPRESENTATIVE bekerja dalam O(1). Kompleksitas satu kali pemanggilan FIND R EPRESENTATIVE tidak dapat didefinisikan secara pasti. Perhitungan secara matematis membuktikan bahwa dengan path compression, kompleksitas untuk M operasi FIND R EPRESENTATIVE dan N − 1 operasi JOIN , dengan M ≥ N, bekerja dalam O(M log N). 14 10.2 Heap Heap merupakan struktur data yang umum dikenal pada ilmu komputer. Nama heap sendiri berasal dari Bahasa Inggris, yang berarti "gundukan". Heap merupakan struktur data yang mampu mencari nilai terbesar secara efisien dari sekumpulan elemen yang terus bertambah. Untuk lebih jelasnya, perhatikan contoh berikut. Contoh Soal 10.2: Hobi Batu Akik Di belakang peternakan Pak Dengklek, terdapat sebuah gua yang kaya akan batu akik. Setiap kali Pak Dengklek melewatinya, ia akan mengambil sebuah batu akik untuk dibawa pulang. Karena pernah belajar ilmu kebumian, Pak Dengklek dapat menilai seberapa berharganya batu akik yang ia ambil. Untuk kemudahan, Pak Dengklek memberikan nilai harga tersebut berupa suatu bilangan bulat. 107