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.

  • ๐Ÿ“Š Szintsorrend: A BFS minden csomรณpontot meglรกtogat az aktuรกlis mรฉlysรฉgben, mielล‘tt a kรถvetkezล‘ szintre lรฉpne.
  • ๐Ÿ“ฅ Soralapรบ: A FIFO sor a meglรกtogatott csomรณpontokat tartalmazza, รญgy a szomszรฉdok feldolgozรกsa sorrendben tรถrtรฉnik.
  • ๐ŸŽฏ Legrรถvidebb รบt: Sรบlyozatlan grรกfokban a BFS a legrรถvidebb utat talรกlja meg a legkevesebb iterรกciรณval.
  • โœ… Nincsenek hurkok: A meglรกtogatott csomรณpontok megjelรถlรฉse megakadรกlyozza, hogy a BFS vรฉgtelen ciklusba ragadjon.
  • ๐ŸŒ Alkalmazรกsok: A BFS webes robotokat, P2P hรกlรณzatokat, navigรกciรณt รฉs hรกlรณzati mลฑsorszรณrรกst mลฑkรถdtet.

Szรฉlessรฉgi Elsล‘ Keresรฉs (BFS) algoritmus pรฉldรกval

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

ArchiA BFS algoritmus tectรบrรกja

  1. 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.
  2. 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.
  3. 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 BFS algoritmus mลฑkรถdรฉse

A grรกf minden csรบcsa vagy csomรณpontja ismert. Pรฉldรกul megjelรถlheti a csomรณpontot V-kรฉnt.

Step 2)

A BFS algoritmus mลฑkรถdรฉse

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)

A BFS algoritmus mลฑkรถdรฉse

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 algoritmus mลฑkรถdรฉse

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)

A BFS algoritmus mลฑkรถdรฉse

Keresd meg a grรกf รถsszes tรถbbi csรบcsรกt, amelyek szomszรฉdosak az V csรบccsal.

Step 6)

A BFS algoritmus mลฑkรถdรฉse

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 algoritmus mลฑkรถdรฉse

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)

Pรฉlda BFS algoritmusra

Van egy grafikonod, amely hรฉt szรกmot รกbrรกzol 0-tรณl 6-ig.

Step 2)

Pรฉlda BFS algoritmusra

0 vagy nulla gyรถkรฉrcsomรณpontkรฉnt lett megjelรถlve.

Step 3)

Pรฉlda BFS algoritmusra

A 0 meglรกtogatja, megjelรถli รฉs beilleszti a sor adatstruktรบrรกjรกba.

Step 4)

Pรฉlda BFS algoritmusra

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)

Pรฉlda BFS algoritmusra

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.

GYIK

A mestersรฉges intelligenciรกban a BFS jรกtรฉkรกllapotokat, rejtvรฉnykonfigurรกciรณkat รฉs tรฉrkรฉpeket vizsgรกl, hogy megtalรกlja a legrรถvidebb megoldรกst, amikor minden lรฉpรฉs azonos kรถltsรฉggel jรกr. Garantรกlja a legkevesebb lรฉpรฉst, bรกr nagy grรกfokon sok memรณriรกt hasznรกlhat.

Igen. A mestersรฉges intelligencia asszisztensek kรฉpesek BFS-t รญrni Python, Javavagy C++ egy sor รฉs egy lรกtogatott halmaz felhasznรกlรกsรกval egy egyszerลฑ leรญrรกsbรณl. Teszteld mintagrรกfokon, mivel az olyan รฉleseteket, mint a szรฉtkapcsolt csomรณpontok, kรถnnyลฑ figyelmen kรญvรผl hagyni.

A BFS egy sor segรญtsรฉgรฉvel szintenkรฉnt vizsgรกlja a grรกfot, รฉs sรบlyozatlan grรกfokban keresi meg a legrรถvidebb utat. A DFS minden รกg mentรฉn a lehetล‘ legmรฉlyebben vizsgรกlja meg egy verem vagy rekurziรณ segรญtsรฉgรฉvel, mielล‘tt visszalรฉpne.trackirรกly.

A BFS O(V + E) idล‘ alatt fut, ahol V a csรบcsok szรกma, E pedig az รฉlek szรกma, mivel minden csรบcsot รฉs รฉlt egyszer vizsgรกlunk meg. A tรกrkomplexitรกsa O(V) a sor รฉs a meglรกtogatott halmaz esetรฉben.

Foglald รถssze ezt a bejegyzรฉst a kรถvetkezล‘kรฉppen: