Inteligência Artificial

Documentos relacionados
Inteligência Artificial

PROCURA E PLANEAMENTO

Fundamentos de Programação

PROCURA E PLANEAMENTO

PROCURA E PLANEAMENTO

Exercícios da cadeira de Inteligência Artificial. Helena Sofia Pinto João Cachopo Daniel Gonçalves Carlos Lopes António Inês Lynce Pedro Matos

Inteligência Artificial Alameda e Taguspark

Programação imperativa

INTELIGÊNCIA ARTIFICIAL 2008/09

Introdução à Programação Funcional

Introdução à Programação Funcional. Conteúdo

PROCURA E PLANEAMENTO

PROCURA E PLANEAMENTO

Inteligência Artificial Alameda e Taguspark

Inteligência Artificial

Inteligência Artificial Taguspark

INTELIGÊNCIA ARTIFICIAL

Fundamentos de Programação

Ficha 1 Noções de sequência e decisão em algoritmia

Inteligência Artificial 2008/09 E z D

Fundamentos de Programação

Estruturação de Procedimentos

Fundamentos de Programação

Inteligência Artificial Projecto 1

Fundamentos da Programação

Matemática Computacional Ficha 5 (Capítulo 5) 1. Revisão matéria/formulário

INTELIGÊNCIA ARTIFICIAL

2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados.

PROCURA E PLANEAMENTO

Fundamentos da Programação

INTELIGÊNCIA ARTIFICIAL

2284-ELE/5, 3316-IE/3

Técnicas de Inteligência Artificial

FUNDAMENTOS DA PROGRAMAÇÃO 2º Teste, 1 de junho de 2013, 1h30m

UNIVERSIDADE DA BEIRA INTERIOR

Teste de P1 12 de Dezembro 2001

Representação do Conhecimento

Laboratório 5 Estruturas de Selecção

Introdução à Programação Funcional

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

Referências bibliograficas: * Paul Graham, Ansi Common Lisp, Prentice Hall, Livro com descrição da linguagem Common-Lisp.

Inteligência Artificial Projecto 2

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas

Matemática Computacional Ficha 5 (Capítulo 5) 1s-2017/18, MEEC. I. Revisão da matéria/formulário. f(x 0 ) + f(x N ) + 2. (b a) h2 12.

Fundamentos de Programação

Ficheiros de texto 1. Ficheiros de texto. 1. Implementar um programa que leia uma frase do teclado e a escreva num ficheiro.

a) Defina em Prolog iguais/1, um predicado que recebe um estado do jogo e que verifica que todas as pilhas têm o mesmo número de peças.

Inteligência Artificial

LERCI/LEIC TAGUSPARK INTELIGÊNCIA ARTIFICIAL 2005/06 PROCURA

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

Exercícios: Recursão

REDES NEURAIS / INTELIGÊNCIA ARTIFICIAL LISTA DE EXERCÍCIOS 6

if not(isinstance(a, int)) or a < 0: raise ValueError ( misterio: arg devia ser inteiro nao negativo ) else: return misterio_aux(a, a + 1)

if not(isinstance(a, int)) or a < 0: raise ValueError ("misterio: arg nao e inteiro nao negativo") else: return misterio_aux(a, a + 1)

USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio

Common-Lisp (introdutório).

Alguns Exercícios de Inteligência Artificial

Classes, Herança e Interfaces

1. Para cada pergunta selecione uma opção. Resposta correta +2, incorreta -1. [12 pontos]

Fundamentos da Programação

Prática 10 - Funções

EXPRESSÕES ARITMÉTICAS PARTE 1

FUNDAMENTOS DA PROGRAMAÇÃO 1º Teste, 19 de abril de 2013, 1h30m

Fundamentos de Programação

3 a Ficha de exercícios de Cálculo para Informática

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE

Exercícios de Excel com Programação em VBA. Luís Vieira Lobo

Aula 7: Estrutura de Decisão

Computação e Programação Exame Época de recurso

Introdução à Ciência da Computação (ICC) PROVA P2 Sexta-feira 1 de Junho de 2001

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

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

Laboratório 4 Correcção de erros sintácticos e tipos de dados primitivos

Exercícios de Procura e Planeamento 2013/2014

Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO

INTELIGÊNCIA ARTIFICIAL

Elementos de Matemática Discreta

Resolução de Problemas através de Busca. Prof. Júlio Cesar Nievola PPGIA - PUC-PR

Inteligência Artificial

Cap Escrever uma função que aceite como parâmetro um número inteiro e retorne o número que corresponde a trocar os dígitos do parâmetro (por exe

max z = 10x 1 + 4x 2 s.a x 1 + x x 1 + 4x x 1 + 6x 2 300

GFM015 Introdução à Computação. Algoritmos. Ilmério Reis da Silva UFU/FACOM

Introdução à Computação - aulas 01 e 02 -

Parte I - Expressões lógicas e operadores

EMGI Programação. Ficha 7 Resolução. Programação 1 Calcular a hipotenusa de um triângulo rectângulo, sabendo as medidas dos seus catetos:

Inteligência Artificial

Abstração de dados. Pedro Kröger. 5 de outubro de Um índice bibliográco poderia ser armazenado dessa maneira:

Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula I - Introdução

Introdução à Programação Aula prática Nº O número de bactérias numa cultura pode ser estimado pela expressão:

Fundamentos de programação

Tabelas de dispersão/hash

Departamento de Ciência de Computadores - FCUP Primeiro Teste de Inteligência Artificial / Sistemas Inteligentes (Duração: 2 horas)

Matemática Discreta LEIC IST-Tagus 2015/2016 Lista de exercícios 6

INTELIGÊNCIA ARTIFICIAL E SISTEMAS DE DECISÃO Ano Lectivo 2005/2006 Semestre de Inverno. 1º Exame, 13/Janeiro/2006

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

, cosh (x) = ex + e x. , tanh (x) = ex e x 2

Fundamentos da Programação

EXERCÍCIOS DE RECORDAÇÃO DE ALGORITMOS

Inteligência Artificial

Transcrição:

Instituto Politécnico de Setúbal Escola Superior de Tecnologia de Setúbal Departamento de Sistemas e Informática Guia de Exercícios das Aulas Práticas Inteligência Artificial Prof Joaquim Filipe Eng. Adelaide Trabuco Eng. Hugo Gamboa Eng. Patrícia Macedo Ano Lectivo 2005/2006 Guia de Exercicios das aulas práticas de Inteligência Artificial 1/13

Índice 1 Introdução ao Lisp...3 2 Listas em Lisp...4 3 Estruturas de Dados em Lisp...5 4 Funções de Ordem Superior em Lisp...6 5 Programação Sequencial em Lisp...7 6 Entradas e Saidas em Lisp...8 7 Aplicação de Lisp em problemas de IA...9 8 Problemas de Procura...11 Guia de Exercicios das aulas práticas de Inteligência Artificial 2/13

1 Introdução ao Lisp 1) Da lista (3 4 5) diga quais são os seus elementos e de que tipo são (átomo/lista). Qual é o segundo elemento? 2) Da lista (3 (4 6) nil () ((5)) ) diga quais são os seus elementos e de que tipo são (átomo/lista). Qual é o quinto elemento?. 3) Qual é o resultado da avaliação da expressão (+ 3 (* 7 6) 5 (/ 4 2))? Qual é a expressão aritmética equivalente? 4) Quais as listas que correspondem às expressões aritméticas (3+5+6+2)-1, (3+5+6)+2-1, 3+5+6+(2-1), 3+2*5, (5-(2-4))/(3*7)? 5) Qual o valor das seguintes expressões? (and (or (> 2 3) (not (= 2 3))) (< 2 3)) (not (or (= 1 2) (= 2 3))) (or (< 1 2) (= 1 2) (> 1 2)) (and 1 2 3) (or 1 2 3) (and nil 2 3) (or nil nil 3) 6) Defina uma função que implemente a seguinte função f(x)=x-1. Dê um exemplo de utilização. 7) Defina uma função que implemente a seguinte função f(x,y)=2x/y. Dê um exemplo de utilização. 8) Defina uma função soma-grandes que recebe três números como argumento e determina a soma dos dois maiores. a) Usando o if b) Usando o cond 9) Defina a função eleva, que eleva um número a uma determinada potência. Se a potência não for indicada deverá ser considerada 2. Nota: a expressão (expt x y) determina a potência y de x, i.e.,. Deve usar parametros optionais. 10) Escreva uma função que calcule o factorial de um número. a) Usando o if b) Usando o cond Guia de Exercicios das aulas práticas de Inteligência Artificial 3/13

2 Listas em Lisp 1) Qual a cabeça da lista (3 4 5)? Qual a expressão simbólica em LISP que nos permite obtêla? 2) Qual a cabeça da cabeça da lista ()? Qual a expressão simbólica em LISP que nos permite obtê-la? 3) Qual a cabeça da cabeça da lista ((3) (4 5))? Qual a expressão simbólica em LISP que nos permite obtê-la? 4) Qual a cabeça da cauda das seguintes listas: (), (3), (3 4), ((3) 4), ((3) (4 5)), ((3) (4 5) (7)) 5) Diga qual o resultado das seguintes expressões: (cons 1 nil), (cons 3 '(5)), (cons '(3) '(2)), (cons '(3) ()), (cons '(3 (5 6)) '((2 4) 6) ) 6) Diga qual a expressão simbólica contendo o número máximo de cons que permite construir a lista (3 (4) 5). E a lista (3 ((4) 6) 5)? 7) Diga qual a expressão contendo car's e cdr's que permite obter 5 a partir da lista (3 4 5 6). E da lista (3 4 (1 3 (6 5)) (1 2))? 8) Escreva funções em Lisp que implementem as seguintes funções. a) > (remove-ultimo (a b c d)) -> (a b c) b) > (remove-segundo (a b c d)) -> (a c d) c) > (insere-segundo-lugar b (a c d e)) -> (a b c d e) 9) Escreva uma função que recebe uma lista de átomos e devolve uma lista com o mesmo número de átomos, somando uma unidade a todos os elementos numéricos e substituíndo pelo símbolo NN todos os que não forem números. Guia de Exercicios das aulas práticas de Inteligência Artificial 4/13

3 Estruturas de Dados em Lisp 1) Defina uma estrutura chamada empregado que contenha três atributos: nome, idade e vencimento. 2) Escreva uma função denominada mostra_empregados_filtrados que receba uma lista de empregados e mostre o nome de todos aqueles cujo vencimento seja superior a um dado limite. 3) Desenvolva uma função chamada actualiza_vencimento que receba uma lista de empregados e uma dada taxa de juro e que actualize o vencimento de cada um dos empregados de acordo com essa taxa de juro. Deve devolver a lista dos empregados actualizada. (actualiza_vencimento '(#S(empregado :nome 'jose :idade 25 :venc 100) #S(empregado :nome 'pedro :idade 40 :venc 200)) 5) (#S(empregado :nome 'jose :idade 25 :venc 105) #S(empregado :nome 'pedro :idade 40 :venc 210)) Guia de Exercicios das aulas práticas de Inteligência Artificial 5/13

4 Funções de Ordem Superior em Lisp 1) Imagine uma função f ao longo de um intervalo [a,b]. Essa função deverá apresentar um máximo nesse intervalo, i.e., um valor entre a e b para o qual a função toma o seu valor máximo. Usando o acumulatório, escreva a função maximo-func que recebe uma função e um intervalo e encontra o máximo. Para determinar o maior entre dois número pode usar a função Lisp max. Teste maximo-func para o exemplo 0.01. no intervalo [0,2] com uma tolerância de 2) Repare-se que, tal como a função somatório, podemos escrever a abstracção correspondente ao produtório (também designado piatório) Esta abstracção corresponde ao produto dos valores de uma determinada expressão para todos os inteiros de um intervalo. Escreva uma função Lisp que a implemente. Use funcall. 3) Usando mapc, implemente uma função que chamada mostra_lista escreva todos os elementos duma lista 4) Implemente uma função chamada mostra_lista_filtrado que mostre no écran todos os elementos de uma lista que respeitem uma dada função. Use mapc e funcall. 5) Desenvolva uma função chamada comprimentos que receba uma lista de listas e que devolva uma lista com o comprimento de cada uma dessas listas. Use o mapcar. 6) Escreva um função denominada executa_especial que receba uma lista de funções e um dado elemento e que aplique cada uma dessas função a esse elemento. Deve eliminar os valores iguais a nil. 7) Usando mapcar, implemente uma função chamada remove_especial que remova todos os elementos de uma dada lista que não satisfaçam um dado critério. Esse critério é dado por uma função. (remove-especial '(1 3 4 20 40) #'(lambda (x) (< x 10))) (20 40) 8) Defina a função (colecta-numeros exp-s) que devolve uma lista de todos os elementos na expressão-s. A expressão-s pode ser um átomo, uma lista ou uma lista de expressões-s. Deve de usar o predicado mapcan. > (colecta-numeros 1) (1) > (colecta-numeros 'a) NIL > (colecta-numeros '(1 (b (2 c) ((3))))) (1 2 3) Guia de Exercicios das aulas práticas de Inteligência Artificial 6/13

5 Programação Sequencial em Lisp 1) Usando a macro dolist escreva uma função chamada conta que conte todos os elementos existentes numa dada lista. 2) Escreva um função chamada conta_se que conte todos os elementos que estejam entre um dado limite inferior e um dado limite superior. 3) Escreva uma versão iterativa de inverte usando a macro dolist chamada inverte_iterativo. 4) Desenvolva uma função chamada elevado que calcule m n onde m e n são inteiros positivos. Use a macro do. Guia de Exercicios das aulas práticas de Inteligência Artificial 7/13

6 Entradas e Saidas em Lisp 1) Escreva uma função denominada escreve_numero que receba um número e escreva no écran O numero é.... Use a função format. 2) Escreva uma função chamada escreve_lista que escreva o conteúdo duma lista no écran. (escreve_lista (1 2 3)) (1 2 3) 3) Redefina a pergunta anterior em escreve_lista1 de forma a poder escrever um elemento da lista por linha. Recomenda-se o uso da função mapc. (escreve_lista1 (1 2 3)) 1 2 3 4) Usando a função with-open-file defina uma função escreve_lista_ficheiro que receba uma lista e um nome completo (caminho + nome) de um ficheiro e que escreva o conteúdo dessa lista com um elemento por linha - nesse ficheiro. 5) Usando a função with-open-file, a macro do e a função read defina uma função le_elementos_ficheiro que receba um nome completo de um ficheiro e que leia todos os elementos existentes nesse ficheiro e os escreva no écran elemento a elemento. 6) Escreva uma função chamada le_linhas_ficheiro que leia linhas de um dado ficheiro e as escreva no écran da mesma maneira que elas se encontram no ficheiro original. Esta função deve receber como parâmetro um nome completo de um ficheiro. 7) Escreva uma função denominada mapeia_elementos que leia os elementos de um dado ficheiro de entrada, que aplique uma dada função a cada elemento e que escreva o resultado da aplicação dessa função num dado ficheiro de saída. 8) Escreva uma função denominada filtra_elementos que leia os elementos de um dado ficheiro de entrada, e que escreva o num dado ficheiro de saída apenas os elementos que satisfaçam o resultado da aplicação de uma dada função. Guia de Exercicios das aulas práticas de Inteligência Artificial 8/13

7 Aplicação de Lisp em problemas de IA 1) Considere o problema do caixeiro viajante: Sabendo que um caixeiro viajante tenta apanhar o máximo de objectos possíveis durante a sua viagem, sabendo só pode transportar no máximo um peso de 50Kg. a) Crie uma estrutura que represente um objecto. b) Crie uma estrutura que guarde o peso da mala do caixeiro viajante e uma lista de objectos apanhados. c) Sabendo que a lista de objectos está guardada num ficheiro, escreva uma função recursiva que escolha a melhor combinação de objectos de forma a não ultrapassar o peso máximo da mala, e apanhando o maior número de objectos possíveis. O nome do ficheiro de entrada é passado por parâmetro. Deve considerar as estruturas criadas nas alíneas anteriores. 2) Considere o seguinte problema: Um agricultor quer passar os seus animais (cão, gato e rato) de uma margem do rio para a outra margem, levando um animal de cada vez. No entanto, está com alguns problemas: porque se deixar o cão e o gato sozinhos numa margem do rio, o cão come o gato; se deixar o gato e o rato sozinhos numa margem do rio, o gato come o rato. Contudo, poderá deixar sempre o cão e o rato sozinhos numa margem, pois não irá acontecer nada. a) Crie uma estrutura que consiga guardar as margens do rio. Descreva todos os atributos dessa mesma estrutura, e qual o seu formato. b) Escreva uma função que verifica se uma margem do rio tem grupo de animais que entram, ou não, em conflito. c) Desenvolva um algoritmo recursivo para calcular uma travessia completa, dos animais, de forma a não ocorrer acidentes. 3) Considere o seguinte grafo: Guia de Exercicios das aulas práticas de Inteligência Artificial 9/13

a) Crie uma estrutura possível para este grafo. Note que, um nó tem um valor e zero, um ou mais sucessores. b) Escreva uma função recursiva que devolva o nó com o valor o máximo. c) Implemente uma função recursiva que: lê um grafo de um ficheiro de entrada, cujo o nome é passado por parâmetro; calcula o caminho mais curto do grafo, e escreve-o no ficheiro de saída, sendo o seu nome passado por parâmetro. Note que, caminho mais curto é aquele que cujo a soma dos nós é a mais pequena. Guia de Exercicios das aulas práticas de Inteligência Artificial 10/13

8 Problemas de Procura 1) As Vasilhas de água Quer-se medir 1 litro de água com duas vasilhas não graduadas que cheias contém exactamente 3 e 5 litros de água. Considere que pode desperdiçar água. a) Apresentar uma descrição para os estados do problema. b) Apresentar a lista dos operadores c) Apresentar uma regra para avaliação de estado final. d) Resolver no papel o problema indicando o estado inicial, o estado objectivo, os operadores e estados desde o estado inicial até ao estado objectivo. Analise os resultados da procura e indique: e) Qual o número total de estados do problema? f) Qual o factor de ramificação? g) Qual a profundidade máxima? 2) Os Missionários e os Canibais Quer-se passar de um lado para o outro do rio, três missionários e três canibais. Existe um só barco com lotação máxima de duas pessoas. Os missionários nunca podem estar em inferioridade numérica. a) Apresentar uma descrição para os estados do problema b) Apresentar lista dos operadores c) Resolver o problema indicando o estado inicial, o estado objectivo, os operadores e estados desde o estado inicial até ao estado objectivo. d) Qual o número total de estados? e) Qual o factor de ramificação? f) Qual a profundidade máxima? 3) A ponte a) Quatro pessoas querem passar de um lado para o outro de uma ponte. Na ponte só conseguem passar duas pessoas de cada vez. É de noite e para passar a ponte é necessário uma tocha. Só existe uma tocha. Cada uma das pessoas demora um tempo diferente a percorrer a ponte: um demora 1 minuto, outro 2 minutos, outro 5 minutos e o último 10 minutos. b) Apresentar uma descrição para os estados do problema. c) Apresentar a lista dos operadores d) Apresentar uma regra para avaliação de estado final.(considere que o tempo mínimo é 17 minutos). e) Resolver no papel o problema indicando o estado inicial, o estado objectivo, os operadores e estados desde o estado inicial até ao estado objectivo. Guia de Exercicios das aulas práticas de Inteligência Artificial 11/13

f) Indicar os 4 primeiros passos do algoritmo A* usando a seguinte função f (n): f'(n) = g(n) + h (n) g(n) Tempo já gasto h (n) Estimativa do tempo que se gastará igual à soma dos tempos das pessoas na margem inicial. g) Esta heurística é admissível? Justifique. Guia de Exercicios das aulas práticas de Inteligência Artificial 12/13

Guia de Exercicios das aulas práticas de Inteligência Artificial 13/13