W DFS, Badane węzły są przechowywane w strukturze danych stosu. Krawędzie, które kierują nas do niezbadanych węzłów, nazywane sąOdkrycie krawędzi„Podczas gdy krawędzi będą już wizytyjnie, które już odwiedzone są”, nazywane sąBlokuj krawędzie'. DFS jest przydatny w scenariuszach, gdy programista chce znaleźć połączone komponenty lub cykle na wykresie.
Postępuj zgodnie z wytycznymi tego artykułu do wdrożenia DFS w c++.
Wdrożenie DFS w C++
W poniższej sekcji omówimy, jak DFS jest zaimplementowany w C++. Można wykonać podane kroki do wdrożenia DFS.
Dfs pseudocode
DFS Pseudokod pokazano poniżej. w w tym() Funkcja, wykonujemy nasze DFS Funkcja w każdym węźle. Ponieważ wykres może mieć dwie odłączone części, możemy uruchomić DFS algorytm w każdym węźle, aby upewnić się, że omówiliśmy każdy wierzchołek.
DFS (G A)
A.odwiedzone = prawda
Dla każdego b ∈ G.Przym [a]
Jeśli b.odwiedzone == Fałsz
DFS (G, B)
w tym()
Dla każdego ∈ G
A.odwiedzone = false
Dla każdego ∈ G
DFS (G, A)
Tutaj G, A i B reprezentują wykres, najpierw odwiedził węzeł i węzeł odpowiednio w stosie.
Wdrażanie DF w C++
Program C ++ dla DFS Wdrożenie podano poniżej:
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
szablon
Klasa głębokierzysta
prywatny:
mapa> adjlist;
publiczny:
DepthFirstsearch ()
void add_edge (t a, t b, bool dir = true)
adjlist [a].push_back (b);
if (dir)
adjlist [b].push_back (a);
void prnt ()
dla (auto i: adjlist)
Cout<";
dla (t wpis: i.drugi)
Cout<
Cout<
void dfs_helper (węzeł t, mapai odwiedzone)
odwiedzone [węzeł] = true;
Cout << node <<" " << endl;
dla (t sąsiad: adjlist [węzeł])
Jeśli(!odwiedzone [sąsiad])
dfs_helper (sąsiad, odwiedzony);
void dfs (t src)
mapaodwiedzone;
dfs_helper (SRC, odwiedzony);
;
int main ()
DepthFirstsearchG;
G.Add_edge (0,5);
G.Add_edge (0,7);
G.Add_edge (4,7);
G.Add_edge (7,8);
G.Add_edge (2,1);
G.Add_edge (0,6);
G.Add_edge (2,4);
G.Add_edge (3,2);
G.Add_edge (3,6);
G.Add_edge (7,5);
G.Add_edge (5,8);
G.Prnt ();
G.DFS (6);
Cout << endl;
W tym kodzie zaimplementowaliśmy DFS Algorytm po pseudo podanym powyżej. Mamy 12 par węzłów. Zdefiniowaliśmy klasę „G”, Który reprezentuje wykres zawierający wierzchołki A i B, które reprezentują odwiedzone i niezapomniane węzły.
Wyjście
Wniosek
DFS jest popularnym algorytmem wyszukiwania przydatnym dla kilku scenariuszy, takich jak znalezienie cykli na wykresie i uzyskanie informacji o połączonych komponentach lub wszystkich wierzchołkach na wykresie. Opisaliśmy również działanie DFS Metoda z przykładem. DFS wykorzystuje stosy do wykonania techniki i można je również stosować na drzewach.