Prolog Objetos Estruturados

download Prolog Objetos Estruturados

of 34

Transcript of Prolog Objetos Estruturados

Prolog Objetos EstruturadosObjetos Estruturados Listas Recurso Exerccios

Inteligncia Artificial

ExercciosRelembrando a introduo:Exerccios pgs 22 e 23 Livro PalazzointroducaoProgramacaoProlog_Palazzo.pdf 1.

Escreva um programa Prolog para representar:

Joo nasceu em Pelotas e Jean nasceu em Paris. Pelotas fica no Rio Grande do Sul. Paris fica na Frana. S gacho quem nasceu no Rio Grande do Sul.2

Exerccios1.

Resposta:

nasceu(joo,pelotas). nasceu(jean,paris). local(paris,franca). local(pelotas,rio_grande_do_sul). gaucho(X):nasceu(X,Cidade), local(Cidade, rio_grande_do_sul).3

Exerccios2.

Escreva um programa Prolog para representar:

Os corpos celeste dignos de nota so as estrelas, os planetas e os cometas. Vnus um corpo celeste, mas no uma estrela. Os cometas possuem cauda quando esto perto do sol. Vnus est perto do sol, mas no possui cauda.4

Exerccios2.

Resposta:

corpo_celeste(estrela). corpo_celeste(planeta). corpo_celeste(cometa). corpo_celeste(asteroide). digno_de_nota(Corpo_Celeste):corpo_celeste(Corpo_Celeste), (Corpo_Celeste == estrela ; Corpo_Celeste == planeta; Corpo_Celeste == cometa).

%Programa que deve ser criado: tipo/2 %tipo(Instancia_Corpo_Celeste, X). % + : uma instncia de um corpo % celeste % - : o tipo do corpo celeste tipo(venus,X):corpo_celeste(X), X \= estrela, esta_perto_sol(venus), not(possui_cauda(venus,X)),!. possui_cauda(X,Y):esta_perto_sol(X), Y == cometa. esta_perto_sol(venus).

5

Exerccios3.

Assuma que arcos em um grafo dirigido representam custos e sejam descritos como arco(R,S,T), significando que h um arco de custo T entre R e S. Defina custo(U,V,L) existe um caminho de custo L entre U e V B E 23 2 A 4 C6

5 4

D 5 F

2

Exerccios3.

Resposta:

arco(a,b,3). arco(b,d,2). arco(a,d,5). arco(a,c,4). arco(c,d,4). arco(c,f,5). arco(d,e,2). arco(e,f,2). mais(X,Y,Z):Z is X + Y. custo(X,Y,T):arco(X,Y,T),!. custo(X,Y,T):arco(X,Z,T1),!, custo(Z,Y,T2), mais(T1,T2,T).7

VariveisCadeias de letras, dgitos e caracter _, sempre comeando com maiscula ou _ Exemplos:X Mapa_da_mina _nome

8

Objetos EstruturadosObjetos de dados com vrios componentes, podendo ser, cada um deles, por sua vez, uma estrutura Todas os objetos estruturados em Prolog so rvores tomo: rvore somente com raiz

9

Objetos EstruturadosExemplo:Data estrutura com trs componentes: dia, ms e ano

termo data data(7,julho,1953) 7 julho 1953 termo

10

Objetos Estruturadosdata(7,julho,1953) Pode ser visto com um fato Como objeto estruturado, data(7,julho,1953) apresentado como um argumento em uma relaodata deixa de ser uma relao e passa a ser um funtor

11

Objetos EstruturadosUm funtor definido por:Nome sintaxe a mesma dos tomos Aridade corresponde ao nmero de argumentos data/2

12

ListasUma das estruturas mais simples em Prolog Seqncia ordenada de elementos Pode ter qualquer comprimento Ordenada: ordem dos elementos na seqncia importante Todos os objetos em Prolog so rvoresListas no fogem regra13

ListasFuntor de lista: . Argumentos: Cabea e Cauda.(Cabea,Cauda)

Cauda, por sua vez uma listaVazia OU Tem sua Cabea e Cauda14

ListasLista [gosto,de,vinho] [[3],5,[2,7]] [X,Y|Z] [[c,gato]] Cabea gosto [3] X [c,gato] Cauda [de,vinho] [5,[2,7]] [Y|Z] []

Colchetes: melhoria notacional Listas representadas por rvores Como fica a representao das listas ao lado?

15

ListasOperao envolvendo termos: unificao Dados dois termos, eles se unificam se:So idnticos OU As variveis em ambos os termos podem ser instanciadas em objetos, de maneira que aps a substituio das variveis por esses objetos, os termos se tornam idnticos

16

ListasUnificao de [X|Y] X,Y variveis com [a1, a2, a3, ..., an]

Substituio: {X/a1,Y/[a2,a3,...,an]} se n>1 {X/a1,Y/[]} se n=117

ListasBusca Recursiva:Qual a base da busca por um elemento em uma lista? E como fao a recurso?

18

ListasBase: pertence(X,[X|_]). Recurso: pertence(X,[_|Y]):pertence(X,Y).

19

Controle de Retrocesso BacktrackingProlog: retrocesso automtico Poderoso recurso de programao o programador no precisa explicitar o retrocesso s vezes, necessrio prevenirUso do ! (corte)

20

Controle de Retrocesso BacktrackingObjetivos do uso do !:Tornar o programa mais rpido Fazer com que o programa ocupe menos espao na memria

21

Controle de Retrocesso BacktrackingExemplo de uso:f(x) = 0 se x < 3 f(x) = 2 se x 3 ou x < 6 f(x) = 4 se x 6

Implementar em Prolog

22

Controle de Retrocesso BacktrackingResposta:f(X,0):-X < 3. f(X,2):-3 =< X, X > 6. f(X,4):-6 =< X. % verso 1

Interrogar Prolog:?-f(1,Y),2 6,!. f(X,4):-6 =< X. % verso 2

Interrogar Prolog:?-f(1,Y),2 6,!. f(X,4):-6 =< X. % verso 3

Interrogar Prolog:?-f(1,Y),2