BFS vs DFS – Perbedaan Antara Keduanya

Perbedaan Utama antara BFS dan DFS

  • BFS menemukan jalur terpendek ke tujuan, sedangkan DFS menuju ke bagian bawah subpohon, lalu melakukan backtrack.
  • Bentuk lengkap BFS adalah Breadth-First Search, sedangkan bentuk lengkap DFS adalah Depth-First Search.
  • BFS menggunakan antrian untuk melacak lokasi berikutnya yang akan dikunjungi. sedangkan DFS menggunakan tumpukan untuk melacak lokasi berikutnya yang akan dikunjungi.
  • BFS melintasi berdasarkan tingkat pohon, sedangkan DFS melintasi berdasarkan kedalaman pohon.
  • BFS diimplementasikan menggunakan daftar FIFO; di sisi lain, DFS diimplementasikan menggunakan daftar LIFO.
  • Di BFS, Anda tidak akan pernah terjebak dalam loop terbatas, sedangkan di DFS, Anda bisa terjebak dalam loop tak terbatas.
Perbedaan Antara BFS dan DFS
Perbedaan antara BFS dan DFS

Apa itu BFS?

BFS adalah algoritma yang digunakan untuk membuat grafik data atau menelusuri pohon atau struktur yang melintasinya. Algoritma ini secara efisien mengunjungi dan menandai semua simpul kunci dalam grafik dengan cara yang akurat.

Algoritme ini memilih satu simpul (titik awal atau titik sumber) dalam grafik, lalu mengunjungi semua simpul yang berdekatan dengan simpul yang dipilih. Setelah algoritme mengunjungi dan menandai simpul awal, ia bergerak menuju simpul terdekat yang belum dikunjungi dan menganalisisnya.

Setelah dikunjungi, semua node ditandai. Iterasi ini berlanjut hingga semua node pada grafik berhasil dikunjungi dan ditandai. Bentuk lengkap dari BFS adalah pencarian Breadth-first.

Apa itu DFS?

DFS adalah algoritma untuk menemukan atau melintasi grafik atau pohon dalam arah kedalaman. Eksekusi algoritma dimulai dari node akar dan mengeksplorasi setiap cabang sebelum melakukan backtracking. Ia menggunakan struktur data tumpukan untuk mengingat, untuk mendapatkan simpul berikutnya, dan untuk memulai pencarian, setiap kali jalan buntu muncul dalam iterasi apa pun. Bentuk lengkap DFS adalah pencarian Depth-first.

Perbedaan antara Pohon Biner BFS dan DFS

Berikut adalah perbedaan penting antara BFS dan DFS.

BFS DFS
BFS menemukan jalur terpendek ke tujuan. DFS pergi ke bagian bawah subpohon, lalu mundur.
Bentuk lengkap BFS adalah Breadth-First Search. Bentuk lengkap DFS adalah Depth First Search.
Ia menggunakan antrian untuk melacak lokasi berikutnya yang akan dikunjungi. Ia menggunakan tumpukan untuk melacak lokasi berikutnya yang akan dikunjungi.
BFS melintasi menurut tingkat pohon. DFS melintasi menurut kedalaman pohon.
Ini diimplementasikan menggunakan daftar FIFO. Ini diimplementasikan menggunakan daftar LIFO.
Ini membutuhkan lebih banyak memori dibandingkan dengan DFS. Ini membutuhkan lebih sedikit memori dibandingkan dengan BFS.
Algoritma ini memberikan solusi jalur paling dangkal. Algoritma ini tidak menjamin solusi jalur paling dangkal.
Tidak perlu mundur di BFS. Ada kebutuhan untuk menelusuri kembali DFS.
Anda tidak akan pernah bisa terjebak dalam putaran terbatas. Anda bisa terjebak dalam putaran tak terbatas.
Jika Anda tidak menemukan tujuan apa pun, Anda mungkin perlu memperluas banyak node sebelum solusi ditemukan. Jika Anda tidak menemukan tujuan apa pun, kemunduran simpul daun dapat terjadi.

Contoh BFS

Dalam contoh BFS berikut, kami menggunakan grafik yang memiliki 6 titik sudut.

Contoh BFS

Langkah 1)

Contoh BFS

Anda memiliki grafik tujuh angka yang berkisar dari 0 – 6.

Langkah 2)

Contoh BFS

0 atau nol telah ditandai sebagai simpul akar.

Langkah 3)

Contoh BFS

0 dikunjungi, ditandai, dan dimasukkan ke dalam struktur data antrian.

Langkah 4)

Contoh BFS

Sisa 0 node yang berdekatan dan belum dikunjungi dikunjungi, ditandai, dan dimasukkan ke dalam antrian.

Langkah 5)

Contoh BFS

Perulangan traversing diulang sampai semua node dikunjungi.

Contoh DFS

Dalam contoh DFS berikut, kami telah menggunakan grafik tak berarah yang memiliki 5 titik sudut.

Contoh DFS

Langkah 1)

Contoh DFS

Kita mulai dari titik 0. Algoritma dimulai dengan meletakkannya di daftar yang dikunjungi dan secara bersamaan meletakkan semua titik yang berdekatan di struktur data disebut tumpukan.

Langkah 2)

Contoh DFS

Anda akan mengunjungi elemen yang berada di bagian atas tumpukan, misalnya 1 dan menuju ke node yang berdekatan. Itu karena 0 sudah dikunjungi. Oleh karena itu, kami mengunjungi simpul 2.

Langkah 3)

Contoh DFS

Simpul 2 memiliki simpul terdekat yang belum dikunjungi di 4. Oleh karena itu, kita menambahkan simpul tersebut ke dalam tumpukan dan mengunjunginya.

Langkah 4)

Contoh DFS

Terakhir, kita akan mengunjungi simpul terakhir 3, yang tidak memiliki simpul bersebelahan yang belum dikunjungi. Kami telah menyelesaikan traversal grafik menggunakan algoritma DFS.

Contoh DFS

Aplikasi BFS

Berikut Aplikasi BFS:

Grafik Tidak Berbobot

Algoritma BFS dapat dengan mudah membuat jalur terpendek dan pohon merentang minimum untuk mengunjungi semua simpul pada grafik dalam waktu sesingkat mungkin dengan akurasi tinggi.

Jaringan P2P

BFS dapat diimplementasikan untuk menemukan semua node terdekat atau bertetangga dalam jaringan peer-to-peer. Ini akan menemukan data yang dibutuhkan lebih cepat.

Perayap Web

Mesin pencari atau perayap web dapat dengan mudah membuat beberapa tingkat indeks dengan menggunakan BFS. Implementasi BFS dimulai dari sumbernya yaitu halaman web, kemudian mengunjungi semua link dari sumber tersebut.

Penyiaran Jaringan

Paket yang disiarkan dipandu oleh algoritma BFS untuk menemukan dan menjangkau semua node yang alamatnya dimilikinya.

Penerapan DFS

Berikut adalah aplikasi penting DFS:

Grafik Tertimbang

Dalam graf berbobot, traversal graf DFS menghasilkan pohon jalur terpendek dan pohon rentang minimum.

Mendeteksi Siklus dalam Grafik

Sebuah grafik memiliki siklus jika kita menemukan tepi belakang selama DFS. Oleh karena itu, kita harus menjalankan DFS untuk grafik dan memverifikasi tepi belakangnya.

Menemukan jalan

Kita dapat mengkhususkan diri pada algoritma DFS untuk mencari jalur antara dua simpul.

Penyortiran Topologi

Hal ini terutama digunakan untuk menjadwalkan pekerjaan dari ketergantungan tertentu di antara kelompok pekerjaan. Dalam ilmu komputer, digunakan dalam penjadwalan instruksi, serialisasi data, sintesis logika, menentukan urutan tugas kompilasi.

Mencari Komponen Grafik yang Terhubung Kuat

Ini digunakan dalam grafik DFS ketika ada jalur dari setiap simpul dalam grafik ke simpul lain yang tersisa.

Memecahkan Teka-Teki dengan Hanya Satu Solusi

Algoritma DFS dapat dengan mudah diadaptasi untuk mencari semua solusi labirin dengan memasukkan node pada jalur yang ada ke dalam kumpulan yang dikunjungi.