BFS vs DFS - Forskjellen mellom dem

Nรธkkelforskjell mellom BFS og DFS

  • BFS finner den korteste veien til destinasjonen, mens DFS gรฅr til bunnen av et undertre, og deretter tilbaketracks.
  • Den fullstendige formen for BFS er Breadth-First Search, mens den fullstendige formen for DFS er Depth-First Search.
  • BFS bruker en kรธ for รฅ holde track av neste sted รฅ besรธke. mens DFS bruker en stakk for รฅ holde track av neste sted รฅ besรธke.
  • BFS traverserer etter trenivรฅ, mens DFS traverserer etter tredybde.
  • BFS er implementert ved hjelp av en FIFO-liste; pรฅ den annen side implementeres DFS ved hjelp av en LIFO-liste.
  • I BFS kan du aldri bli fanget inn i endelige lรธkker, mens i DFS kan du bli fanget i uendelige lรธkker.
Forskjellen mellom BFS og DFS
Forskjellen mellom BFS og DFS

Hva er BFS?

BFS er en algoritme som brukes til รฅ grafere data eller sรธke i tre eller krysse strukturer. Algoritmen besรธker og merker effektivt alle nรธkkelnodene i en graf pรฅ en nรธyaktig breddevis mรฅte.

Denne algoritmen velger en enkelt node (initial- eller kildepunkt) i en graf og besรธker deretter alle nodene ved siden av den valgte noden. Nรฅr algoritmen besรธker og markerer startnoden, beveger den seg mot de nรฆrmeste ubesรธkte nodene og analyserer dem.

Nรฅr de er besรธkt, er alle noder merket. Disse iterasjonene fortsetter til alle nodene i grafen har blitt besรธkt og merket. Den fullstendige formen for BFS er Breadth-first-sรธket.

Hva er DFS?

DFS er en algoritme for รฅ finne eller krysse grafer eller trรฆr i dybderetning. Utfรธrelsen av algoritmen begynner ved rotnoden og utforsker hver gren fรธr den gรฅr tilbake.trackonge. Den bruker en stakkdatastruktur for รฅ huske, for รฅ hente det pรฅfรธlgende hjรธrnet og for รฅ starte et sรธk nรฅr en blindvei dukker opp i en iterasjon. Den fulle formen for DFS er dybde-fรธrst-sรธk.

Forskjellen mellom BFS og DFS Binary Tree

Her er de viktige forskjellene mellom BFS og DFS.

BFS DFS
BFS finner den korteste veien til destinasjonen. DFS gรฅr til bunnen av et undertre, deretter tilbaketracks.
Den fullstendige formen for BFS er Breadth-First Search. Den fullstendige formen for DFS er Depth First Search.
Den bruker en kรธ for รฅ holde track av neste sted รฅ besรธke. Den bruker en stabel for รฅ holde track av neste sted รฅ besรธke.
BFS krysser i henhold til trenivรฅ. DFS krysser i henhold til tredybden.
Den er implementert ved hjelp av FIFO-liste. Den er implementert ved hjelp av LIFO-listen.
Det krever mer minne sammenlignet med DFS. Det krever mindre minne sammenlignet med BFS.
Denne algoritmen gir den grunneste veilรธsningen. Denne algoritmen garanterer ikke den grunneste veilรธsningen.
Det er ikke behov for ryggtrackonge i BFS. Det er behov for ryggtrackonge i DFS.
Du kan aldri bli fanget i endelige lรธkker. Du kan bli fanget i uendelige lรธkker.
Hvis du ikke finner noe mรฅl, kan det hende du mรฅ utvide mange noder fรธr lรธsningen blir funnet. Hvis du ikke finner noe mรฅl, gรฅr bladnoden tilbaketrackonge kan forekomme.

Eksempel pรฅ BFS

I fรธlgende eksempel pรฅ BFS har vi brukt graf med 6 toppunkter.

Eksempel pรฅ BFS

Trinn 1)

Eksempel pรฅ BFS

Du har en graf med syv tall fra 0 โ€“ 6.

Trinn 2)

Eksempel pรฅ BFS

0 eller null er merket som en rotnode.

Trinn 3)

Eksempel pรฅ BFS

0 besรธkes, merkes og settes inn i kรธdatastrukturen.

Trinn 4)

Eksempel pรฅ BFS

Gjenvรฆrende 0 tilstรธtende og ubesรธkte noder besรธkes, merkes og settes inn i kรธen.

Trinn 5)

Eksempel pรฅ BFS

Gjennomgรฅende iterasjoner gjentas til alle noder er besรธkt.

Eksempel pรฅ DFS

I fรธlgende eksempel pรฅ DFS har vi brukt en urettet graf med 5 toppunkter.

Eksempel pรฅ DFS

Trinn 1)

Eksempel pรฅ DFS

Vi har startet fra toppunkt 0. Algoritmen begynner med รฅ sette den inn i besรธkslisten og samtidig sette alle tilstรธtende toppunkter i data struktur kalt stack.

Trinn 2)

Eksempel pรฅ DFS

Du vil besรธke elementet, som er pรฅ toppen av stabelen, for eksempel 1 og gรฅ til dets tilstรธtende noder. Det er fordi 0 allerede er besรธkt. Derfor besรธker vi toppunkt 2.

Trinn 3)

Eksempel pรฅ DFS

Toppunkt 2 har et ubesรธkt nรฆrliggende toppunkt i 4. Derfor legger vi det til i stabelen og besรธker det.

Trinn 4)

Eksempel pรฅ DFS

Til slutt vil vi besรธke den siste toppunktet 3, den har ingen ubesรธkte tilstรธtende noder. Vi har fullfรธrt kryssingen av grafen ved hjelp av DFS-algoritmen.

Eksempel pรฅ DFS

Applikasjoner av BFS

Her er applikasjoner av BFS:

Uvektede grafer

BFS-algoritmen kan enkelt lage den korteste veien og et minimumsspenningstre for รฅ besรธke alle toppunktene i grafen pรฅ kortest mulig tid med hรธy nรธyaktighet.

P2P-nettverk

BFS kan implementeres for รฅ lokalisere alle de nรฆrmeste eller nรฆrliggende nodene i et peer-to-peer-nettverk. Dette vil finne de nรธdvendige dataene raskere.

Webcrawlere

Sรธkemotorer eller webcrawlere kan enkelt bygge flere nivรฅer av indekser ved รฅ bruke BFS. BFS-implementering starter fra kilden, som er nettsiden, og deretter besรธker den alle koblingene fra den kilden.

Nettverkskringkasting

En kringkastet pakke blir guidet av BFS-algoritmen for รฅ finne og nรฅ alle nodene den har adressen til.

Applikasjoner av DFS

Her er viktige bruksomrรฅder for DFS:

Vektet graf

I en vektet graf genererer DFS-graftraversering det korteste banetreet og minimumspenningstreet.

Oppdage en syklus i en graf

En graf har en syklus hvis vi fant en bakkant under DFS. Derfor bรธr vi kjรธre DFS for grafen og verifisere for bakkanter.

Stifinning

Vi kan spesialisere oss i DFS-algoritmen for รฅ sรธke en vei mellom to toppunkter.

Topologisk sortering

Den brukes fรธrst og fremst til รฅ planlegge jobber fra de gitte avhengighetene blant gruppen av jobber. I informatikk brukes det i instruksjonsplanlegging, dataserialisering, logikksyntese, bestemme rekkefรธlgen pรฅ kompileringsoppgaver.

Sรธke sterkt sammenkoblede komponenter i en graf

Den brukes i DFS-grafen nรฅr det er en bane fra hvert eneste toppunkt i grafen til andre gjenvรฆrende toppunkter.

Lรธse gรฅter med bare รฉn lรธsning

DFS-algoritmen kan enkelt tilpasses for รฅ sรธke i alle lรธsninger til en labyrint ved รฅ inkludere noder pรฅ den eksisterende banen i det besรธkte settet.

Oppsummer dette innlegget med: