BFS vs DFS: saiba a diferença

O que é BFS ?

BFS é um algoritmo que é usado para representar graficamente dados ou árvore de pesquisa ou estruturas transversais. O algoritmo visita e marca com eficiência todos os nós-chave em um gráfico de maneira precisa.

Este algoritmo seleciona um único nó (ponto inicial ou fonte) em um gráfico e então visita todos os nós adjacentes ao nó selecionado. Uma vez que o algoritmo visita e marca o nó inicial, ele se move em direção aos nós não visitados mais próximos e os analisa.

Uma vez visitados, todos os nós são marcados. Essas iterações continuam até que todos os nós do gráfico tenham sido visitados e marcados com sucesso. A forma completa do BFS é a pesquisa em amplitude.

Neste BSF vs. Tutorial de árvore binária DFS, você aprenderá:

  • O que é BFS?
  • O que é DFS?
  • Exemplo de BFS
  • Exemplo de DFS
  • Diferença entre BFS e árvore binária DFS
  • Aplicativos de BFS
  • Aplicativos de DFS

O que é DFS?

DFS é um algoritmo para encontrar ou percorrer gráficos ou árvores na direção de profundidade. A execução do algoritmo começa no nó raiz e explora cada ramificação antes de retroceder. Ele usa uma estrutura de dados de pilha para lembrar, para obter o vértice subsequente e para iniciar uma pesquisa, sempre que um beco sem saída aparecer em qualquer iteração. A forma completa do DFS é a pesquisa em profundidade.

Exemplo de BFS

No seguinte exemplo de DFS, nós usei gráfico com 6 vértices.

Exemplo de BFS

Etapa 1)

Você tem um gráfico de sete números variando de 0 a 6.

Etapa 2)

0 ou zero foi marcado como um nó raiz.

Etapa 3)

0 é visitado, marcado e inseridos na estrutura de dados da fila.

Etapa 4)

Restantes 0 adjacentes e não visitados os nós são visitados, marcados e inseridos na fila.

Etapa 5)

As iterações transversais são repetidas até todos os nós são visitados.

Exemplo de DFS

No seguinte exemplo de DFS, usamos um gráfico não direcionado com 5 vértices.

Etapa 1)

Começamos a partir do vértice 0. O algoritmo começa colocando-o na lista visitada e simultaneamente colocando todos os seus vértices adjacentes nos dados estrutura chamada pilha.

Etapa 2)

Você visitará o elemento , que está no topo da pilha, por exemplo, 1 e vai para seus nós adjacentes. É porque 0 já foi visitado. Portanto, visitamos o vértice 2.

Etapa 3)

Vertex 2 tem um vértice próximo não visitado em 4. Portanto, nós o adicionamos na pilha e o visitamos.

Etapa 4)

Finalmente, visitaremos o último vértice 3, ele não “tem nenhum nó adjacente não visitado. Concluímos o percurso do gráfico usando o algoritmo DFS.

Diferença entre árvore binária BFS e DFS

BFS DFS
BFS encontra o caminho mais curto para o destino. O DFS vai para a parte inferior de uma subárvore, depois retrocede .
A forma completa de BFS é Pesquisa em Largura. A forma completa de DFS é Pesquisa em Profundidade.
Ele usa uma fila para rastrear o próximo local a ser visitado. Ele usa uma pilha para rastrear o próximo local a ser visitado.
BFS atravessa de acordo com o nível da árvore. DFS atravessa de acordo com a profundidade da árvore.
É implementado usando FI Lista FO. É implementado usando a lista LIFO.
Requer mais memória em comparação ao DFS. Requer menos memória em comparação ao BFS.
Este algoritmo fornece a solução de caminho mais superficial. Este algoritmo não garante a solução do caminho mais superficial.
Não há necessidade de retrocesso no BFS. Há uma necessidade de retrocesso no DFS.
Você nunca pode ficar preso em loops finitos. Você pode ser preso em loops infinitos.
Se você não encontrar nenhum objetivo, pode precisar expandir muitos nós antes que a solução seja encontrada. Se você não encontrar nenhum objetivo, o retrocesso do nó folha pode ocorrer.

Aplicativos de BFS

Aqui estão os aplicativos de BFS:

Não ponderados Gráficos:

O algoritmo BFS pode facilmente criar o caminho mais curto e uma árvore de abrangência mínima para visitar todos os vértices do gráfico no menor tempo possível com alta precisão.

Redes P2P:

BFS pode ser implementado para localizar todos os nós mais próximos ou vizinhos em uma rede ponto a ponto. Isso encontrará os dados necessários mais rapidamente.

Rastreadores da Web:

Os mecanismos de pesquisa ou rastreadores da web podem construir facilmente vários níveis de índices usando BFS. A implementação do BFS começa na fonte, que é a página da web, e então visita todos os links dessa fonte.

Network Broadcasting:

Um pacote broadcast é guiado pelo algoritmo BFS para encontrar e alcançar todos os nós para os quais tem o endereço.

Aplicativos de DFS

Aqui estão aplicativos importantes de DFS:

Gráfico ponderado:

Em um gráfico ponderado, a travessia do gráfico DFS gera a árvore de caminho mais curto e a árvore de abrangência mínima.

Detectando um ciclo em um gráfico:

Um gráfico tem um ciclo se encontrarmos uma borda posterior durante o DFS. Portanto, devemos executar o DFS para o gráfico e verificar as bordas posteriores.

Localização do caminho:

Podemos nos especializar no algoritmo DFS para pesquisar um caminho entre dois vértices.

Classificação topológica:

É usado principalmente para agendar tarefas de dependências fornecidas entre o grupo de tarefas. Na ciência da computação, ele é usado no agendamento de instruções, serialização de dados, síntese lógica, determinando a ordem das tarefas de compilação.

Pesquisando componentes fortemente conectados de um gráfico:

É usado no gráfico DFS quando há um caminho de cada vértice no gráfico para outros vértices restantes.

Resolvendo quebra-cabeças com apenas uma solução:

O algoritmo DFS pode ser facilmente adaptado para pesquisar todas as soluções para um labirinto, incluindo nós no caminho existente no conjunto visitado.

PRINCIPAIS DIFERENÇAS:

  • O BFS encontra o caminho mais curto para o destino, enquanto o DFS vai para o fundo de uma subárvore, depois retrocede.
  • A forma completa do BFS é Pesquisa em Largura, enquanto a forma completa do DFS é Pesquisa em Profundidade.
  • O BFS usa uma fila para manter o controle do próximo local a ser visitado. enquanto o DFS usa uma pilha para manter o controle do próximo local a ser visitado.
  • BFS atravessa de acordo com o nível da árvore, enquanto o DFS atravessa de acordo com a profundidade da árvore.
  • BFS é implementado usando lista FIFO em por outro lado, o DFS é implementado usando a lista LIFO.
  • No BFS, você nunca pode ser preso em loops finitos, enquanto no DFS você pode ser preso em loops infinitos.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *