My first Magazine pemrograman-kompetitif-dasar | Page 116

10 Struktur Data NonLinear Operasi findRepresentative Fungsi FIND R EPRESENTATIVE (x) mengembalikan elemen perwakilan dari kelompok tempat elemen x berada. Fungsi FIND R EPRESENTATIVE (x) dapat diimplementasikan secara rekursif, yaitu dengan menelusuri parent dari suatu elemen sampai ditemukan elemen yang memiliki parent berupa dirinya sendiri, seperti yang ditunjukkan pada Algoritma 50. Algoritma 50 Pencarian perwakilan kelompok dari suatu elemen x. 1: 2: 3: 4: 5: 6: 7: function FIND R EPRESENTATIVE (x) if par[x] = x then return x else return FIND R EPRESENTATIVE (par[x]) end if end function Fungsi FIND R EPRESENTATIVE memiliki kekurangan yaitu kompleksitasnya sebesar O(L), de- ngan L adalah panjangnya jalur dari elemen x sampai elemen perwakilan kelompoknya. Ketika L mendekati N, fungsi ini tidak efisien bila dipanggil berkali-kali. Oleh karena itu kita dapat menerapkan teknik path compression, yaitu mengubah nilai parent dari setiap elemen yang dilalui langsung ke elemen perwakilan kelompok. Hal ini menjamin untuk pemanggilan FIND R EPRESEN - TATIVE berikutnya pada elemen yang bersangkutan bekerja secara lebih efisien. L x (a) x (b) Gambar 10.4: Gambar (a) menunjukkan contoh pemanggilan FIND R EPRESENTATIVE pada elemen x, yang membutuhkan kompleksitas sebesar O(L). Gambar (b) menunjukkan hasil path compression sesudah pemanggilan FIND R EPRESENTATIVE . Implementasi dari path compression cukup dilakukan dengan menambahkan pencatatan elemen perwakilan kelompok untuk setiap elemen yang dilalui. 106