Inteligência Artificial
Aula 05 – Busca Heurística
Aulas Anteriores

Busca no Espaço de Estados


serve para decidir que parte do conhecimento
armazenado deve ser explorada em busca da
solução;
Formulação problema de busca



Espaço de estados (conjunto de estados + ações
possíveis)
Estado inicial do problema
Estado meta do problema (solução)
2
Atividade 4 - Missionários

Três missionários e três canibais vão atravessar de uma
margem para a outra de um rio, usando um barco onde
só cabem duas pessoas de cada vez.

O número de canibais não pode exceder o número de
missionários em nenhuma das margens do rio.

Encontre uma forma de levar todos para a outra
margem do rio, utilizando este barco.

Formule o problema (represente estados e ações).
3
Atividade 4 - Missionários

Para representar os estados podemos usar uma
estrutura da forma [B; M; C], onde:

B pode assumir {e, d}: indica se o barco está na
margem esquerda ou direita.

M pode assumir {0, 1, 2, 3}: indica a quantidade de
missionários na margem esquerda.

C pode assumir {0, 1, 2, 3}: indica a quantidade de
canibais na margem esquerda.
4
Missionários e Canibais –
Conjunto de Ações
A={
oper(atravessar1C; [e; 3; C]; [d; 3; C-1])
C > 0,
oper(atravessar1C; [d; M; C]; [e; M; C+1])
C < 3, M > C,
oper(atravessar1M; [e; M; C]; [d; M-1; C])
M > 0, M > C,
oper(atravessar1M; [d; M; C]; [e; M+1; C])
M < 3, C < 2,
oper(atravessar1M1C; [e; M; C]; [d; M-1; C-1])
M > 0, C > 0, M = C,
oper(atravessar1M1C; [d; M; C]; [e; M+1; C+1])
M < 3, C < 3, M = C,
...
5
Missionários e Canibais –
Conjunto de Ações
...
oper(atravessar2M; [e; M; C]; [d; M-2; C])
C < 2, M > 1,
oper(atravessar2M; [d; M; C]; [e; M+2; C])
C < 3, M < 2,
oper(atravessar2C; [e; 3; C]; [d; 3; C-2])
C > 1,
oper(atravessar2C; [d; 3; C]; [e; 3; C+1])
C<2
}
6
Missionários e Canibais –
Conjunto de Ações

Conjunto de Estados:
S = { [e; 3; 3]; [e; 3; 2]; [e; 3; 1]; [e; 3; 0];
[e; 0; 3]; [e; 0; 2]; [e; 0; 1]; [e; 0; 0];
[e; 2; 2]; [e; 1; 1];
[d; 3; 3]; [d; 3; 2]; [d; 3; 1]; [d; 3; 0];
[d; 0; 3]; [d; 0; 2]; [d; 0; 1]; [d; 0; 0];
[d; 2; 2]; [d; 1; 1]
}
7
Estratégias de Busca

Busca não determinística: encontram soluções
testando e expandindo estados aleatoriamente.


Com e Sem ciclos
Busca Cega: encontram soluções testando e
expandindo estados, sistematicamente

Busca em largura

Busca em profundidade
8
Atividade 8 - Jarros

O Problema dos Jarros [Rich] consiste no seguinte:

Há dois jarros com capacidades de 3 e 4 litros,
respectivamente.

Nenhum dos jarros contém qualquer medida ou escala, de
modo que só se pode saber o conteúdo exato quando eles
estão cheios.

Sabendo-se que podemos encher ou esvaziar um jarro,
bem como transferir água de um jarro para outro, encontre
uma sequência de passos que deixe o jarro de 4 litros com
exatamente 2 litros de água.
9
Representação de estados

Para representar os estados desse problema, podemos usar
um par [X; Y ], onde X pertencente a {0; 1; 2; 3} representa o
conteúdo do primeiro jarro e Y pertencente a {0; 1; 2; 3; 4}
representa o conteúdo do segundo jarro.

As ações podem ser representadas pelos seguintes
operadores:
10
Árvore de Busca




O estado inicial é s0 = [0; 0]
O conjunto de estados meta é G = {[X; 2]}.
Com base nessa especificação, desenhe a
árvore de busca criada pelo algoritmo
BuscaLargura, ao procurar a solução do
problema.
Em que nível da árvore foi encontrada a
solução?
11
Solução???
12
Atividade 9 - Fazendeiro

Um fazendeiro encontra-se na margem esquerda de um rio,
levando consigo um lobo, uma ovelha e um repolho.

O fazendeiro precisa atingir a outra margem do rio com toda
a sua carga intacta, mas para isso dispõe somente de um
pequeno bote com capacidade para levar apenas ele mesmo
e mais uma de suas cargas.

O fazendeiro poderia cruzar o rio quantas vezes fossem
necessárias para transportar seus pertences, mas o
problema é que, na ausência do fazendeiro, o lobo pode
comer a ovelha e essa, por sua vez, pode comer o repolho.

Encontre uma sequência de passos que resolva esse
problema.
13
Espaço de estados


Para representar os estados desse problema, podemos
usar uma estrutura da forma [F; L;O;R], cujas variáveis
denotam, respectivamente, as posições do fazendeiro,
do lobo, da ovelha e do repolho.
Cada variável pode assumir os valores e ou d,
dependendo da margem do rio onde o objeto se
encontra.


O estado inicial é s0 = [e; e; e; e]
O conjunto de estados meta é G = {[d; d; d; d]}
14
Ações

As ações podem ser representadas pelos seguintes
operadores:

Com base nessa especificação, desenhe a árvore de
busca criada pelo algoritmo BuscaProfundidade, ao
procurar a solução do problema.
15
Implementação
Busca Profundidade
Problema do Labirinto

Consideremos o problema de um rato preso num
labirinto que precisa achar um caminho para a saída.

Para isso, ele tenta sistematicamente cada caminho.

Quando o caminho leva a um beco, ele retrocede até
um ponto que possa tentar outro caminho não
explorado.
16
Programa principal
Função dada para criar matriz
representando o labirinto
Função saída do labirinto
(a programar)
17
Algoritmo – Cria Labirinto
Função preenche uma matriz 15x15:
1º laço -> cria a borda
2º laço -> preenche labirinto aleatório
Libera a posição para rato
Libera posição de saída L[13][14]
18
Uso da Pilha

Função saída
 Recebe matriz representando o labirinto;





Estado Inicial: o rato inicia na posição L[1,1];
Estado meta: L[13][14];
Inicializa a pilha;
O rato deve ir se deslocando em busca da saída
(estados sucessores), de maneira que ele guarde na
pilha as posições visitadas, ou seja, por onde já
passou (aprofundando na árvore).
Isso permite que o rato volte a posição anterior caso
chegue a um beco sem saída (nó folha da árvore de
busca – não tem sucessores a expandir).
19
Uso da Pilha

Estados Sucessores e Uso da Pilha


A função investiga se é possível andar para direita.
 Se possível, segue para direita e guarda esta
posição visitada na pilha.
 Caso não esteja livre a direita, tentaremos para
baixo, à esquerda e para cima.
Caso não tenhamos sucesso, estamos num beco
sem saída (nó folha da árvore):
 Devemos marcar essa posição como beco
 Recorrer a pilha, desempilhando o último lugar
visitado
20
Rato na posição [1, 1]
Marca posição já visitada
Se direita livre, empilha posição
visitada e reposiciona rato
Senão
se p/ baixo livre, empilha posição
visitada e reposiciona rato
Teste à esquerda
Teste p/ cima
Pilha vazia  sem saída
Senão, marca posição
atual como beco e
desempilha última
posição visitada
Reexibe a matriz atualizada
Encontrou a saída
21
Uso da Pilha

Laço de Repetição – A cada novo estado (nova posição)



A função volta ao laço testando se a partir dessa nova
posição o rato consegue se deslocar (direita, baixo,
esquerda, cima).
Caso não tenhamos sucesso, voltamos a recorrer a pilha.
Quando o Laço termina?


Ou porquê não tenho mais opções na minha pilha, já tentei
tudo e não cheguei a saída  neste caso devolvemos
zero (Falso).
Ou quando chegarmos a saída: posição L[13][14] 
devolve 1 (Verdadeiro)
22
Exibe Labirinto
23
Operações básicas da Pilha

Criar uma estrutura de pilha; | Inicializapilha

Inserir um elemento no topo (push); | Empilha

Remover o elemento do topo (pop);| Desempilha

Verificar se a pilha está vazia; | Pilhavazia

Verificar se a pilha esta cheia; | Pilhacheia

Pesquisa topo de pilha. | Pesquisatopo
Implementação
Ou
25
Implementação
26
Estratégias de Busca


Desvantagens de buscas cegas :

Ineficientes – expandem muitos estados para encontrar a
solução;

Não garantem encontrar soluções de custo mínimo (ex.:
busca em profundidade);
Vamos estudar três estratégias de busca:

1ª) baseada no conceito de custo de ação: ineficiente, mas
garante encontrar uma solução de custo mínimo;

2ª) utiliza o conceito de função heurística: muito eficiente,
mas não garante encontrar uma solução de custo mínimo;

3ª) combina as duas estratégias anteriores;
27
Custo de ação


Em muitos problemas, as ações podem ter custos
associados, dependendo da dificuldade que o
agente tem em executá-las.
Para levar essa informação em conta durante a
busca, precisamos adicionar mais um campo na
especificação dos operadores:
oper(α, s, s´, g(α))  β
onde g(α) é o custo da ação α, que transforma o
estado s num estado s´, dado que a condição β
esteja satisfeita.
28
Problema das Rotas

Dado um mapa de vias, uma cidade de origem e
uma cidade de destino, encontrar uma rota de
distância mínima entre essas duas cidades.
29
Custo de ação

Observe que neste problema podemos
definir a ação:



(vai(X, Y), X, Y) como sendo uma ação que leva o
agente do estado X para o estado Y.
Porém, será que tenho o mesmo custo para me
deslocar entre duas cidades do mapa?
Mais ainda, qual a pré condição para sair de X e
chegar a Y? Preciso que exista uma estrada
entre X e Y.
30
Especificando ações


Nesse domínio, o agente é capaz de viajar de uma
cidade a outra e, portanto, suas ações podem ser
especificadas conforme segue:
1º) Especificamos o custo de cada via (bidirecional):
via(a; b; 7)
via(b; f; 3)
via(d; e; 1)
via(i; k; 5)

via(a; c; 9)
via(b; i; 4)
via(f; g; 2)
via(j; l; 6)
via(a; d; 3)
via(c; j; 5)
via(g; h; 3)
via(k; l; 4)
2º) Especificar as operações:


oper(vai(X, Y), X, Y, C)  via(X, Y, C)
oper(vai(X, Y), X, Y, C)  via(Y, X, C)
31
Custo de caminho

Quando as ações têm custo, o custo de um caminho [a1, a2,..., an]
é Σni=1 g(ai),
onde g(ai) é o custo de cada ação ai, ou seja,
g(a1) + g(a2)+...+g(an).

Por exemplo, de acordo com a figura anterior, o custo do caminho
[vai(a,d), vai(d,e)] é 3 +1 = 4.
32
Custo de um estado

Numa árvore de busca, todo estado s está associado a
um caminho que leva do estado inicial s0 até s.

Custo de um estado: custo do caminho que leva do
estado inicial s0 até s.

No algoritmo de busca pelo menor custo, cada vez
que um estado é expandido, um custo é associado a
cada um de seus sucessores.

O algoritmo progride expandindo sempre o estado de
menor custo, até que um estado meta seja
encontrado.
33
Busca pelo menor custo

Combina os comportamentos da busca em largura
(expande todos sucessores) e da busca em profundidade
(aprofunda no de menor custo).

Este algoritmo é obtido através do uso de uma fila de
prioridades ascendente (do menor para o maior) para
guardar os estados a serem expandidos.
34
Exemplo Problema das Rotas
(11)
(10)
(12)
(15)
(14)
(20)
(16)
(4)
35
Exemplo Problema das Rotas


Estado inicial: s0 = a
Estados meta: G = {[k]}
Apesar de encontrar
o menor caminho
expande muitos estados
tornando-o ineficiente.
S0

O que aconteceria se
todos os custos fossem
iguais a 1?

7
10
12
9
11
14
16
20
3
4
15
36
Função heurística



Estima o custo mínimo de um caminho
(desconhecido) que leva de um determinado estado a
um estado meta.
Seja h* uma função que calcula o custo mínimo
exato de um caminho que leva de um determinado
estado a um estado meta.
Formalmente, uma função heurística pode ser
qualquer função h que apresente as seguintes
propriedades:
 h(s) = 0 se e somente se s é um estado meta e
 para todo s pertencente a S, h(s) <= h*(s).
37
Propriedades da função
heurística

Essas propriedades garantem que a
estimativa dada pela função heurística seja
admissível, ou seja, que nunca superestime
o custo real de uma solução.

Note que as funções heurísticas dependem
do domínio de aplicação, bem como da
criatividade e experiência de quem a projeta.
38
Problema do Quebra-Cabeça

O problema do Quebra-Cabeça de 8 consiste em
movimentar as peças do quebra-cabeça horizontal
ou verticalmente (para ocupar a posição vazia
adjacente a peça) de modo que a configuração final
seja alcançada:
39
Expandindo o estado corrente

Agora, usando uma função
heurística, o algoritmo de busca
deveria expandir o melhor entre
esses dois estados sucessores.

Mas como decidir qual é o melhor?

Uma possibilidade é:

Verificar o quão longe cada peça
encontra-se de sua posição na
configuração final;

Apontar como melhor estado aquele
cuja soma das distâncias é mínima.
40
Estimativa




No estado s1, as peças 1, 5, 6, 7 e 8 já
estão em suas posições finais.
Para as peças 2, 3 e 4, a distância é 1.
 Portanto, h(s1) = 3.
 Analogamente, h(s2) = 5.
Isso indica que:
 uma solução a partir de s1 pode ser
obtida com no mínimo mais três
expansões,
 uma solução a partir de s2 requer no
mínimo mais cinco expansões.
O algoritmo deve escolher o estado s1.
41
Busca pela melhor estimativa

É semelhante ao algoritmo de busca pelo menor
custo.

A diferença é que, em vez de se basear no custo
g(s), do caminho já percorrido até s, para
selecionar os estados a serem expandidos, a
busca pela melhor estimativa se baseia no custo
estimado h(s) do caminho que ainda precisa ser
percorrido, a partir de s, até um estado meta.

Baseia-se numa estimativa do que irei gastar.
42
Busca pela melhor estimativa

Nesse algoritmo, a função sucessoresH devolve
uma lista de estados sucessores e seus respectivos
custos estimados (necessários para estabelecer a
ordem dos estados na fila de prioridades
ascendente), que são dados pela função h(s).
43
Exemplo



Vamos considerar o Problema das Rotas.
Como heurística, usaremos a distância em linha
reta entre a cidade corrente e a cidade que se
deseja atingir (obtido a partir de um mapa).
Vamos encontrar uma rota que leve da cidade a a
cidade k e, para facilitar a exposição, vamos definir a
função heurística da seguinte forma:
h(a) = 15
h(b) = 7
h(c) = 6
h(d) = 14
h(e) = 15
h(f) = 7
h(g) = 8
h(h) = 5
h(i) = 5
h(j) = 3
h(k) = 0
h(l) = 4
44
Exemplo Problema das Rotas


Estado inicial: s0 = a
Estados meta: G = {[k]}
S0
7
Observe que este não é
o menor caminho mas a
busca foi mais eficiente.
6
14

3
4
0
45
Problema das Rotas
7
Menor custo
= 16
6
4
15
14
0
3
Custo = 24
46
Análise dos algoritmos




A busca pelo menor custo minimiza o custo do
caminho percorrido até o estado corrente;
Para garantir a solução de custo mínimo, o algoritmo
acaba tendo que examinar uma grande quantidade de
estados no espaço de estados do problema, podendo
ser muito ineficiente.
A busca pela melhor estimativa tenta minimizar o
custo estimado do caminho a ser percorrido do estado
corrente até um estado meta.
Este algoritmo reduz o espaço de busca
consideravelmente; porém, não consegue garantir uma
47
solução de custo mínimo.
Atividade 10

Elabore uma função heurística para o
problema do Labirinto e desenhe uma
possível árvore busca (com 2 ou 3 níveis
apenas) produzidas pelo algoritmo
BuscaMelhorEstimativa.


s0 = L[1][1]
G = {L[13][14]}.
48
Busca A*

Felizmente, é possível combinar essas duas
estratégias de busca num mesmo algoritmo,
denominado A*.

O algoritmo minimiza o custo total do caminho
percorrido, desde o estado inicial até um
estado meta, usando uma função da forma
f(s) = g(s) + h(s), onde g(s) é uma função de
custo e h(s) e uma função heurística.
49
Busca A*

Nesse algoritmo, a função sucessoresF devolve
uma lista de estados sucessores e seus respectivos
custos g(s)+h(s) (necessários para estabelecer a
ordem dos estados na fila de prioridades
ascendente), que são dados pela função f(s).
50
Exemplo


Estado inicial: s0 = a
Estados meta: G = {[k]}
15
15
14
17
16
17
17
16
51
Atividade 11

Desenhe as árvores de busca produzidas,
para o Problema das Rotas, quando os
algoritmos BuscaMenorCusto,
BuscaMelhorEstimativa e BuscaA* são
chamados com:


s0 = k
G = {[a]}.
52
Apresentação dos Trabalhos


Média: 60 a 90 min
Entregar:



Apresentação (slides)
Trabalho teórico: Texto incluindo referências
bibliográficas (.doc ou pdf).
Trabalho prático: código fonte dos programas
53
Calendário de aulas (previsão)

09/Mar – Algoritmos de Busca

16/Mar – Não haverá aula

23/Mar – Não haverá aula

30/Mar – Sem. 1 – Planejamento

06/Abr – Semana Santa

13/Abr – Não haverá aula

20/Abr – Sem. 2 – Visão Computacional

27/Abr – Sem. 3 – Aprendizagem e Redes Neurais
54
Calendário de aulas (previsão)

04/Mai – Sem. 4 - Data Mining e Sist. Recomendação

11/Mai – Sem. 5 – Proc. Ling. Natural + Text Mining

18/Mai – Não haverá aula (evento externo)

25/Mai – Sem. 6 e 7 – Chatter Bot e Sudoku

01/Jun – Sem. 8 e 9 – Jogo da Onça e Pet Squares

08/Jun – Corpus Christi

15/Jun – Não haverá aula (evento externo)

22/Jun - Entrega de Notas
55
Download

ppt