Dans DFS, Les nœuds explorés sont stockés dans une structure de données de pile. Les bords qui nous dirigent vers des nœuds inexplorés sont appelés 'Bords de découverte`` Alors que les bords qui vont diriger les nœuds déjà visités sont appelés ''bords de blocage'. DFS est utile dans les scénarios lorsqu'un programmeur veut trouver des composants ou des cycles connectés dans un graphique.
Suivez les directives de cet article pour mettre en œuvre DFS en c++.
Mise en œuvre de DFS en C++
Dans la section suivante, nous allons expliquer comment DFS est implémenté en c++. On peut suivre les étapes données pour mettre en œuvre DFS.
Pseudocode DFS
Le DFS Le pseudocode est illustré ci-dessous. Dans le init () fonction, nous exécutons notre DFS fonction sur chaque nœud. Parce que le graphique peut avoir deux pièces déconnectées, nous pouvons exécuter le DFS algorithme sur chaque nœud pour nous assurer que nous avons couvert chaque sommet.
DFS (G A)
un.Visité = vrai
pour chaque b ∈ G.Adj [a]
Si b.visité == false
DFS (G, B)
init ()
Pour chaque a ∈ G
un.visité = faux
Pour chaque a ∈ G
DFS (G, A)
Ici G, A et B représentent le graphique, le nœud et le nœud visités pour la première fois dans la pile respectivement.
Implémentation de DFS en C++
Un programme C ++ pour DFS L'implémentation est donnée ci-dessous:
#inclure
#inclure
#inclure
Utilisation de Namespace Std;
modèle
classe DefthFirstSearch
privé:
carte> adjlist;
public:
DepthFirstSearch ()
void add_edge (t a, t b, bool dir = true)
Adjlist [A].push_back (b);
si (dir)
Adjlist [B].push_back (a);
void prnt ()
pour (auto i: adjlist)
couter<"
pour (entrée t: je.deuxième)
couter<
couter<
void dfs_helper (nœud t, carte&a visité)
Visité [nœud] = true;
couter << node <<" " << endl;
pour (t voisin: adjlist [nœud])
si(!visité [voisin])
dfs_helper (voisin, visité);
void DFS (t src)
cartea visité;
DFS_HELPER (SRC, visité);
;
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);
couter << endl;
Dans ce code, nous avons implémenté DFS algorithme suivant le pseudo code donné ci-dessus. Nous avons 12 paires de nœuds. Nous avons défini une classe "g”Qui représente un graphique ayant des sommets A et B qui représentent les nœuds visités et non visités.
Sortir
Conclusion
DFS est un algorithme de recherche populaire utile pour plusieurs scénarios, tels que trouver les cycles dans un graphique, et obtenir des informations sur les composants connectés ou tous les sommets dans un graphique. Nous avons également décrit le fonctionnement du DFS Méthode avec un exemple. DFS Emploie des piles pour exécuter la technique et peut également être utilisée sur les arbres.