Dificuldade ★★☆
2 minutos de Leitura 🕒
A Busca em Profundidade (DFS – Depth-First Search) é um algoritmo de busca em grafos. Esse algoritmo explora um grafo a partir de um nó inicial, usando uma pilha para processar os nós não visitados.
Realizar a Ordenação Topológica de Grafos – A Busca em Profundidade pode ser usada para realizar a ordenação topológica de um grafo direcionado e acíclico, isto é listar os nós do grafo de forma que suas dependências sejam respeitadas.
Verificar Conexão em Grafos – A Busca em Profundidade pode ser usada para verificar se dois nós de um grafo estão conectados e, caso estejam, encontrar o caminho que os conecta.
Encontrar Componentes Conectados em Grafos – A Busca em Profundidade pode ser usada para encontrar todas os componentes conectados em um grafo não direcionado.
Detectar Ciclos em Grafos – A Busca em Profundidade pode ser usada detectar ciclos em um grafo direcionado.
"sem solução"
.A Busca em Profundidade possui uma complexidade linear de tempo e espaço, em função do número de nós |V|
e arestas E
do grafo:
O(|V| + |E|)
O(|V|)
Alternativamente, quando o grafo de busca é muito grande, a complexidade de tempo e espaço da BUsca em Profundidade é escrita em função do número do fator de ramificação do grafo b
(branch factor) e a distância d
do nó inicial ao nó objetivo, e possui uma complexidade exponencial:
O(bᵈ)
O(bd)
Veja o código completo no GitHub.