Em Dfs, Os nós que estão sendo explorados são armazenados em uma estrutura de dados de pilha. As bordas que nos levam a nós inexploradas são chamadas 'Bordas de descoberta'Enquanto as bordas vão liderar os nós já visitados são chamados'Bordas de bloco'. Dfs é útil em cenários quando um programador deseja encontrar componentes ou ciclos conectados em um gráfico.
Siga as diretrizes deste artigo para implementar Dfs em c++.
Implementação de DFs em C++
Na seção a seguir, vamos repassar como Dfs é implementado em C++. Pode -se seguir as etapas fornecidas para implementar Dfs.
DFS pseudocode
O Dfs pseudocode é mostrado abaixo. No iniciar() função, nós executamos nosso Dfs função em cada nó. Como o gráfico pode ter duas peças desconectadas, podemos executar o Dfs Algoritmo em cada nó para garantir que cobrimos todos os vértices.
DFS (G A)
a.visitado = true
Para cada b ∈ G.Adj [a]
se b.visitado == false
DFS (G, B)
iniciar()
Para cada A ∈ G
a.visitado = false
Para cada A ∈ G
DFS (G, A)
Aqui G, A e B representam o gráfico, primeiro visitaram o nó e o nó na pilha, respectivamente.
Implementando DFS em C++
Um programa C ++ para Dfs A implementação é dada abaixo:
#incluir
#incluir
#incluir
usando namespace std;
modelo
Classe DepthfirstSearch
privado:
mapa> adjList;
público:
DepthfirstSearch ()
void add_edge (t a, t b, bool dir = true)
adjlist [a].push_back (b);
se (dir)
adjlist [b].push_back (a);
Void Prnt ()
para (Auto I: adjlist)
cout<";
para (t entrada: eu.segundo)
cout<
cout<
void dfs_helper (nó t, mapa&visitado)
visitado [nó] = true;
cout << node <<" " << endl;
para (t vizinho: adjlist [nó])
se(!visitado [vizinho])
dfs_helper (vizinho, visitado);
Void DFS (T SRC)
mapavisitado;
dfs_helper (src, visitado);
;
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;
Neste código, implementamos Dfs algoritmo seguindo o código pseudo -dado acima. Temos 12 pares de nós. Definimos uma classe “G”Que representa um gráfico com vértices A e B que representam nós visitados e não visitados.
Saída
Conclusão
Dfs é um algoritmo de pesquisa popular útil para vários cenários, como encontrar os ciclos em um gráfico e obter informações sobre os componentes conectados ou todos os vértices em um gráfico. Também descrevemos o funcionamento do Dfs método com um exemplo. Dfs emprega pilhas para executar a técnica e também pode ser usado em árvores.