BFS (Breath First Search) Geniş Öncelikli Arama Algoritması
  1. Anasayfa
  2. Algoritmalar

BFS (Breath First Search) Geniş Öncelikli Arama Algoritması

0

Ağaç veya graflarda arama işlemi yapan algoritmalardan bir tanesi olan BFS, geniş öncelikli arama yapmaktadır. Bu makalemizde BFS algoritması hakkında kısa bir bilgilendirme ve akabinde çalışma mantığına değinmeye çalışacağız.

BFS algoritmasında DFS algoritmasından farklı olarak derin arama yerin geniş arama yapılmaktadır. Temel farklardan bir tanesi ise kullanılan veri yapısıdır. BFS için literatürde yerini almış olan veri yapısı kuyruk veri yapısıdır. Kuyruk veri yapısı kullanan BFS’ de işlemler de FIFO (first in first out) yani ilk giren ilk çıkar prensibiyle çalışmaktadır.

BFS çalışma mantığı;

Bir başlangıç düğümü belirlenir ve tüm komşular ziyaret edilir. DFS’ den farklı olarak BFS’ de ziyaret edilen komşunun aynı anda gidilebilecek tüm komşuları aynı anda kuyruğa eklenir. DFS’ de hatırlayacağınız üzere bir komşudan sadece gidilebilecek bir diğer komşuya gidiliyor ve yığına ekleniyordu.

Resim-1

Yukarıdaki resimdeki örneği incelediğimizde başlangıç düğümü olarak A düğümünü belirlemiş olalım.

Öncelikle A düğümünden B ve D düğümüne aynı anda gidilebiliyor. Bu yüzden kuyruğa ilk başta A’ yı daha sonra B ve D’ yi ekliyoruz. İlk giren ilk çıkacağı için A çıkıyor B ve D giriyor.

Sonraki adımda B ve D’nin komşularına bakıyoruz C, E ve F olarak görülmektedir. Bu yüzden kuyruğa C, E ve F yi ekliyoruz. İlk giren ilk çıkacağından B yi çıkarıyoruz. Ardından D’yi çıkarıyoruz. Algoritmanın graf veya ağaç üzerinde dolaşma (traverse) işlemi bu şekilde kuyruk veri yapısı üzerinden ilerlemektedir.

Notlar;

Her adımda kuyruktan bir eleman çıkarılır. FIFO olduğu için ilk eleman ilk çıkar.

Bu algoritmada komşular ziyaret edilerek devam edildiği için bir adımda birden fazla komşu kuyruğa girebilir.

Özetle her adımda kuyruktaki en öndeki düğümün komşularına bakıyoruz ve kendisini çıkarıyoruz komşusunu kuyruğa ekliyoruz. Eğer kuyruktaki düğümün komşusu yoksa ilgili adımda kuyruktan sadece çıkarma yapıyoruz yani komşu olmadığı için ekleme yapmıyoruz.

 

BFS algoritmasının karmaşıklığını inceleyecek olursak her bir düğümü en az 1 kez gezdiği için O(N) olacaktır.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 14
    harika_
    Harika!!
  • 2
    be_enmedim
    Beğenmedim
  • 2
    _ok_iyi
    Çok iyi
  • 4
    sevdim_
    Sevdim!
  • 3
    bilemedim_
    Bilemedim!
  • 2
    olmad_
    Olmadı!
  • 10
    k_zd_m_
    Kızdım!

Konya Teknik Üniversitesi Bilgisayar Mühendisliği Doktora programında tez dönemi öğrenciliğim devam etmektedir.İş hayatıma Vodafone'da Test Mühendisi olarak başladıktan sonra şuan bir üniversitede Sistem Uzmanı ve Siber Güvenlik Ofis Yöneticisi pozisyonunda çalışmaktayım.Başlıca uzmanlık alanlarım arasında Sistem yöneticiliği ve Siber Güvenlik gelmektedir.Asp.net ile Proje Geliştirme (2015), Bilgisayar Mühendisliğine Giriş (2020), Güvenlik Tasarım Desenleri (2022) kitaplarının yazarıyım.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir