BFS vs DFS – ero niiden välillä

Keskeinen ero BFS:n ja DFS:n välillä

  • BFS löytää lyhimmän reitin määränpäähän, kun taas DFS menee alipuun pohjalle ja sitten takaisintracks.
  • BFS:n täysi muoto on Breadth-First Search, kun taas DFS:n täysi muoto on Depth-First Search.
  • BFS käyttää jonoa pitääkseen track seuraavasta vierailukohteesta. DFS käyttää pinoa pitääkseen track seuraavasta vierailukohteesta.
  • BFS kulkee puun tason mukaan, kun taas DFS kulkee puun syvyyden mukaan.
  • BFS on toteutettu käyttämällä FIFO-listaa; toisaalta DFS toteutetaan LIFO-luettelon avulla.
  • BFS:ssä et voi koskaan joutua loukkuun äärellisiin silmukoihin, kun taas DFS:ssä voit jäädä äärettömiin silmukoihin.
Ero BFS:n ja DFS:n välillä
Ero BFS:n ja DFS:n välillä

Mikä on BFS?

BFS on algoritmi, jota käytetään datan kuvaamiseen tai puuhakuun tai rakenteiden läpikulkuun. Algoritmi vierailee ja merkitsee tehokkaasti kaikki graafin avainsolmut tarkasti leveyssuunnassa.

Tämä algoritmi valitsee yhden solmun (alku- tai lähdepisteen) kaaviosta ja vierailee sitten kaikissa valitun solmun vieressä olevissa solmuissa. Kun algoritmi vierailee ja merkitsee aloitussolmun, se siirtyy kohti lähimpiä vierailemattomia solmuja ja analysoi ne.

Kun olet käynyt, kaikki solmut on merkitty. Nämä iteraatiot jatkuvat, kunnes kaikki kaavion solmut on käyty ja merkitty onnistuneesti. BFS:n täysi muoto on Breadth-first-haku.

Mikä on DFS?

DFS on algoritmi graafien tai puiden löytämiseen tai läpikäymiseen syvyyssuunnassa. Algoritmin suoritus alkaa juurisolmusta ja tutkii jokaisen haaran ennen paluuta.trackuningas. Se käyttää pinotietorakennetta muistaakseen, hakeakseen seuraavan solmun ja aloittaakseen haun aina, kun umpikujaan tulee missä tahansa iteraatiossa. DFS:n täydellinen muoto on syvyyshaku.

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

Tässä ovat tärkeät erot BFS:n ja DFS:n välillä.

BFS DFS
BFS löytää lyhimmän polun määränpäähän. DFS palaa alipuun pohjalle ja sitten takaisintracks.
BFS:n täysi muoto on Breadth-First Search. DFS:n täysi muoto on Depth First Search.
Se käyttää jonoa pitääkseen track seuraavasta vierailukohteesta. Se käyttää pinoa pitääkseen track seuraavasta vierailukohteesta.
BFS kulkee puun tason mukaan. DFS kulkee puun syvyyden mukaan.
Se toteutetaan FIFO-listalla. Se toteutetaan LIFO-luettelon avulla.
Se vaatii enemmän muistia verrattuna DFS:ään. Se vaatii vähemmän muistia BFS:ään verrattuna.
Tämä algoritmi antaa matalimman polun ratkaisun. Tämä algoritmi ei takaa matalinta polkuratkaisua.
Selkää ei tarvitatrackuningas BFS:ssä. Takaa on tarpeentrackuningas DFS:ssä.
Et voi koskaan jäädä rajallisiin silmukoihin. Voit jäädä loukkuun loputtomiin silmukoihin.
Jos et löydä tavoitetta, saatat joutua laajentamaan monia solmuja ennen kuin ratkaisu löytyy. Jos et löydä mitään tavoitetta, lehtisolmu palaa takaisintrackuningas voi esiintyä.

Esimerkki BFS:stä

Seuraavassa BFS-esimerkissä olemme käyttäneet graafia, jossa on 6 kärkeä.

Esimerkki BFS:stä

Vaihe 1)

Esimerkki BFS:stä

Sinulla on kaavio, jossa on seitsemän numeroa välillä 0–6.

Vaihe 2)

Esimerkki BFS:stä

0 tai nolla on merkitty juurisolmuksi.

Vaihe 3)

Esimerkki BFS:stä

0 käy, merkitään ja lisätään jonotietorakenteeseen.

Vaihe 4)

Esimerkki BFS:stä

Loput 0 vierekkäistä ja vierailematonta solmua käydään, merkitään ja lisätään jonoon.

Vaihe 5)

Esimerkki BFS:stä

Ajoiteraatioita toistetaan, kunnes kaikki solmut on käyty.

Esimerkki DFS:stä

Seuraavassa DFS-esimerkissä olemme käyttäneet suuntaamatonta graafia, jossa on 5 kärkeä.

Esimerkki DFS:stä

Vaihe 1)

Esimerkki DFS:stä

Olemme aloittaneet kärjestä 0. Algoritmi alkaa laittamalla se vierailtuun listaan ​​ja samanaikaisesti kaikki sen viereiset kärjet tietorakenne kutsutaan pinoksi.

Vaihe 2)

Esimerkki DFS:stä

Vieraat elementissä, joka on pinon yläosassa, esimerkiksi 1, ja siirryt sen viereisiin solmuihin. Se johtuu siitä, että 0 on jo vieraillut. Siksi vierailemme kärjessä 2.

Vaihe 3)

Esimerkki DFS:stä

Vertex 2:ssa on vierailematon lähipiste 4:ssä. Siksi lisäämme sen pinoon ja vierailemme siinä.

Vaihe 4)

Esimerkki DFS:stä

Lopuksi vierailemme viimeisessä kärjessä 3, jossa ei ole vierailemattomia vierekkäisiä solmuja. Olemme suorittaneet graafin läpikäynnin DFS-algoritmilla.

Esimerkki DFS:stä

BFS:n sovellukset

Tässä ovat BFS:n sovellukset:

Painottamattomat kaaviot

BFS-algoritmi voi helposti luoda lyhimmän polun ja vähimmäisvirittävän puun vieraillakseen graafin kaikissa pisteissä mahdollisimman lyhyessä ajassa suurella tarkkuudella.

P2P-verkot

BFS voidaan toteuttaa paikantamaan kaikki lähimmät tai viereiset solmut vertaisverkossa. Tämä löytää tarvittavat tiedot nopeammin.

Verkkoindeksointirobotit

Hakukoneet tai indeksointirobotit voivat helposti rakentaa useita indeksitasoja käyttämällä BFS:ää. BFS-toteutus alkaa lähteestä, joka on verkkosivu, ja sitten se vierailee kaikissa linkeissä kyseisestä lähteestä.

Verkkolähetys

BFS-algoritmi ohjaa lähetettyä pakettia etsimään ja saavuttamaan kaikki solmut, joille sillä on osoite.

DFS:n sovellukset

Tässä on tärkeitä DFS:n sovelluksia:

Painotettu kaavio

Painotetussa kaaviossa DFS-kuvaajan läpikäyminen luo lyhimmän polun puun ja pienimmän virittävän puun.

Syklin havaitseminen kaaviossa

Graafilla on sykli, jos löysimme takareunan DFS:n aikana. Siksi meidän pitäisi ajaa DFS kaaviolle ja tarkistaa takareunat.

Polun löytäminen

Voimme erikoistua DFS-algoritmiin etsimään polkua kahden kärjen välillä.

Topologinen lajittelu

Sitä käytetään ensisijaisesti töiden ajoittamiseen annetuista riippuvuuksista työryhmän kesken. Tietojenkäsittelytieteessä sitä käytetään ohjeiden ajoituksessa, tietojen serialisoinnissa, logiikkasynteesissä, käännöstehtävien järjestyksen määrittämisessä.

Kaavion vahvasti toisiinsa liittyvien komponenttien etsiminen

Sitä käytetään DFS-graafissa, kun jokaisesta graafin kärjestä on polku muihin jäljellä oleviin kärkipisteisiin.

Palapelien ratkaiseminen vain yhdellä ratkaisulla

DFS-algoritmi voidaan helposti mukauttaa etsimään kaikkia ratkaisuja sokkeloon sisällyttämällä solmuja olemassa olevalle polulle vierailltuun joukkoon.

Tiivistä tämä viesti seuraavasti: