My first Magazine pemrograman-kompetitif-dasar | Page 107
9.5 Penjelajahan Graf
Gambar 9.18: Contoh graf dan urutan penelusurannya dengan DFS. Angka pada node menun-
jukkan urutan node tersebut dikunjungi. Node 1 dikunjungi pertama, node 2
dikunjungi kedua, dan seterusnya). Anak panah menunjukkan pergerakan pe-
ngunjungan node . Edge yang dicetak tebal menyatakan edge yang dilalui oleh
penelusuran secara DFS.
Dalam pemrograman, DFS biasa dilakukan dengan rekursi atau struktur data stack. Untuk
keperluan implementasi, misalkan:
•
•
•
•
Terdapat V node dan E edge .
Setiap node dinomori dari 1 sampai dengan V .
ad j(x) menyatakan himpunan tetangga dari node x.
Terdapat array visited, yang mana visited[x] bernilai true hanya jika x telah dikunjungi.
Contoh implementasi untuk DFS secara rekursif dapat diperhatikan pada Algoritma 43. Imple-
mentasi secara iteratif menggunakan struktur data stack ditunjukkan pada Algoritma 44.
Algoritma 43 Penelusuran graf dengan DFS secara rekursif.
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure DFS(curNode)
print "mengunjungi curNode"
visited[curNode] ← true
for ad jNode ∈ ad j(curNode) do
if not visited[ad jNode] then
DFS(ad jNode)
end if
end for
end procedure
97