Fronteira <- { Estado Inicial }
Enquanto True
Se não tem o que expandir Então Retorna Falha
Nó <- Retira_Um( Fronteira , Funcao_Avaliacao(Nó) )
Se chegou em Estado Meta Então Retorna Solução
Senão Fronteira <- Fronteira + Expande(Nó)Função de Avaliação [ f(Nó) ]
- f(Nó) = g(Nó) : Custo até o Nó - Dijkistra // Não é busca heurística
- f(Nó) = h(Nó) : Previsão de custo do nó atual até uma meta. - Greedy Search
- f(Nó) = g(Nó) + h(Nó) : A*
Exemplos de Heurística:Caminho Mínimo
- Distância em Linha Reta
8-Puzzle
- h1 - Total de peças fora do lugar
- h2 - Distância de Manhattan (Distância da peça sem contar diagonais).
Cubo Mágico
- Procurar informações sobre o programa ABSOLVER (Descobriu automaticamente uma heurística)Problemas:
- Não garante melhor solução
- Não garante completude.
(Ver exemplo com distância em linha reta).
Heurística Admissível
- Custo previsto nunca é maior que o custo real.Monotonicidade (Não descresce).
- Custo Previsto nunca decresce.
- Função PATHMAX garante monotonicidadeNão possui as desvantagens do Greedy.
CUSTO DA BUSCA
d IDS A*(h1) A*(h2) 2 10 6 6 4 112 13 12 6 680 20 18 8 6384 39 25 10 47127 93 39 12 364404 227 73 14 3473941 539 113 16 - 1301 211 18 - 3056 363 20 - 7276 676 22 - 18094 1219 24 - 39135 1641 Dados estatísticos sobre 100 diferentes instância do 8-puzzle.
Fator de Ramificação Efetivo:
IDS - 3.78
A*(h1) - 1.46
A*(h2) - 1.26* Pode ser usado em previsões sobre o desempenho do algoritmo.
Iterative Deepening A*
Eficiente quando valores de f(Nó) repetem-se com freqüência.
(No pior caso, pode inserir apenas um novo nó a cada iteração).