Pular para o conteúdo
Matemágica

Busca em largura e em profundidade

Anime a busca em largura (BFS) e a busca em profundidade (DFS) passo a passo: fila ou pilha, níveis, árvore da busca e tempos de entrada e saída.

Nível 2 · Intermediário Aula Origem: nova

Busca em largura e em profundidade

Buscar em um grafo é visitar, a partir de um vértice inicial, todos os vértices que podem ser alcançados seguindo arestas. As duas buscas básicas diferem só em qual vértice pega da fila de vizinhos.

Busca em largura (BFS)

A BFS usa uma fila: visita o vértice mais antigo da fila primeiro. Por isso ela visita primeiro tudo a distância 1, depois tudo a distância 2, e assim por diante. O nível de cada vértice é exatamente a distância em arestas até a origem.

A árvore formada pelas arestas que descobriram vértices novos é a árvore da busca em largura, e os caminhos dessa árvore são caminhos mínimos em número de arestas.

Busca em profundidade (DFS)

A DFS usa uma pilha (ou recursão): desce pelo primeiro vizinho não visitado até travar e só então volta. Ela produz uma árvore mais "comprida", e os tempos de entrada e saída de cada vértice mostram a ordem em que a busca entrou e saiu dele. Esses tempos são a base de vários algoritmos mais avançados, como a detecção de ciclos em grafos dirigidos.

O que observar na animação

Custo

Cada vértice entra na fila (ou na pilha) no máximo uma vez, e cada aresta é olhada uma ou duas vezes. Por isso o tempo é proporcional a n + m, o número de vértices mais o de arestas.

Desafios

  1. Em um grafo, a BFS a partir de um vértice dá níveis iguais à distância em arestas. Confirme isso no Petersen para o vértice A.

    Dica

    Compare o nível de cada vértice com o número mínimo de arestas no caminho até A.

  2. Por que a DFS pode produzir um caminho muito maior que a BFS até o mesmo vértice?

    Dica

    Troque o algoritmo para DFS no mesmo grafo e compare a árvore de busca com a da BFS.

  3. Crie duas partes separadas no editor. Quantas árvores de busca a DFS completa produz?

    Dica

    Uma busca a partir de um vértice não alcança outra componente; a DFS completa começa uma árvore em cada uma.

Continue daqui

Conceitos

Cada conceito leva à lista de aulas que o usam, por disciplina.