ppt

Propaganda
Inteligência Artificial
Aula 04
Busca não-determinística
e Busca cega
Aula Anterior

Conhecimento em IA



Estratégia de busca


Como gerar? Como armazenar?
Como buscar soluções usando esse conhecimento?
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)
Atividade 3:
Aspirador com 2 pisos

Considere uma versão do Mundo do Aspirador
onde há um prédio com dois pisos;

Cada piso possui duas salas (1 e 2) e um
saguão (0).

Não há passagem direta de uma sala para
outra, de modo que o aspirador tem que estar
no saguão para entrar numa sala ou para
mudar de piso.
Atividade 3:
Aspirador com 2 pisos

Para representar os estados nessa versão do
problema, podemos usar uma estrutura da forma
[Pos; Piso1; Piso2], onde:

Pos = [Piso; Sala], podendo Piso assumir {1, 2} e
Sala {0, 1, 2}: indica a posição corrente do
aspirador.

Piso1 = [X; Y ], podendo X e Y assumir {0, 1}: indica
se as salas 1 e 2 do piso 1 estão limpas ou sujas.

Piso2 = [X; Y ], podendo X e Y assumir {0, 1}: indica
se as salas 1 e 2 do piso 2 estão limpas ou sujas.
Espaço de Estados do
Aspirador com 2 pisos

Conjunto de ações:
A = {oper(entrarSala1; [[P;0];[X1;Y1];[X2 ;Y2]]; [[P;1];[X1;Y1];[X2;Y2]]),
oper( entrarSala2; [[P; 0];[X1;Y1];[X2 ;Y2]]; [[P;2];[X1;Y1];[X2 ;Y2]]),
oper( sair; [[P ; 1] [X1; Y1] ;[X2 ;Y2]]; [[P ; 0] [X1; Y1] ;[X2 ;Y2]]),
oper( sair; [[P ; 2] [X1; Y1] ;[X2 ;Y2]]; [[P ; 0] [X1; Y1] ;[X2 ;Y2]]),
oper( subir; [[1 ; 0] [X1; Y1] ;[X2 ;Y2]]; [[2 ; 0] [X1; Y1] ;[X2 ;Y2]]),
oper( descer; [[2 ; 0] [X1; Y1] ;[X2 ;Y2]]; [[1 ; 0] [X1; Y1] ;[X2 ;Y2]]),
oper( aspirar; [[1 ; 1] [1; Y1] ;[X2 ;Y2]]; [[1 ; 1] [0; Y1] ;[X2 ;Y2]]),
oper( aspirar; [[1 ; 2] [X1; 1] ;[X2 ;Y2]]; [[1 ; 2] [X1; 0] ;[X2 ;Y2]]),
oper( aspirar; [[2 ; 1] [X1; Y1] ;[1 ; Y2]]; [[2 ; 1] [X1; Y1] ;[0 ; Y2]]),
oper( aspirar; [[2 ; 2] [X1; Y1] ;[X2 ; 1]]; [[2 ; 2] [X1; Y1] ;[X2 ; 0]])}
Espaço de Estados do
Aspirador com 2 pisos

Conjunto de Estados:
S = { [[1; 0]; [0; 0]; [0; 0]],
[[1; 0]; [0; 0]; [0; 1]],
[[1; 0]; [0; 0]; [1; 0]],
[[1; 0]; [0; 0]; [1; 1]],
[[1; 0]; [0; 1]; [0; 0]],
[[1; 0]; [0; 1]; [0; 1]],
[[1; 0]; [0; 1]; [1; 0]],
[[1; 0]; [0; 1]; [1; 1]],
[[1; 0]; [1; 0]; [0; 0]],
[[1; 0]; [1; 0]; [0; 1]],
[[1; 0]; [1; 0]; [1; 0]],
[[1; 0]; [1; 0]; [1; 1]],
[[1; 0]; [1; 1]; [0; 0]],
[[1; 0]; [1; 1]; [0; 1]],
[[1; 0]; [1; 1]; [1; 0]],
[[1; 0]; [1; 1]; [1; 1]],
...
Aspirador com 2 pisos
...
[[1; 1]; [0; 0]; [0; 0]],
[[1; 1]; [0; 0]; [1; 0]],
[[1; 1]; [0; 1]; [0; 0]],
[[1; 1]; [0; 1]; [1; 0]],
...
[[1; 2]; [0; 0]; [0; 0]],
...
[[2; 0]; [0; 0]; [0; 0]],
...
[[2; 1]; [0; 0]; [0; 0]],
...
[[2; 2]; [0; 0]; [0; 0]],
...
[[2; 2]; [1; 1]; [1; 0]],
}
[[1; 1]; [0; 0]; [0; 1]],
[[1; 1]; [0; 0]; [1; 1]],
[[1; 1]; [0; 1]; [0; 1]],
[[1; 1]; [0; 1]; [1; 1]],
[[1; 2]; [0; 0]; [0; 1]],
[[2; 0]; [0; 0]; [0; 1]],
[[2; 1]; [0; 0]; [0; 1]],
[[2; 2]; [0; 0]; [0; 1]]
Total: 96 estados
[[2; 2]; [1; 1]; [1; 1]],
Grafo do Espaço de Estados
...
[[2;0];[1;1];[1;1]]
descer
sair
subir
sair
[[1;0];[1;1];[1;1]]
[[1;1];[1;1];[1;1]]
entrarSala1
[[1;2];[1;1];[1;1]]
entrarSala2
aspirar
[[1;1];[0;1];[1;1]]
sair
entrarSala1
[[1;0];[0;1];[1;1]]
sair
subir
descer
[[1;2];[1;0];[1;1]]
Sair
entrarSala2
[[1;0];[1;0];[1;1]]
entrarSala2
[[1;2];[0;1];[1;1]]
[[2;0];[0;1];[1;1]] ...
...
aspirar
subir
entrarSala1
sair
descer
[[1;1];[1;0];[1;1]]
... [[2;0];[1;0];[1;1]]
...
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).
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.
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]
}
Busca no espaço de estados

Técnica que supõe a existência de um agente capaz de
realizar ações que modificam o estado do seu mundo.

Descrição do problema de busca:



Espaço de estados: Conjunto de estados (S) e ações (A) que
o agente é capaz de realizar;
Estado inicial: configuração atual do mundo do agente
(estado s0 pertencente a S);
Estado meta: que se deseja atingir (conjunto G contido em S);
Solução: conjunto de ações executadas pelo
agente que transforma o estado inicial num
estado meta.

Exemplo


Problema: Dado que inicialmente o aspirador esteja na
primeira sala e que ambas as salas estejam sujas,
encontre um estado onde ambas as salas estejam limpas.
Descrição do problema:
 Espaço de estados (conjuntos S e A);
S = { [1; 0; 0]; [1; 0; 1]; [1; 1; 0]; [1; 1; 1];
[2; 0; 0]; [2; 0; 1]; [2; 1; 0]; [2; 1; 1]}
A = { oper(entrarSala1; [2; Y;Z]; [1; Y;Z]),
oper(entrarSala2; [1; Y;Z]; [2; Y;Z]),
oper(aspirar; [1; 1;Z]; [1; 0;Z]),
oper(aspirar; [2; Y; 1]; [2; Y; 0])}
 Estado inicial: [1; 1; 1]
 Estados meta: G = {[1; 0; 0]; [2; 0; 0]}
Solução para problema de busca

Consiste numa sequência de ações;

Rotulam o caminho que leva do estado inicial a um
dos estados meta no espaço de estados do
problema.

Exemplo: Mundo do aspirador

Caminho: [aspirar; entrarSala2; aspirar]

Leva do estado inicial [1; 1; 1] ao estado meta [2; 0; 0]
Uma possível solução
[1;1;1]
entrarSala2
entrarSala1
[2;1;1]
aspirar
aspirar
[1;0;1]
entrarSala2
[2;0;1]
entrarSala1
[2;0;1]
entrarSala1
entrarSala2
[1;1;0]
aspirar
aspirar
[2;0;0]
entrarSala1
entrarSala2
[1;0;0]
Encontre mais uma possível solução
Grafo do Espaço de Estados
[1;1;1]
entrarSala2
entrarSala1
[2;1;1]
aspirar
aspirar
[1;0;1]
entrarSala2
[2;0;1]
entrarSala1
[2;0;1]
[1;1;0]
aspirar
aspirar
[2;0;0]


entrarSala2
entrarSala1
entrarSala1
entrarSala2
[1;0;0]
Caminho: [entrarSala2; aspirar; entrarSala1; aspirar]
Leva do estado inicial [1; 1; 1] ao estado meta [1; 0; 0]
Reflexões



Será que preciso especificar todos os
estados de um problema para encontrar uma
solução?
Será que todos os algoritmos de busca
sempre dão a “melhor” resposta?
Tenho garantia que sempre vou percorrer o
menor caminho?
Algoritmo de Busca

Geralmente, os algoritmos de busca não
especificam explicitamente o conjunto de estados
de um problema.

Esses estados podem ser gerados a medida em que
forem sendo encontrados durante a busca.

Uma estratégia de busca pode ser realizada a
partir do estado inicial e gerando os estados
sucessores até chegar a um estado meta.
Algoritmo de Busca
não-determinístico

Dados um conjunto A de ações, um estado inicial s0
pertencente a S e um conjunto de estados meta G contido em
S, um algoritmo não-determinístico de busca pode ser
especificado da seguinte maneira:
O conjunto sigma armazena os
estados a serem explorados
• remove(Σ): escolhe estado em Σ aleatoriamente;
• sucessores (s, A): gera os estados sucessores
de s a partir de A;
• caminho(s): caminho entre estado inicial e
estado s;
Exemplo Mundo do aspirador



Estado inicial: s0 = [1; 1; 1]
Estados Meta: G = {[1; 0; 0]; [2; 0; 0]}
1ª iteração




Σ = {[1,1,1]}
s = remove(Σ)  s = [1,1,1]
[1,1,1] não é estado meta, portanto, são gerados
seus sucessores e adicionados ao conjunto Σ;
Σ = {[2,1,1]; [1,0,1]}
Exemplo Mundo do aspirador

2ª iteração




Σ = {[2,1,1]; [1,0,1]}
s = remove(Σ)  s = [2,1,1] (aleatório)
[2,1,1] não é estado meta, portanto, são gerados
seus sucessores e adicionados ao conjunto Σ;
Σ = {[1; 1; 1]; [2; 1; 0]; [1; 0; 1]}
Exemplo Mundo do aspirador

3ª iteração




Σ = {[1; 1; 1]; [2; 1; 0]; [1; 0; 1]}
s = remove(Σ)  s = [2,1,0] (aleatório)
[2,1,0] não é estado meta, portanto, são gerados
seus sucessores e adicionados ao conjunto Σ;
Σ = {[1; 1; 0]; [1; 1; 1]; [1; 0; 1]}
Exemplo Mundo do aspirador

4ª iteração




Σ = {[1; 1; 0]; [1; 1; 1]; [1; 0; 1]}
s = remove(Σ)  s = [1,1,0] (aleatório)
[1,1,0] não é estado meta, portanto, são gerados
seus sucessores e adicionados ao conjunto Σ;
Σ = {[1; 0; 0]; [1; 1; 1]; [1; 0; 1]}
Exemplo Mundo do aspirador

5ª iteração
Σ = {[1; 0; 0]; [1; 1; 1]; [1; 0; 1]}
 s=remove(Σ)  s = [1,0,0] (aleatório)
 [1,0,0] é estado meta
 devolve o caminho:
[entrarSala2, aspirar,
entrarSala1, aspirar]

Atividades

Exercício 5. Mostre que, fazendo outras escolhas, o
algoritmo de busca não-determinística poderia ter
encontrado uma solução mais curta (i.e. com menos
ações) para o mesmo problema.
Atividades

Exercício 6. Mostre que, fazendo outras escolhas, o
algoritmo de busca não-determinística poderia ficar
executando infinitamente, sem nunca encontrar
uma solução para este problema.
Detectando ciclos


Um problema com o algoritmo de busca nãodeterminística é que, caso o espaço de
estados do problema contenha ciclos, ele
pode executar infinitamente.
Para evitar que isso aconteça, podemos
guardar os estados já expandidos e
impedir que esses estados sejam
expandidos novamente durante a busca.
Busca sem ciclos
O conjunto gama armazena os
estados já visitados
Atividade 7 – Para Casa

Desenhe uma das árvores de buscas que
poderiam ser produzidas pelo rastreamento da
chamada Busca´(A; s0; G) – busca sem ciclos,
sendo:



A = conjunto de ações para o Mundo do Aspirador;
s0 = [1; 1; 1];
G = {[2; 0; 0]}.
Mais estratégias de Busca

Estratégias de busca cega bastante utilizadas:

Busca em largura (breadth first search)

Busca em profundidade (depth first search)

As estratégias de busca cega ou busca nãoinformada não levam em conta a qualidade da
solução encontrada.

Estratégias de busca heurística tentam minimizar o
custo da solução, seja em termos do número de
ações ou em termos dos custos dessas ações.
Busca em largura

Na busca em largura, o estado inicial (nível 0) é
expandido primeiro:


Em seguida, cada um dos estados do nível 1 são
expandidos:


seus sucessores são posicionados no nível 1 da árvore
de busca;
seus sucessores são posicionados no nível 2, e assim
por diante
De maneira que todos os estados num nível n
sejam expandidos antes daqueles no nível n + 1.
Busca em largura

O algoritmo de busca em largura é obtido
simplesmente sistematizando a ordem de inserção e
remoção de estados no conjunto Σ, que agora passa
a se comportar como uma fila (FIFO).
Busca em largura

O algoritmo BuscaLargura sempre encontra uma
solução com o menor número de ações, mas pode levar
mais tempo expandindo os estados do que a busca em
profundidade.
Busca em profundidade


Expandimos sempre o estado mais a esquerda, no
nível mais profundo da árvore de busca até que:

uma solução seja encontrada;

ou um beco seja atingido (estado sem expansão);
Nesse último caso, retrocedemos e reiniciamos a
busca no próximo estado ainda não expandido,
posicionado mais a esquerda, no nível mais
profundo da árvore (backtracking).
Busca em profundidade


O algoritmo é obtido pela sistematização da ordem
de inserção e remoção de estados no conjunto Σ.
Entretanto, em vez de fila usamos pilha (LIFO).
Exemplo: Mundo do aspirador



A = conjunto de ações para o Mundo do Aspirador;
s0 = [1; 1; 1]
G = {[2; 0; 1]}
Observe que o estado
[2,0,0] é um beco;
 A busca retrocede e
toma outro caminho;

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.
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:
Á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?
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.
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]}
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.
Seminários e Grupos
1.
Planejamento
2.
Visão Computacional
3.
Aprendizagem e Redes Neurais
4.
Data mining e Sistemas de recomendação
5.
Proc. Ling. Natural e Text Mining
6.
Chatter Bot
7.
Jogo 1 – Sudoku
8.
Jogo 2 – Jogo da onça
9.
Jogo 3 – Pet Squares
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
Calendário de aulas (previsão)

02/Mar – Algoritmos de Busca

09/Mar – Algoritmos de Busca

16/Mar – Não haverá aula

23/Mar – Sem. 1 – Planejamento

30/Mar – Sem. 2 – Visão Computacional

06/Abr – Semana Santa

13/Abr – Não haverá aula

20/Abr – Sem. 3 – Aprendizagem e Redes Neurais
Calendário de aulas (previsão)









27/Abr – Sem. 4 - Data Mining e Sist. Recomendação
04/Mai - Sem. 5 – Proc. Ling. Natural e Text Mining
11/Mai – Sem. 6 – Chatter Bot
18/Mai – Não haverá aula (evento externo)
25/Mai – Sem. 7 – 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
Download