Laiuse esimese otsingu (BFS) algoritm koos EXAMPLE'iga
โก Nutikas kokkuvรตte
Laiusepรตhine otsing (inglise keeles breadth first search, BFS) on algoritm, mis lรคbib graafi tasemelt tasemele, kรผlastades enne sรผgavamale liikumist kรตiki sรตlme naabreid. See kasutab FIFO jรคrjekorda ja leiab lรผhima tee kaalumata graafides ilma lรตpmatute tsรผkliteta.
Mis on BFS-i algoritm (Breadth-First Search)?
Laiuseotsing (inglise keeles broadth-first search, BFS) on algoritm, mida kasutatakse andmete graafikute loomiseks, puu otsimiseks vรตi struktuuride lรคbimiseks. BFS-i tรคielik vorm on laiuseotsing.
Algoritm kรผlastab ja mรคrgib tรตhusalt kรตiki graafiku vรตtmesรตlmi tรคpselt laiuse suunas. See algoritm valib graafikul รผhe sรตlme (alg- vรตi lรคhtepunkti) ja seejรคrel kรผlastab kรตiki valitud sรตlmega kรผlgnevaid sรตlme. Pidage meeles, et BFS pรครคseb neile sรตlmedele รผkshaaval juurde.
Kui algoritm kรผlastab ja mรคrgib algussรตlme, liigub see lรคhimate kรผlastamata sรตlmede poole ja analรผรผsib neid. Pรคrast kรผlastamist on kรตik sรตlmed mรคrgitud. Need iteratsioonid jรคtkuvad seni, kuni kรตik graafiku sรตlmed on edukalt kรผlastatud ja mรคrgitud.
Mis on graafiku lรคbimine?
Graafi lรคbimine on tavaliselt kasutatav metoodika tipu asukoha mรครคramiseks graafikus. See on tรคiustatud otsingu algoritm, mis suudab graafikut kiiresti ja tรคpselt analรผรผsida koos kรผlastatud tippude jรคrjestuse mรคrgistamisega. See protsess vรตimaldab teil kiiresti kรผlastada graafiku iga sรตlme, ilma et oleksite lukustatud lรตpmatusse ahelasse.
BFS-i algoritmi arhitektuur
- Andmete erinevatel tasanditel saate mรคrkida mis tahes sรตlme lรคbimise alustamiseks algus- vรตi algsรตlmeks. BFS kรผlastab sรตlme, mรคrgib selle kรผlastatuks ja asetab jรคrjekorda.
- Nรผรผd kรผlastab BFS lรคhimaid ja kรผlastamata sรตlmi ning mรคrgib need. Need vรครคrtused lisatakse samuti jรคrjekorda. Jรคrjekord tรถรถtab FIFO mudel.
- Sarnasel viisil analรผรผsitakse, mรคrgistatakse ja lisatakse graafikule lรคhimad ja kรผlastamata sรตlmed. Need elemendid kustutatakse jรคrjekorrast kohe, kui need on vastu vรตetud, ja tulemus prinditakse.
Miks me vajame BFS-i algoritmi?
BFS-algoritmi kasutamiseks andmestiku otsimiseks on arvukalt pรตhjuseid. Mรตned kรตige olulisemad aspektid, mis teevad sellest algoritmist teie esimese valiku, on jรคrgmised:
- BFS on kasulik graafiku sรตlmede analรผรผsimiseks ja nende lรคbimiseks lรผhima tee konstrueerimiseks.
- BFS suudab lรคbida graafiku vรคikseima arvu iteratsioonidega.
- BFS-i algoritmi arhitektuur on lihtne ja vastupidav.
- BFS-algoritmi tulemusel on teiste algoritmidega vรตrreldes kรตrge tรคpsus.
- BFS-i iteratsioonid on sujuvad ja see algoritm ei saa lรตpmatu ahela probleemiga vahele jรครคda.
Kuidas BFS-i algoritm tรถรถtab?
Graafiku lรคbimine nรตuab, et algoritm kรผlastaks, kontrolliks ja/vรตi vรคrskendaks puulaadses struktuuris iga รผksikut kรผlastamata sรตlme. Graafiku lรคbimised liigitatakse graafiku sรตlmede kรผlastamise jรคrjekorra jรคrgi.
BFS-algoritm alustab toimingut graafiku esimesest ehk algussรตlmest ja lรคbib selle pรตhjalikult. Kui see algsรตlme edukalt lรคbib, kรผlastatakse ja mรคrgitakse graafiku jรคrgmine lรคbimata tipp.
Seega vรตib รถelda, et esimeses iteratsioonis kรผlastatakse ja lรคbitakse kรตik praeguse tipuga kรผlgnevad sรตlmed. BFS-algoritmi toimimise rakendamiseks kasutatakse lihtsat jรคrjekorra metoodikat ja see koosneb jรคrgmistest sammudest:
Step 1)
Graafi iga tipp vรตi sรตlm on teada. Nรคiteks saate sรตlme mรคrkida kui V.
Step 2)
Kui tippu V ei pรครคseta juurde, lisage tipp V BFS-i jรคrjekorda.
Step 3)
Kรคivita BFS-i otsing ja pรคrast selle lรตpetamist mรคrgi tipp V kรผlastatuks.
Step 4)
BFS-i jรคrjekord ei ole ikka veel tรผhi, seetรตttu eemaldage graafiku tipp V jรคrjekorrast.
Step 5)
Leia graafikult kรตik รผlejรครคnud tipud, mis kรผlgnevad tipuga V.
Step 6)
Iga kรผlgneva tipu, nรคiteks V1, kohta, kui seda pole veel kรผlastatud, lisage V1 BFS-i jรคrjekorda.
Step 7)
BFS kรผlastab V1-d, mรคrgib selle kรผlastatuks ja kustutab jรคrjekorrast.
BFS-i algoritmi nรคide
Step 1)
Sul on graafik seitsmest arvust vahemikus 0 kuni 6.
Step 2)
0 vรตi null on mรคrgitud juursรตlmeks.
Step 3)
0 kรผlastatakse, mรคrgitakse ja sisestatakse jรคrjekorra andmestruktuuri.
Step 4)
รlejรครคnud 0-kรผlgnevad ja kรผlastamata sรตlmed kรผlastatakse, mรคrgistatakse ja lisatakse jรคrjekorda.
Step 5)
Lรคbivaid iteratsioone korratakse, kuni kรตik sรตlmed on kรผlastatud.
BFS-i algoritmi reeglid
BFS-algoritmi kasutamiseks on olulised reeglid jรคrgmised:
- Jรคrjekord (FIFO โ esimesena sisse, esimesena vรคlja) andmete struktuur kasutab BFS.
- Sa mรคrgid graafikus suvalise sรตlme juureks ja hakkad sealt andmeid lรคbima.
- BFS lรคbib kรตik graafi sรตlmed ja hoiab languseping need lรตpetatuks.
- BFS kรผlastab kรผlgnevat kรผlastamata sรตlme, mรคrgib selle tehtuks ja lisab jรคrjekorda.
- See eemaldab eelmise tipu jรคrjekorrast juhul, kui kรผlgnevat tippu ei leita.
- BFS-i algoritm itereerib seni, kuni kรตik graafi tipud on edukalt lรคbitud ja mรคrgitud lรตpetatuks.
- Andmete lรคbimisel รผhestki sรตlmest pole BFS-i pรตhjustatud silmuseid.
BFS-i algoritmi rakendused
Vaatame mรตningaid reaalelu rakendusi, kus BFS-i algoritmi rakendamine vรตib olla vรคga tรตhus.
- Kaalumata graafikud: BFS-algoritm suudab hรตlpsalt luua lรผhima tee ja minimaalse ulatuvusega puu, et kรผlastada kรตiki graafi tippe vรตimalikult lรผhikese aja jooksul ja suure tรคpsusega.
- P2P vรตrgud: BFS-i saab rakendada kรตigi lรคhimate vรตi naabersรตlmede leidmiseks peer-to-peer vรตrgus. See leiab vajalikud andmed kiiremini รผles.
- Veebiindeksoijad: Otsingumootorid vรตi veebiindeksoijad saavad BFS-i abil hรตlpsasti luua mitme taseme indekseid. BFS-i juurutamine algab allikast, mis on veebileht, ja seejรคrel kรผlastab see kรตiki selle allika linke.
- Navigatsioonisรผsteemid: BFS vรตib aidata leida kรตik naaberkohad pรตhi- vรตi lรคhtekohast.
- Vรตrguedastus: Edastatud paketti juhib BFS-algoritm, et leida ja jรตuda kรตigi sรตlmedeni, mille jaoks sellel on aadress.














