My first Magazine pemrograman-kompetitif-dasar | Page 109

9.6 Contoh Permasalahan Graf Queue ini menyimpan daftar node yang akan dikunjungi. Untuk setiap fase, kunjungi node yang terdapat di paling depan queue , dan daftarkan seluruh tetangganya yang belum dikunjungi pada bagian akhir queue . Lakukan hal ini sampai seluruh node terkunjungi. Algoritma 45 menunjukkan implementasi dari BFS. Algoritma 45 Penelusuran graf dengan BFS. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: procedure BFS(initialNode) INITIALIZE Q UEUE () PUSH (initialNode) visited[initialNode] ← true while not IS E MPTY Q UEUE () do curNode ← FRONT () 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 9.5.3 . Inisialisasi sebuah queue kosong. . IS E MPTY Q UEUE : bernilai true jika queue kosong. Analisis Kompleksitas DFS dan BFS Baik DFS maupun BFS sama-sama mengunjungi setiap node tepat satu kali, dengan meman- faatkan seluruh edge . Kompleksitas dari kedua metode adalah: • O(V 2 ), jika digunakan adjacency matrix . • O(V + E), jika digunakan adjacency list . 9.6 Contoh Permasalahan Graf Contoh 1 Contoh Soal 9.1: Perjalanan Tersingkat Di suatu provinsi, terdapat N buah kota. Kota-kota dinomori dari 1 sampai dengan N. Terdapat E ruas jalan yang masing-masing menghubungkan dua kota berbeda. Pak Dengklek tinggal di kota A. Suatu hari, beliau ingin pergi ke kota B. Karena sudah tua, Pak Dengklek ingin melewati sesedikit mungkin ruas jalan untuk sampai ke kota B. Tentukan berapa banyak ruas jalan tersedikit yang perlu beliau lewati untuk pergi dari kota A ke kota B! Permasalahan ini dapat diselesaikan dengan BFS. Karena sifatnya yang menelusuri node lapis demi lapis, jika suatu node dikunjungi, maka jarak yang ditempuh dari awal sampai node tersebut pasti jarak terpendek. Hal ini selalu benar untuk segala graf tak berbobot; BFS selalu 99