My first Magazine pemrograman-kompetitif-dasar | Page 110
9 Perkenalan Graf
menemukan shortest path dari suatu node ke seluruh node lainnya. Algoritma 46 menunjukkan
implementasi solusinya.
Algoritma 46 Solusi Perjalanan Tersingkat menggunakan BFS, sambil mencatat kedalaman
pengunjungan suatu node pada array visitTime.
procedure SHORTEST P ATH (A, B)
2:
INITIALIZE Q UEUE ().
3:
visitTime ← new integer[V + 1]
4:
FILL A RRAY (visitTime, −1)
1:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
. Inisialisasi array visitTime dengan -1.
PUSH (A)
visitTime[A] ← 0
while not IS E MPTY Q UEUE () do
curNode ← FRONT ()
POP ()
for ad jNode ∈ ad j(curNode) do
. Jika ad jNode belum pernah dikunjungi...
if visitTime[ad jNode] = −1 then
PUSH (ad jNode)
visitTime[ad jNode] ← visitTime[curNode] + 1
end if
end for
end while
return visitTime[B]
end procedure
Contoh 2
Contoh Soal 9.2: Persebaran Informasi
Bebek-bebek Pak Dengklek merupakan hewan sosial. Apabila seekor bebek mengetahui
suatu informasi, dia akan langsung memberitahu seluruh teman-temannya. Diketahui
terdapat N ekor bebek di peternakan Pak Dengklek, yang dinomori dari 1 sampai dengan N.
Pak Dengklek mengetahui M hubungan pertemanan di antara bebek-bebeknya. Masing-
masing hubungan ini dinyatakan dengan a i dan b i , yang artinya bebek a i berteman dengan
bebek b i . Tentu saja, pertemanan ini berlaku secara dua arah.
Kini Pak Dengklek memiliki sebuah informasi yang ingin ia sampaikan kepada seluruh
bebeknya. Berapa banyak bebek paling sedikit yang Pak Dengklek perlu beritahu tentang
informasi ini, sedemikian sehingga seluruh bebek pada akhirnya akan mengetahui informasi
tersebut?
Pada soal ini, kita dapat menyatakan hubungan pertemanan antar bebek sebagai graf tidak
berarah dan tidak berbobot dengan N node , dan M edge . Bebek ke-i akan menjadi node i, dan
hubungan pertemanan menghubungkan node -node tersebut sebagai edge . Apabila Pak Dengklek
memberi tahu bebek ke-i suatu informasi, banyaknya bebek yang akhirnya akan mengetahui
informasi tersebut sama saja dengan node -node yang dapat dikunjungi dari node i.
Kita dapat menyelesaikan soal ini dengan cara berikut:
100