BFS vs DFS – erinevus nende vahel
Peamised erinevused BFS-i ja DFS-i vahel
- BFS leiab lühima tee sihtkohta, samas kui DFS läheb alampuu lõppu ja seejärel tagasi.tracks.
- BFS-i täisvorm on Breadth-First Search, samas kui DFS-i täisvorm on sügavuse esimene otsing.
- BFS kasutab järjekorda, et hoida track järgmise külastatava asukoha kohta. DFS aga kasutab virna, et hoida tracjärgmise külastatava koha k.
- BFS liigub vastavalt puu tasemele, DFS aga vastavalt puu sügavusele.
- BFS on realiseeritud FIFO loendi abil; teisest küljest rakendatakse DFS-i LIFO-loendi abil.
- BFS-is ei saa teid kunagi lõksu jääda piiratud tsüklitesse, samas kui DFS-is saate lõksu jääda lõpmatutesse tsüklitesse.
Mis on BFS?
BFS on algoritm, mida kasutatakse andmete graafikuks või puu otsimiseks või struktuuride läbimiseks. 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. 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. BFS-i täisvorm on Breadth-first otsing.
Mis on DFS?
DFS on algoritm graafikute või puude leidmiseks või läbimiseks sügavussuunas. Algoritmi käivitamine algab juursõlmest ja uurib iga haru enne tagasipöördumist.trackuningas. See kasutab pinu andmestruktuuri meelespidamiseks, järgmise tipu leidmiseks ja otsingu alustamiseks alati, kui mis tahes iteratsioonis peaks tekkima tupiktee. DFS-i täielik vorm on sügavuspõhine otsing.
Erinevus BFS-i ja DFS-i binaarpuu vahel
Siin on olulised erinevused BFS-i ja DFS-i vahel.
| BFS | DFS |
|---|---|
| BFS leiab lühima tee sihtkohta. | DFS läheb alampuu lõppu ja seejärel tagasitracks. |
| BFS-i täisvorm on Breadth-First Search. | DFS-i täisvorm on Depth First Search. |
| See kasutab järjekorda, et hoida tracjärgmise külastatava koha k. | See kasutab virna hoidmiseks tracjärgmise külastatava koha k. |
| BFS läbib vastavalt puu tasemele. | DFS liigub vastavalt puu sügavusele. |
| Seda rakendatakse FIFO loendi abil. | Seda rakendatakse LIFO loendi abil. |
| See nõuab DFS-iga võrreldes rohkem mälu. | See nõuab BFS-iga võrreldes vähem mälu. |
| See algoritm annab madalaima tee lahenduse. | See algoritm ei taga madalaima tee lahendust. |
| Selga pole vajatrackuningas BFS-is. | Selga on vajatrackuningas DFS-is. |
| Te ei saa kunagi jääda lõksu piiratud aasadesse. | Võite lõksu jääda lõpmatutesse ahelatesse. |
| Kui te ei leia ühtegi eesmärki, peate võib-olla enne lahenduse leidmist paljusid sõlme laiendama. | Kui te ei leia ühtegi eesmärki, siis lehesõlm tagasitrackuningas võib esineda. |
BFS-i näide
Järgmises BFS-i näites oleme kasutanud 6 tipuga graafi.
BFS-i 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.
DFS-i näide
Järgmises DFS-i näites oleme kasutanud suunamata graafi, millel on 5 tippu.
Step 1)
Oleme alustanud tipust 0. Algoritm alustab selle lisamisega külastatud loendisse ja samaaegselt kõigi selle külgnevate tippude lisamisega andmete struktuur nimetatakse stackiks.
Step 2)
Külastate elementi, mis on virna ülaosas, näiteks 1, ja lähete selle külgnevatesse sõlmedesse. Põhjus on selles, et 0 on juba külastatud. Seetõttu külastame tippu 2.
Step 3)
Tipul 2 on 4-s külastamata lähedal asuv tipp. Seetõttu lisame selle virna ja külastame seda.
Step 4)
Lõpuks külastame viimast tippu 3, millel pole külastamata külgnevaid sõlme. Oleme lõpetanud graafiku läbimise DFS-algoritmi abil.
BFS-i rakendused
Siin on BFS-i rakendused:
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 mitut indeksite taset. BFS-i juurutamine algab allikast, mis on veebileht, ja seejärel külastab see kõiki selle allika linke.
Võrguringhääling
Edastatud paketti juhib BFS-algoritm, et leida ja jõuda kõigi sõlmedeni, mille jaoks sellel on aadress.
DFS-i rakendused
Siin on DFS-i olulised rakendused:
Kaalutud graafik
Kaalutud graafikus genereerib DFS-i graafiku läbimine lühima teepuu ja minimaalse ulatusega puu.
Tsükli tuvastamine graafikul
Graafikul on tsükkel, kui leidsime DFS-i ajal tagumise serva. Seetõttu peaksime graafiku jaoks käivitama DFS-i ja kontrollima tagumisi servi.
Raja leidmine
Kahe tipu vahelise tee otsimiseks saame spetsialiseeruda DFS-algoritmile.
Topoloogiline sortimine
Seda kasutatakse peamiselt tööde ajastamiseks tööde rühma antud sõltuvustest. Arvutiteaduses kasutatakse seda käskude planeerimisel, andmete serialiseerimisel, loogikasünteesil, kompileerimisülesannete järjekorra määramisel.
Graafiku tugevalt seotud komponentide otsimine
Seda kasutatakse DFS-graafikus, kui graafiku igast tipust on tee teistesse ülejäänud tippudesse.
Mõistatuste lahendamine ainult ühe lahendusega
DFS-algoritmi saab hõlpsasti kohandada kõigi labürindi lahenduste otsimiseks, kaasates külastatavasse komplekti olemasoleva tee sõlmed.












