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

ArchiBFS-i algoritmi struktuur

  1. 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.
  2. 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.
  3. 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)

BFS-i algoritmi tรถรถ

Graafi iga tipp vรตi sรตlm on teada. Nรคiteks saate sรตlme mรคrkida kui V.

Step 2)

BFS-i algoritmi tรถรถ

Kui tipule V ei pรครคseta juurde, lisage tipp V BFS-i jรคrjekorda

Step 3)

BFS-i algoritmi tรถรถ

Kรคivitage BFS-otsing ja pรคrast lรตpetamist mรคrkige tipp V kรผlastatuks.

Step 4)

BFS-i algoritmi tรถรถ

BFS-i jรคrjekord ei ole ikka veel tรผhi, seetรตttu eemaldage graafiku tipp V jรคrjekorrast.

Step 5)

BFS-i algoritmi tรถรถ

Otsi graafikult kรตik รผlejรครคnud tipud, mis kรผlgnevad tipuga V

Step 6)

BFS-i algoritmi tรถรถ

Iga kรผlgneva tipu puhul oletame V1, kui seda pole veel kรผlastatud, siis lisa V1 BFS-i jรคrjekorda

Step 7)

BFS-i algoritmi tรถรถ

BFS kรผlastab versiooni V1 ja mรคrgib selle kรผlastatuks ning kustutab selle jรคrjekorrast.

BFS-i algoritmi nรคide

Step 1)

BFS-i algoritmi nรคide

Teil on seitsmest numbrist koosnev graafik vahemikus 0โ€“6.

Step 2)

BFS-i algoritmi nรคide

0 vรตi null on mรคrgitud juursรตlmeks.

Step 3)

BFS-i algoritmi nรคide

0 kรผlastatakse, mรคrgitakse ja sisestatakse jรคrjekorra andmestruktuuri.

Step 4)

BFS-i algoritmi nรคide

รœlejรครคnud 0 kรผlgnevat ja kรผlastamata sรตlme kรผlastatakse, mรคrgitakse ja lisatakse jรคrjekorda.

Step 5)

BFS-i algoritmi nรคide

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.

Vรตta see postitus kokku jรคrgmiselt: