In Dfs, I nodi esplorati sono archiviati in una struttura di dati dello stack. I bordi che ci indirizzano verso nodi inesplorati sono chiamati 'bordi di scoperta"Mentre i bordi che vanno a guidare i nodi già visitati sono chiamati"bordi'. Dfs è utile negli scenari quando un programmatore vuole trovare componenti o cicli connessi in un grafico.
Segui le linee guida di questo articolo da implementare Dfs in c++.
Implementazione di DFS in C++
Nella sezione seguente, esamineremo come Dfs è implementato in C++. Si possono seguire i passaggi forniti per implementare Dfs.
Pseudocodice DFS
IL Dfs Lo pseudocodico è mostrato di seguito. Nel dentro() funzione, eseguiamo il nostro Dfs funzione su ciascun nodo. Poiché il grafico può avere due parti disconnesse, possiamo eseguire il Dfs algoritmo su ciascun nodo per garantire che abbiamo coperto ogni vertice.
Dfs (g a)
UN.visitato = vero
per ogni b ∈ G.Agg [a]
Se b.visitato == false
DFS (G, B)
dentro()
Per ogni a ∈ G
UN.visitato = false
Per ogni a ∈ G
Dfs (g, a)
Qui G, A e B rappresentano il grafico, il nodo e il nodo visitato per la prima volta nello stack rispettivamente.
Implementazione di DFS in C++
Un programma C ++ per Dfs L'implementazione è riportata di seguito:
#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
modello
Classe DepthFirstSearch
privato:
carta geografica> AdjList;
pubblico:
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 ()
per (auto I: adjList)
cout<";
per (t entry: i.secondo)
cout<
cout<
void dfs_helper (nodo t, mappae visitato)
visitato [nodo] = true;
cout << node <<" " << endl;
per (t vicino: adjList [nodo])
Se(!Visited [Neighbor])
dfs_helper (vicino, visitato);
void DFS (T SRC)
carta geograficavisitato;
dfs_helper (SRC, visitato);
;
int main ()
ProfonditàG;
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;
In questo codice, abbiamo implementato Dfs algoritmo seguendo il codice pseudo indicato sopra. Abbiamo 12 paia di nodi. Abbiamo definito una classe "G"Che rappresenta un grafico con vertici a e b che rappresentano nodi visitati e non visitati.
Produzione
Conclusione
Dfs è un algoritmo di ricerca popolare utile per diversi scenari, come trovare i cicli in un grafico e ottenere informazioni sui componenti connessi o tutti i vertici in un grafico. Abbiamo anche descritto il funzionamento del Dfs Metodo con un esempio. Dfs impiega pile per eseguire la tecnica e può anche essere utilizzato sugli alberi.