Módulo 7 - Percursos em grafos: largura, profundidade e caminho

Busca em largura: explorar por camadas

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 12/07/2026

Velocidade

O que você vai aprender

  • Entender a busca em largura como uma exploração por camadas.
  • Reconhecer o papel da fila e do conjunto de visitados na BFS.
  • Prever a ordem em que a BFS visita os vértices de um grafo.
  • Associar a BFS ao problema do caminho mais curto em passos.

Explorar o grafo em ondas

Imagine que você joga uma pedra num lago parado. As ondas se afastam do ponto de queda em círculos: primeiro o anel mais perto, depois o seguinte, depois um mais distante. A busca em largura explora um grafo exatamente assim. Ela parte de um vértice e, antes de ir para longe, visita todos os vizinhos que estão a um passo de distância. Só quando esse anel inteiro foi visto é que ela avança para os vértices a dois passos, depois a três, sempre completando uma camada antes de começar a próxima. Nada de mergulhar num caminho e esquecer o resto; a BFS é metódica e uniforme.

Para conseguir essa ordem tão certinha, a busca precisa de memória. A peça central é uma fila, aquela estrutura FIFO que você viu antes: o primeiro a entrar é o primeiro a sair. Quando a busca descobre novos vizinhos, ela os coloca no fim da fila; quando vai escolher o próximo a visitar, tira o da frente. Como os vizinhos mais próximos entram primeiro, também saem primeiro, e é isso que garante a exploração por camadas. Ao lado da fila, um conjunto de visitados anota quem já apareceu, para que nenhum vértice seja processado duas vezes.

Um grafo com o vértice A no centro e as camadas se afastando dele. A camada 0 é só o A. A camada 1, ligada a A por arestas, são os vértices B e C. A camada 2, ligada a B e C, são D, E e F. Setas em ondas concêntricas mostram a ordem de visita: A, depois B e C, depois D, E e F. Ao lado, uma fila desenhada como uma fileira de caixas mostra os vértices esperando a vez.
A busca em largura visita em ondas a partir de A: primeiro os vizinhos diretos, depois a próxima camada. A fila guarda a ordem.

A fila e os visitados em ação

Vale acompanhar o algoritmo passo a passo. No começo, você coloca o vértice inicial na fila e o marca como visitado. Depois entra num laço que repete enquanto a fila não estiver vazia: tira o vértice da frente, olha para cada vizinho dele e, para cada vizinho ainda não visitado, marca como visitado e coloca no fim da fila. Marcar no momento de enfileirar, e não no momento de visitar, é um detalhe que evita colocar o mesmo vértice duas vezes na fila. Quando a fila esvazia, todos os vértices alcançáveis foram vistos, cada um uma única vez.

fila <- [inicio]
visitados <- {inicio}   // conjunto
enquanto fila não está vazia faça
  atual <- tira da frente da fila
  escreva("visitando ", atual)
  para cada vizinho de atual faça
    se vizinho não está em visitados então
      adiciona vizinho em visitados
      coloca vizinho no fim da fila
    fim
  fim
fim

O esqueleto da BFS: fila para a ordem, conjunto para não repetir. Marca ao enfileirar, visita ao desenfileirar.

🎮 Jogo da aula

A ordem das camadas

A partir de A, a BFS visita os vértices camada por camada. Sabendo que A liga em B e C, que B liga em D, e que C liga em E, coloque os vértices na ordem em que a busca os visita.

    Por que a ordem por camadas importa

    A grande vantagem de visitar camada por camada aparece quando você quer o caminho mais curto contado em passos. Como a BFS só chega à camada 2 depois de esgotar a camada 1, a primeira vez que ela toca um vértice é sempre pelo caminho com o menor número de arestas. Se você procura em quantos passos vai de uma pessoa a outra numa rede de amizades, ou o menor número de movimentos num labirinto, a BFS entrega isso de graça: a camada em que o vértice foi encontrado é a distância dele até o início. A busca em profundidade, que você verá na próxima aula, não dá essa garantia, porque ela mergulha fundo antes de olhar os vizinhos mais próximos.

    Teste rápido

    Qual estrutura a busca em largura usa para guardar os vértices que ainda faltam visitar, e por quê?

    Perguntas frequentes

    O que significa a sigla BFS?
    BFS vem de Breadth-First Search, que em português é busca em largura. Largura porque a exploração se espalha para os lados, cobrindo toda uma camada de vizinhos antes de descer para a próxima. É o contraste com a busca em profundidade, que mergulha fundo primeiro.
    Por que a BFS usa fila e não pilha?
    Porque a fila entrega os vértices na ordem em que foram descobertos: o primeiro a entrar é o primeiro a sair. Assim os vizinhos mais próximos, descobertos antes, são visitados antes, e a busca avança em camadas. Se trocasse a fila por uma pilha, a busca passaria a mergulhar fundo e viraria uma busca em profundidade.
    O que acontece se eu esquecer o conjunto de visitados?
    Num grafo sem ciclos talvez você tenha sorte, mas em qualquer grafo com ciclo a busca entra em loop infinito: ela volta a um vértice já visto, redescobre os mesmos vizinhos e nunca termina. O conjunto de visitados é o que garante que cada vértice seja processado uma única vez.
    A BFS visita todos os vértices do grafo?
    Ela visita todos os vértices alcançáveis a partir do ponto de partida. Se o grafo tiver partes desconectadas, uma ilha sem nenhuma ligação com o início, esses vértices não são alcançados. Para cobrir tudo, é comum rodar a busca a partir de cada vértice ainda não visitado.
    A ordem entre vizinhos da mesma camada é fixa?
    Depende da ordem em que os vizinhos aparecem na lista de adjacência. A BFS respeita a ordem em que eles entram na fila. Camadas diferentes sempre saem na ordem certa (a mais próxima primeiro), mas dentro de uma camada a sequência segue como o grafo lista os vizinhos.
    Onde a busca em largura aparece na prática?
    Em muitos lugares: achar o menor caminho num labirinto ou num mapa em número de passos, medir o grau de separação entre pessoas numa rede social, encontrar a saída mais próxima, espalhar uma informação por uma rede. Sempre que a pergunta é sobre o caminho mais curto contado em passos iguais, a BFS é a primeira ferramenta a considerar.

    Fontes

    Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.