Breadth First Search (BFS) Algoritme med EKSEMPEL
โก Smart oppsummering
Breddesรธk (BFS) er en algoritme som gรฅr gjennom en graf nivรฅ for nivรฅ, og besรธker alle naboer til en node fรธr den gรฅr dypere. Den bruker en FIFO-kรธ og finner den korteste banen i uvektede grafer uten uendelige lรธkker.
Hva er BFS Algorithm (Bredth-First Search)?
Bredde-fรธrst-sรธk (BFS) er en algoritme som brukes til รฅ lage grafer for data, sรธke i et tre eller krysse strukturer. Den fulle formen for BFS er bredde-fรธrst-sรธk.
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 (start- eller kildepunkt) i en graf og besรธker deretter alle nodene ved siden av den valgte noden. Husk at BFS fรฅr tilgang til disse nodene รฉn etter รฉn.
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.
Hva er Graph-traversals?
En grafovergang er en ofte brukt metodikk for รฅ lokalisere toppunktet i grafen. Det er en avansert sรธkealgoritme som kan analysere grafen med hastighet og presisjon sammen med markering av sekvensen til de besรธkte toppunktene. Denne prosessen lar deg raskt besรธke hver node i en graf uten รฅ vรฆre lรฅst i en uendelig slรธyfe.
Arkitekturen til BFS-algoritmen
- I de ulike datanivรฅene kan du markere en hvilken som helst node som start- eller innledende node for รฅ begynne รฅ bevege deg. BFS-en vil besรธke noden, markere den som besรธkt og plassere den i kรธen.
- Nรฅ vil BFS besรธke de nรฆrmeste og ubesรธkte nodene og markere dem. Disse verdiene legges ogsรฅ til i kรธen. Kรธen fungerer pรฅ FIFO-modell.
- Pรฅ lignende mรฅte analyseres, merkes og legges de gjenvรฆrende nรฆrmeste og ubesรธkte nodene pรฅ grafen til kรธen. Disse elementene slettes fra kรธen etter hvert som de mottas, og skrives ut som resultat.
Hvorfor trenger vi BFS-algoritme?
Det finnes en rekke grunner til รฅ bruke BFS-algoritmen for รฅ sรธke i datasettet ditt. Noen av de viktigste aspektene som gjรธr denne algoritmen til ditt fรธrstevalg er:
- BFS er nyttig for รฅ analysere nodene i en graf og konstruere den korteste veien for รฅ krysse gjennom disse.
- BFS kan gรฅ gjennom en graf i det minste antall iterasjoner.
- Arkitekturen til BFS-algoritmen er enkel og robust.
- Resultatet av BFS-algoritmen holder et hรธyt nivรฅ av nรธyaktighet sammenlignet med andre algoritmer.
- BFS-iterasjoner er sรธmlรธse, og det er ingen mulighet for at denne algoritmen blir fanget opp i et problem med uendelig lรธkke.
Hvordan fungerer BFS-algoritmen?
Gjennomgang av grafer krever at algoritmen besรธker, sjekker og/eller oppdaterer hver eneste ubesรธkte node i en trelignende struktur. Grafgjennomganger er kategorisert etter rekkefรธlgen de besรธker nodene pรฅ grafen.
BFS-algoritmen starter operasjonen fra den fรธrste eller startnoden i en graf og krysser den grundig. Sรฅ snart den har krysset den innledende noden, besรธkes og markeres neste ikke-traverserte toppunkt i grafen.
Derfor kan man si at alle nodene ved siden av det nรฅvรฆrende toppunktet besรธkes og krysses i den fรธrste iterasjonen. En enkel kรธmetodikk brukes til รฅ implementere virkemรฅten til en BFS-algoritme, og den bestรฅr av fรธlgende trinn:
Trinn 1)
Hvert toppunkt eller node i grafen er kjent. Du kan for eksempel merke noden som V.
Trinn 2)
Hvis hjรธrnet V ikke er tilgjengelig, legg det til i BFS-kรธen.
Trinn 3)
Start BFS-sรธket, og merk hjรธrne V som besรธkt etter at det er fullfรธrt.
Trinn 4)
BFS-kรธen er fortsatt ikke tom, fjern derfor toppunktet V pรฅ grafen fra kรธen.
Trinn 5)
Hent frem alle de gjenvรฆrende hjรธrnene pรฅ grafen som ligger inntil hjรธrnet V.
Trinn 6)
For hvert tilstรธtende hjรธrne, la oss si V1, i tilfelle det ikke er besรธkt ennรฅ, legg deretter V1 til i BFS-kรธen.
Trinn 7)
BFS vil besรธke V1, markere den som besรธkt og slette den fra kรธen.
Eksempel BFS-algoritme
Trinn 1)
Du har en graf med sju tall fra 0 til 6.
Trinn 2)
0 eller null er merket som en rotnode.
Trinn 3)
0 besรธkes, merkes og settes inn i kรธdatastrukturen.
Trinn 4)
De resterende 0-tilstรธtende og ubesรธkte nodene besรธkes, merkes og settes inn i kรธen.
Trinn 5)
Gjennomgรฅende iterasjoner gjentas til alle noder er besรธkt.
Regler for BFS Algorithm
Her er viktige regler for bruk av BFS-algoritmen:
- En kรธ (FIFO โ fรธrst inn, fรธrst ut) data struktur brukes av BFS.
- Du markerer en hvilken som helst node i grafen som roten og begynner รฅ krysse dataene fra den.
- BFS krysser alle nodene i grafen og fortsetter รฅ slippeping dem som fullfรธrte.
- BFS besรธker en tilstรธtende ubesรธkt node, merker den som ferdig og setter den inn i en kรธ.
- Den fjerner det forrige hjรธrnet fra kรธen dersom ingen tilstรธtende hjรธrne blir funnet.
- BFS-algoritmen itererer til alle hjรธrnene i grafen er krysset og merket som fullfรธrt.
- Det er ingen lรธkker forรฅrsaket av BFS under kryssing av data fra noen node.
Anvendelser av BFS Algorithm
La oss ta en titt pรฅ noen av de virkelige applikasjonene der en BFS-algoritmeimplementering kan vรฆre svรฆrt effektiv.
- Uvektede grafer: BFS-algoritmen kan enkelt lage den korteste banen og et minimumspenntre for รฅ besรธke alle hjรธrnene i grafen pรฅ kortest mulig tid med hรธy nรธyaktighet.
- P2P-nettverk: BFS kan implementeres for รฅ finne alle nรฆrmeste eller nรฆrliggende noder 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.
- Navigasjonssystemer: BFS kan hjelpe med รฅ finne alle nรฆrliggende steder fra hoved- eller kildestedet.
- Nettverkskringkasting: En kringkastet pakke blir guidet av BFS-algoritmen for รฅ finne og nรฅ alle nodene den har adressen til.














