instagram twitter linkedin github youtube

14.7.15

Sığ Öncelikli Arama (Breadth First Search , BFS)

Bir ağaç dolaşma algoritmasının (ağaç hareket algoritması, ağaç geçişi) ilk ÖNCE Cardio seviyede Bulunan komşularını araması durumudur.
Örneğin aşağıdaki ağacı ele alalım:
Ağacı dolaşma sırlaması örneğin 5,7,8,3,2,1,9 şeklindeyse bu dolaşmaya sığ Öncelikli arama ismi VERİLEBİLİR.
Bu arama sıralamasında, dolaşma Sıralaması aşağıdaki ihtimallerden birisi Olabilir:
NLR: Düğüm Sol Sağ (Düğüm Sol Sağ)
NRL: Düğüm Sağ Sol (Düğüm Sağ Sol)
Yani Öncelikle düğüm Sonra Altındaki Üyelere hareket edilir.
Derin Öncelikli Arama (derinlik Önce Arama)  algoritma Tipine Göre imkb:
LRN: Sol Sağ Düğüm (Sol Sağ Düğüm)
RLN: Sağ Sol Düğüm (Sağ Sol Düğüm)
RNL: Sağ Düğüm Sol (Sağ Düğüm Sol)
LNR: Sol Düğüm Sağ (Sol Düğüm Sağ)
ihtimallerinden birisi Tercih Edilebilir. Buradaki fark ilk bakılan düğümün, MEVCUT düğümün Altında Olan Bir düğüm olmasinin. Yani sığ Öncelikli aramada Olduğu gibi Cardio seviyedeki düğümlerden ÖNCE alt seviyedeki düğümlere bakılır.

BFS (ilk arama genişlik) algoritmasının çalışma mantığı şu şekildedir. Bir düğüm dan başlayarak Ilgili düğüm un Tüm Komşuları gezilir Verilen. Daha Sonra gezilen komşuların Komşuları gezilerek Verilen grafiktir gezilmiş olur.
Algoritma
  1. Fonksiyona Gönderilen düğümü kuyruğa atılır.
  2. Kuyruk boşalıncaya Kadar döngü sürdürülür.
  3. Sıradaki düğümü kuyruktan çıkarılır.
  4. Çıkarılan düğüm Daha Önce gezilmemiş imkb, gezildi işareti Konur gezilmemiş Komşuları kuyruğa Konur A.Ş..
Sözde Kodunu şöyle yazabiliriz.
Kamu void bfs ( ) 
{ 
 // BFS Kuyruk veri yapısı kullanır 
 Kuyruk q = new 
  n = ( Düğüm ) q. çıkartın ( ) ; 
  Düğüm düğümler arasında ziyaret mülkiyet 
 clearNodes ( ) ; }
 
 
  
  
  
 
 
Alttaki sekil de bir grafik Verilen ın gezilirken nasıl renklendirildiğini görebilirsiniz
AYRICA göster buradaki animasyonu Izleyebilirsiniz.  
Şekil 1
Şekil 1 Örneğin Click bfs algoritmasıda c Kodunu yazmak Hakkında istersek şu sekılde Bir kod yazabiliriz.
#include <stdio.h> 
#include <math.h> 
#include <stdlib.h> 
#include <time.h>
 
Yapısı Başlangıcı ///////////////////// typedef struct köşe Öğe ; struct düğüm
 { 
 Öğe 
olsun ( ) { eğer ( ! isEmpty ( ) ) { 
  Item Kuyruk) "boş; }
 
 
 
 
 


 
 


 

 

 
 






 
 



  



 


 
 
  
  
  
 
 
 
  
 
 
} 
void koymak ( Öğe Yapısı Sonu - & Gt; color = , ver , 
    koyun ( arr [ FindIndex ( arr , mem - & gt ; harf ) ] ) ; printf ( "% C kuyruğu koyar \ n " , arr [ FindIndex ( arr , mem - & gt ; harf ) ] . madde ) ; } 
   mem = mem - & gt ; yanındaki , } 
  ver. renk = 'B' ; printf ( "% C - & gt; color = Siyah \ n " , . ver madde ) ; } } int ana ( ) { 
 queueInıt ( 1 ) ; // Kuyruk çıkacağı başlatılamıyor

 
 
 
  
 




 
 
   
    
    
   
  
  
 



 
 struct Vertex * arr =  ( struct köşe * ) malloc ( sizeof ( struct köşe ) * 6 ) ;
 
 arr [ 0 ] . item = 'A' ; 
 arr [ 1 ] . item = 'B' ; 
 arr [ 2 ] . item = 'C' ; 
 arr [ 3 ] . item = 'D' ; 
 arr [ 4 ] . item = 'E' ; 
 arr [ 5 ] . item = 'F' ; 
 //Bağlantılar atanıyor 
 arr [ 0 ] . connection =  ( struct members * ) malloc ( sizeof ( struct members ) ) ; 
 arr [ 0 ] . connection -& gt ; letter = 'D' ; 
 arr [ 0 ] . connection -& gt ; next = NULL ;
 
 arr [ 1 ] . connection =  ( struct members * ) malloc ( sizeof ( struct members ) ) ; 
 arr [ 1 ] . connection -& gt ; letter = 'C' ; 
 arr [ 1 ] . connection -& gt ; next = ( struct members * ) malloc ( sizeof ( struct members ) ) ; 
 arr [ 1 ] . connection -& gt ; next -& gt ; letter = 'E' ; 
 arr [ 1 ] . connection -& gt ; next -& gt ; next = NULL ;
 
 arr [ 2 ] . Bağlantı = null ;
 
 arr [ 3 ] . connection =  ( struct members * ) malloc ( sizeof ( struct members ) ) ; 
 arr [ 3 ] . connection -& gt ; letter = 'B' ; 
 arr [ 3 ] . connection -& gt ; next = ( struct members * ) malloc ( sizeof ( struct members ) ) ; 
 arr [ 3 ] . connection -& gt ; next -& gt ; letter = 'F' ; 
 arr [ 3 ] . connection -& gt ; next -& gt ; next = NULL ;
 
 arr [ 4 ] . connection =  ( struct members * ) malloc ( sizeof ( struct members ) ) ; 
 arr [ 4 ] . connection -& gt ; letter = 'D' ; 
 arr [ 4 ] . connection -& gt ; next = ( struct members * ) malloc ( sizeof ( struct members ) ) ; 
 arr [ 4 ] . connection -& gt ; next -& gt ; letter = 'C' ; 
 arr [ 4 ] . connection -& gt ; next -& gt ; next = ( struct members * ) malloc ( sizeof ( struct members ) ) ; 
 arr [ 4 ] . connection -& gt ; next -& gt ; next -& gt ; letter = 'F' ; 
 arr [ 4 ] . connection -& gt ; next -& gt ; next -& gt ; next = NULL ;
 
 arr [ 5 ] . Bağlantı = null ;
 
 bfs ( arr , 0 ) ; 
 iade  0 ; 
}