55
Inteligência Artificial Aula 05 – Busca Heurística

Inteligência Artificial Aula 05 – Busca Heurística

Embed Size (px)

Citation preview

Page 1: Inteligência Artificial Aula 05 – Busca Heurística

Inteligência Artificial

Aula 05 – Busca Heurística

Page 2: Inteligência Artificial Aula 05 – Busca Heurística

2

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)

Page 3: Inteligência Artificial Aula 05 – Busca Heurística

3

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).

Page 4: Inteligência Artificial Aula 05 – Busca Heurística

4

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.

Page 5: Inteligência Artificial Aula 05 – Busca Heurística

5

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,

...

Page 6: Inteligência Artificial Aula 05 – Busca Heurística

6

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

}

Page 7: Inteligência Artificial Aula 05 – Busca Heurística

7

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]

}

Page 8: Inteligência Artificial Aula 05 – Busca Heurística

8

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

Page 9: Inteligência Artificial Aula 05 – Busca Heurística

9

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.

Page 10: Inteligência Artificial Aula 05 – Busca Heurística

10

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:

Page 11: Inteligência Artificial Aula 05 – Busca Heurística

11

Á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?

Page 12: Inteligência Artificial Aula 05 – Busca Heurística

12

Solução???

Page 13: Inteligência Artificial Aula 05 – Busca Heurística

13

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.

Page 14: Inteligência Artificial Aula 05 – Busca Heurística

14

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]}

Page 15: Inteligência Artificial Aula 05 – Busca Heurística

15

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.

Page 16: Inteligência Artificial Aula 05 – Busca Heurística

16

ImplementaçãoBusca 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.

Page 17: Inteligência Artificial Aula 05 – Busca Heurística

17

Programa principal

Função dada para criar matriz representando o labirinto

Função saída do labirinto(a programar)

Page 18: Inteligência Artificial Aula 05 – Busca Heurística

18

Algoritmo – Cria Labirinto

Função preenche uma matriz 15x15:1º laço -> cria a borda2º laço -> preenche labirinto aleatório

Libera a posição para rato Libera posição de saída L[13][14]

Page 19: Inteligência Artificial Aula 05 – Busca Heurística

19

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).

Page 20: Inteligência Artificial Aula 05 – Busca Heurística

20

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

Page 21: Inteligência Artificial Aula 05 – Busca Heurística

21

Rato na posição [1, 1]

Marca posição já visitada

Se direita livre, empilha posição visitada e reposiciona rato

Senãose p/ baixo livre, empilha posição visitada e reposiciona rato

Teste à esquerda

Teste p/ cima

Pilha vazia sem saída

Senão, marca posiçãoatual como beco edesempilha última

posição visitada

Reexibe a matriz atualizada

Encontrou a saída

Page 22: Inteligência Artificial Aula 05 – Busca Heurística

22

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)

Page 23: Inteligência Artificial Aula 05 – Busca Heurística

23

Exibe Labirinto

Page 24: Inteligência Artificial Aula 05 – Busca Heurística

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

Page 25: Inteligência Artificial Aula 05 – Busca Heurística

25

Implementação

Ou

Page 26: Inteligência Artificial Aula 05 – Busca Heurística

26

Implementação

Page 27: Inteligência Artificial Aula 05 – Busca Heurística

27

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;

Page 28: Inteligência Artificial Aula 05 – Busca Heurística

28

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.

Page 29: Inteligência Artificial Aula 05 – Busca Heurística

29

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.

Page 30: Inteligência Artificial Aula 05 – Busca Heurística

30

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.

Page 31: Inteligência Artificial Aula 05 – Busca Heurística

31

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(a; c; 9) via(a; d; 3)

via(b; f; 3) via(b; i; 4) via(c; j; 5)

via(d; e; 1) via(f; g; 2) via(g; h; 3)

via(i; k; 5) via(j; l; 6) 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)

Page 32: Inteligência Artificial Aula 05 – Busca Heurística

32

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.

Page 33: Inteligência Artificial Aula 05 – Busca Heurística

33

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.

Page 34: Inteligência Artificial Aula 05 – Busca Heurística

34

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.

Page 35: Inteligência Artificial Aula 05 – Busca Heurística

35

Exemplo Problema das Rotas

(10)

(11)

(4)

(14)

(12)

(16)

(15)

(20)

Page 36: Inteligência Artificial Aula 05 – Busca Heurística

36

Exemplo Problema das Rotas

Estado inicial: s0 = a Estados meta: G = {[k]}

Apesar de encontraro menor caminhoexpande muitos estadostornando-o ineficiente.

O que aconteceria se todos os custos fossem iguais a 1?

S0

97 3

410 11 14

12 16

15

20

Page 37: Inteligência Artificial Aula 05 – Busca Heurística

37

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).

Page 38: Inteligência Artificial Aula 05 – Busca Heurística

38

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.

Page 39: Inteligência Artificial Aula 05 – Busca Heurística

39

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:

Page 40: Inteligência Artificial Aula 05 – Busca Heurística

40

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.

Page 41: Inteligência Artificial Aula 05 – Busca Heurística

41

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.

Page 42: Inteligência Artificial Aula 05 – Busca Heurística

42

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.

Page 43: Inteligência Artificial Aula 05 – Busca Heurística

43

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).

Page 44: Inteligência Artificial Aula 05 – Busca Heurística

44

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

Page 45: Inteligência Artificial Aula 05 – Busca Heurística

45

Exemplo Problema das Rotas

Estado inicial: s0 = a Estados meta: G = {[k]}

Observe que este não é

o menor caminho mas a

busca foi mais eficiente.

S0

67 14

3

0

4

Page 46: Inteligência Artificial Aula 05 – Busca Heurística

46

Problema das Rotas

15

7

6

143

4 0

Custo = 24

Menor custo= 16

Page 47: Inteligência Artificial Aula 05 – Busca Heurística

47

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 solução de custo mínimo.

Page 48: Inteligência Artificial Aula 05 – Busca Heurística

48

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]}.

Page 49: Inteligência Artificial Aula 05 – Busca Heurística

49

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.

Page 50: Inteligência Artificial Aula 05 – Busca Heurística

50

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).

Page 51: Inteligência Artificial Aula 05 – Busca Heurística

51

Exemplo

Estado inicial: s0 = a Estados meta: G = {[k]} 15

1514 17

17 16 17

16

Page 52: Inteligência Artificial Aula 05 – Busca Heurística

52

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]}.

Page 53: Inteligência Artificial Aula 05 – Busca Heurística

53

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

Page 54: Inteligência Artificial Aula 05 – Busca Heurística

54

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

Page 55: Inteligência Artificial Aula 05 – Busca Heurística

55

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