Depth-First Search (DFS)
Pencarian dilakukan pada satu node dalam setiap level dari
yang paling kiri. Jika pada level yang paling dalam, solusi belum ditemukan,
maka pencarian dilanjutkan pada node sebelah kanan. Node yang kiri dapat
dihapus dari memori. Jika pada level yang paling dalam tidak ditemukan solusi,
maka pencarian dilanjutkan pada level sebelumnya. Demikian seterusnya sampai
ditemukan solusi. Jika solusi ditemukan
maka tidak diperlukan proses backtracking (penelusuran balik untuk mendapatkan
jalur yang dinginkan).
Kelebihan DFS adalah:
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).
Breadth First Search(BFS)
Merupakan 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. algoritma BFS menggunakan
graf sebagai media representasi persoalan, tidak sulit untuk mengaplikasikan
algoritma ini dalam persoalan-persoalan teori graf.
Cara Kerja Algoritma BFS
Dalam algoritma BFS, simpul anak yang telah dikunjungi
disimpan dalam suatu antrian. Antrian ini digunakan untuk mengacu simpul-simpul
yan bertetangga dengannya yang akan dikunjungi kemudian sesuai urutan
pengantrian.
Untuk memperjelas cara kerja algoritma BFS beserta antrian
yang digunakannya, berikut langkah-langkah algoritma BFS:
- Masukkan simpul ujung (akar) ke dalam antrian
- Ambil simpul dari awal antrian, lalu cek apakah simpul merupakan solusi
- Jika simpul merupakan solusi, pencarian selesai dan hasil dikembalikan.
- Jika simpul bukan solusi, masukkan seluruh simpul yang bertetangga dengan simpul tersebut (simpul anak) ke dalam antrian
- Jika antrian kosong dan setiap simpul sudah dicek, pencarian selesai dan mengembalikan hasil solusi tidak ditemukan
- Ulangi pencarian dari langkah kedua
6 komentar:
sangat bermanfaat, terima kasih
Contoh dfsnya? Nice post!
gg
tidak membantu
ok
makasih banyak min
obeng plus samsung
Posting Komentar