BFS vs DFS: Znát rozdíl

Obsah:

Anonim

Co je BFS?

BFS je algoritmus, který se používá ke grafování dat nebo prohledávání stromu nebo procházení struktur. Algoritmus efektivně navštíví a označí všechny klíčové uzly v grafu přesnou šířkou.

Tento algoritmus vybere v grafu jeden uzel (počáteční nebo zdrojový bod) a poté navštíví všechny uzly sousedící s vybraným uzlem. Jakmile algoritmus navštíví a označí počáteční uzel, posune se k nejbližším nenavštíveným uzlům a analyzuje je.

Po návštěvě jsou označeny všechny uzly. Tyto iterace pokračují, dokud nebudou úspěšně navštíveny a označeny všechny uzly grafu. Plnou formou BFS je vyhledávání na šířku.

V tomto BSF vs. Výukový program DFS Binární strom, naučíte se:

  • Co je BFS?
  • Co je DFS?
  • Příklad BFS
  • Příklad DFS
  • Rozdíl mezi binárním stromem BFS a DFS
  • Aplikace BFS
  • Aplikace DFS

Co je DFS?

DFS je algoritmus pro hledání nebo procházení grafů nebo stromů ve směru hloubky. Provedení algoritmu začíná v kořenovém uzlu a zkoumá každou větev před zpětným sledováním. Používá strukturu dat zásobníku k zapamatování, k získání následného vrcholu ak zahájení vyhledávání, kdykoli se v jakékoli iteraci objeví slepá ulička. Plnou formou DFS je vyhledávání do hloubky.

Příklad BFS

V následujícím příkladu DFS jsme použili graf mající 6 vrcholů.

Příklad BFS

Krok 1)

K dispozici je graf sedmi čísel od 0 do 6.

Krok 2)

0 nebo nula byla označena jako kořenový uzel.

Krok 3)

0 je navštívena, označena a vložena do datové struktury fronty.

Krok 4)

Zbývající 0 sousedních a nenavštívených uzlů je navštíveno, označeno a vloženo do fronty.

Krok 5)

Traverské iterace se opakují, dokud nenavštívíte všechny uzly.

Příklad DFS

V následujícím příkladu DFS jsme použili neorientovaný graf s 5 vrcholy.

Krok 1)

Začali jsme od vrcholu 0. Algoritmus začíná vložením do navštíveného seznamu a současným vložením všech jeho sousedních vrcholů do datové struktury zvané stack.

Krok 2)

Navštívíte prvek, který je v horní části zásobníku, například 1, a přejdete do jeho sousedních uzlů. Je to proto, že 0 již byla navštívena. Proto navštěvujeme vrchol 2.

Krok 3)

Vertex 2 má nenavštívený blízký vrchol v 4. Proto přidáme, že v zásobníku a navštívit jej.

Krok 4)

Nakonec navštívíme poslední vrchol 3, který nemá žádné nenavštívené sousední uzly. Prochod grafu jsme dokončili pomocí algoritmu DFS.

Rozdíl mezi binárním stromem BFS a DFS

BFS DFS
BFS najde nejkratší cestu k cíli. DFS přejde na konec podstromu a poté se vrátí zpět.
Plnou formou BFS je Breadth-First Search. Plnou formou DFS je Depth First Search.
Používá frontu ke sledování dalšího místa k návštěvě. Využívá hromádku ke sledování dalšího místa k návštěvě.
BFS prochází podle úrovně stromu. DFS prochází podle hloubky stromu.
Implementuje se pomocí seznamu FIFO. Implementuje se pomocí seznamu LIFO.
Vyžaduje více paměti ve srovnání s DFS. Vyžaduje méně paměti ve srovnání s BFS.
Tento algoritmus poskytuje řešení pro nejmělčí cestu. Tento algoritmus nezaručuje řešení mělké cesty.
V BFS není potřeba zpětného sledování. V DFS je potřeba zpětného sledování.
Nikdy nemůžete být uvězněni v omezených smyčkách. Můžete být uvězněni v nekonečných smyčkách.
Pokud nenajdete žádný cíl, možná budete muset před nalezením řešení rozšířit mnoho uzlů. Pokud nenajdete žádný cíl, může dojít k zpětnému sledování listového uzlu.

Aplikace BFS

Zde jsou aplikace BFS:

Nevážené grafy:

Algoritmus BFS může snadno vytvořit nejkratší cestu a minimální kostru, aby mohl s vysokou přesností navštívit všechny vrcholy grafu v co nejkratším čase.

Sítě P2P:

Může být implementován BFS k vyhledání všech nejbližších nebo sousedních uzlů v síti typu peer to peer. Tím vyhledáte požadovaná data rychleji.

Prohledávače webu:

Vyhledávací stroje nebo webové prohledávače mohou snadno vytvářet více úrovní indexů pomocí BFS. Implementace BFS začíná od zdroje, kterým je webová stránka, a poté navštíví všechny odkazy z tohoto zdroje.

Síťové vysílání:

Vysílaný paket je veden algoritmem BFS k nalezení a dosažení všech uzlů, pro které má adresu.

Aplikace DFS

Zde jsou důležité aplikace DFS:

Vážený graf:

Ve váženém grafu generuje přechod DFS grafu nejkratší strom cesty a minimální kostru.

Detekce cyklu v grafu:

Graf má cyklus, pokud jsme během DFS našli zadní hranu. Proto bychom měli pro graf spustit DFS a ověřit zadní hrany.

Hledání cesty:

Můžeme se specializovat na algoritmus DFS pro hledání cesty mezi dvěma vrcholy.

Topologické třídění:

To se používá především pro plánování úloh z uvedených závislostí mezi skupiny pracovních míst. V počítačové vědě se používá při plánování instrukcí, serializaci dat, logické syntéze, určování pořadí úkolů kompilace.

Hledání silně propojených komponent grafu:

Používá se v grafu DFS, když existuje cesta z každého vrcholu v grafu k dalším zbývajícím vrcholům.

Řešení hádanek pouze s jedním řešením:

Algoritmus DFS lze snadno přizpůsobit prohledávání všech řešení bludiště zahrnutím uzlů na existující cestě v navštívené sadě.

KLÍČOVÉ ROZDÍLY:

  • BFS najde nejkratší cestu k cíli, zatímco DFS přejde na konec podstromu a poté se vrátí zpět.
  • Plná forma BFS je Breadth-First Search, zatímco plná forma DFS je Depth First Search.
  • BFS používá frontu ke sledování dalšího místa k návštěvě. vzhledem k tomu, že DFS používá hromádku ke sledování dalšího místa k návštěvě.
  • BFS prochází podle úrovně stromu, zatímco DFS prochází podle hloubky stromu.
  • BFS je implementován pomocí seznamu FIFO, na druhé straně DFS je implementován pomocí seznamu LIFO.
  • V BFS nikdy nemůžete být uvězněni do konečných smyček, zatímco v DFS můžete být uvězněni do nekonečných smyček.