Genişlik Öncelikli Arama (BFS
)
BFS
(genişlik öncelikli arama,
öncelikli arama) - hem basit hem de gelişmiş algoritmalarda sıklıkla kullanılan bir grafik çaprazlama yöntemi. Genişlik Öncelikli Arama, kaynak düğümden başlayarak ve kademeli olarak ondan uzaklaşarak grafiğin bireysel seviyeleri arasında adım atarak çalışır. Bu, animasyonda açıkça gösterilmiştir.
En basit BFS
'i yazmak için baştan alıp sonuna kadar götürebileceğiniz bir veri yapısı ile çalışabilmeniz ve ayrıca depolayabilmeniz gerekir. bitişiklik listesi biçimindeki grafik (yani bir kuyruk ile).
Algoritmanın resmi açıklaması
1) Aramanın başladığı köşe numarasını başlangıçta boş olan kuyruğa yerleştirin.
2) Kuyruğun başından U
tepe noktasını çıkarın ve ayrı bir dizide kullanılmış olarak işaretleyin.
3) Kuyruğun sonunda, U,
köşesinden kenarı kullanarak ulaşabildiğimiz ve henüz etiketlenmemiş tüm köşeleri ekleyin.
4) Kuyruk boşsa, bağlı grafiğin tüm düğümleri taranmıştır, aksi halde 2. adıma dönün.
Karmaşıklık
Algoritma grafiğin tüm düğümlerini en kötü durumda ziyaret ettiğinden, grafiği bitişik listeler olarak saklarken, algoritmanın zaman karmaşıklığı O(|V| + |E|)
şeklindedir. , burada V
grafik tepe noktaları kümesidir ve E
kenarlar kümesidir. Başka bir deyişle, algoritma sayı için en kötü durumda çalışır kenar sayısı + köşe sayısı.