Inteligência Artificial

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

description

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) - PowerPoint PPT Presentation

Transcript of Inteligência Artificial

Page 1: Inteligência Artificial

Inteligência ArtificialAula 05 – Busca Heurística

Page 2: Inteligência Artificial

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

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

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

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

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

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

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

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

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

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

12

Solução???

Page 13: Inteligência Artificial

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

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

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

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

17

Programa principalFunção dada para criar matriz

representando o labirinto

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

Page 18: Inteligência Artificial

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

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

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

21

Rato na posição [1, 1]

Marca posição já visitadaSe direita livre, empilha posição visitada e reposiciona ratoSenã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 visitadaReexibe a matriz atualizada

Encontrou a saída

Page 22: Inteligência Artificial

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

23

Exibe Labirinto

Page 24: Inteligência Artificial

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

25

ImplementaçãoOu

Page 26: Inteligência Artificial

26

Implementação

Page 27: Inteligência Artificial

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

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

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

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

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

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

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

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

35

Exemplo Problema das Rotas

(10)

(11)

(4)

(14)

(12)

(16)

(15)

(20)

Page 36: Inteligência Artificial

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

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

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

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

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

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

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

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

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) = 6h(d) = 14 h(e) = 15 h(f) = 7h(g) = 8 h(h) = 5 h(i) = 5h(j) = 3 h(k) = 0 h(l) = 4

Page 45: Inteligência Artificial

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

46

Problema das Rotas

15

7

6

14 3

4 0

Custo = 24

Menor custo= 16

Page 47: Inteligência Artificial

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

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

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

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

51

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

1514 17

17 16 17

16

Page 52: Inteligência Artificial

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

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

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

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