Baixe o app para aproveitar ainda mais
Prévia do material em texto
Resolução de Problemas: Buscas Informadas PROF. RICARDO P. MESQUITA Sumário Estratégias de Busca Com Informação Busca Gulosa Algoritmo A* Variações no A* Prof. Ricardo Mesquita 02/18 Estratégias de Busca com Informação Busca com informação: estratégia que utiliza o conhecimento específico do problema, além da definição do próprio problema Prof. Ricardo Mesquita 03/18 Estratégias de Busca com Informação Abordagem geral: busca pela melhor escolha ◦ Trata-se de uma especialização da busca em árvore, na qual um nó é selecionado para expansão com base em uma função de avaliação f( n ) ◦ Pode ser implementado por meio de uma fila de prioridades ◦ Apesar do nome (consagrado) não há como se garantir o que seria a “melhor escolha” Prof. Ricardo Mesquita 04/18 Estratégias de Busca com Informação Outro parâmetro importante das buscas informadas é a função heurística h( n ), que representa o custo estimado do caminho mais econômico do nó n até um nó objetivo Prof. Ricardo Mesquita 05/18 Busca Gulosa ◦ Tenta expandir o nó mais próximo à meta, na suposição de que isso provavelmente levará a uma solução rápida ◦ Desse modo, ela avalia nós usando apenas a função heurística f( n ) = h( n ) ◦ Pode levar a mínimos (máximos) locais ◦ É semelhante à busca em profundidade, pelo fato de preferir seguir um único caminho até o objetivo ◦ Possui os mesmos defeitos da busca em profundidade: não é ótima e é incompleta Prof. Ricardo Mesquita 06/18 Exemplo Considere o problema de ir de Arad a Bucareste Prof. Ricardo Mesquita 07/18 Usando Busca Gulosa Prof. Ricardo Mesquita 08/18 Arad 366 Sibiu Timisoara Zerind 374329253 Fagaras R. VilceaOradea 193176380 Bucareste 0 Algoritmo A* ◦ Forma mais conhecida de busca pela melhor escolha ◦ Avalia os nós combinando g( n ), o custo para se alcançar n, e h( n ), o custo de ir do nó n até o objetivo f( n ) = g( n ) + h( n ) Prof. Ricardo Mesquita 09/18 Algoritmo A* ◦ A análise do caráter ótimo do algoritmo A* é direta se for usada com uma busca em árvore ◦ A* será ótimo se h( n ) for uma heurística admissível, isto é, desde que h( n ) nunca superestime o custo para alcançar o objetivo ◦ Ou seja, h é uma estimativa do custo para se alcançar o objetivo. Usamos h*( n ), assim temos: f*( n ) = g( n ) + h*( n ) Prof. Ricardo Mesquita 10/18 Algoritmo A* Vamos enunciar o algoritmo em alto nível: 1. Criar um grafo G contendo o estado inicial S 2. Colocar S em uma lista chamada ABERTOS 3. Criar outra lista denominada FECHADOS 4. Se ABERTOS = , então FALHA 5. Senão, selecionar um nó de ABERTOS e colocar em FECHADOS 6. Se o nó satisfaz a condição de término, PARE (sucesso) 7. Senão, gerar o conjunto M de filhos desse nó 8. Colocar M em ABERTOS, verificando se há repetições de algum elemento tanto em ABERTOS quanto em FECHADOS (deve-se descartar repetições) 9. Reordenar ABERTOS segundo a função de avaliação 10. Vá para o passo 4 Prof. Ricardo Mesquita 11/18 Algoritmo A* Vamos considerar novamente o problema de ir de Arad a Bucareste. Então: ◦ g(n) é o custo (conhecido) de se ir de uma cidade até a próxima. ◦ Veja os rótulos das arestas do grafo representativo. ◦ h*(n) é uma estimativa do que falta para se atingir o destino. ◦ A distância reta da cidade atual até Bucareste é um bom estimador e nunca irá superestimar a distância da estrada! Prof. Ricardo Mesquita 12/18 Algoritmo A* Prof. Ricardo Mesquita 13/18 Considerações A* expande todos os nós com f( n ) < C*, onde C* representa o custo do caminho da solução ótima A* pode expandir alguns nós diretamente no “contorno objetivo” ( f( n ) = C* ) antes de selecionar um nó objetivo Prof. Ricardo Mesquita 14/18 Variações no A* AIA* (A* com Aprofundamento Iterativo): ◦ Tem o objetivo de tentar reduzir requisitos de memória ◦ Ao invés da profundidade, o valor de corte é determinado pela função de avaliação. ◦ A cada iteração, o valor de corte é o menor custo de f de qualquer nó que tenha excedido o corte na iteração anterior ◦ É prático para problemas cujo custo do passo é unitário ◦ Evita a sobrecarga da manutenção de uma fila ordenada de nós Prof. Ricardo Mesquita 15/18 Variações no A* LMA* (A* Limitado pela memória) LMSA* (A* Limitado pela memória simplificado) ◦ Funciona como o A* até completar o espaço disponível de memória ◦ A partir daí, precisa descartar um nó antigo para prosseguir com a busca ◦ O LMSA* sempre descarta o pior nó folha, armazenando seu valor no nó pai Prof. Ricardo Mesquita 16/18 Exercício Utilize o Algoritmo A* para encontrar uma solução para o Jogo das oito peças dadas as seguintes condições Prof. Ricardo Mesquita 17/18 Dúvidas?
Compartilhar