BFS vs DFS: Znajte razliku

Sadržaj:

Anonim

Što je BFS?

BFS je algoritam koji se koristi za grafički prikaz podataka ili pretraživanje stabla ili obilaženje struktura. Algoritam učinkovito posjećuje i označava sve ključne čvorove u grafikonu na precizan način.

Ovaj algoritam odabire jedan čvor (početnu ili izvornu točku) u grafikonu, a zatim posjećuje sve čvorove susjedne odabranom čvoru. Jednom kada algoritam posjeti i označi početni čvor, tada se kreće prema najbližim ne posjećenim čvorovima i analizira ih.

Jednom posjećeni svi čvorovi su označeni. Te se ponavljanja nastavljaju sve dok svi čvorovi grafikona nisu uspješno posjećeni i označeni. Cjeloviti oblik BFS-a je pretraga koja je prva širina.

U ovom BSF vs. DFS Binarno stablo tutorial, naučit ćete:

  • Što je BFS?
  • Što je DFS?
  • Primjer BFS-a
  • Primjer DFS-a
  • Razlika između BFS i DFS binarnog stabla
  • Primjene BFS-a
  • Primjene DFS-a

Što je DFS?

DFS je algoritam za pronalaženje ili prelazak grafova ili stabala u smjeru dubine. Izvršenje algoritma započinje na korijenskom čvoru i istražuje svaku granu prije povratka unatrag. Koristi strukturu podataka snopa za pamćenje, dobivanje sljedećeg vrha i započinjanje pretraživanja, kad god se u bilo kojoj iteraciji pojavi slijepa ulica. Puni oblik DFS-a je pretraga po dubini.

Primjer BFS-a

U sljedećem primjeru DFS-a koristili smo graf koji ima 6 vrhova.

Primjer BFS-a

Korak 1)

Imate grafikon od sedam brojeva u rasponu od 0 - 6.

Korak 2)

0 ili nula označena je kao korijenski čvor.

Korak 3)

0 je posjećeno, označeno i umetnuto u strukturu podataka o redu čekanja.

Korak 4)

Preostalih 0 susjednih i ne posjećenih čvorova posjećuju se, označavaju i ubacuju u red čekanja.

Korak 5)

Iteracije prelaska ponavljaju se dok se ne posjete svi čvorovi.

Primjer DFS-a

U sljedećem primjeru DFS-a koristili smo neusmjereni graf koji ima 5 vrhova.

Korak 1)

Krenuli smo od vrha 0. Algoritam započinje stavljanjem na posjećeni popis i istovremeno stavljanjem svih njegovih susjednih vrhova u strukturu podataka koja se naziva stog.

Korak 2)

Posjetit ćete element koji se nalazi na vrhu stoga, na primjer 1, i otići do njegovih susjednih čvorova. To je zato što je 0 već posjećeno. Stoga posjećujemo vrh 2.

Korak 3)

Vrh 2 ima ne posjećeni obližnji vrh u 4. Stoga ga dodajemo u skup i posjećujemo.

Korak 4)

Konačno, posjetit ćemo posljednji vrh 3, on nema nijedan neposjećeni susjedni čvor. Završili smo zaokret grafa pomoću algoritma DFS.

Razlika između BFS i DFS binarnog stabla

BFS DFS
BFS pronalazi najkraći put do odredišta. DFS ide na dno podstabla, a zatim se vraća.
Puni oblik BFS-a je pretraživanje od prve širine. Puni oblik DFS-a je Dubinsko prvo pretraživanje.
Koristi red za bilježenje sljedeće lokacije koju treba posjetiti. Koristi snop za praćenje sljedećeg mjesta koje treba posjetiti.
BFS prolazi kroz razinu stabla. DFS prelazi prema dubini stabla.
Provodi se pomoću FIFO popisa. Provodi se pomoću LIFO popisa.
Zahtijeva više memorije u usporedbi s DFS-om. Zahtijeva manje memorije u usporedbi s BFS-om.
Ovaj algoritam daje rješenje s najplićom stazom. Ovaj algoritam ne garantira rješenje s najplićom stazom.
U BFS-u nije potrebno vraćanje unatrag. U DFS-u postoji potreba za povratom unatrag.
Nikada ne možete biti zarobljeni u konačne petlje. Možete biti zarobljeni u beskonačne petlje.
Ako ne pronađete nikakav cilj, možda ćete trebati proširiti mnogo čvorova prije nego što se rješenje pronađe. Ako ne pronađete nikakav cilj, može se dogoditi povrat unatrag lisnih čvorova.

Primjene BFS-a

Evo aplikacija BFS-a:

Neponderirani grafikoni:

BFS algoritam može lako stvoriti najkraći put i minimalno rasponično stablo za posjećivanje svih vrhova grafa u najkraćem mogućem roku s velikom preciznošću.

P2P mreže:

BFS se može implementirati za lociranje svih najbližih ili susjednih čvorova u peer to peer mreži. Tako ćete brže pronaći potrebne podatke.

Web alati za indeksiranje:

Tražilice ili alati za indeksiranje weba mogu jednostavno izgraditi više razina indeksa koristeći BFS. Implementacija BFS-a započinje od izvora, a to je web stranica, a zatim posjećuje sve veze s tog izvora.

Mrežno emitiranje:

Emitirani paket vođen je BFS algoritmom kako bi pronašao i došao do svih čvorova kojima ima adresu.

Primjene DFS-a

Evo važnih aplikacija DFS-a:

Ponderirani grafikon:

U ponderiranom grafu, DFS prelazak grafa generira stablo najkraće staze i minimalno rasponično stablo.

Otkrivanje ciklusa u grafikonu:

Grafikon ima ciklus ako smo pronašli stražnji rub tijekom DFS-a. Stoga bismo trebali pokrenuti DFS za graf i provjeriti za stražnje rubove.

Traženje puta:

Možemo se specijalizirati za algoritam DFS za traženje puta između dva vrha.

Topološko sortiranje:

To se prvenstveno koristi za raspoređivanje radnih mjesta od ponuđenih ovisnosti među skupinu poslova. U računalnoj znanosti koristi se u raspoređivanju instrukcija, serializaciji podataka, sintezi logike, određivanju redoslijeda zadataka kompilacije.

Traženje čvrsto povezanih komponenata grafa:

Upotrebljava se u DFS grafu kada postoji put od svakog vrha u grafu do ostalih preostalih vrhova.

Rješavanje zagonetki samo jednim rješenjem:

DFS algoritam može se lako prilagoditi pretraživanju svih rješenja labirinta uključivanjem čvorova na postojeću stazu u posjećeni skup.

KLJUČNE RAZLIKE:

  • BFS pronalazi najkraći put do odredišta, dok DFS ide na dno podstabla, a zatim se vraća.
  • Puni oblik BFS-a je pretraživanje širine prve, dok je puni oblik DFS-a dubinsko pretraživanje.
  • BFS koristi red za praćenje sljedećeg mjesta koje treba posjetiti. dok DFS koristi stog za praćenje sljedećeg mjesta koje treba posjetiti.
  • BFS prolazi prema razini stabla, dok DFS prolazi prema dubini stabla.
  • BFS se implementira pomoću FIFO liste, s druge strane DFS se primjenjuje pomoću LIFO liste.
  • U BFS-u nikada ne možete biti zarobljeni u konačne petlje, dok u DFS-u možete biti zarobljeni u beskonačne petlje.