Algoritmos de Busca em Mapas Um estudo educacional da Busca em Largura (BFS) Resumo Este material apresenta, de forma gradual, o problema de encontrar caminhos em mapas representados por grades. O foco é o algoritmo de Busca em Largura, conhecido pela sigla BFS (do inglês Breadth-First Search). Além da explicação conceitual, são analisados três cenários com diferentes posições de início e objetivo e três níveis de complexidade. O propósito é compreender não apenas qual caminho foi encontrado, mas também por que a quantidade de células exploradas varia entre os experimentos. Conteúdo 1 O problema de busca de caminhos 2 2 Da grade para um grafo 2.1 Comparação inicial entre algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 Como funciona a Busca em Largura 3.1 Estruturas de dados necessárias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Execução passo a passo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Custo computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 3 3 4 Como ler os experimentos 4.1 Cenário 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Cenário 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Cenário 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 5 6 5 Resultados consolidados 5.1 Indicadores derivados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 6 O que os resultados ensinam 7 7 Limitações e extensões 7 8 Questões para revisão 8 9 Conclusão 8 1 Algoritmos de busca em mapas 1 Busca em Largura (BFS) O problema de busca de caminhos Encontrar um caminho é uma tarefa recorrente em robótica móvel, jogos digitais, logística e sistemas de navegação. Em termos simples, deseja-se responder à seguinte pergunta: Como sair de uma posição inicial e alcançar um objetivo sem atravessar obstáculos? Neste estudo, o ambiente é representado por um occupancy grid, ou mapa de ocupação. Trata-se de uma grade dividida em células, na qual cada célula informa se uma pequena região do ambiente pode ou não ser atravessada. Vocabulário essencial. Uma célula livre pode ser visitada; uma célula bloqueada representa um obstáculo; a célula de partida indica o início da busca; e a célula objetivo indica o destino. Para este documento, considera-se que um movimento leva o agente de uma célula para uma vizinha permitida. O conjunto de movimentos aceitos deve ser definido antes da execução do algoritmo. Em uma grade com vizinhança de quatro direções, por exemplo, são permitidos movimentos para cima, para baixo, para a esquerda e para a direita. 2 Da grade para um grafo Embora o ambiente seja desenhado como uma grade, um algoritmo de busca pode interpretá-lo como um grafo: • cada célula livre corresponde a um vértice (ou nó); • uma ligação entre duas células vizinhas corresponde a uma aresta; • as células bloqueadas não participam das rotas possíveis; • encontrar um caminho equivale a encontrar uma sequência de vértices entre a partida e o objetivo. Essa transformação é importante porque permite empregar algoritmos clássicos de busca em grafos, como DFS, BFS, Dijkstra e A*. 2.1 Comparação inicial entre algoritmos Tabela 1: Visão geral de algoritmos comuns de busca Algoritmo Estratégia Garante menor caminho? Observação didática DFS Aprofunda uma rota antes de testar alternativas. Explora o mapa por camadas de distância. Não, em geral. Usa pilha ou recursão e pode seguir cedo por uma direção pouco promissora. Usa uma fila e serve como referência neste estudo. BFS Dijkstra A* 3 Expande primeiro o menor custo acumulado. Combina custo acumulado e estimativa até o objetivo. Sim, quando todas as ações têm o mesmo custo. Sim, para custos não negativos. Sim, sob condições apropriadas da heurística. Adequado quando movimentos possuem custos diferentes. Em geral direciona melhor a busca ao destino. Como funciona a Busca em Largura A BFS explora as células em camadas. Primeiro visita as células a um movimento da partida; depois, as células a dois movimentos; em seguida, as células a três movimentos, e assim por diante. 2 Algoritmos de busca em mapas Busca em Largura (BFS) Essa ordem explica por que ela encontra um caminho com o menor número de passos quando todos os movimentos possuem o mesmo custo. 3.1 Estruturas de dados necessárias Uma implementação típica utiliza: • uma fila, que preserva a ordem de descoberta das células; • um conjunto de visitados, que impede a exploração repetida de uma mesma célula; • um registro de predecessores, usado para reconstruir o caminho após alcançar o objetivo. 3.2 Execução passo a passo 1. Coloque a célula de partida na fila e marque-a como visitada. 2. Retire a primeira célula da fila. 3. Se ela for o objetivo, encerre a busca. 4. Examine seus vizinhos livres. 5. Para cada vizinho ainda não visitado, registre seu predecessor, marque-o como visitado e coloque-o no fim da fila. 6. Repita os passos 2 a 5 enquanto houver células na fila. 7. Se a fila ficar vazia antes de o objetivo ser encontrado, não existe caminho válido nas condições definidas. Por que o caminho é mínimo? Como a BFS examina todas as células a uma distância d antes das células a uma distância d + 1, o primeiro encontro com o objetivo corresponde ao menor número de movimentos, desde que todas as arestas tenham o mesmo custo. 3.3 Custo computacional Em um grafo com V vértices e E arestas, a complexidade de tempo da BFS é O(V + E), pois cada vértice é visitado no máximo uma vez e cada aresta é examinada um número constante de vezes. O consumo de memória também é O(V ), devido à fila, ao conjunto de visitados e ao registro de predecessores. Em uma grade, isso significa que, no pior caso, uma grande parte das células livres poderá ser armazenada e explorada. 4 Como ler os experimentos Foram avaliados três cenários. Em cada cenário, são mantidos os níveis de complexidade simples, intermediário e difícil. Todos os mapas possuem 100 células, mas a quantidade de obstáculos cresce com a dificuldade: • simples: 15 células bloqueadas e 85 livres; • intermediário: 37 células bloqueadas e 63 livres; • difícil: 48 células bloqueadas e 52 livres. As duas imagens de cada caso devem ser lidas em conjunto. A primeira apresenta a configuração inicial: células livres em branco, obstáculos em preto, partida em verde e objetivo em vermelho. A segunda apresenta o estado final da busca: o trajeto reconstruído aparece em azul, as regiões processadas são indicadas em cinza e as células em ciano pertencem à fronteira ainda aberta no instante registrado. Assim, é possível comparar o produto final (o caminho) com o trabalho computacional necessário para encontrá-lo (as células exploradas). 3 Algoritmos de busca em mapas 4.1 Busca em Largura (BFS) Cenário 1 (a) Mapa simples. (b) Mapa intermediário. (c) Mapa difícil. Figura 1: Configurações iniciais dos mapas do cenário 1. (a) Resultado no mapa simples. (b) Resultado no mapa intermediário. (c) Resultado no mapa difícil. Figura 2: Estado final da BFS no cenário 1: caminho, exploração e fronteira. Neste cenário, os mapas simples e intermediário produzem caminhos de mesmo comprimento (14), mas exigem 81 e 58 células exploradas, respectivamente. Isso mostra que a quantidade de células livres, por si só, não determina o comprimento da rota. Já o mapa difícil força um desvio maior: o caminho cresce para 22 células e todas as 52 células livres são exploradas. 4 Algoritmos de busca em mapas 4.2 Busca em Largura (BFS) Cenário 2 (a) Mapa simples. (b) Mapa intermediário. (c) Mapa difícil. Figura 3: Configurações iniciais dos mapas do cenário 2. (a) Resultado no mapa simples. (b) Resultado no mapa intermediário. (c) Resultado no mapa difícil. Figura 4: Estado final da BFS no cenário 2: caminho, exploração e fronteira. O cenário 2 evidencia o efeito da distância entre partida e objetivo. No mapa simples, apenas 16 células são exploradas para produzir um caminho de comprimento 5. Conforme os obstáculos impõem desvios, o comprimento aumenta para 7 e depois para 17, acompanhado pelo crescimento da exploração para 24 e 40 células. 5 Algoritmos de busca em mapas 4.3 Busca em Largura (BFS) Cenário 3 (a) Mapa simples. (b) Mapa intermediário. (c) Mapa difícil. Figura 5: Configurações iniciais dos mapas do cenário 3. (a) Resultado no mapa simples. (b) Resultado no mapa intermediário. (c) Resultado no mapa difícil. Figura 6: Estado final da BFS no cenário 3: caminho, exploração e fronteira. Neste cenário, o mapa difícil apresenta um resultado particularmente instrutivo: seu caminho tem comprimento 12, igual ao do mapa simples, mas somente 39 células são exploradas, contra 77 no caso simples. Os obstáculos reduziram o número de alternativas disponíveis e canalizaram a expansão da BFS. Portanto, adicionar obstáculos nem sempre aumenta o esforço da busca; o efeito depende de onde eles estão posicionados. 5 Resultados consolidados As Tabelas 2, 3 e 4 reúnem as métricas dos experimentos. A coluna “células exploradas” mede o esforço da busca, enquanto o “comprimento do caminho” mede o tamanho da solução encontrada. Essas grandezas estão relacionadas, mas não são equivalentes. Tabela 2: Métricas da BFS no cenário 1 Complexidade Total Bloqueadas Livres Exploradas Caminho Simples Intermediário Difícil 100 100 100 15 37 48 85 63 52 81 58 52 14 14 22 6 Algoritmos de busca em mapas Busca em Largura (BFS) Tabela 3: Métricas da BFS no cenário 2 Complexidade Total Bloqueadas Livres Exploradas Caminho Simples Intermediário Difícil 100 100 100 15 37 48 85 63 52 16 24 40 5 7 17 Tabela 4: Métricas da BFS no cenário 3 5.1 Complexidade Total Bloqueadas Livres Exploradas Caminho Simples Intermediário Difícil 100 100 100 15 37 48 85 63 52 77 49 39 12 14 12 Indicadores derivados Para aprofundar a leitura, pode-se calcular a taxa de exploração: células exploradas × 100%. células livres Por exemplo, no mapa simples do cenário 1, a BFS explora taxa de exploração = 81 × 100% ≈ 95,3% 85 das células livres. No mapa simples do cenário 2, essa taxa é de apenas 16 × 100% ≈ 18,8%. 85 Os dois mapas possuem o mesmo número de células livres, mas exigem esforços muito diferentes. A posição relativa entre partida e objetivo e a distribuição espacial dos obstáculos são, portanto, decisivas. 6 O que os resultados ensinam 1. Mais obstáculos não significa automaticamente mais exploração. Obstáculos podem gerar desvios, mas também podem eliminar alternativas e direcionar a expansão. 2. Um caminho curto não implica necessariamente uma busca pequena. A BFS pode examinar muitas células situadas na mesma camada de distância antes de alcançar o objetivo. 3. A posição do objetivo é importante. Um objetivo próximo tende a ser encontrado após poucas camadas, embora a configuração do mapa possa alterar esse comportamento. 4. Exploração e solução medem aspectos diferentes. O número de células exploradas representa custo computacional; o comprimento do caminho representa a qualidade da rota em número de movimentos. 5. A BFS é completa em grafos finitos. Se existir um caminho e o controle de visitados estiver correto, a busca conseguirá encontrá-lo. Se a fila esvaziar, partida e objetivo estão desconectados. 7 Limitações e extensões A BFS é uma excelente ferramenta introdutória e uma referência confiável para grades sem custos diferenciados. Entretanto, ela não considera que certos terrenos possam ser mais difíceis de 7 Algoritmos de busca em mapas Busca em Largura (BFS) atravessar, nem utiliza informação sobre a direção do objetivo. Em mapas maiores, a expansão em todas as direções pode consumir bastante memória. Como continuidade, podem ser realizados os seguintes experimentos: • comparar BFS e DFS usando exatamente os mesmos mapas; • atribuir custos diferentes às células e aplicar o algoritmo de Dijkstra; • aplicar o A* e verificar se sua heurística reduz a quantidade de células exploradas; • permitir movimentos diagonais e observar como muda o comprimento dos caminhos; • medir tempo de execução e consumo de memória em grades maiores. 8 Questões para revisão 1. Por que a BFS utiliza uma fila, e não uma pilha? 2. Em que condição a BFS garante um caminho de custo mínimo? 3. Qual é a diferença entre uma célula explorada e uma célula pertencente ao caminho final? 4. Por que o mapa difícil do cenário 3 explora menos células que o mapa simples? 5. Qual algoritmo seria mais apropriado se atravessar algumas células custasse mais que atravessar outras? 9 Conclusão Os experimentos mostram que o comportamento de um algoritmo de busca não depende apenas da quantidade de obstáculos. A distância até o objetivo, a disposição das células bloqueadas e o número de rotas alternativas influenciam diretamente a expansão. A BFS encontra o menor caminho em número de movimentos quando todos os movimentos têm o mesmo custo, mas pode explorar grande parte do espaço livre antes de chegar ao destino. Por isso, analisar simultaneamente o comprimento do caminho e a quantidade de células exploradas oferece uma compreensão mais completa do desempenho do algoritmo. 8
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )