Busca em Espaço de Estados



Documentos relacionados
Busca em Espaço de Estados a

Respostas dos Exercícios Cap. 2 Russell & Norvig

IA: Busca Competitiva. Ricardo Britto DIE-UFPI

CTC-17 Inteligência Artificial Problemas de Busca. Prof. Paulo André Castro

Solução de problemas por meio de busca (com Python) Luis Martí DEE/PUC-Rio

Resolução de problemas por meio de busca. Capítulo 3 Russell & Norvig Seções 3.1, 3.2 e 3.3

Projeto e Análise de Algoritmos

MÉTODOS DE RESOLUÇÃO DE PROBLEMAS EM IA. Busca em espaço de estados. Estados e Operadores. Jogo dos 8. Sumário. Exemplo: jogo dos 8

Best-first search. Pesquisa informada. Best-first search Pesquisa gananciosa (greedy) Best-first search

Árvores Binárias de Busca

Faculdade Alagoana de Administração FAA Ciência da Computação. (Resolução de Problemas em) Espaço de Estados

Árvores Binárias de Busca

Inteligência Artificial. Metodologias de Busca

EAD Árvore árvore binária

Resolução de Problemas Com Procura. Capítulo 3

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Sistemas Inteligentes Lista de Exercícios sobre Busca

Árvore Binária de Busca

Pesquisa em Memória Primária. Prof. Jonas Potros

Tabela de símbolos: tabelas de espalhamento

EAD Árvore - representação usando listas ligadas

Busca. Pesquisa sequencial

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

Geração de código intermediário. Novembro 2006

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

INF 1771 Inteligência Artificial

PROGRAMAÇÃO II 4. ÁRVORE

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Árvores e Árvores Binárias

BCC202 - Estrutura de Dados I

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Inteligência Artificial

Estrutura de Dados Básica

Árvores Binárias e Busca. Jeane Melo

Métodos de Pesquisa em Memória Primária

2ª Lista de Exercícios

Francisca Raquel de Vasconcelos Silveira Gustavo Augusto Lima de Campos Mariela Inés Cortés

Estrutura de Dados. Unidade VI. -Tabela Hash -Grafos. Prof. Ms. Amilton Souza Martha

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Pesquisa Sequencial e Binária

Algoritmos de pesquisa. Tabelas de dispersão/hash

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

Resolução de Problemas

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

PROBLEMAS, ESPAÇO DE PROBLEMAS E BUSCA. Prof. DSc. Marcus Vinicius Lamar Prof. DSc. Alexandre Rasi Aoki

Variáveis e estruturas de controlo. Introdução à Programação André L. Santos

CAP 254 CAP 254. Otimização Combinatória. Professor: Dr. L.A.N. Lorena. Assunto: Metaheurísticas Antonio Augusto Chaves

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Problema 8-Puzzle: Análise da solução usando Backtracking e Algoritmos Genéticos

Inteligência Artificial

TCC04040 Inteligência Artificial. Inteligência Artificial

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação

Estruturas de Dados I

Departamento de Matemática - UEL Ulysses Sodré. Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

Tutorial de Matlab Francesco Franco

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

A4 Projeto Integrador e Lista de Jogos

Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II

1. Introdução Definição Conceitos relacionados... 2

Pesquisa Sequencial e Binária. Introdução à Programação SI2

Programação WEB I Estruturas de controle e repetição

Estratégias de Busca: Métodos Informados. March 9, 2015

Algoritmos de Pesquisa e Ordenação em Vectores

Árvores de Suporte de Custo Mínimo

INF 1771 Inteligência Artificial

Análise de complexidade

Resolução de problemas por meio de busca. Capítulo 3 Inteligência Artificial Sistemas de Informação

Jogo de Tabuleiro - Mancala Relatório Final

PARA CASA * Como voce faria para armazenar o resultado em uma variavel chamada NOME?

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental

Capítulo 19. Algoritmos de Ordenação e de Pesquisa. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Estratégias informadas de Busca. March 3, 2016

Dadas a base e a altura de um triangulo, determinar sua área.

5COP096 TeoriadaComputação

O modelo do computador

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Agentes Inteligentes. Inteligência Artificial. Exemplos. Agentes Inteligentes. Prof. Ms. Luiz Alberto Contato:

Análise de Algoritmos: Melhor caso, pior caso, caso médio

Hashing. Rafael Nunes LABSCI-UFMG

Pointer Jumping. odg(v) e idg(v): graus de saída e entrada do vértice v V. um vértice r tal que. O vértice r é dita raíz de T

Algoritmos e Estrutura de Dados. Aula 13 Estrutura de Dados: Árvores de Pesquisa Binária Prof. Tiago A. E. Ferreira

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

05/04/2013. Para efetuar medidas é necessário fazer uma padronização, escolhendo unidades para cada grandeza.

Algoritmos de Busca em Tabelas

Hashing Letícia Rodrigues Bueno

4.3. Máquina de estados: São utilizados em sistemas de complexos, é de fácil transformação para ladder desde que não haja muitas ramificações.

Introdução Processamento Paralelo

Complexidade de Algoritmos. Edson Prestes

Python Condicionais e Loops. Introdução à Programação SI1

Roteiro para apresentação do Plano de Negócio. Preparamos este roteiro para ajudá-lo(a) a preparar seu Plano de Negócio.

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Programação II. Aula 2

Aula 03 Custos de um algoritmo e funções de complexidade

Transcrição:

Busca em Espaço de Estados Jomi Fred Hübner jomi@inf.furb.br FURB / BCC

Introdução 2

Agente orientado a meta O projetista não determina um mapeamento entre percepções e ações, mas determina que objetivo o agente deve alcançar É necessário que o próprio agente construa um plano de ações que atinjam seu objetivo (como se o próprio agente construísse seu programa) Exemplos: o agente aspirador de pó, um agente motorista de táxi, uma sonda espacial,... Introdução Agente orientado a meta 3

O que é busca? O mundo do agente tem um conjunto de estados possíveis (muitas vezes este conjunto é infinito) Existem transições entre os estados do mundo, formando um grafo. São utilizados algoritmos para encontrar um caminho neste grafo partindo do estado inicial (atual) até o estado objetivo Introdução O que é busca? 4

Exemplo do aspirador de pó Um robô aspirador de pó deve limpar uma casa com duas posições. As operações que ele sabe executar são: sugar ir para a posição da esquerda ir para a posição da direita Como o aspirador pode montar um plano para limpar a casa se inicialmente ele esta na posição direita e as duas posições têm sujeira? Quais os estados possíveis do mundo do aspirador e as transições? Introdução Exemplo do aspirador de pó 5

Estados possíveis: 1 2 3 4 5 6 7 8 Introdução Exemplo do aspirador de pó 6

Espaço de busca L R L R S S L R R L R R L L S S S S L R L R S S Introdução Exemplo do aspirador de pó 7

Por que estados? As informações do mundo real são absurdamente complexas, é praticamente impossível modelá-las todas No exemplo do aspirador, o mundo dele tem várias outras informações: a cor do tapete, se é dia, de que material o aspirador é feito, quanto ele tem de energia, como é o nome do/a proprietário/a,... A noção de estado é utilizada para abstrair esses detalhes e considerar somente o que é relevante para a solução do problema O mesmo se dá com as operações modeladas: são abstrações das operações reais (ir para a posição da direita implica em várias outras operações). Introdução Por que estados? 8

Exemplo dos jarros Temos dois jarros, um com capacidade para 4 litros de água e outro com capacidade para 3 litros. Utilizando somente operações de encher, esvaziar e derramar a água de um jarro no outro, o agente deve encontrar uma seqüência de operações que deixa o jarro com capacidade para 3 litros com 2 litros de água. Quais os estados e as transições? Introdução Exemplo dos jarros 9

Busca como desenvolvimento de software No desenvolvimento de um software para resolver um problema, o projetista pode optar por várias paradigmas de modelagem do problema: O sistema é modelado por procedimentos que alteram os dados de entrada O sistema é modelado por funções O sistema é modelado por predicados O sistema é modelado por objetos... Introdução Busca como desenvolvimento de software 10

Busca é mais uma forma de modelar um problema: Definir os estados Definir as transições Escolher um algoritmo de busca Introdução Busca como desenvolvimento de software 11

Exercício O que é estado transição estado meta e custo da solução encontrada para os seguintes problemas Introdução Exercício 12

8-Puzzle 5 4 51 42 3 6 1 8 68 84 7 3 2 7 6 25 Start State Goal State Introdução Exercício 13

Encontrar um caminho da cidade i até x i e f d h g p b k n m x a l 1 c o 3 3 2 2 2 3 1 1 2 2 2 4 3 3 2 1 14 1 1 6 Introdução Exercício 14

Algoritmos de Busca Cega 15

Árvore de busca Coloca-se o estado inicial como nodo raiz Cada operação sobre o estado raiz gera um novo nodo (chamado de sucessor) Repete-se este processo para os novos nodos até gerar o nodo que representa o estado meta Estratégia de busca: que nodo escolher para expandir Exemplo: (fazer as árvores para o exemplo do aspirador e do jarro) Algoritmos de Busca Cega Árvore de busca 16

Estratégias de busca Busca em largura: o nodo de menor profundidade mais a esquerda é escolhido para gerar sucessores Busca em profundidade: o nodo de maior profundidade mais a esquerda é escolhido para gerar sucessores Algoritmos de Busca Cega Estratégias de busca 17

Nodos da árvore Cada nodo tem o estado que representa o nodo pai o operador que o gerou sua profundidade na árvore de busca o custo de ter sido gerado (dentado por g) opcionalmente, os nodos sucessores (fazer a figura) Algoritmos de Busca Cega Nodos da árvore 18

Estratégias de poda da árvore de busca Um nodo não gera um sucessor igual a seu pai Um nodo não gera um sucessor igual a um de seus ascendentes Um nodo não gera um sucessor que já exista na árvore de busca Algoritmos de Busca Cega Estratégias de poda da árvore de busca 19

Detalhes de implementação: Verificar se um estado já esta na árvore pode levar muito tempo imagine uma árvore com milhares de estados do jogo de xadrez, cada novo estado deve ser comparado com outros milhares de estados! Ter uma tabela hash (que tem tempo de ótimo tempo de consulta) para saber se determinado nodo existe na árvore Algoritmos de Busca Cega Estratégias de poda da árvore de busca 20

Algoritmo de busca em largura function BL(Estado inicial): Nodo PriorityQueue(g) abertos {fila ordenada por g} abertos.add(new Nodo(inicial)) while not abertos.isempty() do Nodo n abertos.remove() if n.getestado().émeta() then return n end if abertos.add(n.sucessores()) end while return null Algoritmos de Busca Cega Algoritmo de busca em largura 21

Critérios de comparação entre os algoritmos Completo: o algoritmo encontra a solução se ela existir Ótimo: o algoritmo encontra a solução de menor custo Tempo: quanto tempo o algoritmo leva para encontrar a solução no pior caso Espaço: quanto de memória o algoritmo ocupa Algoritmos de Busca Cega Critérios de comparação entre os algoritmos 22

Análise do algoritmo BL Completo: sim Ótimo: sim Tempo: explorar O(b d ) nodos b = fator de ramificação d = profundidade do estado meta O(b d ) = 1 + b + b 2 + b 3 +... + b d Espaço: guardar O(b d ) nodos. Algoritmos de Busca Cega Análise do algoritmo BL 23

Exemplo de complexidade Prof. Nodos Tempo Memória 0 1 1ms 100 bytes 2 111 0,1 seg 11 Kbytes 4 11.111 11 seg 1 Mbyte 6 10 6 18 min 111 Mbytes 8 10 8 31 horas 11 Gbytes 12 10 12 35 anos 111 Tbytes 14 10 14 3500 anos 11.111 Tbytes (b = 10, 1000 nodos por segundo, 100 bytes por nodo) Algoritmos de Busca Cega Exemplo de complexidade 24

Algoritmo de busca em profundidade function BP(Estado inicial, int m): Nodo Stack abertos abertos.add(new Nodo(inicial)) while not abertos.isempty() do Nodo n abertos.remove() if n.getestado().émeta() then return n end if if n.getprofundidade() < m then abertos.add(n.sucessores()) end if end while return null Algoritmos de Busca Cega Algoritmo de busca em profundidade 25

Análise do algoritmo BP Completo: não (caso a meta esteja em profundidade maior que m) Se m =, é completo se o espaço de estados é finito e existe poda para não haver loops entre as operações Ótimo: não Tempo: explorar O(b m ) nodos (ruim se m é muito maior que d) Espaço: guardar O(bm) nodos. (em profundidade 12, ocupa 12 Kbytes!) Algoritmos de Busca Cega Análise do algoritmo BP 26

Algoritmo de busca em profundidade iterativo function BPI(Estado inicial): Nodo int p 1 loop Nodo n BP(inicial, p) if n null then return n end if p p + 1 end loop Algoritmos de Busca Cega Algoritmo de busca em profundidade iterativo 27

Análise do algoritmo BPI Completo: sim Ótimo: sim se todas as ações tem o mesmo custo Tempo: explorar O(b d ) nodos Espaço: guardar O(bd) nodos. Algoritmos de Busca Cega Análise do algoritmo BPI 28

Algoritmo de busca em Bidirecional function BBD(Estado inicial, meta): Nodo Queue abertoscima, abertosbaixo abertoscima.add(new Nodo(inicial)) abertosbaixo.add(new Nodo(meta)) while not (abertoscima.empty() and abertosbaixo.empty()) do {verifica lista de cima} Nodo n abertoscima.remove() if n.getestado() abertosbaixo then return meta end if abertoscima.add(n.sucessores()) {verifica lista de baixo} n abertosbaixo.remove() if n.getestado() abertoscima then return meta end if abertosbaixo.add(n.antecessores()) end while return null Algoritmos de Busca Cega Algoritmo de busca em Bidirecional 29

Análise do algoritmo BBD Completo: sim Ótimo: sim Tempo: explorar O(b d/2 ) nodos Espaço: guardar O(b d/2 ) nodos Observação: deve ser possível gera antecessores Algoritmos de Busca Cega Análise do algoritmo BBD 30

Resumo O(b^d) d O(b^m) inicial meta m Algoritmos de Busca Cega Resumo 31

BL BP BPI BBD Completo sim não sim sim Ótimo sim não sim sim Tempo O(b d ) O(b m ) O(b d ) O(b d/2 ) Espaço O(b d ) O(bm) O(bd) O(b d/2 ) Algoritmos de Busca Cega Resumo 32

Algoritmos de Busca Inteligente 33

Exemplo: ir de h para o (com BL) i e f d h g p b k n m x a l 1 c o 3 3 2 2 2 3 1 1 2 2 2 4 3 3 2 1 14 1 1 6 A árvore de busca gerada é inteligente? Algoritmos de Busca Inteligente Exemplo: ir de h para o (com BL) 34

Heurística Heurística: Estimativa de custo até a meta. (denotado pela função h : Estados Reais) No exemplo das cidades, poderia ser a distância em linha reta. Algoritmo de busca gananciosa: retira de abertos sempre o nodo com menor estimativa de custo (menor h). Refazer a busca de um caminho entre h e o. ótimo! Refazer a busca de um caminho entre i e x. não ótimo! Algoritmos de Busca Inteligente Heurística 35

Busca A* Idéia: Evitar expandir caminhos que já estão muito caros mas também considerar os que têm menor expectativa de custo. Utilizar na escolha de um nodo da lista de abertos tanto a estimativa de custo de um nodo (h(n)) quanto o custo acumulado para chegar no nodo (g(n)) f(n) = g(n) + h(n) Refazer a busca de um caminho entre i e x utilizando f. Algoritmos de Busca Inteligente Busca A* 36

Algoritmo de busca A* function BA*(Estado inicial): Nodo PriorityQueue(f) abertos {fila ordenada por f} abertos.add(new Nodo(inicial)) while not abertos.isempty() do Nodo n abertos.remove() if n.getestado().émeta() then return n end if abertos.add(n.sucessores()) end while return null Algoritmos de Busca Inteligente Algoritmo de busca A* 37

Propriedades da função h Supondo que o valor de h, no exemplo das cidades, é dados por 10 * a distância em linha reta. O algoritmo A* ainda é ótimo? h(n): estimativa de custo de n até a meta h (n): custo real de n até a meta Se h(n) h (n), então h é admissível. Se h é admissível, o algoritmo A* é ótimo! Algoritmos de Busca Inteligente Propriedades da função h 38

Análise do algoritmo A* Completo: sim Ótimo: sim (se h é admissível) Tempo: explorar O(b d ) nodos no pior caso (quando a heurística é do contra ) Espaço: guardar O(b d ) nodos no pior caso. Algoritmos de Busca Inteligente Análise do algoritmo A* 39

Exercício Determine uma heurística para o problema 8-Puzzle e verifique se é admissível. 5 4 51 42 3 6 1 8 68 84 7 3 2 7 6 25 Start State Goal State Algoritmos de Busca Inteligente Exercício 40

h 1 : número de peças fora do lugar h 2 : distância de cada peça de seu lugar h 3 : peças fora da formação de caracol h 4 = h 1 + h 2 + h 3 + h 4 Algoritmos de Busca Inteligente Exercício 41

Complexidade no problema 8-puzzle número de abertos fator ramificação d BPI A*(h 1 ) A*(h 2 ) BPI A*(h 1 ) A*(h 2 ) 2 10 6 6 2.45 1.79 1.79 4 112 13 12 2.87 1.48 1.45 8 6384 39 25 2.80 1.33 1.24 12 364404 227 73 2.78 1.42 1.24 16 1301 211 1.45 1.25 20 7276 676 1.47 1.27 24 39135 1641 1.48 1.26 Algoritmos de Busca Inteligente Complexidade no problema 8-puzzle 42

Exercício Determine uma heurística para o problema das 8-raínhas e verifique se é admissível. h: soma do número de ataques Algoritmos de Busca Inteligente Exercício 43

Algoritmo Subida da Montanha-1 Idéia: escolher sempre um sucessor melhor ( subir sempre ). function BSM-1(Estado inicial): Estado Estado atual inicial loop prox melhor sucessor de atual (segundo h) if h(prox) h(atual) then {sem sucessor melhor} return atual end if atual prox end loop Algoritmos de Busca Inteligente Algoritmo Subida da Montanha-1 44

Análise do algoritmo BSM-1 Não mantém a árvore (logo, não pode retornar o caminho que usou para chegar à meta). Completo: não (problema de máximos locais) Ótimo: não se aplica Tempo:? Espaço: nada! Algoritmos de Busca Inteligente Análise do algoritmo BSM-1 45

Algoritmo Subida da Montanha-2 function BSM-2(Estado inicial): Estado Estado atual inicial loop prox melhor sucessor de atual (segundo h) if h(prox) h(atual) then {sem sucessor melhor} if atual.émeta() then return atual else atual estado gerado aleatóriamente end if else atual prox end if end loop Algoritmos de Busca Inteligente Algoritmo Subida da Montanha-2 46

Análise do algoritmo BSM-2 Completo: sim (se a geração de estados aleatórios distribuir normalmente os estados gerados) Ótimo: não se aplica Tempo:? Espaço: nada! Algoritmos de Busca Inteligente Análise do algoritmo BSM-2 47

Material de consulta Capítulos 3 e 4 do livro do Russell & Norvig Implementação dos algoritmos disponível em http://www.inf.furb.br/~jomi/ia/busca/ buscajava.zip Algoritmos de Busca Inteligente Material de consulta 48