BFS ve DFS – Aralarındaki Fark

BFS ve DFS Arasındaki Temel Fark

  • BFS hedefe giden en kısa yolu bulurken, DFS bir alt ağacın en altına iner, sonra geri döner.tracteşekkürler.
  • BFS'nin tam biçimi Genişlik Öncelikli Arama'dır, DFS'nin tam biçimi ise Derinlik Öncelikli Arama'dır.
  • BFS, verileri saklamak için bir kuyruk kullanır. tracDFS, ziyaret edilecek bir sonraki konumun k sayısını saklar. Oysa DFS, saklamak için bir yığın kullanır. tracZiyaret edilecek bir sonraki konumun k'sı.
  • BFS ağaç seviyesine göre geçiş yaparken, DFS ağaç derinliğine göre geçiş yapar.
  • BFS, bir FIFO listesi kullanılarak uygulanır; Öte yandan DFS, bir LIFO listesi kullanılarak uygulanır.
  • BFS'de asla sonlu döngülere hapsolamazsınız, oysa DFS'de sonsuz döngülere hapsolabilirsiniz.
BFS ve DFS Arasındaki Fark
BFS ve DFS arasındaki fark

BFS nedir?

BFS, veriyi grafiklemek veya ağaç veya geçiş yapılarını aramak için kullanılan bir algoritmadır. Algoritma, bir grafikteki tüm anahtar düğümleri doğru bir genişlikte biçimde etkin bir şekilde ziyaret eder ve işaretler.

Bu algoritma bir grafikte tek bir düğüm (başlangıç ​​veya kaynak noktası) seçer ve ardından seçilen düğüme bitişik tüm düğümleri ziyaret eder. Algoritma başlangıç ​​düğümünü ziyaret edip işaretledikten sonra, ziyaret edilmemiş en yakın düğümlere doğru hareket eder ve bunları analiz eder.

Ziyaret edildikten sonra tüm düğümler işaretlenir. Bu yinelemeler, grafiğin tüm düğümleri başarıyla ziyaret edilip işaretlenene kadar devam eder. BFS'nin tam biçimi Genişlik öncelikli aramadır.

DFS nedir?

DFS, grafiklerde veya ağaçlarda derinlemesine gezinme veya bulma algoritmasıdır. Algoritmanın yürütülmesi kök düğümden başlar ve geri dönmeden önce her dalı keşfeder.tracDFS, bir yığın veri yapısı kullanarak bir sonraki düğümü hatırlar, elde eder ve herhangi bir yinelemede çıkmaz bir nokta göründüğünde aramaya başlar. DFS'nin tam açılımı Derinlik Öncelikli Arama'dır.

BFS ve DFS İkili Ağacı arasındaki fark

İşte BFS ve DFS arasındaki önemli farklar.

BFS DFS
BFS hedefe giden en kısa yolu bulur. DFS, bir alt ağacın en altına iner, sonra geri döner.tracteşekkürler.
BFS'nin tam biçimi Genişlik Öncelikli Arama'dır. DFS'nin tam biçimi Derinlik İlk Arama'dır.
Bir kuyruk kullanarak işlemleri yürütüyor. tracZiyaret edilecek bir sonraki konumun k'sı. Bir yığın kullanarak verileri saklar. tracZiyaret edilecek bir sonraki konumun k'sı.
BFS ağaç seviyesine göre geçiş yapar. DFS ağaç derinliğine göre hareket eder.
FIFO listesi kullanılarak uygulanır. LIFO listesi kullanılarak uygulanır.
DFS'ye kıyasla daha fazla bellek gerektirir. BFS'ye kıyasla daha az bellek gerektirir.
Bu algoritma en sığ yol çözümünü verir. Bu algoritma en sığ yol çözümünü garanti etmez.
Geri dönmeye gerek yok.tracBFS'deki kral. Geri dönüşe ihtiyaç var.tracDFS'de kral.
Hiçbir zaman sonlu döngülere hapsolamazsınız. Sonsuz döngülere hapsolabilirsiniz.
Herhangi bir hedef bulamazsanız çözüm bulunmadan önce birçok düğümü genişletmeniz gerekebilir. Eğer herhangi bir hedef bulamazsanız, yaprak düğüm geri döner.tracKral ortaya çıkabilir.

BFS örneği

Aşağıdaki BFS örneğinde 6 köşesi olan bir grafik kullandık.

BFS örneği

) 1 Adım

BFS örneği

0 – 6 arasında değişen yedi sayıdan oluşan bir grafiğiniz var.

) 2 Adım

BFS örneği

0 veya sıfır kök düğüm olarak işaretlendi.

) 3 Adım

BFS örneği

0 ziyaret edilir, işaretlenir ve kuyruk veri yapısına eklenir.

) 4 Adım

BFS örneği

Geriye kalan 0 bitişik ve ziyaret edilmemiş düğüm ziyaret edilir, işaretlenir ve kuyruğa eklenir.

) 5 Adım

BFS örneği

Geçiş yinelemeleri tüm düğümler ziyaret edilene kadar tekrarlanır.

DFS örneği

Aşağıdaki DFS örneğinde 5 köşesi olan yönlendirilmemiş bir grafik kullandık.

DFS örneği

) 1 Adım

DFS örneği

0. köşeden başladık. Algoritma, onu ziyaret edilen listeye koyarak ve aynı anda tüm bitişik köşelerini veri yapısı yığın denir.

) 2 Adım

DFS örneği

Yığının en üstünde yer alan elemanı örneğin 1’i ziyaret edecek ve onun bitişik düğümlerine gideceksiniz. Bunun nedeni 0'ın zaten ziyaret edilmiş olmasıdır. Bu nedenle 2. köşeyi ziyaret ediyoruz.

) 3 Adım

DFS örneği

Vertex 2'nin 4'te ziyaret edilmemiş yakın bir köşesi var. Bu nedenle bunu yığına ekleyip ziyaret ediyoruz.

) 4 Adım

DFS örneği

Son olarak son köşe 3'ü ziyaret edeceğiz, ziyaret edilmemiş bitişik düğümleri yoktur. Grafiğin geçişini DFS algoritmasını kullanarak tamamladık.

DFS örneği

BFS Uygulamaları

İşte BFS Uygulamaları:

Ağırlıklandırılmamış Grafikler

BFS algoritması, grafiğin tüm köşelerini mümkün olan en kısa sürede ve yüksek doğrulukla ziyaret etmek için en kısa yolu ve minimum yayılan ağacı kolayca oluşturabilir.

P2P Ağları

BFS, eşler arası bir ağdaki tüm en yakın veya komşu düğümleri bulmak için uygulanabilir. Bu, gerekli verileri daha hızlı bulacaktır.

Web Tarayıcıları

Arama motorları veya web tarayıcıları, BFS'yi kullanarak kolayca birden fazla düzeyde dizin oluşturabilir. BFS uygulaması kaynaktan, yani web sayfasından başlar ve ardından bu kaynaktan gelen tüm bağlantıları ziyaret eder.

Ağ Yayıncılığı

Yayınlanan bir paket, adresine sahip olduğu tüm düğümleri bulmak ve ulaşmak için BFS algoritması tarafından yönlendirilir.

DFS Uygulamaları

İşte DFS'nin önemli uygulamaları:

Ağırlıklı Grafik

Ağırlıklı bir grafikte, DFS grafik geçişi en kısa yol ağacını ve minimum yayılan ağacı oluşturur.

Grafikteki Döngüyü Tespit Etme

DFS sırasında bir arka kenar bulursak grafiğin bir döngüsü vardır. Bu nedenle grafik için DFS çalıştırmalı ve arka kenarları doğrulamalıyız.

Yol bulma

İki köşe arasındaki yolu aramak için DFS algoritmasında uzmanlaşabiliriz.

Topolojik Sıralama

Öncelikle iş grupları arasında verilen bağımlılıklardan işleri planlamak için kullanılır. Bilgisayar bilimlerinde talimat planlamada, veri serileştirmede, mantık sentezinde, derleme görevlerinin sırasının belirlenmesinde kullanılır.

Bir Grafiğin Güçlü Bağlantılı Bileşenlerini Arama

DFS grafiğinde, grafikteki her köşeden diğer kalan köşelere bir yol olduğunda kullanılır.

Bulmacaları Tek Bir Çözümle Çözmek

DFS algoritması, ziyaret edilen kümedeki mevcut yol üzerindeki düğümleri dahil ederek bir labirentin tüm çözümlerini arayacak şekilde kolayca uyarlanabilir.

Bu yazıyı şu şekilde özetleyin: