Önce genişlik aramada 'genişlik' ne demektir?


11

Önce genişlik arayışını öğreniyordum ve aklıma BFS neden böyle deniyor diye bir soru geldi. CLRS ile Algoritmalara Giriş kitabında , bunun için aşağıdaki nedeni okudum:

Önce genişlik araması bu şekilde adlandırılmıştır, çünkü keşfedilen ve keşfedilmemiş köşeler arasındaki sınırı sınırın genişliği boyunca eşit olarak genişletir.

Ancak, bu ifadenin anlamını anlayamıyorum. Bu kelime "sınır" ve o sınırın genişliği hakkında kafam karıştı.

Peki, birisi bu soruyu benim gibi yeni başlayanlar için anlaşılması kolay bir şekilde cevaplayabilir mi?


4
Bazı okuyucular İngilizce kelimenin anlamını bilmiyorsa (bu teknik terimin bir parçası olarak kullanımının dışında): merriam-webster.com/dictionary/breadth veya dictionary.cambridge.org/dictionary/english/breadth . Fiziksel bir nesnenin boyutu / şekli hakkında konuşuyorsanız, "genişlik" e benzer, "derinlik" ten farklı bir boyuttur. Mecazi anlamda bilgi derinliği (bir konuda uzman) ve genişlik (çok sayıda konu) gibi.
Peter Cordes

Yanıtlar:


22

Aramayı temsil etmek için kullanılan veri yapısını düşünün. BFS'de bir kuyruk kullanırsınız. Görünmeyen bir düğümle karşılaşırsanız, kuyruğa eklersiniz.

"Sınır", arama verisi yapısındaki tüm düğümlerin kümesidir. Sıra, sınırdaki tüm düğümlerden sırayla yinelenecek ve böylece sınırın genişliği boyunca tekrarlanacaktır . DFS her zaman en son keşfedilen durumu yığının dışına çıkarır, böylece her zaman sınırın en derin kısmı üzerinde yinelenir.

Aşağıdaki resmi düşünün. DFS'nin doğrudan ağacın en derin kısımlarına nasıl gittiğine dikkat edin, BFS ise her seviyenin genişliği boyunca tekrar eder.

dfs bfs

Burada resim


2
Bence sınır kelimesi keşfedilen düğümlerin kenarına işaret edebilir. Sadece keşfettiğin zaman asınır öyledir a. Keşfettiğiniz zaman a, b, c, sınır olduğunu b, c. Keşfettiğiniz zaman a, b, c, d, e, f, g, hudut olan d, e, f, g. Başka bir deyişle, keşfedilen ve henüz ötesinde arama yapmadığımız düğümler.
Theodoros Chatzigiannakis

Bence bu adil bir nokta, ama bence “sınır”, yukarıdaki genel açıklama hala çalışıyorken, birden çok şekilde yorumlanabilir.
Throckmorton

2

Verdiğiniz alıntı "keşfedilen ve keşfedilmemiş köşe noktaları arasındaki sınır" diyor. Yazarın bahsettiği sınır budur: keşfedilen ve keşfedilmemiş köşeler arasındaki sınır. Henüz hiçbir şey görmediğiniz bazı köşeleriniz var. Ayrıca, her şeyi gördüğünüz bazı köşe noktalarınız da var. Ve sonra arada köşeler var. Bunlar baktığınız köşe noktalarıdır, ancak henüz tüm çocuklarını yüklemediniz. Bu sınır.

Tartışmalar bunu daha ayrıntılı olarak tartışır:

İlerlemeyi izlemek için BFS renkleri her bir tepe noktasını beyaz, gri veya siyah olarak gösterir. Tüm köşeler beyazla başlar ve daha sonra gri ve sonra siyaha dönüşebilir. Köşe, arama sırasında ilk kez karşılaşıldığında keşfedilir ve bu sırada beyaz değildir. Gri ve siyah köşeler keşfedilmiştir, ancak BFS aramanın BF tarzında ilerlemesini sağlamak için aralarında ayrım yapar.
...
her tepe noktası başlangıçta beyazdır, aramada keşfedildiğinde grileşir ve bittiğinde, yani bitişiklik listesi tamamen incelendiğinde karartılır.

Böylece tüm köşeler beyaz renkle başlar (keşfedilmemiş). Bir düğüm bulunduğunda gri renklidir (sınır). İşaret ettiği her şey keşfedildiğinde, siyah renklidir (tamamen keşfedildi). Sınır keşfedilen, ancak keşfedilmemiş çocukları olan nokta kümesidir.

Web sitesinde bir şey aradığınızı varsayalım. İlk önce ana sayfaya gidersiniz. Bunun "hayvanlar" olarak etiketlendiğini varsayalım. Sınır şu anda {"hayvanlar"}. Ana sayfaya bakıyorsunuz ve ne aradığınızı görmüyorsunuz. Ancak, "dörtlü" ve "solucan" olmak üzere iki sayfaya daha bağlantı olduğunu fark ettiniz. Yani "dörtlü" bağlantısına tıklayın. Şimdi sınır {"hayvanlar", "dörtlü"}. "Dörtlü" lere bakıyorsunuz ve aradığınızı bulamıyorsunuz. Sonra ne yapacaksın? "Dörtlü" bağlantılarını arayabilir ve bunları takip edebilir veya "hayvanlar" a geri dönebilir ve "solucanlar" bağlantısını tıklayabilirsiniz. Birincisi, önce derinlikli bir araştırma, ikincisi ise önce genişlikli bir arama.

"derinlik", bir düğüme ulaşmak için kök düğümden kaç bağlantıya karşılık gelirken, "genişlik" aynı derinlikteki düğümlere karşılık gelir. Yukarıdaki örnekte, BFS "hayvanlara" başlar ve önce derinliğin tüm düğümlerine bakar, bu yüzden önce "dörtlü" ve "solucanlara" bakar. Tüm derinlik-1 düğümlerine baktıktan sonra, tüm bu düğümlerin sınırını genişletir; yani derinlik-2 düğümlerinin herhangi birine bakmadan önce tüm derinlik-1 düğümlerinin çocuklarına bakar. Örneğin, "dörtlü" sayfadaki bağlantılardan biri "primatlar" ise, "primatlar" sayfasındaki bağlantılardan herhangi birine bakmadan önce "solucanlar" sayfasındaki tüm bağlantılara bakar.


1

BFS algoritması tepe itibaren yürütülür varsayalım . Dışarı gönderilen bir dalga düşünün (suda dalga veya tsunami gibi). Bir kez adımdan sonra, dalga tüm komşuları ulaşmış olurdu . İki zaman aşamasından sonra, dalga (ya da "ziyaret edilen") bir mesafede en az tüm köşe ulaşmış olur den . Ve bunun gibi. aaa2a

Herhangi bir zamanda, dalganın sınırı tam olarak kuyruk veri yapısında saklanan köşelerdir (bu köşeler ziyaret edilmiştir, ancak daha fazla araştırılmamıştır).

Bu nedenle, dalga ilk mesafe 1 de tüm noktaların bütün "genişliği" ulaştığı . Bir süre sonra, dalga tüm genişliği başlangıç ​​noktasından kadar bir mesafeye kadar kaplardı . aa

Mesafe en köşe grubu gelen adlandırılır vertex göre grafiğinin mesafe bölümünde inci bir tabaka . Köşe kümesi, bu katmanların ayrık birleşimidir . inci tabakadır , birinci tabaka komşuları kümesidir ikinci tabakası, mesafe için köşe kümesidir böylece ikidir ve. BFS algoritması, grafiğin köşe noktalarını belirli bir sırayla katman katman ziyaret eder. Her katman tüm genişliği kapsar, ancak farklı katmanlar farklı derinliktedir.kaka(k0)0{a}aa

Öte yandan, DFS algoritması, bir yöne dönmeden ve sonraki keşfedilmemiş komşusunu ziyaret etmeden önce bir yönde olabildiğince derin bir şekilde keşfeder (yani, ilk komşusunu, sonra komşusunu, sonra komşusunu vb.) . Bu algoritma ilk önce komşuları ziyaret etmek yerine derinlere iniyor. aaa

Böylece, DFS ve BFS köşeleri ziyaret ettikleri sıraya göre farklılık gösterir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.