Você está na página 1de 35

Inteligncia Artificial

Metodologias de Busca

Soluo de problemas como Busca

Um problema pode ser considerado como um objetivo


Um conjunto de aes podem ser praticadas para alcanar
esse objetivo
Ao buscar um objetivo, estamos em um determinado estado

O estado inicial quando iniciamos a busca

O estado que satisfaz a meta o estado objetivo

Busca

Mtodo que examina o espao de um problema,


buscando um objetivo

O espao de um problema seu Estado de Busca

Busca guiada por


Dados ou Objetivos

Abordagens para fazer uma rvore de busca

De-cima-para-baixo:

Encadeamento para frente;


Busca guiada por Dados;
Parte de um estado inicial e usa aes permitidas para
alcanar o objetivo.

De-baixo-para-cima

Encadeamento para trs;


Busca guiada por Objetivos;
Comea de um objetivo e volta para um estado inicial, vendo
quais deslocamentos poderiam ter levado ao objetivo.
3

Busca guiada por


Dados ou Objetivos

Ambas atingem o mesmo resultado;

Um dos mtodos pode ser mais rpido que o outro

Depende da natureza do problema

Metodologias

Gerar e Testar tcnica de busca cega

A mais simples abordagem de busca;


Funcionamento: gerar cada n no espao de busca e test-lo para
verificar se este um n objetivo;
a forma mais simples de busca de fora bruta ou busca exaustiva;

Precisa de um Gerador que satisfaa:

Ele deve ser completo, garantir que todas as solues possveis sero
geradas. Pois assim no descartar uma soluo adequada;
Ele no deve ser redundante, no gerando a mesma soluo duas
vezes;
Ele deve ser bem informado, s deve propor solues adequadas e que
combinem com o espao de busca.

Busca em Profundidade

Segue cada caminho at sua maior profundidade antes de


seguir para o prximo caminho
Se a folha no representar um estado objetivo,

Utiliza um mtodo chamado de retrocesso cronolgico:

A busca retroceder ao primeiro n anterior


que tenha um caminho no explorado
Volta na rvore de busca, uma vez que um caminho sem sada
seja encontrado
assim chamado por desfazer escolhas na ordem contrria ao
momento em que foram tomadas

um mtodo de busca exaustiva ou de fora bruta


6

Exemplo
A

I
Ordem: A, B, D, H, I, E, C, F, G

Busca em Largura (Extenso)

Percorre a rvore em largura ao invs de


profundidade
Comeam examinando todos os ns de um
nvel abaixo do n raiz
Se no encontrar o objetivo, buscam um nvel
abaixo
Melhor em rvores que tenham caminhos mais
profundos
Utilizado em rvores de jogos
8

Exemplo
A

I
Ordem: A,B,C,D,E,F,G,H,I

Comparao
Cenrio

Profundidade

Largura

Caminhos muito longos ou infinitos Funciona mal

Funciona bem

Caminhos com comprimentos


parecidos

Funciona bem

Funciona bem

Todos caminhos tem comprimentos


parecidos e todos levam a um
Funciona bem
estado objetivo

Alto fator de ramificao

O desempenho
depende de outros
fatores

Desperdcio de tempo e
memria

Funciona precariamente

O problema de caminhos infinitos pode ser evitado na busca


em profundidade pela aplicao de um
limiar de profundidade
10

Propriedades dos mtodos de


busca

Complexidade:

Completude:

Se completo, ou seja, se sempre acha o objetivo;

Obs.: se houver objetivo;

Quanto a ser timo:

Garantir achar a melhor soluo que exista;

No garante que seja pelo menor caminho ou tempo.

Admissibilidade:

Ligado ao tempo e espao utilizados na busca;

Garantir achar a melhor soluo pelo melhor caminho.

Irrevogabilidade:

No retrocedem, examinando assim somente um caminho.


11

Humanos utilizam busca em


profundidade

o modo mais fcil e natural;

Exemplos:

Percorrendo um labirinto;

Comprando um presente em um shopping;


12

Implementando a busca...
Profundidade:
Lista = []
Estado = no_raiz;
Repita:
Se eh_objetivo( estado )
Ento retorne SUCESSO
Seno inserirNaFrenteDaLista(sucessores(estado))
Se Lista estiverVazia
Ento retorne FALHA
Estado = Lista[0]
RemoverPrimeiroItemDaLista
_____________________________________________________
Largura:
substituir a funo inserirNaFrenteDaLista
por inserirAtrsDaLista
13

Busca em profundidade com


Aprofundamento Iterativo (BPAI)

Tambm chamado de:

Busca com Aprofundamento Iterativo (BAI),

Depth-First Iterative Deepening (DFID),

Iterative Deepening Search (IDS).

Tcnica exaustiva;

Combina buscas em profundidade e em largura;

Conduz buscas com profundidade limitada:


1. com profundidade de um;
2. depois com profundidade de dois;
3. depois com profundidade de trs; e
4. assim por diante, at encontrar um n objetivo.
14

Busca em profundidade com


Aprofundamento Iterativo (BPAI)
rvore com fator de ramificao b e profundidade d

Profundidade

Total de ns:

BPAI

1 + b + b2 + + bd
Prog. Geom.:
( 1 b d+1 ) / ( 1 b )

(d+1)+b(d)+b2(d-1)+b3(d-2)+...+bd

Ex: com d = 2 e b = 2:

Como os ns devem
ser examinados mais
de uma vez, temos:
Complexidade de
O(bd)

(1 8)/(1 2) = 7 ns
15

Busca em profundidade com


Aprofundamento Iterativo (BPAI)

Ruim para rvores pequenas e com bons


resultados em rvores grandes
Ex: profundidade 4 e fator de ramificao 10
Profundidade:
(1 105) / (1 10) = 11.111 ns

BPAI:
(4+1)+10x4+100x3+1.000x2+10.000 = 12.345 ns
16

Heursticas de Busca

Heurstica pode ser definida como:

A utilizao de informaes que indicam melhor qual


caminho a seguir.
Ex: pesquisar em todas as lojas por calas, ou somente
nas lojas que trabalham com tecidos?

Possui uma funo de avaliao heurstica

aplicada a um n e retorna um valor que representa:

uma boa estimativa da distncia entre o n e o objetivo

Ex: Se para dois ns m e n, a funo retorna f(m) < f(n),


ento deve ser o caso que m mais provvel de estar
em um caminho timo para o n objetivo
17

Heursticas de Busca

Mtodos Informados:

Que utilizam Heursticas.

Mtodos No Informados ou Cegos:

Utilizam informao adicional sobre os ns no


explorados para decidir qual escolher.

No utilizam informao adicional sobre os ns no


explorados.
Que no utilizam Heursticas.

Quanto melhor a heurstica for, menos ns ela


precisar examinar na rvore.
18

Monotonicidade

Mtodo de busca montono

se ele sempre chega a um dado n


pelo caminho mais curto possvel

Uma heurstica monotnica uma heurstica com


essa propriedade
Heurstica admissvel

Heurstica que nunca superestime a distncia


verdadeira entre um n e o objetivo
19

Mtodos de busca informados

20

Subida na colina

Caso de estudo

Se tentar escalar uma montanha em dia de neblina,


com um altmetro, mas sem mapa,
voc utilizaria uma abordagem de subida na colina

Abordagem Gerar e Testar;

Como proceder:

Verificar a altura a alguns centmetros de sua posio


em cada direo: norte, sul, oeste e leste.
Assim que encontrar uma posio que o leve para uma altura
maior que a atual, v para l e repita esses passos.
Se todas as posies o levam para mais baixo de onde est,
assuma que chegou ao topo.
21

Voc sempre chegar ao topo?

22

Voc sempre chegar ao topo?


Subida na Colina pela Encosta de Maior Aclive
Funciona da mesma forma que a Subida na Colina, porm
sempre verifica todas as quatro posies em volta e
escolhe a posio que seja mais alta
23

Problemas encontrados

Contrafortes:

Parte de um espao de busca que parece ser


prefervel as partes em torno dele.

Plats:

Mximo local;

Regio em um espao de busca na qual todos os


valores so os mesmos.

Cristas:

uma regio longa e estreita de terras altas com


terras baixas em ambos os lados.
24

Implementao da Subida na Colina


colina:
lista = []
estado = no_raiz
repita:
se _Objetivo(estado)
retorne SUCESSO
seno
aux = Ordenar( sucessores(estado) )
InserirNaFrenteDaLista( aux )
se lista == []
retorne FALHA
Estado = fila[0]
RemoverPrimeiroItemDa ( lista )
25

Busca pelo Primeiro Melhor

Parecido com Subida na Colina, porm

A lista inteira de prximas posies ordenada


aps receber a insero de novos caminhos,
em vez de inserir um conjunto de dados ordenados.

Significado:

ele segue o melhor caminho disponvel na rvore.

26

Implementao do Primeiro Melhor


colina:
lista = []
estado = no_raiz
repita:
se _Objetivo(estado)
retorne SUCESSO
seno
InserirNaFrenteDaLista( sucessores(estado) )
Ordenar( lista )
se lista == []
retorne FALHA
Estado = fila[0]
RemoverPrimeiroItemDa ( lista )
27

Busca com Limite Superior

Utiliza um limiar de tal modo que apenas os


poucos melhores caminhos so considerados a
cada nvel;
Muito eficiente na utilizao de memria;
Seria til para explorar um espao de busca
com alto fator de ramificao.
28

Implementao do Primeiro Melhor


colina:
lista = []
estado = no_raiz
repita:
se _Objetivo(estado)
retorne SUCESSO
seno
InserirNoFinalDaLista( sucessores(estado) )
SelecionarMelhoresCaminhos( lista, n )
//remove todos, exceto os n melhores caminhos da lista

se lista == []
retorne FALHA
Estado = fila[0]
RemoverPrimeiroItemDa ( lista )
29

Identificando os melhores caminhos

30

Identificando o caminho timo

Caminho timo

Aquele que tem o menor custo ou a menor distncia


entre o n inicial e o n objetivo

Existem diversos mtodos que identificam o


caminho timo em uma rvore de busca
Mtodo mais simples

Procedimento do Museu Britnico:


Envolve:

examinar cada caminho na rvore de busca,


retornar pelo melhor caminho que foi encontrado.
31

Identificando o caminho timo

Algumas tcnicas mais sofisticadas

A*

Busca de custo uniforme (Ramificar e Limitar)

Busca Gulosa

32

Algoritmo A*

Semelhante busca pelo primeiro melhor,


mas utiliza a seguinte funo para avaliar ns:
f ( n ) = g ( n ) + h ( n )
g ( n ) custo do caminho que leva ao n atual
h ( n ) subestimativa da distncia desse n at
um estado objetivo.
uma heurstica que prev a distncia
desse n at o n objetivo

f ( n ) = funo de avaliao baseada em caminho

Se h(n) for sempre uma subestimativa com valores


corretos, A* ser timo:

pois ser garantido encontrar o caminho mais curto.


33

Busca de Custo Uniforme

Algoritmo de Dijkstra

Variao da busca pelo primeiro melhor

Usa a funo g(n), assim como A*,

porm, zera o valor de h(n).

Se para cada n m que tenha um sucessor n


for verdade que g(m) < g(n),
ento, a busca tima.
34

Busca Gulosa

Variao do A*,

onde g(n) zerada e

Somente h(n) utilizada.

Sempre seleciona o caminho que tenha

o menor valor heurstico, ou

a menor distncia (custo) estimada.

35

Você também pode gostar