TÓPICOS DE I.A.
Métodos de Busca
Busca em Espaços de Estado
Prof. Mário Dantas
BUSCA EM ESPAÇOS DE ESTADO

Conceito:
BUSCA EM ESPAÇOS DE ESTADO

Questões Importantes:
Existe garantia que o sistema para resolução de
problemas encontrará uma solução?
 Este Sistema chegará sempre ao final, ou ele poderá
ficar preso num laço infinito?
 Quando uma solução é encontrada, é garantido que
ela seja ótima?

BUSCA EM ESPAÇOS DE ESTADO

Questões Importantes:
Qual é a complexidade do processo de busca em
termos de tanto de consumo de tempo como de
consumo de memória?
 Como o interpretador pode reduzir, da forma mais
eficiente, a complexidade da busca?
 Como se pode projetar um interpretador para que ele
utilize uma linguagem de representação o mais
eficientemente possível?

BUSCA EM ESPAÇOS DE ESTADO
Teoria dos Grafos
 Um grafo consiste:
Conjunto de NÓS;
 Conjunto de ARCOS (Elos)

BUSCA EM ESPAÇOS DE ESTADO
Teoria dos Grafos
 Os NÓS representam os Estados, por exemplo, o
resultados de inferência lógicas ou as diferentes
configurações de um tabuleiro;
 Os ARCOS representam as transições entre
estados, por exemplo, as inferências lógicas ou
movimentos válidos de um jogo.
BUSCA EM ESPAÇOS DE ESTADO

Jogo da Velha
BUSCA EM ESPAÇOS DE ESTADO

Web site
http://www.aharef.info/static/htmlgraph/
BUSCA EM ESPAÇOS DE ESTADO

Em sistemas especialistas os estados descrevem o
nosso conhecimento sobre um caso do problema
em algum estágio de um processo de raciocínio. O
conhecimento do especialista, na forma de regras
SE... ENTÃO, nos permite gerar informação
nova. O ato de aplicar uma regra é representado
como um arco entre estados.
BUSCA EM ESPAÇOS DE ESTADO

Uma árvore é um grafo no qual dois nós têm, no
máximo, um caminho entre eles. As árvores
freqüentemente tem raízes e, neste caso, elas são
normalmente desenhadas com a raiz no topo,
como um grafo radicado. Como cada nó de uma
árvore tem apenas uma caminho de acesso, a
partir de qualquer outro nó, é impossível para um
caminho circular continuamente através de uma
seqüência de nós, originando um laço.
BUSCA EM ESPAÇOS DE ESTADO
Nós = (a, b, c, d, e)
 Arcos = {(a,b), (a,d), (b,c), (c,b), (c,d), (d,a), (d,e)
(e,c), (e,d)}

e.
a.
d
.
b.
c.
Grafo direcionado rotulado
BUSCA EM ESPAÇOS DE ESTADO
Árvore
 Relações de Parentesco

a.
c.
b.
e.
f.
g.
h
.
d
.
i.
j.
REPRESENTAÇÃO DE PROBLEMAS POR
ESPAÇOS DE ESTADOS
Um espaço de estado é representado pelo
conjunto {N, A, S, DO}, onde:
 N representa os nós ou estados do grafo. Eles
correspondem aos estados de um processo de
solução de problema.
 A representa os arcos entre os nós. Eles
correspondem aos passos de um processo de
solução de problema.

REPRESENTAÇÃO DE PROBLEMAS POR
ESPAÇOS DE ESTADOS


S representa um subconjunto não vazio de N,
contém o(s) estado(s) inicial(is) do problema;
DO representa um subconjunto não vazio de N,
contém o(s) estado(s) objetivo(s) do problema.
REPRESENTAÇÃO DE PROBLEMAS POR
ESPAÇOS DE ESTADOS

Os estados e, DO são descritos usando:
Uma propriedade mensurável dos estados
encontrados na busca;
 Uma propriedade do caminho desenvolvido na busca,
por exemplo, os custos de transição para o arco do
caminho.


Um caminho solução é um caminho através deste
grafo de um nó S para um nó em DO.
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS
Entre as principais destacam-se a busca em a
busca em Amplitude e a busca em
Profundidade;
 Na busca em profundidade, quando um estado é
examinado, todos os seu filhos e os descendentes
de seus filhos são examinados antes de qualquer
um de seus irmãos;
 Apenas
quando
não
forem
encontrados
descendentes de um estado é que seus irmãos são
considerados.

ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS – BUSCA EM PROFUNDIDADE
a.
e.
f.
k
.
l.
s.
t.
d
.
c.
b.
m.
g.
h
.
n
.
o.
i.
p
.
j.
q.
r.
u
.
A, B, E, K, S, L, T, F, M, C, G, N, H, O, P, U, D, I, Q,
J, R
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS

A em amplitude, por outro lado, explora o espaço
nível por nível, apenas quando não houver mais
estados a serem explorados num determinado
nível é que o algoritmo se moverá para o próximo.
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS – BUSCA EM AMPLITUDE
a.
e.
f.
k
.
l.
s.
t.
d
.
c.
b.
m.
g.
h
.
n
.
o.
i.
p
.
j.
q.
r.
u
.
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P Q, R, S, T,
U
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS
Implementação do algoritmo de busca em amplitude:
função busca_em_amplitude;
inicio
abertos := [iniciar];
fechados := [];
enquanto abertos <> [] faça
inicio
remova o estado mais à esquerda em abertos, chame-o de X;
se X for um objetivo, então retorne SUCESSO
senão inicio
gere filhos de X;
coloque X em fechados;
descarte filhos de X se já estiverem em abertos ou fechados;
coloque os filhos que restam no final à direita de abertos;
fim
fim
retorne FALHA
fim.

ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS
A lista de abertos é implementado como uma fila
(FIFO);
 Os estados são adicionados à direita da lista e
removidos pela esquerda;
 Os estados filhos que já foram descobertos são
descartados;
 Se o algoritmo encerrar porque a condição
“enquanto” não for mais satisfeita (abertos=[ ]),
então ele varreu o grafo inteiro sem encontrar o
estado objetivo.

ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS

Configuração da lista de abertos
1.
2.
3.
4.
5.
6.
7.
8.
9.
abertos = [A]; fechados=[ ]
abertos = [B,C,D]; fechados=[A];
abertos = [C,D,E,F]; fechados=[B,A];
abertos = [D,E,F,G,H]; fechados=[C,B,A];
abertos = [E,F,G,H,I,J]; fechados=[D,C,B,A];
abertos = [F,G,H,I,J,K,L]; fechados=[E,D,C,B,A];
abertos = [G,H,I,J,K,L,M](pois L já está em
abertos); fechados=[F,E,D,C,B,A];
abertos = [H,I,J,K,L,M,N];
fechados=[G,F,E,D,C,B,A];
e assim por diante, até que U seja encontrando ou
abertos = [ ]
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS
A busca em amplitude garante que o caminho
mais curto entre o estado inicial e o objetivo será
encontrada, caso exista;
 Pode-se manter outras informações nas listas de
estados, como os ancestrais junto a cada estado,
com isso pode-se refazer o caminho percorrido até
o estado meta;

ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS
Implementação do algoritmo de busca em profundidade:
função busca_em_profundidade;
inicio
abertos := [iniciar];
fechados := [];
enquanto abertos <> [] faça
inicio
remova o estado mais à esquerda em abertos, chame-o de X;
se X for um objetivo, então retorne SUCESSO
senão inicio
gere filhos de X;
coloque X em fechados;
descarte filhos de X se já estiverem em abertos ou fechados;
coloque os filhos que restam no final à esquerda de abertos;
fim
fim
retorne FALHA
fim.

ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS

Nesse algoritmo os estados descendentes são
adicionados e removidos a partir do final
esquerdo da lista de abertos. Assim nessa
implementação a estrutura de dados usada é a
pilha (LIFO). Com isso a busca é direcionada
para os estados gerados mais recentemente,
produzindo uma ordem que avança em
profundidade;
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS

Configuração da lista de abertos
abertos = [A]; fechados=[ ]
2.
abertos = [B,C,D]; fechados=[A];
3.
abertos = [E,F,C,D]; fechados=[B,A];
4.
abertos = [K,L,F,C,D]; fechados=[E,B,A];
5.
abertos = [S,L,F,C,D]; fechados=[K,E,B,A];
6.
abertos = [L,F,C,D]; fechados=[S,K,E,B,A];
7.
abertos = [T,F,C,D]; fechados=[L,S,K,E,B,A];
8.
abertos = [F,C,D]; fechados=[T,L,S,K,E,B,A];
9.
abertos = [M,C,D](como L já está em abertos);
fechados=[F,T,L,S,K,E,B,A];
10. abertos = [C,D]; fechados=[M,F,T,L,S,K,E,B,A];
11. abertos = [G,H,D]; fechados=[C,M,F,T,L,S,K,E,B,A];
12. e assim por diante, até que U seja encontrando ou abertos
=[]
1.
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS
Na busca em profundidade não se tem garantia
que o caminho mais curto até um estado foi
localizado na primeira vez que este estado é
encontrado;
 Isso pode ser feito utilizando um atributo
TAMANHO_CAMINHO e varrendo toda a
árvore.

ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS

Entre as características mais significativas a
escolha entre as duas abordagens se incluem:





A importância de se encontrar o caminho mais curto
até o objetivo;
Fator de ramificação de espaço;
Disponibilidade de tempo computacional e de
recursos de memória;
A média de comprimento dos caminhos até o objetivo;
Se queremos todas soluções ou apenas a primeira
encontrada.
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS – BUSCA HEURÍSTICA
De acordo com Polya (1945), heurística é “o
estudo dos métodos e das regras de descoberta e
invenção”.
 Na busca em espaços de estado, heurísticas são
formalizadas como regras para escolher aqueles
ramos que tem maior probabilidade de levarem a
uma solução aceitável para o problema.

ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS – BUSCA HEURÍSTICA

As heurísticas são usadas basicamente quando:

Um problema pode não ter uma solução exata por
causa das ambigüidades inerentes na formulação do
problema ou pela disponibilidade de dados. Ex.:
medicina e visão;

Um problema pode ter uma solução exata, mas o
custo computacional de encontrá-la pode ser
proibitivo. Ex.: jogo de xadrez.
ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS – BUSCA HEURÍSTICA
Uma heurística é apenas um conjectura
informada sobre o próximo passo a ser tomado na
solução e um problema;
 pode levar um algoritmo encontrar uma solução
sub-ótima ou não levá-la a encontrar a solução de
um problema, isto é inerente das heurísticas;
 As “regras práticas” que um especialista humano
usadas para resolver problemas eficientemente
são essencialmente heurísticas quanto a sua
natureza.

ESTRATÉGIAS PARA BUSCA EM ESPAÇO DE
ESTADOS – BUSCA HEURÍSTICA

Os algoritmos heurísticos são constituídos de
duas partes:

Medida heurística;

Algoritmo (parte que usa as medidas).
Download

Métodos de Buscas - Mario Dantas Blog