My first Magazine pemrograman-kompetitif-dasar | Page 140
11 Algoritma Graf
solusi dengan cara memilih node satu per satu untuk digabungkan ke tree solusi, hingga seluruh
node masuk ke dalam tree .
Untuk mengimplementasikan algoritma Prim, kita definisikan variabel berikut:
• dist[x]: bobot terkecil yang dapat dipakai untuk menghubungkan node x ke tree .
• visited[x]: bernilai true jika node x sudah masuk ke dalam tree solusi, dan f alse jika belum.
Umumnya, soal MST hanya meminta Anda mencari total bobot dari MST saja. Namun, jika
Anda juga memerlukan edge solusi, maka Anda harus mendefinisikan variabel baru pred[x] yang
menyatakan tetangga dari node x yang menghubungkan x dengan tree solusi. Awalnya kita set
nilai ini dengan −1 karena masih belum diketahui node mana yang menghubungkan x.
Sesuai definisi, pada mulanya seluruh visited[i] bernilai f alse. Selain itu, seluruh node x
memiliki nilai dist[x] = ∞. Kita mulai dengan mengambil sembarang node untuk dijadikan node
pertama dari tree solusi. Untuk memudahkan, Anda dapat memilih node berindeks 1. Khusus
untuk node pertama ini, kita juga set dist-nya menjadi 0. Untuk setiap node u yang mana u baru
saja dimasukkan ke dalam tree solusi, maka kita akan melakukan proses relax sebagai berikut:
dist[v] = min(dist[v], w[u][v]), untuk setiap v ∈ ad j(u) dan visited[v] = f alse
Jika kita mengubah nilai dist[v], maka kita perlu mengubah nilai pred[v] = u, karena edge
dengan bobot terkecil saat ini untuk menghubungkan v adalah dengan melalui u.
Kemudian, proses pemilihan ekspansi tree solusi dilakukan dengan memilih suatu node x
yang mana visited[x] = f alse dan dist[x] minimum. Proses relax akan diulangi lagi hingga seluruh
node masuk ke dalam solusi. Gambar 11.12 sampai Gambar 11.17 mengilustrasikan cara kerja
Prim.
3
6
1
1
2
5
2
3
5
4
4
2
1
dist
0
visited true
pred
−1
2
∞
f alse
−1
3
∞
f alse
−1
4
∞
f alse
−1
5
∞
f alse
−1
Gambar 11.12: Tahap 1: Bentuk awal graf beserta isi tabel dist dan visited. Kita memulai dari
node 1, maka tandai visited[1] = true serta dist[1] = 0.
3
6
1
1
2
5
2
3
5
4
4
2
1
dist
0
visited true
pred
−1
2
∞
f alse
−1
3
6
f alse
1
4
5
f alse
1
5
∞
f alse
−1
Gambar 11.13: Tahap 2: Lakukan proses relax terhadap node 1. Selanjutnya memilih node
yang belum dikunjungi dengan nilai dist terendah untuk ekspansi, yaitu node 4.
Catatan: perubahan nilai pada tabel karena proses relax dicetak dengan warna
biru dan digaris bawah.
130