Laiuse esimese otsingu (BFS) algoritm koos EXAMPLE'iga
Mis on BFS-i algoritm (Breadth-First Search)?
Breadth-first search (BFS) on algoritm, mida kasutatakse andmete graafikuks vรตi puu otsimiseks vรตi struktuuride lรคbimiseks. BFS-i tรคisvorm on Breadth-first otsing.
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 tasemetel saate lรคbimise alustamiseks mรคrkida mis tahes sรตlme algus- vรตi algsรตlmeks. BFS kรผlastab sรตlme ja mรคrgib selle kรผlastatuks ning asetab selle jรคrjekorda.
- Nรผรผd kรผlastab BFS lรคhimaid ja kรผlastamata sรตlme ning mรคrgib need. Need vรครคrtused lisatakse ka jรคrjekorda. Jรคrjekord tรถรถtab FIFO mudel.
- Sarnasel viisil analรผรผsitakse graafiku รผlejรครคnud lรคhimaid ja kรผlastamata sรตlmpunkte mรคrgistatuna ja lisatakse jรคrjekorda. Need รผksused kustutatakse ootejรคrjekorrast ja prinditakse tulemuseks.
Miks me vajame BFS-i algoritmi?
Andmestiku otsimiseks BFS-i algoritmi kasutamiseks on palju pรตhjuseid. Mรตned kรตige olulisemad aspektid, mis muudavad selle algoritmi teie esimeseks valikuks, 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-i algoritmi tรถรถ 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 tipule V ei pรครคseta juurde, lisage tipp V BFS-i jรคrjekorda
Step 3)
Kรคivitage BFS-otsing ja pรคrast lรตpetamist mรคrkige 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)
Otsi graafikult kรตik รผlejรครคnud tipud, mis kรผlgnevad tipuga V
Step 6)
Iga kรผlgneva tipu puhul oletame V1, kui seda pole veel kรผlastatud, siis lisa V1 BFS-i jรคrjekorda
Step 7)
BFS kรผlastab versiooni V1 ja mรคrgib selle kรผlastatuks ning kustutab selle jรคrjekorrast.
BFS-i algoritmi nรคide
Step 1)
Teil on seitsmest numbrist koosnev graafik vahemikus 0โ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รผlgnevat ja kรผlastamata sรตlme kรผlastatakse, mรคrgitakse ja lisatakse jรคrjekorda.
Step 5)
Lรคbivaid iteratsioone korratakse, kuni kรตik sรตlmed on kรผlastatud.
BFS-i algoritmi reeglid
Siin on olulised reeglid BFS-algoritmi kasutamiseks:
- Jรคrjekord (FIFO-First in First Out) andmete struktuur kasutab BFS.
- Mรคrgid graafikus suvalise sรตlme juureks ja hakkad sealt andmeid lรคbima.
- BFS lรคbib kรตik graafikul olevad sรตlmed ja kukutab need valmis.
- BFS kรผlastab kรผlgnevat kรผlastamata sรตlme, mรคrgib selle tehtuks ja lisab jรคrjekorda.
- Eemaldab jรคrjekorrast eelmise tipu, kui kรผlgnevat tippu ei leita.
- BFS-algoritm itereerib, kuni kรตik graafiku 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 saab hรตlpsasti luua lรผhima tee ja minimaalse ulatuva puu, et kรผlastada graafiku kรตiki 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. Nii leiate vajalikud andmed kiiremini.
- 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.
kokkuvรตte
- Graafiku lรคbimine on ainulaadne protsess, mis nรตuab, et algoritm kรผlastaks, kontrolliks ja/vรตi vรคrskendaks iga รผksikut kรผlastamata sรตlme puulaadses struktuuris. BFS-i algoritm tรถรถtab sarnasel pรตhimรตttel.
- Algoritm on kasulik graafiku sรตlmede analรผรผsimiseks ja nende lรคbimiseks lรผhima tee konstrueerimiseks.
- Algoritm lรคbib graafiku vรคikseima arvu iteratsioonide ja vรตimalikult lรผhikese ajaga.
- BFS valib graafikul รผhe sรตlme (alg- vรตi lรคhtepunkti) ja seejรคrel kรผlastab kรตiki valitud sรตlmega kรผlgnevaid sรตlme. BFS pรครคseb neile sรตlmedele รผkshaaval juurde.
- Kรผlastatud ja mรคrgitud andmed asetab BFS jรคrjekorda. Jรคrjekord toimib pรตhimรตttel "esimene sees esimene vรคlja". Seega kustutatakse kรตigepealt graafikule asetatud element ja prinditakse selle tulemusena.
- BFS-algoritm ei saa kunagi sattuda lรตpmatusse ahelasse.
- Tรคnu suurele tรคpsusele ja jรตulisele juurutamisele kasutatakse BFS-i mitmetes reaalsetes lahendustes, nagu P2P-vรตrgud, veebiindeksoijad ja vรตrgulevi.













