Introdução à Inteligência Artificial MAC MAC 415. Exercício Programa 1 Busca

Documentos relacionados
Primeiro Trabalho de IA/SI: Buscas. Entrega: 03/03/2019 (2 semanas)

Resolução de Problemas. Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial

lnteligência Artificial

Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula II Algoritmos básicos de busca cega

CEFET/RJ Disciplina: Inteligência Artificial Professor: Eduardo Bezerra Lista de exercícios 01

Resolução de problemas por meio de busca. Inteligência Artificial. Formulação de problemas. Estratégias de busca

Paulo Roberto Quícoli - Raul Peres de Góes - Faculdade de Tecnologia de Taquaritinga (FATEC) SP Brasil

Buscas Não Informadas (Cegas) - Parte I

Inteligência Artificial

Busca Heurística - Informada

Introdução à Resolução de Problemas por meio de Busca

CEFET/RJ Disciplina: Inteligência Artificial Professor: Eduardo Bezerra Lista de exercícios 01

Inteligência Artificial - IA. Resolução de problemas por meio de busca

Buscas Informadas ou Heurísticas - Parte II

Inteligência Artificial

Métodos de Busca. Inteligência Artificial. Busca Heurística. Busca Heurística. Prof. Ms. Luiz Alberto Contato:

MAC425/5739 Inteligência Artificial 3. Busca informada

BCC204 - Teoria dos Grafos

Inteligência Artificial

3. Resolução de problemas por meio de busca

Inteligência Artificial 04. Busca Sem Informação (Cega) Capítulo 3 Russell & Norvig; Seções 3.4 e 3.5

Inteligência Artificial - IA

Trabalho Prático 2 Mundo dos Blocos Alocação Dinâmica / Listas Encadeadas

Agentes de Procura Procura Estocástica. Capítulo 3: Costa, E. e Simões, A. (2008). Inteligência Artificial Fundamentos e Aplicações, 2.ª edição, FCA.

Métodos de Busca Informada (best first search) Capítulo 4 Parte I

Teoria dos Grafos Aula 6

Classificação Externa: Intercalação de Partições Classificadas

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

RESOLUÇÃO DE PROBLEMAS POR MEIO DE BUSCA (PARTE 1) *Capítulo 3 (Russel & Norvig)

3. Resolução de problemas por meio de busca

GRAFOS Aula 05 Algoritmos de percurso: busca em largura e profundidade Max Pereira

Inteligência Artificial Projecto 1

Busca Cega (Exaustiva) e Heurística. Busca Aula 2

Resolução de Problemas de Busca

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 5 Resolvendo Problemas

Arquivos Seqüenciais: Intercalação

3 Extensões dos modelos matemáticos

Inteligência Artificial

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Resolução de Problemas

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina

Inteligência Computacional

Técnicas Inteligência Artificial

3. Resolução de problemas por meio de busca

Os problemas de IA empregam heurísticas, basicamente, em duas situações:

Algoritmos em Grafos

Otimização Combinatória - Parte 4

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 33

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

SCC0504 Programação Orientada a Objetos Projeto

Resolução de problemas por meio de busca. Inteligência Artificial. Busca. Exemplo: Romênia. Exemplo: Romênia 8/23/2010

Agentes que resolvem problemas através de busca Capítulo 3 Parte I

Inteligência Artificial

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Aula 04 / LAB 01 Resolução de problemas por meio de busca Prof. Dr. Alexandre da Silva Simões. Exercício 1. Problema dos jarros de água

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Trabalho 1: Busca no Pacman

BUSCA CEGA OU SEM INFORMAÇÃO (parte 2 Resolução de problemas por busca) *Capítulo 3 (Russel & Norvig)

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Aula 03 Métodos de busca sem informação

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

Prof. Dr. Jaime Simão Sichman Prof. Dra. Anna Helena Reali Costa

Árvores Genéricas de Busca

Resolução de problemas por meio de busca. Capítulo 3 Russell & Norvig Seções 3.4 e 3.5

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Busca em Memória Primária Estrutura de Dados II

Busca em Espaço de Estados a

INTELIGÊNCIA ARTIFICIAL 2008/09

Estruturas de Dados Apresentação

Teoria dos Grafos Aula 5

Classificação Externa: Intercalação de Partições Classificadas

Enunciados dos Exercícios Cap. 2 Russell & Norvig

Compiladores. Otimização de Código

2. Descrição do Trabalho. Figura 1. Datapath do MIPS Superescalar CES SE

Transcrição:

Introdução à Inteligência Artificial MAC 5739 - MAC 415 006 Exercício Programa 1 Busca Data de Divulgação: 6 de agosto Data de Entrega: 6 de setembro 1 Objetivo Implementar os algoritmos de busca em Inteligência Artificial. 1.1 O jogo: régua-puzzle Considere um jogo onde N blocos são alinhados em uma régua com N+1 posições. Existem N blocos brancos (B), N blocos azuis (A) e uma posição vazia. Uma régua pode ser especificada como sendo um vetor R que varia de [1.. N+1]. B A - A B O objetivo do jogo é colocar todos os blocos brancos do lado esquerdo dos blocos azuis, ou seja, para todo i, se R[i] = B então R[j] A, para todo 0 < j < i. Uma solução ótima para esse jogo é aquela encontrada com o menor número de movimentos. 1. Movimentação de blocos: Definimos a distância entre duas posições i e j, sendo 0 < i < j N+1, é j i. Blocos podem pular para a posição vazia quando a posição vazia estiver distante de no máximo N casas da posição do bloco. Desta maneira, existem no máximo N movimentos legais (no caso do vazio estar exatamente no meio da régua). O custo de um pulo é igual à distância entre a posição do bloco e a posição vazia. Por exemplo, considere o seguinte caso com N=. Estado inicial: B A - A B

Existem quatro estados sucessores para o estado inicial: B - A A B B A A - B - A B A B B A B A - Existem quatro estados meta possíveis: B B A - A B B - A A B - B A A - B B A A Exercício programa Implementar um programa capaz de resolver o jogo descrito acima, usando as seguintes estratégias de busca: Busca em Largura (Breadth First Search - BrFS) Busca em Profundidade (Depth First Search - DFS) (com passo=1) Busca de Menor Custo (Uniform Cost Search - UCS) Busca em Profundidade Iterativa (Iterative Deepening Search - IDS) Busca A* Busca IDA* Seu programa deve considerar como entrada o nome de um arquivo contendo um jogo régua-puzzle (veja a seção Formato de Entrada) e um parâmetro que especifica o tipo de busca (BrFS, DFS, UCS, IDS, A* e IDA*). O programa deve imprimir: caminho da solução (todos os nós da raiz até o nó meta, inclusive) a profundidade do estado meta (a solução) o custo da solução

o número total de nós gerados e o número de nós visitados (nós gerados que já foram testados e para os quais, se possível, foram gerados seus sucessores) o valor médio do fator de ramificação da árvore de busca (branching factor) (cálculado através da razão entre o número total de nós sucessores gerados e o número de nós visitados) Por exemplo, se o jogo do exemplo acima esta no arquivo puz1.txt, e se programa de busca se chama search, então rodando search puz1.txt BrFS produziria a seguinte saida: número de nós visitados:... 5 número de nós gerados:... 0 profundidade da meta:... 3 custo da solução:... 5 fator de ramificação médio:... 4 caminho da solução: BA-AB BABA- BAB-A B-BAA 3 Como evitar o processamento redundante na busca: Durante a busca, um mesmo estado pode ser visitado muitas vezes. Para melhorar a eficiência da busca é preciso evitar o processamento de nós repetidos. Se um nó já foi visitado então ele não deve ser incluido na lista de nós a serem visitados. Você deve usar uma tabela de hashing para manter registro dos estados já visitados. 4 Função successor de estado Para facilitar a correção dos EPs, a geração dos nós sucessores deve obedecer uma ordem fixa: 1. Movimentar blocos da esquerda da posição vazia antes de movimentar os blocos da direita. Movimentar os blocos mais próximos da posição vazia antes dos blocos mais distantes. 3. A ordem de inserção dos filhos de um nó na lista de nós a serem processados deve obedecer a ordem de geração. 4. No caso da lista de prioridade, nós de mesmo custo devem ser ordenados segundo a sua ordem cronológica, ou seja, nós gerados mais recentemente devem ser ordenados antes do que os nós gerados anteriormente. 5 A função heurística para o régua-puzzle Você pode construir uma mais do que uma função heurística para comparar os resultados.

6 Formato de Entrada Arquivos contendo régua-puzzles, consistem de duas linhas: a primeira corresponde ao números de blocos brancos (igual ao número de blocos azuis). Se a primeira linha contém o número N, então o puzzle consiste de N blocos brancos, N blocos azuis e N+1 posições. A segunda linha mostra o estado inicial, representando um bloco branco por B, um bloco azul por A e um espaço branco por -. Exemplo de um puzzle: BA-AB 7 Linguagem de programação Você poderá usar as seguintes linguagens de programação: C, C++ ou Java. A entrega será eletrônica através do sistema Moodle. 8 Exemplos de puzzles para testar os algoritmos Testes usando Puzzles Pequenos -ABAB ABBA- -AABB Crie três arquivos textos contendo os três puzzles acima com os seguintes nomes de arquivos respectivamente: puz1, puz, e puz3 Testes usando Puzzles Grandes 6 ABBBBBBAAAAA- 6 AAAAAA-BBBBBB 5 ABABABABAB-

Crie três arquivos textos contendo os três puzzles acima com os seguintes nomes de arquivos respectivamente: puz4, puz5, e puz6. 9 Algumas perguntas que você deve ser capaz de responder: Qual é a importância de se evitar o processamento de nós repetidos para (1) a busca em largura e () a busca em profundidade? Porque a busca UCS para o jogo régua-puzzle garante encontrar a solução ótima (de menor custo)? Na busca em profundidade iterativa, que cuidados devemos ter ao se evitar o processamento de nós repetidos? Porque a busca em profundidade iterativa, apesar de consumir menos memória do que a busca em largura, ainda garante encontrar a solução ótima? A heurística que você construiu para o jogo régua-puzzle garante encontrar a solução ótima? Por que (prove)? Bonus (1.0): Propor casos de teste para o jogo régua-puzzle que evidenciem as propriedades estudadas das diferentes estratégias de busca e/ou das diferentes heurísticas que você elaborar. 10 Arquivos que deverão ser entregues 1. Cada aluno deverá entrgar um único arquivo fonte, chamado search, contendo um cabeçalho especificando nome e número USP do aluno.. Um arquivo pdf chamado relatorio.pdf entitulado ANÁLISE DOS MÉTODOS DE BUSCA, onde você deverá fazer uma análise dos diferentes métodos de busca aplicados ao régua-puzzle. Nesta análise você deverá responder as perguntas da seção 6 e incluir gráficos para comparar as diferentes características dos métodos de busca implementados, por exemplo, você poderá comparar o número de nós expandidos, espaço de memória necessário para cada uma das buscas, etc. As instruções sobre os casos de teste e maiores detalhes sobre o relatório serão dadas até o dia 1 de setembro. 11 Instruções gerais: Faça o seu programa bem estruturado, bem documentado e sózinho. Tenha o cuidado de implementar os algoritmos de busca de maneira independente do domínio de aplicação, ou seja, de forma que eles possam ser usados em outros jogos ou problemas sem que você tenha que mexer nos algoritmos de busca, mas somente na descrição de estado, funções geradoras de estados e teste de estado meta.