Algoritmo de busca em amplitude: visão geral, importância e aplicações
Publicados: 2020-12-23Os gráficos estão ao nosso redor. Um grafo pode ser pensado como uma rede interconectada de nós e arestas. Seus amigos no Facebook, suas conexões no LinkedIn ou seus seguidores no Twitter/Instagram constituem seu gráfico social. Da mesma forma, se quiser ir do ponto A ao ponto B, pode fazê-lo através de várias rotas, que podem ser visualizadas no Google Maps.
Todas essas múltiplas opções de rota do ponto A ao ponto B também constituem um gráfico. Os gráficos estão entre as estruturas de dados mais comuns que encontramos na academia e no mundo real, porque são tão onipresentes. E uma das operações mais frequentes que podem ser realizadas em um grafo é a travessia do grafo.
O que é Percurso Gráfico?
Graph Traversal é um método de visitar cada nó em um gráfico exatamente uma vez com velocidade e precisão. É um algoritmo avançado de pesquisa de grafos que permite imprimir a sequência de nós visitados sem ser pego em um loop infinito. Existem muitos algoritmos de travessia de grafos como Depth-First Search , Breadth-First Search , Algoritmo de Djikstra , Algoritmo A -Star e muito mais.
Este artigo mergulhará profundamente no algoritmo de pesquisa em amplitude ou BFS.
Estrutura do gráfico
Antes de dar uma olhada detalhada sob o capô do BFS, vamos nos familiarizar com algumas terminologias gráficas com a ajuda do gráfico acima:
Nó Raiz – O nó onde você inicia o processo de travessia. Por simplicidade, podemos considerar A como o nó raiz.

Níveis – Um nível é uma coleção de todos os nós que são equidistantes do nó raiz. Portanto, se considerarmos que o nó A está no nível 0, os nós B e C estão no nível 1, enquanto os nós D, E e F estão no nível 2. Uma heurística simples para determinar o número do nível de um nó é contar o número de arestas entre o referido nó e o nó raiz. Observe que isso só funciona se você definir o nó raiz no nível 0.
Nó pai – o nó pai de um nó é aquele que está um nível acima dele e adjacente a ele. Pode ser pensado como o nó a partir do qual o referido nó se origina. A é o nó pai de B e C.
Nós filhos/filhos – nós que se ramificam e são adjacentes a um nó pai. B e C são nós filhos de A
Leia: As 10 principais técnicas de visualização de dados
BFS é um algoritmo de travessia de grafos para explorar uma árvore ou um grafo de forma eficiente. O algoritmo começa com um nó inicial (nó raiz) e, em seguida, prossegue para explorar todos os nós adjacentes a ele, de maneira ampla, em oposição ao primeiro em profundidade, que desce um determinado ramo até todos os nós desse ramo. são visitados. Simplificando, ele percorre o gráfico em nível, não descendo um nível até que todos os nós naquele nível sejam visitados e marcados.
Ele opera no princípio FIFO (first-in-first-out) e é implementado usando uma estrutura de dados de fila. Uma vez que um nó é visitado, ele é inserido em uma fila. Em seguida, ele é registrado e todos os seus nós filhos são inseridos na fila. Esse processo continua até que todos os nós do grafo sejam visitados e registrados.
Vejamos as operações de fila detalhadas para o algoritmo BFS para o gráfico fornecido acima:
() – denota fila
[] – denota saída impressa
- Insira A na fila (a)
- Imprima A, insira B e C na fila (cb)[a]
- Imprima B, insira seus nós filhos D e E na fila (edc)[ba]
- Imprima C, insira seu nó filho F na fila (fed)[cba]
- Imprima D, insira seu nó filho na fila. Não há nenhum. (fe)[dcba]
- Imprima E, cujo nó filho F já foi inserido na fila. (f)[edcba]
- Imprimir F. [fedcba]
O que torna o algoritmo BFS importante
Existem inúmeras razões para implantar o BFS como um método para pesquisar rapidamente em vastos conjuntos de dados. Alguns dos principais recursos que o tornam a escolha preferida para desenvolvedores e engenheiros de dados são:
- O BFS pode explorar efetivamente todos os nós no gráfico e descobrir o caminho mais curto possível para explorar todos eles.
- O número de iterações necessárias para percorrer todo o gráfico é menor do que outros algoritmos de busca.
- Por ser implementado usando uma fila, sua arquitetura é robusta, confiável e elegante.
- Comparado a outros algoritmos, a saída do BFS é exata e livre de erros.
- As iterações do BFS acontecem sem problemas, sem correr o risco de ser pego em um loop infinito.
Checkout: Projetos de visualização de dados que você pode replicar

Aplicações do Algoritmo BFS
Devido à sua simplicidade e facilidade de configuração, o algoritmo BFS encontrou amplo uso em várias situações importantes do mundo real. Vejamos algumas aplicações proeminentes:
Rastreadores de mecanismos de pesquisa – Tente imaginar um mundo sem Google ou Bing. Você não pode. Os motores de busca são a espinha dorsal da internet. E o algoritmo BFS é a espinha dorsal dos motores de busca. É o algoritmo primário usado para indexar páginas da web. O algoritmo inicia sua jornada a partir da página de origem (nó raiz) e, em seguida, segue todos os links nessa página de origem de maneira abrangente. Cada página da web pode ser pensada como um nó independente no gráfico.
Percursos de gráfico não ponderados – O BFS pode identificar o caminho mais curto e a árvore geradora mínima em um gráfico não ponderado. Encontrar a rota mais curta é apenas encontrar um caminho com o menor número de arestas, para o qual o BFS é idealmente adequado. Ele pode realizar o trabalho visitando o menor número de nós.
Navegação GPS – O BFS aproveita os sistemas GPS para exibir todos os possíveis locais vizinhos a partir do seu ponto de partida, ajudando você a navegar do ponto A ao B sem problemas.

Transmissão – A rede de transmissão usa pacotes como unidades para transportar sinais e dados. O algoritmo BFS direciona esses pacotes para chegar a todos os nós da rede que eles devem alcançar.
Redes P2P – Torrents ou outras redes de compartilhamento de arquivos dependem da comunicação P2P. O BFS funciona de maneira excelente para encontrar os nós mais próximos para que a transferência de dados possa acontecer mais rapidamente.
Leia também: Benefícios da visualização de dados
Conclusão
Portanto, o algoritmo de busca em amplitude é um dos algoritmos mais importantes da internet moderna. Espero que este blog sirva como um ponto de partida útil em suas explorações de algoritmos de pesquisa.
Recomendamos que você escolha o PG Diploma in Data Science oferecido pelo IIIT Bangalore hospedado no upGrad porque aqui você pode tirar suas dúvidas 1-1 com os instrutores do curso. Ele não se concentra apenas no aprendizado teórico, mas dá importância ao conhecimento prático, essencial para preparar os alunos para enfrentar projetos do mundo real e fornecer o 1º certificado NASSCOM da Índia, que ajuda você a obter empregos bem remunerados em Ciência de Dados.
Quais são as desvantagens de usar o algoritmo de busca em largura?
O BFS tem a desvantagem de ser uma busca 'cega', o que significa que quando o espaço de busca é grande, o desempenho da busca será inferior a outras buscas heurísticas. Para que o primeiro algoritmo de busca binária funcione corretamente, todos os vértices associados devem ser salvos na memória, o que significa que ele usa mais memória. Outra desvantagem é que possui caminhos extensos, embora todos os caminhos para um alvo tenham quase a mesma profundidade de pesquisa.
Como o algoritmo BFS é diferente do algoritmo DFS?
O BFS usa muita memória, especialmente quando o fator de ramificação da árvore é alto. O DFS, por outro lado, pode levar muito tempo para visitar nós próximos adicionais se a profundidade da árvore for grande, mas tem uma complexidade de espaço menor. O BFS funciona bem quando se trata de encontrar vértices próximos à fonte especificada. Quando há soluções que não estão disponíveis na fonte, é preferível o uso de DFS. O retrocesso é essencial no DFS, ao contrário do BFS. O BFS percorre com base no nível da árvore, enquanto o DFS percorre com base na profundidade da árvore.
Como funciona o algoritmo A-Star?
O algoritmo A-Star é um método de busca de caminho que encontra o caminho mais curto entre os estados inicial e final. Ele é usado para uma variedade de propósitos, incluindo mapas, onde ajuda a encontrar a distância mais curta entre uma fonte (estado inicial) e um destino (estado final) (estado final). Assim como o método de Dijkstra, o algoritmo de busca A-Star cria a árvore de caminho de menor custo do nó inicial até o nó objetivo.