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.
Erinevus BFS-i ja DFS-i vahel
Erinevus BFS-i ja DFS-i vahel

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)

BFS-i näide

Teil on seitsmest numbrist koosnev graafik vahemikus 0–6.

Step 2)

BFS-i näide

0 või null on märgitud juursõlmeks.

Step 3)

BFS-i näide

0 külastatakse, märgitakse ja sisestatakse järjekorra andmestruktuuri.

Step 4)

BFS-i näide

Ülejäänud 0 külgnevat ja külastamata sõlme külastatakse, märgitakse ja lisatakse järjekorda.

Step 5)

BFS-i näide

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.

DFS-i näide

Step 1)

DFS-i näide

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)

DFS-i näide

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)

DFS-i näide

Tipul 2 on 4-s külastamata lähedal asuv tipp. Seetõttu lisame selle virna ja külastame seda.

Step 4)

DFS-i näide

Lõpuks külastame viimast tippu 3, millel pole külastamata külgnevaid sõlme. Oleme lõpetanud graafiku läbimise DFS-algoritmi abil.

DFS-i näide

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.

Võta see postitus kokku järgmiselt: