Algoritma BFS dan DFS digunakan untuk pencarian buta dalam graf. BFS mengunjungi simpul secara level-order untuk menemukan solusi tercepat, sementara DFS mengeksplorasi setiap path sedalam mungkin sebelum beralih ke path lain untuk menemukan solusi lebih cepat jika solusi berada pada kedalaman tinggi. Kedua algoritma memerlukan antrian/tumpukan untuk menyimpan simpul yang akan dan telah dikunjungi
2. “Algoritma adalah urutan langkah-langkah
logis penyelesaian masalah yang disusun
secara sistematis dan logis”. Kata Logis
merupakan kata kunci dalam Algoritma.
Langkah-langkah dalam Algoritma harus logis
dan harus dapat ditentukan bernilai salah atau
benar.
3. Breadth-First Search (BFS)
Breadth-first search adalah algoritma yang
melakukan pencarian secara melebar yang
mengunjungi simpul secara preorder yaitu
mengunjungi suatu simpul kemudian
mengunjungi semua simpul yang bertetangga
dengan simpul tersebut terlebih dahulu.
Selanjutnya, simpul yang belum dikunjungi dan
bertetangga dengan simpul simpul yang tadi
dikunjungi , demikian seterusnya. Jika graf
berbentuk pohon berakar, maka semua simpul
pada aras d dikunjungi lebih dahulu sebelum
simpul-simpul pada ras d+1.
4. Algoritma ini memerlukan sebuah antrian
untuk menyimpan simpul yang telah dikunjungi.
Simpul simpul ini diperlukan sebagai acuan
untuk mengunjungi simpul-simpul yang
bertetanggaan dengannya. Tiap simpul yang
telah dikunjungi masuk ke dalam antrian hanya
satu kali. Algoritma ini juga membutuhkan table
Boolean untuk menyimpan simpul yang te lah
dikunjungi sehingga tidak ada simpul yang
dikunjungi lebih dari satu kali.
5. Cara Kerja Algoritma BFS
Untuk memperjelas cara kerja algoritma BFS beserta
antrian yang digunakannya, berikut langkah-langkah
algoritma BFS:
1. Masukkan simpul ujung (akar) ke dalam antrian
2. Ambil simpul dari awal antrian, lalu cek apakah simpul
merupakan solusi
3. Jika simpul merupakan solusi, pencarian selesai dan hasil
dikembalikan.
4. Jika simpul bukan solusi, masukkan seluruh simpul yang
bertetangga dengan simpul tersebut (simpul anak) ke dalam
antrian
5. Jika antrian kosong dan setiap simpul sudah dicek, pencarian
selesai dan mengembalikan hasil solusi tidak ditemukan
6. Ulangi pencarian dari langkah kedua
6. Contoh Pencarian Lintasan Terpendek Dengan BFS
Adapun contoh untuk mencari lintasan terpendek dengan
menggukan algoritma BFS adalah sebagai berkut:
Diketahui sebuah kota, dengan memiliki inisial seperti yang
ditunjukkan dibawah ini. Jarak antar kota dibentuk dengan sebuah graph
terlihat dibawah:
Pertanyaan: sebutkan rute yang akan ditempuh untuk mencapai
kota no. 8. Titik awal perjalanan adalah kota no. 1. Gunakan algoritma
BFS!
Maka dengan menggunakan algoritma BFS, rute tercepat yang
didapat adalah sebagai berikut:
1 – 2 – 3 – 4 – 5 – 6 – 7 – 8
7. Depth-First search (DFS)
Depth-first search (DFS) adalah proses
searching sistematis buta yang melakukan ekpansi
sebuah path (jalur) menuju penyelesaian masalah
sebelum melakukan ekplorasi terhadap path yang
lain. Proses searching mengikuti sebuah path
tunggal sampai menemukan goal atau dead end.
Apabila proses searching menemukan dead-end,
DFS akan melakukan penelusuran balik ke node
terakhir untuk melihat apakah node tersebut
memiliki path cabang yang belum dieksplorasi.
Apabila cabang ditemukan, DFS akan melakukan
cabang tersebut. Apabila sudah tidak ada lagi
cabang yang dapat dieksplorasi, DFS akan kembali
ke node parent dan melakukan proses searching
terhadap cabang yang belum dieksplorasi dari node
parent sampai menemukan penyelesaian masalah.
8. Kelebihan DFS adalah:
Pemakain memori hanya sedikit, berbeda jauh
dengan BFS yang harus menyimpan semua node
yang pernah dibangkitkan. Jika solusi yang dicari
berada pada level yang dalam dan paling kiri, maka
DFS akan menemukannya secara cepat.
Kelemahan DFS adalah:
Jika pohon yang dibangkitkan mempunyai level
yang dalam (tak terhingga), maka tidak ada jaminan
untuk menemukan solusi (Tidak Complete). Jika
terdapat lebih dari satu solusi yang sama tetapi
berada pada level yang berbeda, maka pada DFS
tidak ada jaminan untuk menemukan solusi yang
paling baik (Tidak Optimal)..
9. Cara Kerja DFS
Pencarian rute terpendek dilakukan dengan cara
membuat simpul-simpul yang menjadi titik awal,
titik-titik yang akan dilalui dan juga titik akhir
sebagai akhir dari tujuan atau sebagai simpul yang
dicari.
Dalam algoritma DFS, simpul yang telah
dikunjungi disimpan dalam suatu tumpukan (stack).
Antrian ini digunakan untuk mengacu simpul-
simpul yang akan dikunjungi sesuai urutan
tumpukan (masuk terakhir, keluar pertama) dan
mempermudah proses runut-balik jika simpul
sudah tidak mempunyai anak (simpul pada
kedalaman maksimal).
10. Untuk memperjelas cara kerja algoritma DFS beserta
tumpukan yang digunakannya, berikut langkah-langkah
algoritma DFS:
1. Masukkan simpul ujung (akar) ke dalam tumpukan
2. Ambil simpul dari tumpukan teratas, lalu cek apakah
simpul merupakan solusi
3. Jika simpul merupakan solusi, pencarian selesai dan
hasil dikembalikan.
4. Jika simpul bukan solusi, masukkan seluruh simpul
yang bertetangga dengan simpul tersebut (simpul anak)
ke dalam tumpukan
5. Jika tumpukan kosong dan setiap simpul sudah dicek,
pencarian selesai dan mengembalikan hasil solusi tidak
ditemukan
6. Ulangi pencarian dari langkah kedua
11. Kesimpulan
1. Breadth-first search (BFS) melakukan proses
searching pada semua node yang berada pada
level atau hirarki yang sama terlebih dahulu
sebelum melanjutkan proses searching pada
node di level berikutnya.
2. Depth-first search (DFS) adalah proses
searching sistematis buta yang melakukan
ekpansi sebuah path (jalur) menuju
penyelesaian masalah sebelum melakukan
ekplorasi terhadap path yang lain.