BFS vs DFS - Forskel mellem dem

Nรธgleforskel mellem BFS og DFS

  • BFS finder den korteste vej til destinationen, hvorimod DFS gรฅr til bunden af โ€‹โ€‹et undertrรฆ og derefter tilbagetracks.
  • Den fulde form for BFS er Breadth-First Search, mens den fulde form af DFS er Depth-First Search.
  • BFS bruger en kรธ til at holde track af det nรฆste sted at besรธge. hvorimod DFS bruger en stak til at holde track af det nรฆste sted at besรธge.
  • BFS krydser efter trรฆniveau, mens DFS krydser efter trรฆdybde.
  • BFS implementeres ved hjรฆlp af en FIFO-liste; pรฅ den anden side implementeres DFS ved hjรฆlp af en LIFO-liste.
  • I BFS kan du aldrig blive fanget i endelige loops, hvorimod du i DFS kan blive fanget i uendelige loops.
Forskellen mellem BFS og DFS
Forskellen mellem BFS og DFS

Hvad er BFS?

BFS er en algoritme, der bruges til at tegne data eller sรธge i trรฆer eller krydse strukturer. Algoritmen besรธger og markerer effektivt alle nรธgleknuder i en graf pรฅ en nรธjagtig breddevis mรฅde.

Denne algoritme vรฆlger en enkelt node (initial- eller kildepunkt) i en graf og besรธger derefter alle noder, der stรธder op til den valgte node. Nรฅr algoritmen besรธger og markerer startknudepunktet, bevรฆger den sig mod de nรฆrmeste ubesรธgte knudepunkter og analyserer dem.

Nรฅr de er besรธgt, er alle noder markeret. Disse iterationer fortsรฆtter, indtil alle knudepunkterne i grafen er blevet besรธgt og markeret. Den fulde form for BFS er Breadth-first-sรธgningen.

Hvad er DFS?

DFS er en algoritme til at finde eller gennemlรธbe grafer eller trรฆer i dybdegรฅende retning. Udfรธrelsen af โ€‹โ€‹algoritmen begynder ved rodnoden og udforsker hver gren, fรธr den gรฅr tilbage.trackonge. Den bruger en stakdatastruktur til at huske, hente det efterfรธlgende hjรธrne og starte en sรธgning, nรฅr der opstรฅr en blindgyde i en iteration. Den fulde form for DFS er dybde-fรธrst-sรธgning.

Forskellen mellem BFS og DFS binรฆrt trรฆ

Her er de vigtige forskelle mellem BFS og DFS.

BFS DFS
BFS finder den korteste vej til destinationen. DFS gรฅr til bunden af โ€‹โ€‹et undertrรฆ og derefter tilbagetracks.
Den fulde form for BFS er Breadth-First Search. Den fulde form for DFS er Depth First Search.
Den bruger en kรธ til at holde track af det nรฆste sted at besรธge. Den bruger en stak til at holde track af det nรฆste sted at besรธge.
BFS krydser i henhold til trรฆniveau. DFS krydser i henhold til trรฆdybden.
Det er implementeret ved hjรฆlp af FIFO-listen. Det implementeres ved hjรฆlp af LIFO-listen.
Det krรฆver mere hukommelse sammenlignet med DFS. Det krรฆver mindre hukommelse sammenlignet med BFS.
Denne algoritme giver den laveste vejlรธsning. Denne algoritme garanterer ikke den laveste vejlรธsning.
Der er ikke behov for ryglรฆntrackonge i BFS. Der er behov for ryglรฆntrackonge i DFS.
Du kan aldrig blive fanget i endelige slรธjfer. Du kan blive fanget i uendelige slรธjfer.
Hvis du ikke finder noget mรฅl, skal du muligvis udvide mange noder, fรธr lรธsningen er fundet. Hvis du ikke finder noget mรฅl, skal bladknuden vende tilbagetrackonge kan forekomme.

Eksempel pรฅ BFS

I det fรธlgende eksempel pรฅ BFS har vi brugt graf med 6 hjรธrner.

Eksempel pรฅ BFS

Trin 1)

Eksempel pรฅ BFS

Du har en graf med syv tal fra 0 til 6.

Trin 2)

Eksempel pรฅ BFS

0 eller nul er blevet markeret som en rodnode.

Trin 3)

Eksempel pรฅ BFS

0 besรธges, markeres og indsรฆttes i kรธens datastruktur.

Trin 4)

Eksempel pรฅ BFS

Resterende 0 tilstรธdende og ubesรธgte noder besรธges, markeres og indsรฆttes i kรธen.

Trin 5)

Eksempel pรฅ BFS

Gennemgรฅende iterationer gentages, indtil alle noder er besรธgt.

Eksempel pรฅ DFS

I det fรธlgende eksempel pรฅ DFS har vi brugt en urettet graf med 5 hjรธrner.

Eksempel pรฅ DFS

Trin 1)

Eksempel pรฅ DFS

Vi er startet fra toppunkt 0. Algoritmen begynder med at lรฆgge den pรฅ listen over besรธgte og samtidig sรฆtte alle dens tilstรธdende hjรธrner i datastruktur kaldet stak.

Trin 2)

Eksempel pรฅ DFS

Du vil besรธge elementet, som er รธverst i stakken, for eksempel 1 og gรฅ til dets tilstรธdende noder. Det er fordi 0 allerede er besรธgt. Derfor besรธger vi vertex 2.

Trin 3)

Eksempel pรฅ DFS

Vertex 2 har et ubesรธgt nรฆrliggende vertex i 4. Derfor tilfรธjer vi det i stakken og besรธger det.

Trin 4)

Eksempel pรฅ DFS

Til sidst vil vi besรธge det sidste toppunkt 3, det har ingen ubesรธgte tilstรธdende noder. Vi har gennemfรธrt gennemgangen af โ€‹โ€‹grafen ved hjรฆlp af DFS-algoritme.

Eksempel pรฅ DFS

Anvendelser af BFS

Her er applikationer af BFS:

Uvรฆgtede grafer

BFS-algoritmen kan nemt skabe den korteste vej og et minimum spรฆndingstrรฆ for at besรธge alle hjรธrnerne af grafen pรฅ kortest mulig tid med hรธj nรธjagtighed.

P2P netvรฆrk

BFS kan implementeres til at lokalisere alle de nรฆrmeste eller tilstรธdende noder i et peer-to-peer-netvรฆrk. Dette vil finde de nรธdvendige data hurtigere.

Webcrawlere

Sรธgemaskiner eller webcrawlere kan nemt bygge flere niveauer af indekser ved at bruge BFS. BFS-implementering starter fra kilden, som er websiden, og derefter besรธger den alle links fra den kilde.

Netvรฆrksudsendelse

En udsendt pakke styres af BFS-algoritmen til at finde og nรฅ alle de noder, den har adressen til.

Anvendelser af DFS

Her er vigtige anvendelser af DFS:

Vรฆgtet graf

I en vรฆgtet graf genererer DFS-grafgennemlรธb det korteste vejtrรฆ og minimumspรฆndingstrรฆ.

Detektering af en cyklus i en graf

En graf har en cyklus, hvis vi fandt en bagkant under DFS. Derfor bรธr vi kรธre DFS for grafen og verificere for bagkanter.

Stifinding

Vi kan specialisere os i DFS-algoritmen til at sรธge en vej mellem to hjรธrner.

Topologisk sortering

Det bruges primรฆrt til at planlรฆgge job fra de givne afhรฆngigheder blandt gruppen af โ€‹โ€‹job. I datalogi bruges det i instruktionsplanlรฆgning, dataserialisering, logiksyntese, bestemmelse af rรฆkkefรธlgen af โ€‹โ€‹kompileringsopgaver.

Sรธgning efter stรฆrkt forbundne komponenter i en graf

Det bruges i DFS-grafen, nรฅr der er en sti fra hvert eneste knudepunkt i grafen til andre resterende knudepunkter.

Lรธs gรฅder med kun รฉn lรธsning

DFS-algoritmen kan nemt tilpasses til at sรธge i alle lรธsninger til en labyrint ved at inkludere noder pรฅ den eksisterende sti i det besรธgte sรฆt.

Opsummer dette indlรฆg med: