My first Magazine pemrograman-kompetitif-dasar | Page 108
9 Perkenalan Graf
Algoritma 44 Penelusuran graf dengan DFS secara iteratif menggunakan stack .
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure DFS(initialNode)
INITIALIZE S TACK ()
PUSH (initialNode)
visited[initialNode] ← true
while not IS E MPTY S TACK () do
curNode ← TOP ()
POP ()
print "mengunjungi curNode"
for ad jNode ∈ ad j(curNode) do
if not visited[ad jNode] then
PUSH (ad jNode)
visited[ad jNode] ← true
end if
end for
end while
end procedure
. Inisialisasi sebuah stack kosong.
. IS E MPTY S TACK : bernilai true jika stack kosong.
Perhatikan baris ke-12 Algoritma 44. Perubahan nilai visited ini akan menjamin suatu node
masuk ke dalam stack paling banyak satu kali.
9.5.2
BFS: Breadth-First Search
Pada BFS, penelusuran node pada graf dilakukan lapis demi lapis. Semakin dekat suatu
node dengan node awal, node tersebut akan dikunjungi terlebih dahulu.
Gambar 9.19: Sebuah graf dan urutan pengunjungan node -nya secara BFS. Angka pada node
menunjukkan urutan node tersebut dikunjungi. Node 1 dikunjungi pertama, node
2 dikunjungi kedua, dan seterusnya). Daerah yang dibatasi garis putus-putus
menyatakan daerah yang mana setiap node memiliki jarak yang sama kepada node
yang dikunjungi pertama. Edge yang dicetak tebal menyatakan edge yang dilalui
oleh penelusuran secara BFS.
Dalam pemrograman, BFS biasa diimplementasikan dengan bantuan struktur data queue .
98