Suositeltava, 2024

Toimituksen Valinta

Ero BFS: n ja DFS: n välillä

Suurin ero BFS: n ja DFS: n välillä on se, että BFS etenee tason mukaan, kun DFS seuraa ensin polkua, joka muodostaa aloituskohdan päättyvään solmuun (vertex), sitten toiseen polkuun alusta loppuun ja niin edelleen, kunnes kaikki solmut on käynyt. Lisäksi BFS käyttää jonoa solmujen tallentamiseksi, kun taas DFS käyttää pinoa solmujen siirtämiseksi.

BFS ja DFS ovat käyrämenetelmiä, joita käytetään kaavion etsinnässä. Kaavion kulku on prosessi, jossa käydään läpi kaikki kaavion solmut. Kaavio on Vertices 'V' ja Edges 'E', jotka yhdistyvät huippuihin.

Vertailukaavio

Vertailun perusteet
BFSDFS
perustiedotVertex-pohjainen algoritmiReunapohjainen algoritmi
Solmujen tallentamiseen käytetty tietorakenneJonottaaPino
Muistin kulutustehotonTehokas
Rakennetun puun rakenneLeveä ja lyhytKapea ja pitkä
Liikkuva muotiVanhimmat näkymätön huippupisteet tutkitaan aluksi.Alussa tutkitaan reunoja pitkin olevia pisteitä.
optimalityOptimaalinen lyhyimmän matkan löytämiseksi, ei kustannuksella.Ei optimaalinen
hakemusTutkii bipartite-käyrää, liitettyä komponenttia ja kaaviossa olevaa lyhintä reittiä.Tutkii kahden reunan liitettyä kuvaajan, vahvasti kytkettyä kuvaajan, asyklisen kaavion ja topologisen järjestyksen.

Määritelmä BFS

BFS (Bread) First Search (BFS) on kaavioissa käytettävä siirtomenetelmä. Se käyttää jonoa vierailevien pisteiden tallentamiseen. Tässä menetelmässä korostus on kaavion pisteissä, yksi kärki valitaan aluksi, sitten se vierailee ja merkitään. Vierailevan kärjen vieressä olevat pisteet käydään sitten ja tallennetaan jonoon peräkkäin. Samoin tallennetut pisteet käsitellään sitten yksi kerrallaan, ja niiden vierekkäiset pisteet käyvät. Solmu tutkitaan täysin ennen kuin vierailet millä tahansa muulla solmulla kaaviossa, toisin sanoen, se kulkee ensin matalimpien tutkimattomien solmujen läpi.

esimerkki

Meillä on kuvaaja, jonka pisteet ovat A, B, C, D, E, F, G. A-lähtökohtana. Prosessin vaiheet ovat seuraavat:

  • Vertex A laajennetaan ja tallennetaan jonoon.
  • A: n peräkkäiset B-, D- ja G-pisteet laajennetaan ja tallennetaan jonoon samalla, kun Vertex A poistetaan.
  • Nyt jonon etupäässä oleva B poistetaan yhdessä sen seuraajapisteiden E ja F tallentamisen kanssa.
  • Vertex D on jonon etupäässä ja sen liitetty solmu F on jo käynyt.
  • Vertex G poistetaan jonosta, ja sillä on seuraaja E, joka on jo käynyt.
  • Nyt E ja F poistetaan jonosta, ja sen seuraajan kärki C kulkee ja tallennetaan jonoon.
  • Viimeisenä C on myös poistettu ja jono on tyhjä, mikä tarkoittaa, että olemme valmiit.
  • Muodostettu lähtö on A, B, D, G, E, F, C.

Sovellukset-

BFS voi olla hyödyllinen, kun selvitetään, onko kuviossa liitetty komponentteja vai ei. Ja sitä voidaan käyttää myös kaksisuuntaisen kaavion tunnistamiseen.

Kaavio on kaksisuuntainen, kun kaavion pisteet on jaettu kahteen disjointiryhmään; samassa sarjassa ei sijaitse kaksi vierekkäistä huippua. Toinen menetelmä kaksisuuntaisen käyrän tarkistamiseksi on tarkistaa parittoman jakson esiintyminen kuviossa. Kaksisuuntainen kaavio ei saa sisältää paritonta sykliä.

BFS on myös parempi löytää lyhyin polku kaaviossa voitaisiin nähdä verkostona.

Määritelmä DFS

Syvyys Ensimmäinen haku (DFS) -liikutustapa käyttää pinoa vierailevien pisteiden tallentamiseen. DFS on reunapohjainen menetelmä ja se toimii rekursiivisella tavalla, jossa pisteet tutkitaan polulla (reuna). Solmun etsintä keskeytetään heti, kun löydetään toinen tutkimatta jäänyt solmu ja etsimään syvimmät tutkimattomat solmut. DFS kulkee / kulkee jokaisella kärjellä täsmälleen kerran ja kukin reuna tarkastetaan tarkasti kahdesti.

esimerkki

BFS: n kaltaisella tavalla voidaan tehdä sama kaavio DFS-operaatioiden suorittamiseksi, ja siihen liittyvät vaiheet ovat seuraavat:

  • Ottaen huomioon A: n aloitusverkkona, jota tutkitaan ja tallennetaan pinoon.
  • B-peräkkäinen huippupiste A tallennetaan pinoon.
  • Vertex B: llä on kaksi seuraajaa E ja F, joista aakkosjärjestyksessä E tutkitaan ensin ja tallennetaan pinoon.
  • Vertex E: n seuraaja, eli G, tallennetaan pinoon.
  • Vertex G: llä on kaksi liitettyä pistettä, ja molemmat ovat jo vieraillut, joten G on poistettu pinosta.
  • Samoin E on myös poistettu.
  • Nyt piste B on pinon yläosassa, sen toinen solmu (kärki) F tutkitaan ja tallennetaan pinoon.
  • Vertex F: llä on kaksi seuraajaa C ja D, joiden välillä C liikkuu ensin ja tallennetaan pinoon.
  • Vertex C: ssä on vain yksi edeltäjä, joka on jo käynyt, joten se poistetaan pinosta.
  • Nyt F: hen liitetty huippu D käydään ja tallennetaan pinoon.
  • Koska vertex D: llä ei ole paljastamattomia solmuja, D poistetaan.
  • Samoin F, B ja A ovat myös ponnahtaneet.
  • Muodostettu lähtö on - A, B, E, G, F, C, D.

sovellus-

DFS: n sovelluksiin kuuluu kahden reunakytkennän piirroksen, voimakkaasti yhdistetyn käyrän, asyklisen graafin ja topologisen järjestyksen tarkastus .

Kaaviota kutsutaan kahdeksi reunaksi, jotka on kytketty, jos ja vain, jos se pysyy kytkettynä, vaikka yksi sen reunoista on poistettu. Tämä sovellus on erittäin hyödyllinen tietokoneverkoissa, joissa verkon yhden linkin vika ei vaikuta jäljellä olevaan verkkoon, ja se olisi edelleen yhteydessä.

Vahvasti yhdistetty kuvaaja on kaavio, jossa on oltava polku tilattujen parien välillä. DFS: ää käytetään suunnattuun kaavioon etsimään polkua jokaisen tilattujen parien välillä. DFS voi helposti ratkaista yhteysongelmia.

Tärkeimmät erot BFS: n ja DFS: n välillä

  1. BFS on huippupohjainen algoritmi, kun taas DFS on reunapohjainen algoritmi.
  2. BFS: ssä käytetään jonotietorakennetta. Toisaalta DFS käyttää pinota tai rekursiota.
  3. Muistitilaa hyödynnetään tehokkaasti DFS: ssä, kun taas tilan käyttö BFS: ssä ei ole tehokasta.
  4. BFS on optimaalinen algoritmi, kun taas DFS ei ole optimaalinen.
  5. DFS rakentaa kapeita ja pitkiä puita. Vastoin BFS rakentaa leveä ja lyhyt puu.

johtopäätös

BFS: llä ja DFS: llä, molemmilla kaavionhakutekniikoilla on samanlainen käyttöaika, mutta erilainen tilan kulutus, DFS vie lineaarista tilaa, koska meidän on muistettava yksi polku, jossa ei ole tutkittuja solmuja, kun taas BFS pitää kaikki solmut muistissa.

DFS tuottaa syvempiä ratkaisuja eikä ole optimaalinen, mutta se toimii hyvin, kun ratkaisu on tiheä, kun taas BFS on optimaalinen, joka etsii optimaalista tavoitetta aluksi.

Top