Buscar

Busca Heurística

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Inteligência Artificial
Inteligência Artificial:
Busca Heurística
Profa. Andréia Gentil Bonfante
Inteligência Artificial
Exemplo: dificuldades do 8-puzzle
8 1 
2 4 3 
7 6 5 
1 2 3
8 4
7 6 5 
25/11/2014 2
Solução típica: 20 passos
Expansão de filhos: ~3 (meio=4, canto=2, lados=3)
Complexidade de espaço (BL): 320 =
3.5 x 109 
Eliminando estados repetidos:
3.6 X 105 pois existem 9! = 362.880 arranjos 
diferentes de 9 posições
Porém, ainda é um nro grande de 
estados ... Precisamos de uma 
função heurística para o 8-puzzle
Inteligência Artificial
Heurística X Função de avaliação
• Heurística - conselhos não numéricos para 
determinar em que ordem devem ser 
considerados os sucessores de um dado nó 
para se continuar a busca. Exemplos: 
• não vire sucessivamente à esq (ou dir) nos 
quarteirões se está a procura de um caminho de 
um lugar A para B.
• tire as peças pequenas primeiro quando 
desmontando uma máquina.
25/11/2014 3
Inteligência Artificial
Heurística X Função de avaliação
• Função de avaliação - função que retorna um 
valor que dá suporte para a escolha do 
próximo nó a ser expandido na lista de nós 
dos algoritmos de busca básicos. Quando os 
nós são ordenados para que o nó com 
melhor avaliação seja expandido primeiro 
temos a busca BEST-FIRST (na verdade uma 
família de algoritmos de busca com 
diferentes funções de avaliação).
25/11/2014 4
Inteligência Artificial
Função de custo do caminho g(n) X Função heurística h(n)
25/11/2014 5
g(n)
Start
N
Goal
h(n)
Podemos usar o custo do caminho 
g(n) para decidir que nó estender. Já 
fizemos isto na Busca Uniforme (ou 
chamada de Branch-and-Bound). 
Porém, esta medida não dirige a 
busca para o nó objetivo. Ela cuida 
do passado.
A função heurística calcula o custo 
estimado para se alcançar o nó 
objetivo. É denotada por h(n), e 
estima o custo do caminho mais 
barato do nó n para o nó objetivo. 
Ela cuida do futuro.
Inteligência Artificial
Algoritmo Best-First
Nó = Raiz
Acrescentar ( Nó, aberto )
Enquanto aberto <> 0
Faça
Nó = prim ( aberto )
Se Nó = objetivo então saida com sucesso
Retirar ( Nó, aberto )
Acrescentar ( Nó, fechado )
Expandir ( Nó )
Para todo Ni filho de Nó
Faça
Calcular Função-Avaliação
Se Ni  aberto e Ni  fechado então
acrescentar ( Ni , aberto )
Ordenar ( aberto ) em ordem crescente de Função-Avaliação
25/11/2014 6
Aberto: Lista de nós gerados mas não 
visitados, permitindo retornar ao 
caminho que foi abandonado se o 
novo caminho falhou nas 
expectativas
Fechado: Lista de nós 
que já foram 
examinados. Para 
evitar andar em ciclos.
Inteligência Artificial
Algoritmo Greedy Best First
Nó = Raiz
Acrescentar ( Nó, aberto )
Enquanto aberto <> 0
Faça
Nó = prim ( aberto )
Se Nó = objetivo então saida com sucesso
Retirar ( Nó, aberto )
Acrescentar ( Nó, fechado )
Expandir ( Nó )
Para todo Ni filho de Nó
Faça
Calcular H(Ni)
Se Ni  aberto e Ni  fechado então
acrescentar ( Ni , aberto )
Ordenar ( aberto ) em ordem crescente de H(N)
25/11/2014 7
Inteligência Artificial
Propriedades do Greedy Best First
• Usa a função h(n) para selecionar o novo nó a 
expandir.
• Como a idéia é minimizar o custo estimado para 
alcançar o nó objetivo, h(nó-objetivo) = 0.
• Lembra o B. Profundidade, pois prefere seguir um 
único caminho até que ou encontre a meta ou tenha 
que voltar atrás.
25/11/2014 8
Inteligência Artificial
Propriedades do Greedy Best First
Não é admissível, nem completo, pois pode se 
enveredar para um caminho infinito e nunca 
retornar para tentar outras alternativas.
Complexidade de Tempo: O(bm).
Complexidade de Espaço: O(bm) - mantém todos os 
nós.
Pode reduzir espaço e tempo com o uso de uma boa 
função heurística.
25/11/2014 9
Inteligência Artificial
Exemplo de uma função heurística
• Para problemas de Cálculo de Rotas uma boa 
função heurística é a distância em linha direta
25/11/2014 10
SC
A
D
B
SP
C
140
99 211
80
97 101
Tabela de Distância 
em Linha Reta para São Paulo
SC --- 366
A --- 253
B --- 178
C --- 193
D --- 98 
SP --- 0
...
Dada as coordenadas de cada cidade a distância D 
= sqrt(sqr(X2 - X1) + sqr(Y2 - Y1)).
A solução é o caminho SC-A-B-SP que não é o 
melhor!!!! O caminho por C, D, SP é menor. 
Greedy nem sempre encontra soluções ótimas.
Inteligência Artificial
Exemplos de árvores de busca usando Greedy
Passo 1 Passo 2 Passo 3
A A A
B(3) C(5) D(1) B(3) C(5) D
E(4) F(6)
25/11/2014 11
Inteligência Artificial
Exemplos de árvores de busca usando Greedy
Passo 4 
A Observem como
B C(5) D Greedy volta atrás
G(6) H(5) E(4) F(6) para escolher B (3)
25/11/2014 12
Inteligência Artificial
Busca A*
Esta estratégia é completa e admissível se h nunca super-estima o 
custo de se alcançar o objetivo. Tal h é chamada de heurística 
admissível.
Best First usando f como função de avaliação e uma função h 
admissível é conhecido como Busca A*
25/11/2014 13
Greedy minimiza
h(n), mas não é 
completo nem 
admissível
Busca Uniforme
minimiza g(n). É
admissível e 
completo,mas pode
ser ineficiente
f(n) = g(n) + h(n)
Inteligência Artificial
Algoritmo A*
Nó = Raiz
Acrescentar ( Nó, aberto )
F ( Nó ) = H ( Nó )
G ( Nó ) = 0
Enquanto aberto <> 0
Faça
Nó = Prim ( aberto )
Se Nó = objetivo então saida com sucesso
Retirar ( Nó, aberto )
Acresentar ( Nó, fechado )
Expandir ( Nó )
Para todo Ni filho de Nó
Faça
Calcular H( Ni )
Se Ni  aberto e Ni  fechado então
G( Ni ) = G ( Nó ) + c ( Nó, Ni )
F( Ni ) = G( Ni ) + H( Ni )
acrescentar ( Ni , aberto )
Ordenar ( aberto ) em ordem crescente de F( N )
25/11/2014 14
Inteligência Artificial
Algoritmos de Melhorias Iterativas
• Existem problemas para os quais a descrição do 
estado já contem toda a informação necessária 
para a solução: o caminho até a solução é 
irrelevante. Ex: 8 rainhas.
• Nestes casos usa-se algoritmos que começam com 
uma configuração completa e tentam melhorias 
para conseguir uma melhor qualidade da solução.
25/11/2014 15
Inteligência Artificial
• Duas classes:
Hill-climbing: sempre tenta fazer mudanças 
que melhoram o estado atual
Simulated Annealing: pode algumas vezes 
fazer mudanças que tornam as coisas 
piores, pelo menos temporariamente.
25/11/2014 16
Inteligência Artificial
Algoritmo Hill-Climbing
Nó = Raiz
Saida = V
Enquanto Nó <> Objetivo
Faça
Expandir ( Nó )
Para todo Ni filho de Nó 
faça
Calcular H( Ni )
Próx_Nó = N tal que H( N ) = min H( Ni )
Se H( Nó ) < H( Próx_Nó ) então
Saida = F
Nó = objetivo
senão Nó = Próx_Nó
Se Saida então suceso
senão falha
25/11/2014 17
Inteligência Artificial
Propriedades do Hill-Climbing
• A busca pode não conduzir à solução ótima (beco 
sem saída, ou seja, máximo local), já que após a 
decisão referente ao nó mais promissor os outros 
caminhos opcionais são esquecidos (não usa lista 
Aberto).
• Hill Climbing pode também ser usado em problemas 
cujas soluções sejam o caminho. Basta mantê-lo “em 
cima” de cada nó como fazíamos nas buscas cegas.
25/11/2014 18
Inteligência Artificial
•Objetivo é atingir o topo da montanha:
• Se existe um só cume então o método é 
admissível
• Se existem vários cumes menores que o 
objetivo, o algoritmo pode conduzir ao cume 
de uma dasmontanhas e não ao topo 
desejado. O algoritmo pára mesmo embora a 
solução esteja longe de ser satisfatória.
25/11/2014 19
Inteligência Artificial
Simulated Annealing
• Similar ao Hill-Climbing, mas em vez de pegar o 
melhor movimento, pega um movimento escolhido 
randomicamente.
• Usa uma analogia com o processo de resfriar um 
líquido gradualmente até ele congelar. Usa um 
parâmetro para determinar quão longo será este 
processo.
• Fornece um meio de escapar do máximo local e é 
completo e admissível, se o parâmetro de entrada
permite que o processo seja longo.
25/11/2014 20
Inteligência Artificial
Exemplos de aplicação dos algoritmos Greedy e HC (com caminho) em 
cálculo de rotas. Guardem o caminho acima dos nós como nos métodos 
de Busca Cega
25/11/2014 21
S
D
C
A
B
I
F
H
E G
4
34
23
0123
2
HC tem sucesso???
Fig. A
Heurística= | Xg - Xn| + |Yg - Yn |
Distância em blocos /Manhattan
0,0
3,3
G tem sucesso??
H
F
ED
C
B
A
S
S
Fig. B
0,0
3,3
6
4
3
4
3
2
4
6
HC tem sucesso???
G tem sucesso??
Heurística= | Xg - Xn| + |Yg - Yn |
Inteligência Artificial
Soluções
• Fig. A: G e HC tem sucesso.
Solução do Greedy: S -> AS -> BSA -> ESAB -> GSABE
Solução do HC: S -> AS -> BSA -> ESAB -> GSABE
• Fig. B: G tem sucesso; HC falha.
Solução do Greedy: S ->AS -> BSA -> ESAB -> HSABE -> 
GSABEH
HC: S -> AS -> BSA (pára)
25/11/2014 22
Inteligência Artificial
Códigos Prolog para A*
:- op(35,xf,e_a_meta).
:- op(35,xf,atinge_a_meta).
:- op(35,xfx,transforma).
:- op(30,xfx,a).
:- op(30,xfx,em).
:- op(35,xfx,nao_produz_circulos_em).
% programas auxiliares
ap([],X,X).
ap([X|Y],Z,[X|W]) :- ap(Y,Z,W).
membro(X,[X|_]):- !.
membro(X,[_|Y]) :- membro(X,Y).
ache_todos(X,Y,Z) :- findall(X,Y,Z), !.
ache_todos(_,_,[]).
% o programa abaixo serve para imprimir uma trajetoria dada na seguinte forma:
% t(f([4]), g([4]), [r([4],g),r([1],c),r(raiz,b)]).
imprima(t(FN,GN,T)) :- imprima_trajet(T).
imprima_trajet([r(raiz,Raiz)]) :- !, write('Estado Inicial: '),
write(Raiz), write('.').
imprima_trajet([r(Ramo,Nodo)|R]) :-
imprima_trajet(R), nl, write(Ramo), write(' e, portanto, temos: '), nl,
write(Nodo), write('.').
25/11/2014 23
Aux_busca_heuristica.pl
Inteligência Artificial
% busca heuristica --- A*
resolva :- estado_inicial(E), calcule_hn(E,HN),
busca([t(HN,0,[r(raiz,E)])],Solucao),
imprima(Solucao), nl.
busca([T|_],Solucao) :- T atinge_a_meta, !, Solucao = T.
busca([T|Fila], Solucao) :-
ache_todos(ExtensaoAteUmFilho,
estende_ate_filho(T,ExtensaoAteUmFilho),Extensoes),
ap(Fila,Extensoes,FilaEstendida),
sort(FilaEstendida,FilaComMelhorNaFrente),
busca(FilaComMelhorNaFrente,Solucao).
estende_ate_filho(t(F,G,[r(Ramo,N)|Trajetoria]),
t(F1,G1,[r(Op,Filho),r(Ramo,N)|Trajetoria])) :-
oper(Op) transforma N em Filho,
Filho nao_produz_circulos_em Trajetoria,
calcule_hn(Filho,HNFilho),
calcule_custo(N,Filho,Custo),
G1 is G+Custo, F1 is G1+HNFilho.
Estado nao_produz_circulos_em Trajetoria :-
not membro(r(Operacao,Estado),Trajetoria).
t(_,_, [r(Ramo,M)|_]) atinge_a_meta:- M e_a_meta.
25/11/2014 24
Busca_A_estrela.pl
Inteligência Artificial
% trajetoria entre duas cidades
:- op(300,xfx,para).
:- op(300,xfx,==>).
oper(X para Y) transforma X em Y :- X ==> Y.
a ==> b. b ==> m. m ==> f. f ==> q. q ==> p.
p ==> n. p ==> s.
b ==> c.
c ==> d.
d ==> q. d ==> n. d ==> g.
n ==> h. n ==> s. h ==> g.
coord(a,2,4) :- !.
coord(c,4,2) :- !.
coord(f,7,8) :- !.
coord(h,10,1) :- !.
coord(n,11,3) :- !.
coord(q,11,7) :- !.
coord(b,5,6) :- !.
coord(d,7,4) :- !.
coord(g,8,2) :- !.
coord(m,9,6) :- !.
coord(p,12,6) :- !.
coord(s,13,2) :- !.
25/11/2014 25
Trajetoria.pl
Inteligência Artificial
calcule_custo(Nodulo,Nodulo_Filho,Custo) :-
coord(Nodulo,XN,YN),
coord(NoduloFilho,XF,YF),
Custo is sqrt((XN - XF) * (XN - XF) + (YN - YF) * (YN - YF)).
calcule_hn(N,HN) :- S e_a_meta, coord(S,XS,YS),
coord(N,XN,YN),
HN is sqrt((XN - XS) * (XN - XS) + (YN - YS) * (YN - YS)).
estado_inicial(a).
s e_a_meta.
25/11/2014 26

Continue navegando