Algoritmo de pesquisa em amplitude (BFS) com EXEMPLO

โšก Resumo Inteligente

A Busca em Largura (BFS, do inglรชs Breadth First Search) รฉ um algoritmo que percorre um grafo nรญvel por nรญvel, visitando todos os vizinhos de um nรณ antes de prosseguir para nรญveis mais profundos. Ela utiliza uma fila FIFO e encontra o caminho mais curto em grafos nรฃo ponderados, evitando loops infinitos.

  • ๐Ÿ“Š Ordem de nรญveis: A busca em largura (BFS) visita todos os nรณs na profundidade atual antes de passar para o prรณximo nรญvel.
  • ๐Ÿ“ฅ Baseado em fila: Uma fila FIFO armazena os nรณs visitados, de forma que os vizinhos sejam processados โ€‹โ€‹em ordem.
  • ๐ŸŽฏ Caminho mais curto: Em grafos nรฃo ponderados, a busca em largura (BFS) encontra o caminho mais curto no menor nรบmero de iteraรงรตes.
  • โœ… Sem loops: Marcar os nรณs visitados impede que a busca em largura (BFS) fique presa em um loop infinito.
  • ๐ŸŒ Aplicaรงรตes: O BFS alimenta rastreadores da web, redes P2P, navegaรงรฃo e transmissรฃo de rede.

Algoritmo de Busca em Largura (BFS) com Exemplo

O que รฉ o algoritmo BFS (pesquisa em amplitude)?

A busca em largura (BFS, do inglรชs Breadth-first search) รฉ um algoritmo usado para mapear dados em grรกficos, pesquisar em รกrvores ou percorrer estruturas. A sigla BFS significa "busca em largura".

O algoritmo visita e marca com eficiรชncia todos os nรณs principais em um grรกfico de maneira ampla e precisa. Este algoritmo seleciona um รบnico nรณ (ponto inicial ou de origem) em um grafo e entรฃo visita todos os nรณs adjacentes ao nรณ selecionado. Lembre-se de que o BFS acessa esses nรณs um por um.

Depois 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.

O que sรฃo travessias de grรกfico?

Uma travessia de grรกfico รฉ uma metodologia comumente usada para localizar a posiรงรฃo do vรฉrtice no grรกfico. ร‰ um algoritmo de busca avanรงado que pode analisar o grรกfico com rapidez e precisรฃo alรฉm de marcar a sequรชncia dos vรฉrtices visitados. Esse processo permite visitar rapidamente cada nรณ em um grรกfico sem ficar preso em um loop infinito.

A arquitetura do algoritmo BFS

Archiarquitetura do algoritmo BFS

  1. Nos vรกrios nรญveis dos dados, vocรช pode marcar qualquer nรณ como o nรณ inicial para comeรงar a busca. A busca em largura (BFS) visitarรก o nรณ, o marcarรก como visitado e o colocarรก na fila.
  2. Agora, a BFS visitarรก os nรณs mais prรณximos e os nรณs nรฃo visitados, marcando-os. Esses valores tambรฉm sรฃo adicionados ร  fila. A fila opera na Modelo FIFO.
  3. De maneira semelhante, os nรณs mais prรณximos e nรฃo visitados restantes no grafo sรฃo analisados, marcados e adicionados ร  fila. Esses itens sรฃo removidos da fila ร  medida que sรฃo recebidos e impressos como resultado.

Por que precisamos do algoritmo BFS?

Existem inรบmeras razรตes para utilizar o algoritmo BFS (Busca em Largura) para pesquisar em seu conjunto de dados. Alguns dos aspectos mais importantes que fazem deste algoritmo a sua primeira escolha sรฃo:

  • O BFS รฉ รบtil para analisar os nรณs em um grรกfico e construir o caminho mais curto para percorrรช-los.
  • O BFS pode percorrer um grรกfico no menor nรบmero de iteraรงรตes.
  • A arquitetura do algoritmo BFS รฉ simples e robusta.
  • O resultado do algoritmo BFS mantรฉm um alto nรญvel de precisรฃo em comparaรงรฃo com outros algoritmos.
  • As iteraรงรตes do BFS sรฃo perfeitas e nรฃo hรก possibilidade de esse algoritmo ser pego em um problema de loop infinito.

Como funciona o algoritmo BFS?

A travessia do grรกfico requer que o algoritmo visite, verifique e/ou atualize cada nรณ nรฃo visitado em uma estrutura semelhante a uma รกrvore. As travessias do grรกfico sรฃo categorizadas pela ordem em que visitam os nรณs do grรกfico.

O algoritmo BFS inicia a operaรงรฃo a partir do primeiro nรณ ou nรณ inicial em um grรกfico e o percorre completamente. Depois de atravessar com sucesso o nรณ inicial, o prรณximo vรฉrtice nรฃo percorrido no grรกfico รฉ visitado e marcado.

Portanto, pode-se dizer que todos os nรณs adjacentes ao vรฉrtice atual sรฃo visitados e percorridos na primeira iteraรงรฃo. Uma metodologia de fila simples รฉ utilizada para implementar o funcionamento de um algoritmo de Busca em Largura (BFS), e consiste nas seguintes etapas:

Passo 1)

Funcionamento do Algoritmo BFS

Cada vรฉrtice ou nรณ do grรกfico รฉ conhecido. Por exemplo, vocรช pode marcar o nรณ como V.

Passo 2)

Funcionamento do Algoritmo BFS

Caso o vรฉrtice V nรฃo seja acessado, adicione-o ร  fila BFS.

Passo 3)

Funcionamento do Algoritmo BFS

Inicie a busca em largura (BFS) e, apรณs a conclusรฃo, marque o vรฉrtice V como visitado.

Passo 4)

Funcionamento do Algoritmo BFS

A fila BFS ainda nรฃo estรก vazia, portanto, remova o vรฉrtice V do grรกfico da fila.

Passo 5)

Funcionamento do Algoritmo BFS

Recupere todos os vรฉrtices restantes no grafo que sรฃo adjacentes ao vรฉrtice V.

Passo 6)

Funcionamento do Algoritmo BFS

Para cada vรฉrtice adjacente, digamos V1, caso ele ainda nรฃo tenha sido visitado, adicione V1 ร  fila BFS.

Passo 7)

Funcionamento do Algoritmo BFS

O BFS visitarรก V1, marcarรก-lo-รก como visitado e o excluirรก da fila.

Exemplo de algoritmo BFS

Passo 1)

Exemplo de algoritmo BFS

Vocรช tem um grรกfico com sete nรบmeros que variam de 0 a 6.

Passo 2)

Exemplo de algoritmo BFS

0 ou zero foi marcado como um nรณ raiz.

Passo 3)

Exemplo de algoritmo BFS

0 รฉ visitado, marcado e inserido na estrutura de dados da fila.

Passo 4)

Exemplo de algoritmo BFS

Os nรณs adjacentes a 0 restantes e os nรณs nรฃo visitados sรฃo visitados, marcados e inseridos na fila.

Passo 5)

Exemplo de algoritmo BFS

As iteraรงรตes de passagem sรฃo repetidas atรฉ que todos os nรณs sejam visitados.

Regras do Algoritmo BFS

Aqui estรฃo algumas regras importantes para usar o algoritmo BFS:

  • Uma fila (FIFO โ€“ Primeiro a entrar, primeiro a sair) estrutura de dados รฉ usado pelo BFS.
  • Vocรช marca qualquer nรณ no grรกfico como raiz e comeรงa a percorrer os dados a partir dele.
  • A busca em largura (BFS) percorre todos os nรณs do grafo e continua removendo elementos.ping eles como concluรญdos.
  • O BFS visita um nรณ adjacente nรฃo visitado, marca-o como concluรญdo e insere-o em uma fila.
  • Remove o vรฉrtice anterior da fila caso nenhum vรฉrtice adjacente seja encontrado.
  • O algoritmo BFS itera atรฉ que todos os vรฉrtices do grafo sejam percorridos com sucesso e marcados como concluรญdos.
  • Nรฃo hรก loops causados โ€‹โ€‹pelo BFS durante a passagem de dados de qualquer nรณ.

Aplicaรงรตes do Algoritmo BFS

Vamos dar uma olhada em algumas das aplicaรงรตes da vida real onde a implementaรงรฃo de um algoritmo BFS pode ser altamente eficaz.

  • Grรกficos nรฃo ponderados: O algoritmo BFS (Busca em Largura de Banda) pode facilmente criar o caminho mais curto e uma รกrvore geradora mรญnima para visitar todos os vรฉrtices do grafo no menor tempo possรญvel e com alta precisรฃo.
  • Redes P2P: A busca em largura (BFS) pode ser implementada para localizar todos os nรณs mais prรณximos ou vizinhos em uma rede ponto a ponto. Isso permite encontrar os dados necessรกrios mais rapidamente.
  • Rastreadores da Web: Mecanismos de pesquisa ou rastreadores da web podem criar facilmente vรกrios nรญveis de รญndices empregando 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.
  • Sistemas de navegaรงรฃo: O BFS pode ajudar a encontrar todos os locais vizinhos do local principal ou de origem.
  • Transmissรฃo em rede: Um pacote transmitido รฉ guiado pelo algoritmo BFS para encontrar e alcanรงar todos os nรณs para os quais possui o endereรงo.

Perguntas Frequentes

Em IA, a busca em largura (BFS) explora estados de jogos, configuraรงรตes de quebra-cabeรงas e mapas para encontrar a soluรงรฃo mais curta quando cada movimento tem o mesmo custo. Ela garante o menor nรบmero de passos, embora possa usar muita memรณria em grafos grandes.

Sim. Assistentes de IA podem escrever BFS em Python, Java, ou C++ Utilizando uma fila e um conjunto de nรณs visitados a partir de uma descriรงรฃo simples. Teste em grafos de exemplo, pois casos extremos como nรณs desconectados sรฃo fรกceis de passar despercebidos.

A Busca em Largura (BFS) explora um grafo nรญvel por nรญvel usando uma fila e encontra o caminho mais curto em grafos nรฃo ponderados. A Busca em Profundidade (DFS) explora o mais profundamente possรญvel ao longo de cada ramo usando uma pilha ou recursรฃo antes de retornar ao ponto inicial.tracrei.

A busca em largura (BFS) tem complexidade de tempo O(V + E), onde V รฉ o nรบmero de vรฉrtices e E รฉ o nรบmero de arestas, pois cada vรฉrtice e aresta รฉ examinado uma รบnica vez. Sua complexidade de espaรงo รฉ O(V) para a fila e o conjunto visitado.

Resuma esta postagem com: