My first Magazine pemrograman-kompetitif-dasar | Page 115

10.1 Disjoint Set Inisialisasi Disjoint Set Inisialisasi disjoint set untuk N elemen dapat dilakukan dengan menyimpan parent dari masing-masing elemen berupa diri sendiri. Kita dapat menggunakan array untuk menyimpan parent setiap elemen. Pada Algoritma 48, array par menyimpan indeks elemen yang ditunjuk sebagai parent dari suatu elemen. Algoritma 48 Inisialisasi dari disjoint set . procedure INITIALIZE () for i ← 0, N − 1 do 3: par[i] ← i 4: end for 5: end procedure 1: 2: . Indeks elemen dimulai dari 0 (zero-based ) Gambar 10.2: Hasil dari inisialisasi disjoint set . Setiap elemen menunjuk ke dirinya sendiri. Operasi Join Ketika kelompok dua elemen perlu digabungkan, ubah parent dari salah satu perwakilan kelompok ke perwakilan kelompok lainnya. Perhatikan bahwa yang perlu diubah adalah parent dari perwakilan kelompok suatu elemen, bukan parent elemen itu sendiri. Hal ini menjamin seluruh elemen pada kelompok tersebut kini menunjuk pada perwakilan dari kelompok lainnya, yang berarti seluruh elemen pada kedua kelompok kini menunjuk pada perwakilan kelompok yang sama. join Gambar 10.3: Contoh operasi join pada dua elemen dan hasilnya. Secara sederhana, operasi join dapat dituliskan dalam Algoritma 49. Algoritma 49 Operasi penggabungan kelompok pada disjoint set . procedure JOIN (a, b) repA ← FIND R EPRESENTATIVE (a) 3: repB ← FIND R EPRESENTATIVE (b) 4: par[repA] = repB 5: end procedure 1: 2: 105