Breadth First Search (BFS) Algoritme med EKSEMPEL
โก Smart opsummering
Breadth First Search (BFS) er en algoritme, der gennemlรธber en graf niveau for niveau og besรธger alle naboer til en node, fรธr den bevรฆger sig dybere. Den bruger en FIFO-kรธ og finder den korteste sti i uvรฆgtede grafer uden uendelige lรธkker.
Hvad er BFS Algorithm (Bredth-First Search)?
Bredde-fรธrst-sรธgning (BFS) er en algoritme, der bruges til at tegne data grafisk, sรธge i et trรฆ eller gennemgรฅ strukturer. Den fulde form af BFS er bredde-fรธrst-sรธgning.
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. Husk, at BFS fรฅr adgang til disse noder รฉn efter รฉn.
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.
Hvad er Graph-traversals?
En grafgennemgang er en almindeligt anvendt metode til at lokalisere toppunktet i grafen. Det er en avanceret sรธgealgoritme, der kan analysere grafen med hastighed og prรฆcision sammen med markering af rรฆkkefรธlgen af โโde besรธgte hjรธrner. Denne proces giver dig mulighed for hurtigt at besรธge hver knude i en graf uden at vรฆre lรฅst i en uendelig lรธkke.
Arkitekturen af โโBFS algoritme
- Pรฅ de forskellige dataniveauer kan du markere enhver node som start- eller initialnode for at begynde at krydse. BFS'en vil besรธge noden, markere den som besรธgt og placere den i kรธen.
- Nu vil BFS'en besรธge de nรฆrmeste og ubesรธgte noder og markere dem. Disse vรฆrdier fรธjes ogsรฅ til kรธen. Kรธen fungerer pรฅ FIFO model.
- Pรฅ lignende mรฅde analyseres, markeres og fรธjes de resterende nรฆrmeste og ubesรธgte noder pรฅ grafen til kรธen. Disse elementer slettes fra kรธen, efterhรฅnden som de modtages, og udskrives som resultat.
Hvorfor har vi brug for BFS-algoritme?
Der er adskillige grunde til at bruge BFS-algoritmen til at sรธge i dit datasรฆt. Nogle af de vigtigste aspekter, der gรธr denne algoritme til dit fรธrstevalg, er:
- BFS er nyttig til at analysere knudepunkterne i en graf og konstruere den korteste vej til at krydse gennem disse.
- BFS kan krydse en graf i det mindste antal iterationer.
- Arkitekturen af โโBFS-algoritmen er enkel og robust.
- Resultatet af BFS-algoritmen har et hรธjt niveau af nรธjagtighed i sammenligning med andre algoritmer.
- BFS-iterationer er problemfrie, og der er ingen mulighed for, at denne algoritme bliver fanget af et problem med uendelig slรธjfe.
Hvordan virker BFS-algoritmen?
Grafgennemgang krรฆver, at algoritmen besรธger, tjekker og/eller opdaterer hver eneste ubesรธgte node i en trรฆlignende struktur. Grafgennemgange er kategoriseret efter den rรฆkkefรธlge, de besรธger knudepunkterne pรฅ grafen i.
BFS-algoritmen starter operationen fra den fรธrste eller startnode i en graf og gennemgรฅr den grundigt. Nรฅr fรธrst den har krydset den indledende node, besรธges og markeres det nรฆste ikke-gennemlรธbede toppunkt i grafen.
Derfor kan man sige, at alle knuder, der stรธder op til det aktuelle hjรธrne, besรธges og gennemlรธbes i den fรธrste iteration. En simpel kรธmetode anvendes til at implementere en BFS-algoritme, og den bestรฅr af fรธlgende trin:
Trin 1)
Hvert knudepunkt eller knudepunkt i grafen er kendt. For eksempel kan du markere noden som V.
Trin 2)
Hvis hjรธrne V ikke tilgรฅs, skal hjรธrne V tilfรธjes til BFS-kรธen.
Trin 3)
Start BFS-sรธgningen, og marker hjรธrne V som besรธgt efter afslutning.
Trin 4)
BFS-kรธen er stadig ikke tom, og fjern derfor toppunktet V pรฅ grafen fra kรธen.
Trin 5)
Hent alle de resterende hjรธrner pรฅ grafen, der stรธder op til hjรธrnet V.
Trin 6)
For hvert tilstรธdende hjรธrne, lad os sige V1, hvis det ikke er besรธgt endnu, tilfรธj sรฅ V1 til BFS-kรธen.
Trin 7)
BFS vil besรธge V1, markere den som besรธgt og slette den fra kรธen.
Eksempel BFS-algoritme
Trin 1)
Du har en graf med syv tal fra 0 til 6.
Trin 2)
0 eller nul er blevet markeret som en rodnode.
Trin 3)
0 besรธges, markeres og indsรฆttes i kรธens datastruktur.
Trin 4)
De resterende 0-tilstรธdende og ubesรธgte noder besรธges, markeres og indsรฆttes i kรธen.
Trin 5)
Gennemgรฅende iterationer gentages, indtil alle noder er besรธgt.
Regler for BFS Algorithm
Her er vigtige regler for brug af BFS-algoritmen:
- En kรธ (FIFO โ Fรธrst ind, fรธrst ud) datastruktur bruges af BFS.
- Du markerer en hvilken som helst node i grafen som roden og begynder at gennemlรธbe dataene fra den.
- BFS gennemlรธber alle noderne i grafen og fortsรฆtter med at slippeping dem som fรฆrdige.
- BFS besรธger en tilstรธdende ubesรธgt node, markerer den som udfรธrt og indsรฆtter den i en kรธ.
- Den fjerner det forrige hjรธrne fra kรธen, hvis der ikke findes et tilstรธdende hjรธrne.
- BFS-algoritmen itererer, indtil alle hjรธrner i grafen er gennemlรธbet og markeret som fuldfรธrt.
- Der er ingen slรธjfer forรฅrsaget af BFS under passage af data fra nogen knude.
Anvendelser af BFS Algorithm
Lad os tage et kig pรฅ nogle af de virkelige applikationer, hvor en BFS-algoritmeimplementering kan vรฆre yderst effektiv.
- Uvรฆgtede grafer: BFS-algoritmen kan nemt oprette den korteste sti og et minimalt udspรฆndende trรฆ for at besรธge alle grafens hjรธrner 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.
- Navigationssystemer: BFS kan hjรฆlpe med at finde alle de nรฆrliggende steder fra hoved- eller kildeplaceringen.
- Netvรฆrksudsendelse: En udsendt pakke styres af BFS-algoritmen til at finde og nรฅ alle de noder, den har adressen til.














