Buscar

Lista_de_Exercicios_2 (PROLOG)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 3 páginas

Prévia do material em texto

Lista de Exercícios 2 - Prolog
1. Escreva em Prolog as seguintes sentenças:
Piu-Piu é uma ave. Sereia é um peixe. Irgh é uma minhoca. Aves gostam de minhoca. Gatos gostam de peixe. Gatos gostam de aves. Amigos se gostam. Meu gato é meu amigo. Meu gato come tudo o que ele gosta.
Determine usando Prolog, o que o meu gato come. Justifique sua resposta.
2. Faça um programa Prolog que defina as seguintes relações: mãe, pai,filho, filha, irmã, irmão, avô, avó, tio, tia, cunhado, cunhada, genro, nora, primo, prima, bisneto e bisneta. Crie o seu próprio conjunto de fatos usando o menor número de relações possível.
3. Considere o programa Prolog formado pelas seguintes cláusulas:
a(1,1).
a(2,1).
a(3,2).
a(4,4).
b(1,2).
b(1,3).
b(2,3).
b(3,2).
b(4,4).
Construa a árvore de derivação(unificação) para as consultas:
(a) ?-a(X,Y),b(X,Y).
(b) ?-a(X,Y),b(X,Y),a(Y,Y).
RESPOSTAS
Solução da segunda lista
1) gato(garfild).
ave(piupiu).
peixe(sereia).
minhoca(irgh).
amigos(garfild,voce).
gosta(X,Y):-(ave(X),minhoca(Y));(gato(X),(peixe(Y);ave(Y)));amigos(X,Y).
gatocome(X):-gosta(Y,X),Y=='garfild'.
2) todo os predicados podem ser escritos usando apensas o fato “pais”
3) a) a(X,Y),b(X,Y).
O prolog unifica primeiro o a para depois achar um b correspondente, logo ele tentará todos os fatos de a para achar os X e Y correspondentes.
Sendo assim temos:
a(1,1). X=1 e Y=1, unificando ficaria b(1,1). e como esse fato não existe ele não unifica.
a(2,1) X=1 e Y=2, unificando ficaria b(1,2). E como o fato existe é uma resposta possível.
a(3,2) X=3 e Y=2, unificando ficaria b(3,2). E como o fato existe é uma resposta possível.
a(4,4). X=4 e Y=4, unificando ficaria b(4,4). E como o fato existe é uma resposta possível.
Obs: Note que tanto os fatos de a quanto os de b precisam ser verdadeiros pois o conectivo dele é o e-logico.
b) a(X,Y),b(X,Y),a(Y,Y).
Segundo o exemplo anterior teremos:
a(1,1). X = 1 e Y= 1, unificando teremos b(1,1) e a(1,1), apesar de dois dos fatos serem verdadeiros o Prolog não unifica pois o fato de b é falso.
a(2,1). X=1 e Y=2, unificando ficaria b(1,2). (true) e a(1,1) (true), logo o Prolog unifica.
a(3,2). X=3 e Y=2, unificando ficaria b(3,2) (true). E a(2,2) (false), logo o Prolog não unifica.
a(4,4). X=4 e Y=4, unificando ficaria b(4,4).(true). E a(4,4)(true) logo o Prolog unifica.