Curso Algoritmos em Grafos
Busca em Profundidade (DFS)
Agora que sabemos como representar um grafo, aprenderemos a percorrê-lo. Percorrer refere-se ao processo de visita (verificação e/ou atualização) de cada vértice em um grafo. Esse processo é também conhecido como busca em grafo.
Nesta lição, discutiremos um algoritmo de busca em grafos conhecido como Busca em profundidade (DFS).
O algoritmo de busca em profundidade é um algoritmo recursivo para percorrer um grafo. A ideia deste algoritmo é criar uma função recursiva que irá percorrer o nosso grafo. Assim, vamos criar uma função recursiva
- Marca
como visitado - Itera sobre todos os vizinhos
de - Se
não tiver sido visitado, chamamos
Precisamos marcar um vértice como visitado para não visitar um vértice mais do que uma vez. Para implementar isso, utilizaremos um vetor booleano
Para executar a nossa DFS em uma componente, escolheremos um vértice
A implementação desta função recursiva está no código abaixo.
void dfs(int current)
{
visited[current] = true; // Marca current como visitado