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.
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.
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.
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.
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.
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.
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.
Compare o nível de cada vértice com o número mínimo de arestas no caminho até A.
Por que a DFS pode produzir um caminho muito maior que a BFS até o mesmo vértice?
Troque o algoritmo para DFS no mesmo grafo e compare a árvore de busca com a da BFS.
Crie duas partes separadas no editor. Quantas árvores de busca a DFS completa produz?
Uma busca a partir de um vértice não alcança outra componente; a DFS completa começa uma árvore em cada uma.
Cada conceito leva à lista de aulas que o usam, por disciplina.
Trilha de estudo: Grafos · Mapa de conceitos