Escolar Documentos
Profissional Documentos
Cultura Documentos
so capazes de calcular apenas o custo de caminho do n atual ao n inicial (funo g), para decidir qual o prximo n da fronteira a ser expandido. essa medida no necessariamente conduz a busca na direo do objetivo. no podemos procurar no oceano inteiro...
Busca Heurstica
Estratgias de Busca Heurstica
utilizam conhecimento especfico do problema na escolha do prximo n a ser expandido barco perdido
correntes martimas, vento, etc...
Funes Heursticas
Funo heurstica (h) Exemplo:
estima o custo do caminho mais barato do estado atual at o estado final mais prximo. so especficas para cada problema encontrar a rota mais curta entre duas cidades hdd(n) = distncia direta entre o n n e o n final. ela deve ser admissvel, i.e., nunca superestimar o custo real da soluo ex. distncia direta (hdd) admissvel porque o caminho mais curto entre dois pontos sempre uma linha reta
Busca Gulosa
Tenta expandir o n mais prximo do n final com base na estimativa feita pela funo heurstica h f(s) = h(s)
Exemplo: Problema de rotas da Romnia, a funo heurstica seria a menor distncia em linha reta entre 2 cidades
11
Busca Gulosa
Custo de busca mnimo! Porm no tima: No completa:
No exemplo, no expande ns fora do caminho No exemplo escolhe o caminho que mais econmico primeira vista, via Fagaras porm, existe um caminho mais curto via Rimnicu Vilcea pode entrar em loop se no detectar a expanso de estados repetidos pode tentar desenvolver um caminho infinito
12
Algoritmo A*
ainda a tcnica de busca mais usada Funo de avaliao:
f (n) = g (n) + h (n) g (n) = distncia real de n ao n inicial h (n) = distncia estimada de n ao n final
distncia em linha reta
Idia: Evitar expandir caminhos que j esto muito caros, mas tambm considerar os que tm menor expectativa de custo.
13
Algoritmo A*
function A*(Estado inicial): Nodo PriorityQueue(f) fronteira {fila ordenada por f} fronteira.add (new Nodo(inicial)) while not fronteira.isEmpty() do Nodo n fronteira.remove() if n.getEstado().Meta() then return n end if fronteira.add(n.sucessores()) end while return null
Exemplo A*
h(s): straight-line distance to Bucharest:
449 75 + 374
239 220 118 + 329 447 393 413 317 418 366 455 496 336 + 160 415 140 + 253 417
239 + 178
16
se heurstica for admissvel, ou seja, nunca superestime custo exponencial com o comprimento da soluo, porm boas funes heursticas diminuem significativamente esse custo guarda todos os ns expandidos na memria
para possibilitar o backtracking f no decrescente
s expande ns com f(n) f*, onde f* o custo do caminho timo nenhum outro algoritmo timo garante expandir menos ns
17
18
Operadores relaxados:
1. um nmero pode mover-se de A para B (h1) 2. um nmero pode mover-se de A para B se A adjacente a B (h2)