Inteligência Artificial

Slides:



Advertisements
Apresentações semelhantes
Antonio Dirceu Rabelo de Vasconcelos Filho
Advertisements

Inteligência Artificial
Inteligência Artificial
Inteligência Artificial
Grafos – Parte 2 Projeto e Análise de Algoritmos Aline Vasconcelos
Inteligência + Artificial
Prof. Yandre Maldonado e Gomes da Costa
Pesquisa em profundidade
Problemas de fluxo numa rede
Estrutura de Dados e Algoritmos e Programação e Computadores II
Resolução de problemas
Introdução à Linguagem Prolog
Inteligência Artificial
Meta - heurísticas Prof. Aurora
Metaheurísticas Prof. Aurora Pozo Departamento de Informática Universidade Federal do Paraná
1 Busca Heurística - Informada Estratégias de Busca Exaustiva (Cega) encontram soluções para problemas pela geração sistemática de novos estados, que são.
Árvores.
Inteligência Computacional para Otimização
Busca Heurística - Informada
Busca Cega (Exaustiva)
Busca Heurística - Informada
- Conceitos e termos - Aplicações
Solução de problemas por meio de busca
Capítulo 3 - Russell e Norvig
Missionários e Canibais
Buscando Soluções Busca Heurística.
Inteligência Artificial
Inteligência Artificial
Inteligência Artificial
INF 1771 – Inteligência Artificial
Busca Competitiva - MiniMax Jogo-da-Velha
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Meta - heurísticas Prof. Aurora
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Aprendizado de Máquina Aula 13
Grafos Árvores Geradoras.
FACENS – Engenharia da Computação Inteligência Artificial Busca.
1 Introdução aos Agentes Inteligentes Flávia Barros.
I Iterated Local Search Helena R. Lorenço, Olivier Martinz
Árvores binárias de pesquisa com balanceamento
Resolução de problemas por meio de busca
Busca com informação e exploração
Introdução e Busca Cega
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
Introdução aos Agentes Inteligentes Busca Heurística (Informada)
Disciplina: Métodos de Computação Inteligente – 1
AULA COMPUTACIONAL - Síntese de Sistemas de Separação (Cap. 7) 20 DE OUTUBRO DE 2008.
PROGRAMAÇÃO MATEMÁTICA MÉTODO SIMPLEX
Linguagem e Ambiente Scratch
Tópicos Avançados em Inteligência Artificial
Tópicos em Sistemas Inteligentes
Construção e Análise de Algoritmos
Inteligência Artificial
Busca Combinatorial e Métodos de Heurística
Inteligência Artificial
1 Introdução aos Agentes Inteligentes Inventando Funções Heurísticas Flávia Barros.
Resolução de Problemas de Busca
1 Introdução aos Agentes Inteligentes Resolução de Problemas de Busca Flávia Barros.

Busca Competitiva Disciplina: Inteligência Artificial
Resolução de Problemas Sistemas de Produção Prof. Cláudio M. N. A. Pereira.
Disciplina: Inteligência Artificial Universidade de Itaúna
Busca em Espaço de Estados Parte2 Algoritmos de Busca Cega
Busca em Espaço de Estados
Principais Tópicos Introdução Métodos de busca Busca cega
Algoritmo de Transportes Objecto de Aprendizagem Manuel Pina MarquesDEIG
Sistemas Inteligentes Busca Cega (Exaustiva)
Busca Heurística Prof. Valmir Macário Filho. 2 Busca com informação e exploração Capítulo 4 – Russell & Norvig Seção 4.1 Estratégias de Busca Exaustiva.
Transcrição da apresentação:

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? Estratégia de busca 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 Total: 96 estados ... [[1; 1]; [0; 0]; [0; 0]], [[1; 1]; [0; 0]; [0; 1]], [[1; 1]; [0; 0]; [1; 0]], [[1; 1]; [0; 0]; [1; 1]], [[1; 1]; [0; 1]; [0; 0]], [[1; 1]; [0; 1]; [0; 1]], [[1; 1]; [0; 1]; [1; 0]], [[1; 1]; [0; 1]; [1; 1]], [[1; 2]; [0; 0]; [0; 0]], [[1; 2]; [0; 0]; [0; 1]], [[2; 0]; [0; 0]; [0; 0]], [[2; 0]; [0; 0]; [0; 1]], [[2; 1]; [0; 0]; [0; 0]], [[2; 1]; [0; 0]; [0; 1]], [[2; 2]; [0; 0]; [0; 0]], [[2; 2]; [0; 0]; [0; 1]] [[2; 2]; [1; 1]; [1; 0]], [[2; 2]; [1; 1]; [1; 1]], } Total: 96 estados

Grafo do Espaço de Estados ... [[2;0];[1;1];[1;1]] descer subir sair [[1;0];[1;1];[1;1]] sair [[1;1];[1;1];[1;1]] [[1;2];[1;1];[1;1]] entrarSala1 entrarSala2 aspirar aspirar [[1;1];[0;1];[1;1]] [[1;2];[1;0];[1;1]] sair Sair entrarSala1 entrarSala2 [[1;0];[0;1];[1;1]] [[1;0];[1;0];[1;1]] sair entrarSala2 subir descer subir descer entrarSala1 sair [[1;2];[0;1];[1;1]] [[1;1];[1;0];[1;1]] [[2;0];[0;1];[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] [2;1;1] [1;0;1] [2;0;1] [2;0;1] [1;1;0] entrarSala2 [1;1;1] [2;1;1] entrarSala1 aspirar aspirar [1;0;1] [2;0;1] entrarSala2 entrarSala1 entrarSala1 entrarSala2 [2;0;1] [1;1;0] aspirar aspirar entrarSala1 [2;0;0] [1;0;0] entrarSala2 Encontre mais uma possível solução

Grafo do Espaço de Estados entrarSala2 [1;1;1] [2;1;1] entrarSala1 aspirar aspirar [1;0;1] [2;0;1] entrarSala2 entrarSala1 entrarSala1 entrarSala2 [2;0;1] [1;1;0] aspirar aspirar entrarSala1 [2;0;0] [1;0;0] entrarSala2 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ão-determiní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ão-informada 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: seus sucessores são posicionados no nível 1 da árvore de busca; Em seguida, cada um dos estados do nível 1 são expandidos: 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 Planejamento Visão Computacional Aprendizagem e Redes Neurais Data mining e Sistemas de recomendação Proc. Ling. Natural e Text Mining Chatter Bot Jogo 1 – Sudoku Jogo 2 – Jogo da onça 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