2. IDEIAS PRINCIPAIS
Estratégia best-first
Sempre expande o nó mais promissor
Busca informada - heurística
Heurística Quão bom parece este nó?
Diferente da estratégia greedy (gulosa)
Leva em consideração o custo já incorrido
Não perde tempo em explorar nós que já ficaram
caros
3. IDEIAS PRINCIPAIS
Forma:
𝑓 𝑛 = ℎ 𝑛 + 𝑔(𝑛)
Custo ótimo (mínimo),
passando por n
Custo ótimo (mínimo)
de n até o objetivo
Custo ótimo (mínimo)
da origem até n
4. IDEIAS PRINCIPAIS
Blefe
Encontrar f(n) é nosso objetivo
Não conhecemos h(n) nem g(n)
Ideia: estimar h(n) e g(n) para guiar a busca
5. IDEIAS PRINCIPAIS
Nova Forma:
f 𝑛 = ℎ 𝑛 + 𝑔(𝑛)
Custo estimado,
passando por n
Custo estimado
de n até o objetivo
Custo realizado
da origem até n
^ ^ ^
6. EXEMPLO: A CLÁSSICA VIAGEM
Vamos de Arad para Bucharest!
Origem:
Arad
Objetivo:
Bucharest
14. OTIMALIDADE
Pressupostos
A heurística h(n) é admissível
Nunca superestima o custo até o objetivo
“Otimista”
Fator de ramificação é finito
O problema tem fim
Custo de expansão positivo
15. OTIMALIDADE
Passo 1: Provar que nós-objetivos aparecem na fila
para expansão
Respeitando-se o pressuposto de que o fator de ramificação é finito,
isto é, o problema tem fim, podemos afirmar que o algoritmo A* é
completo, isto é, ele encontrará ao menos uma solução.
A* não fica preso em ciclos ...
17. OTIMALIDADE
Passo 2: Provar que nós-objetivos sub-ótimos
nunca serão expandidos/encontrados
Supondo um estado sub-ótimo G2 (Bucharest) na fila de expansão.
Sabemos que h(G2) = 0 e, portanto, f(G2) = g(G2) + 0 > C* (custo mínimo)
Um nó n, pertencente ao caminho ótimo, possui: f(n) = g(n) + h(n) onde h(n)
nunca superestima o custo até o objetivo, logo f(n) < C*.
***Portanto, f(n) aparecerá antes de G2 na fila para expansão.***
19. 646
Fila de Prioridades: {Bucharest(418), Timisoara(447), Bucharest(450),
Zerind(449), Oradea(526), Craiova(526), Sibiu(553), Sibiu(591), Rimnicu(607),
Craiova(615), Arad(646)}
G2 não seria expandido...
antes que verificássemos
caminhos mais promissores.
Mesmo se não tivéssemos encontrado C*,
Por isso podemos afirmar que caso G2 fosse expandido, ele seria ótimo.
20. OTIMALIDADE
Passo 3: Provar que nós pertencentes ao caminho
ótimo estarão na fila
Decorrência da demonstração do Passo 2:
Sabemos que h(G2) = 0 e, portanto, f(G2) = g(G2) + 0 > C* (custo mínimo)
Um nó n, pertencente ao caminho ótimo, possui: f(n) = g(n) + h(n) onde h(n)
nunca superestima o custo até o objetivo, logo f(n) < C*.
Então podemos afirmar que A* expandirá todos os nós com f(n) < C*,
até encontrar a solução ótima.
21. OTIMALIDADE
A* é ótimo
Caso seja implementado em grafo
Heurística deve ser consistente (que implica
admissibilidade)
ℎ 𝑛 ≤ 𝑐 𝑛, 𝑛′
+ ℎ(𝑛′
)
f(n) é não-decrescente