suurin ero BFS: n ja HUONONEMISKERTOIMEN välillä on se, että BFS etenee taso tasolta, kun HUONONEMISKERTOIMEN jälkeen seuraa ensin polku, joka muodostaa aloitussolmun (vertex), sitten toinen polku alusta loppuun ja niin edelleen, kunnes kaikki solmut on käyty. Lisäksi BFS käyttää jonoa solmujen tallentamiseen, kun taas DFS käyttää pinoa solmujen läpikulkuun.
BFS ja DFS ovat graafin etsinnässä käytettäviä läpivientimenetelmiä. Graph traversal on prosessi, jossa käydään kaikki graafin solmut. Kuvaaja on joukko Vertices ” V ”ja reunat” E ” yhdistävät vertices.
pitoisuus: BFS Vs DFS
- Comparison Chart
- Definition
- Key Differences
- Conclusion
Comparison Chart
Basis for comparison | BFS | DFS |
---|---|---|
Basic | Vertex-based algorithm | Edge-based algorithm |
Data structure used to store the nodes | Queue | Stack |
Memory consumption | Inefficient | Efficient |
Structure rakennetusta puusta | leveä ja lyhyt | kapea ja pitkä |
Läpikulkumuoti | vanhimmat tarkastamattomat kärkipisteet tutkitaan aluksi. | reunojen kärkipisteet tutkitaan alussa. |
optimaalisuus | optimaalinen lyhyimmän matkan löytämiseen, ei kustannuksissa. | ei optimaalinen |
Application | tutkii kaksijakoista kuvaajaa, liitettyä komponenttia ja lyhintä kuvaajassa esiintyvää polkua. | tarkastelee kaksireunaista yhtenäistä graafia, vahvasti yhdistettyä graafia, asyklistä graafia ja topologista järjestystä. |
määritelmä BFS
leveys ensimmäinen haku (BFS) on kuvioissa käytetty läpivientitapa. Se käyttää jonoa tallennettaessa vieraili vertices. Tässä menetelmässä korostaa on vertices, kuvaaja, yksi huippupiste on valittu ensin sitten se on käynyt ja merkitty. The vertices vieressä vieraili huippupiste sitten vieraili ja tallennetaan jonossa peräkkäin.
vastaavasti tallennetut kärkipisteet käsitellään sitten yksitellen, ja niiden viereiset kärkipisteet käydään läpi. Solmu on täysin tutkittu ennen vierailua muita solmu kaavion, toisin sanoen, se kulkee matalimmat tutkimattomat solmut ensin.
esimerkki
meillä on kuvaaja, jonka kärkipisteet ovat A, B, C, D, E, F, G. pitäen lähtökohtana A: ta. Prosessin vaiheet ovat:
- Vertex A laajennetaan ja tallennetaan jonoon.
- Vertices B, D ja G seuraajat a, laajennetaan ja tallennetaan jonoon samaan aikaan Vertex a poistettu.
- nyt jonon etupäässä oleva B poistetaan samalla, kun sen seuraajaversiot E ja F tallennetaan.
- kärkipää D on jonon etupäässä on poistettu, ja sen yhteydessä oleva solmu F on jo vieraillut.
- Vertex G poistetaan jonosta, ja sillä on seuraaja E, jolla on jo käyty.
- nyt E ja F poistetaan jonosta, ja sen seuraaja vertex C kulkee ja tallennetaan jonoon.
- lopultakin C on myös poistettu ja jono on tyhjä eli olemme valmiita.
- syntyvä tuotos on – A, B, D, G, E, F, C.
Sovellukset
BFS voi olla hyödyllinen sen selvittämisessä, onko kaaviossa kytkettyjä komponentteja vai ei. Lisäksi sitä voidaan käyttää kaksijakoisen kuvaajan havaitsemiseen.
kuvaaja on kaksijakoinen, kun kuvaajan vertices jaetaan kahteen disjoint asetetaan; ei kaksi vierekkäistä vertices olisi sama joukko. Toinen tapa tarkistaa kaksijakoinen kuvaaja on tarkistaa, esiintyykö kuvaajassa pariton sykli. Kaksijakoinen kaavio ei saa sisältää paritonta sykliä.
BFS on myös parempi löytämään kuvaajan lyhin polku, joka voidaan nähdä verkostona.
DFS: n määritelmä
Depth First Search (DFS) traversing method käyttää pinoa vierailtujen kärkipisteiden tallentamiseen. DFS on reuna perustuva menetelmä ja toimii rekursiivinen tavalla, jossa vertices on tutkittu pitkin polku (edge). Etsintä solmu keskeytetään heti, kun toinen tutkimaton solmu löytyy ja syvin tutkimaton solmut läpäistiin ennen kaikkea. DFS traverse/vierailla kunkin huippupiste täsmälleen kerran ja jokainen reuna tarkastetaan täsmälleen kahdesti.
BFS: n kaltainen esimerkki
antaa saman kaavion DFS-operaatioiden suorittamiseen, ja mukana olevat vaiheet ovat:
- pitää A: ta aloitusverteenä, jota tutkitaan ja tallennetaan pinoon.
- b seuraaja A: n vertex tallennetaan pinoon.
- Vertex B: llä on kaksi seuraajaa E ja F, niistä aakkosjärjestyksessä E tutkitaan ensin ja tallennetaan pinoon.
- vertex E: n seuraaja eli G tallennetaan pinoon.
- Vertex G: ssä on kaksi toisiinsa liitettyä vertexiä, ja molemmat ovat jo vierailleet, joten G on pullahtanut ulos pinosta.
- vastaavasti myös E S poistettiin.
- nyt Vertex B on pinon huipulla, sen toinen solmu(vertex) F tutkitaan ja tallennetaan pinoon.
- Vertex F: llä on kaksi seuraajaa C ja D, niiden välissä C ylitetään ensin ja tallennetaan pinoon.
- Vertex C: llä on vain yksi edeltäjä, joka on jo vieraillut, joten se poistetaan pinosta.
- nyt F: ään liitetty vertex D käydään ja tallennetaan pinoon.
- koska huippupiste D: ssä ei ole näkymättömiä solmuja, joten D poistetaan.
- vastaavasti myös F, B ja A poksahtavat.
- syntyvä tuotos on – A, B, E, G, F, C, D.
Application
DFS: n sovelluksiin kuuluu kahden reunakytketyn graafin, vahvasti kytketyn graafin, asyklisen graafin ja topologisen järjestyksen tarkastus.
kuvaajaksi kutsutaan kahta toisiinsa yhdistettyä reunaa, jos ja vain jos se pysyy kytkettynä, vaikka toinen sen reunoista poistuisi. Tämä sovellus on erittäin hyödyllinen, tietokoneverkoissa, joissa vika yhden linkin verkossa ei vaikuta jäljellä verkkoon, ja se olisi edelleen yhteydessä.
vahvasti kytketty graafi on kuvaaja, jossa on oltava olemassa polku järjestetyn kärkiparin välillä. DFS käytetään suunnattu kuvaaja etsivät polun välillä jokaisen tilata pari vertices. DFS voi helposti ratkaista yhteysongelmia.
keskeisimmät erot BFS: n ja DFS: n välillä
- BFS on verteksipohjainen algoritmi, kun taas DFS on reunapohjainen algoritmi.
- JONOTIETORAKENNETTA käytetään BFS: ssä. Toisaalta DFS käyttää pinoa tai rekursiota.
- muistiavaruutta hyödynnetään tehokkaasti DFS: ssä, kun taas BFS: ssä tilankäyttö ei ole tehokasta.
- BFS on optimaalinen algoritmi, kun taas DFS ei ole optimaalinen.
- DFS rakentaa kapeita ja pitkiä puita. Sitä vastoin BFS rakentaa leveää ja lyhyttä puuta.
johtopäätös
BFS ja DFS, molemmilla graafihakutekniikoilla on samanlainen suoritusaika, mutta erilainen tilankulutus, DFS vie lineaarista tilaa, koska meidän on muistettava yksittäinen polku tutkimattomilla solmuilla, kun taas BFS pitää jokaisen solmun 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.