Breadth First Search (BFS) algoritmus EXAMPLE-vel
โก Okos รถsszefoglalรณ
A szรฉlessรฉgi keresรฉs (BFS) egy olyan algoritmus, amely egy grรกfot szintenkรฉnt bejรกr, รฉs a csomรณpont รถsszes szomszรฉdjรกt meglรกtogatja, mielลtt mรฉlyebbre mozdulna. FIFO sort hasznรกl, รฉs a sรบlyozatlan grรกfokban, vรฉgtelen hurkok nรฉlkรผl keresi meg a legrรถvidebb utat.
Mi az a BFS algoritmus (Breadth-First Search)?
A szรฉlessรฉgi keresรฉs (BFS) egy algoritmus, amelyet adatok grafikonjainak รกbrรกzolรกsรกra, fรกban valรณ keresรฉsre vagy struktรบrรกk bejรกrรกsรกra hasznรกlnak. A BFS teljes formรกja a szรฉlessรฉgi keresรฉs.
Az algoritmus hatรฉkonyan felkeresi รฉs megjelรถli a grรกf รถsszes kulcscsomรณpontjรกt, pontos szรฉlessรฉgben. Ez az algoritmus egyetlen csomรณpontot (kezdeti vagy forrรกspontot) vรกlaszt ki a grรกfban, majd felkeresi a kivรกlasztott csomรณponttal szomszรฉdos รถsszes csomรณpontot. Ne feledje, a BFS egyenkรฉnt รฉri el ezeket a csomรณpontokat.
Miutรกn az algoritmus meglรกtogatja รฉs megjelรถli a kezdล csomรณpontot, akkor a legkรถzelebbi nem lรกtogatott csomรณpontok felรฉ halad, รฉs elemzi azokat. Miutรกn meglรกtogatta, minden csomรณpont meg van jelรถlve. Ezek az iterรกciรณk addig folytatรณdnak, amรญg a grรกf รถsszes csomรณpontjรกt sikeresen meg nem lรกtogattรกk รฉs meg nem jelรถltรฉk.
Mi az a grรกfbejรกrรกs?
A grรกf bejรกrรกsa egy รกltalรกnosan hasznรกlt mรณdszer a csรบcspozรญciรณ meghatรกrozรกsรกra a grรกfban. Ez egy fejlett keresรฉsi algoritmus, amely gyorsan รฉs pontosan tudja elemezni a grรกfot, valamint megjelรถlni a meglรกtogatott csรบcsok sorrendjรฉt. Ez a folyamat lehetลvรฉ teszi, hogy gyorsan meglรกtogassa a grafikon egyes csomรณpontjait anรฉlkรผl, hogy egy vรฉgtelen hurokba lenne zรกrva.
A BFS algoritmus architektรบrรกja
- Az adat kรผlรถnbรถzล szintjein bรกrmelyik csomรณpontot megjelรถlhetjรผk kezdล vagy kezdeti csomรณpontkรฉnt a bejรกrรกs megkezdรฉsรฉhez. A BFS meglรกtogatja a csomรณpontot, meglรกtogatottkรฉnt jelรถli meg, รฉs behelyezi a vรกrรณlistรกba.
- A BFS most meglรกtogatja a legkรถzelebbi รฉs a mรฉg nem lรกtogatott csomรณpontokat, รฉs megjelรถli azokat. Ezek az รฉrtรฉkek is hozzรกadรณdnak a vรกrรณlistรกhoz. A vรกrรณlistรกn a kรถvetkezล adatok mลฑkรถdnek: FIFO modell.
- Hasonlรณ mรณdon a grรกfon talรกlhatรณ legkรถzelebbi รฉs mรฉg meg nem lรกtogatott csomรณpontokat elemzik, megjelรถlik รฉs hozzรกadjรกk a vรกrรณlistรกhoz. Ezeket az elemeket a rendszer a fogadรกsuk utรกn tรถrli a vรกrรณlistรกbรณl, รฉs eredmรฉnykรฉnt kinyomtatja.
Miรฉrt van szรผksรฉgรผnk BFS algoritmusra?
Szรกmos oka van annak, hogy miรฉrt รฉrdemes a BFS algoritmust hasznรกlni az adathalmaz keresรฉsรฉhez. รme nรฉhรกny legfontosabb szempont, ami miatt ezt az algoritmust รฉrdemes vรกlasztani:
- A BFS hasznos a grรกf csomรณpontjainak elemzรฉsรฉhez, รฉs a legrรถvidebb รกthaladรกsi รบtvonal megalkotรกsรกhoz.
- A BFS a legkevesebb iterรกciรณval kรฉpes รกthaladni egy grรกfon.
- A BFS-algoritmus felรฉpรญtรฉse egyszerลฑ รฉs robusztus.
- A BFS algoritmus eredmรฉnye mรกs algoritmusokhoz kรฉpest magas szintลฑ pontossรกggal rendelkezik.
- A BFS-iterรกciรณk zรถkkenลmentesek, รฉs nincs lehetลsรฉg arra, hogy ez az algoritmus beleragadjon egy vรฉgtelen hurok problรฉmรกjรกba.
Hogyan mลฑkรถdik a BFS algoritmus?
A grรกf bejรกrรกsรกhoz az algoritmusnak meg kell lรกtogatnia, ellenลriznie kell รฉs/vagy frissรญtenie kell minden egyes meg nem lรกtogatott csomรณpontot egy faszerลฑ struktรบrรกban. A grรกfbejรกrรกsok aszerint vannak kategorizรกlva, hogy milyen sorrendben keresik fel a grรกf csomรณpontjait.
A BFS algoritmus a grรกf elsล vagy kezdล csomรณpontjรกtรณl kezdi a mลฑveletet, รฉs alaposan bejรกrja azt. Ha sikeresen bejรกrta a kezdeti csomรณpontot, akkor a grรกf kรถvetkezล nem bejรกrt csรบcsรกt meglรกtogatja รฉs megjelรถli.
Tehรกt azt mondhatjuk, hogy az aktuรกlis csรบcshoz szomszรฉdos รถsszes csomรณpontot meglรกtogatjuk รฉs bejรกrjuk az elsล iterรกciรณban. Egy egyszerลฑ sorkezelรฉsi mรณdszertant alkalmazunk a BFS algoritmus mลฑkรถdรฉsรฉnek megvalรณsรญtรกsรกhoz, amely a kรถvetkezล lรฉpรฉsekbลl รกll:
Step 1)
A grรกf minden csรบcsa vagy csomรณpontja ismert. Pรฉldรกul megjelรถlheti a csomรณpontot V-kรฉnt.
Step 2)
Ha a V csรบcshoz nem fรฉrรผnk hozzรก, akkor adjuk hozzรก a V csรบcsot a BFS vรกrรณlistรกhoz.
Step 3)
Indรญtsd el a BFS keresรฉst, รฉs a befejezรฉs utรกn jelรถld meg a V csรบcsot lรกtogatottkรฉnt.
Step 4)
A BFS sor mรฉg mindig nem รผres, ezรฉrt tรกvolรญtsa el a grรกf V csรบcsรกt a sorbรณl.
Step 5)
Keresd meg a grรกf รถsszes tรถbbi csรบcsรกt, amelyek szomszรฉdosak az V csรบccsal.
Step 6)
Minden szomszรฉdos csรบcshoz, mondjuk V1-hez, ha mรฉg nem lรกtogattรกk meg, akkor adjuk hozzรก V1-et a BFS vรกrรณlistรกjรกhoz.
Step 7)
A BFS meglรกtogatja a V1-et, meglรกtogatottkรฉnt jelรถli meg, majd tรถrli a sorbรณl.
Pรฉlda BFS algoritmusra
Step 1)
Van egy grafikonod, amely hรฉt szรกmot รกbrรกzol 0-tรณl 6-ig.
Step 2)
0 vagy nulla gyรถkรฉrcsomรณpontkรฉnt lett megjelรถlve.
Step 3)
A 0 meglรกtogatja, megjelรถli รฉs beilleszti a sor adatstruktรบrรกjรกba.
Step 4)
A fennmaradรณ 0 szomszรฉdos รฉs meg nem lรกtogatott csomรณpontokat meglรกtogatja, megjelรถli รฉs beilleszti a vรกrรณlistรกba.
Step 5)
A bejรกrรกsi iterรกciรณk addig ismรฉtlลdnek, amรญg az รถsszes csomรณpontot meg nem lรกtogatjรกk.
A BFS algoritmus szabรกlyai
รme a BFS algoritmus hasznรกlatรกnak fontos szabรกlyai:
- Egy sor (FIFO โ First In First Out) adatszerkezet a BFS hasznรกlja.
- A grรกf bรกrmelyik csomรณpontjรกt gyรถkรฉrkรฉnt jelรถlรถd meg, รฉs onnan kezded el bejรกrni az adatokat.
- A BFS bejรกrja a grรกf รถsszes csomรณpontjรกt, รฉs folyamatosan csรถkken.ping befejezettkรฉnt.
- A BFS meglรกtogat egy szomszรฉdos nem lรกtogatott csomรณpontot, kรฉszkรฉnt jelรถli meg, รฉs beilleszti egy sorba.
- Eltรกvolรญtja az elลzล csรบcsot a sorbรณl, ha nem talรกl szomszรฉdos csรบcsot.
- A BFS algoritmus addig iterรกl, amรญg a grรกf รถsszes csรบcsรกn sikeresen รกt nem halad, รฉs befejezettkรฉnt nem jelรถli meg ลket.
- Nincsenek BFS รกltal okozott hurkok az adatok egyik csomรณpontrรณl tรถrtรฉnล bejรกrรกsa sorรกn sem.
A BFS algoritmus alkalmazรกsai
Vessรผnk egy pillantรกst nรฉhรกny olyan valรณs alkalmazรกsra, ahol a BFS-algoritmus megvalรณsรญtรกsa rendkรญvรผl hatรฉkony lehet.
- Sรบlyozatlan grafikonok: A BFS algoritmus kรถnnyedรฉn lรฉtrehozza a legrรถvidebb utat รฉs egy minimรกlis feszรญtลfรกt, hogy a grรกf รถsszes csรบcsรกt a lehetล legrรถvidebb idล alatt รฉs nagy pontossรกggal meglรกtogassa.
- P2P hรกlรณzatok: A BFS (Base Finder Search) megvalรณsรญthatรณ a peer-to-peer hรกlรณzat รถsszes legkรถzelebbi vagy szomszรฉdos csomรณpontjรกnak megkeresรฉsรฉre. Ez gyorsabban megtalรกlja a szรผksรฉges adatokat.
- Webrobotok: A keresลmotorok vagy a webrobotok kรถnnyen lรฉtrehozhatnak tรถbb szintลฑ indexet a BFS hasznรกlatรกval. A BFS megvalรณsรญtรกs a forrรกsbรณl indul, amely a weboldal, majd meglรกtogatja az รถsszes hivatkozรกst a forrรกsbรณl.
- Navigรกciรณs rendszerek: A BFS segรญthet megtalรกlni az รถsszes szomszรฉdos helyet a fล vagy a forrรกs helyรฉrลl.
- Hรกlรณzati mลฑsorszรณrรกs: A sugรกrzott csomagot a BFS algoritmus irรกnyรญtja, hogy megtalรกlja รฉs elรฉrje az รถsszes csomรณpontot, amelynek cรญme van.














