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.

  • ๐Ÿ“Š Niveau-orden: BFS besรธger hver node i den aktuelle dybde, fรธr den gรฅr videre til nรฆste niveau.
  • ๐Ÿ“ฅ Kรธbaseret: En FIFO-kรธ indeholder besรธgte noder, sรฅ naboer behandles i rรฆkkefรธlge.
  • ๐ŸŽฏ Korteste vej: I uvรฆgtede grafer finder BFS den korteste vej i fรฆrrest iterationer.
  • โœ… Ingen lรธkker: Markering af besรธgte noder forhindrer BFS i at sidde fast i en uendelig lรธkke.
  • ๐ŸŒ Applikationer: BFS driver webcrawlere, P2P-netvรฆrk, navigation og netvรฆrksudsendelse.

Breadth First Search (BFS) algoritme med eksempel

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

Architecture af BFS Algorithm

  1. 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.
  2. 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.
  3. 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)

Arbejde med BFS-algoritmen

Hvert knudepunkt eller knudepunkt i grafen er kendt. For eksempel kan du markere noden som V.

Trin 2)

Arbejde med BFS-algoritmen

Hvis hjรธrne V ikke tilgรฅs, skal hjรธrne V tilfรธjes til BFS-kรธen.

Trin 3)

Arbejde med BFS-algoritmen

Start BFS-sรธgningen, og marker hjรธrne V som besรธgt efter afslutning.

Trin 4)

Arbejde med BFS-algoritmen

BFS-kรธen er stadig ikke tom, og fjern derfor toppunktet V pรฅ grafen fra kรธen.

Trin 5)

Arbejde med BFS-algoritmen

Hent alle de resterende hjรธrner pรฅ grafen, der stรธder op til hjรธrnet V.

Trin 6)

Arbejde med BFS-algoritmen

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)

Arbejde med BFS-algoritmen

BFS vil besรธge V1, markere den som besรธgt og slette den fra kรธen.

Eksempel BFS-algoritme

Trin 1)

Eksempel BFS-algoritme

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

Trin 2)

Eksempel BFS-algoritme

0 eller nul er blevet markeret som en rodnode.

Trin 3)

Eksempel BFS-algoritme

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

Trin 4)

Eksempel BFS-algoritme

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

Trin 5)

Eksempel BFS-algoritme

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.

Ofte Stillede Spรธrgsmรฅl

I AI udforsker BFS spiltilstande, gรฅdekonfigurationer og kort for at finde den korteste lรธsning, nรฅr alle trรฆk har samme pris. Det garanterer fรฆrrest trin, selvom det kan bruge meget hukommelse pรฅ store grafer.

Ja. AI-assistenter kan skrive BFS i Python, Java eller C++ ved hjรฆlp af en kรธ og et besรธgt sรฆt fra en almindelig beskrivelse. Test det pรฅ eksempelgrafer, da kanttilfรฆlde som frakoblede noder er lette at overse.

BFS udforsker en graf niveau for niveau ved hjรฆlp af en kรธ og finder den korteste sti i uvรฆgtede grafer. DFS udforsker sรฅ dybt som muligt langs hver gren ved hjรฆlp af en stak eller rekursion fรธr tilbagegรฅendetrackonge.

BFS kรธrer i O(V + E) tid, hvor V er antallet af hjรธrner og E er antallet af kanter, fordi hvert hjรธrne og hver kant undersรธges รฉn gang. Dens rumkompleksitet er O(V) for kรธen og det besรธgte sรฆt.

Opsummer dette indlรฆg med: