Buscar

plp-aula-LPO-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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 48 páginas

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 48 páginas

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 48 páginas

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ê também pode ser Premium ajudando estudantes

Prévia do material em texto

Paradigmas de Linguagens de 
Programação
LPO e PROLOG
2
Tópicos
 Programação em lógica:
 Lógica de primeira ordem.
 Prolog.
 Exemplos.
3
Paradigma lógico
 Idéias chave da programação em lógica:
 Descrever objetos e relações entre objetos.
 Aplicar o sistema de programação para fazer 
conclusões.
 Ex. “Maria ama João”
4
Lógica de primeira ordem
 Termo é uma expressão lógica que se 
refere a um objeto.
 São termos:
 Constante (ex: mae, maria, joao).
 Variável (ex: X).
 Função (ex: marido(maria)).
 Predicados são relações entre termos:
 ama(maria, joao).
 pai(marido(maria), joao).
5
Lógica de primeira ordem
 Sentenças atômicas (ou fórmula atômica ou 
átomo) expressam fatos
 Sentença atômica é formada por um predicado
 mae(maria)
 Sentença atômica pode ter termos complexos como 
argumentos:
 pai(marido(maria), joao)
 Sentença complexa é formada por sentenças 
atômicas ligadas via conectivos lógicos:
 ¬, ^, v, →, ↔
6
Lógica de primeira ordem
 Quantificador universal
 Para todos
∀ x rei(x)→pessoa(x)
 Quantificador existencial
 Pelo menos um
∃ x filhode(x,Maria)
7
Lógica de primeira ordem
 Cláusula de Horn:
 Uma cláusula de Horn é uma sentença na forma:
(∀x) P1(x) ^ P2(x) ^ ... ^ Pn(x) => Q(x) 
onde 
 Há 0 ou mais Pis e 0 ou 1 Q.
 Os Pis e Q são literais positivos (ou seja, 
não-negados).
 Equivalentemente: P1(x) ∨ P2(x) … ∨ Pn(x) onde os 
 Pi’s são todos atômicos e no máximo um deles é 
positivo.
 Cláusulas de Horn representam uma subconjunto 
do conjunto de sentenças representáveis em LPO.
8
Lógica de primeira ordem
 Mecanismo de inferência:
 Resolução é uma regra de inferência que permite 
que novas proposições sejam computadas a partir de 
proposições conhecidas.
 Se há variáveis nas proposições deve-se encontrar 
valores para as variáveis que permitam o casamento 
correto de termos = unificação.
 Os valores temporários atribuídos as variáveis para permitir 
unificação são chamados instanciações.
 Se ocorre uma falha no processo de instanciação de 
uma variável então ocorre retrocesso, com 
instanciação de novo valor para a variável.
9
Prolog
10
Prolog
 O nome Prolog para a linguagem foi 
escolhido por Philippe Roussel como uma 
abreviação de “PROgrammation en 
LOGique”. 
 Foi criada em meados de 1972 por Alain 
Colmerauer e Philippe Roussel, baseados 
no conceito de Robert Kowalski da 
interpretação procedimental das cláusulas 
de Horn. 
11
Prolog
 Toda linguagem de programação em 
lógica é baseada em uma lógica:
 Ex: Prolog é baseada em um sub-conjunto da 
lógica de primeira ordem.
 A Programação em Lógica faz parte do 
paradigma de programação denominado 
declarativo ou descritivo, neste,
 deve-se implementar uma descrição do 
problema e não um conjunto de instruções.
12
Prolog
 Um programa Prolog constitui-se de uma 
coleção de:
 fatos (base de dados) e 
 regras (relações lógicas).
 Esses itens descrevem o domínio de um 
determinado problema. 
 Esta descrição do problema é avaliada por um 
interpretador, o qual utilizando um mecanismo 
de inferência realiza deduções em busca de 
conclusões válidas para consultas realizadas 
pelos usuários.
13
Prolog
 Implementações diferem em sintaxe:
 Ciao Prolog
 http://www.clip.dia.fi.upm.es/Software/Ciao
 GNU Prolog 
 http://gnu-prolog.inria.fr
 YAP Prolog 
 http://www.ncc.up.pt/~vsc/Yap
 SWI Prolog 
 http://www.swi-prolog.org
14
Prolog
 Sintaxe swi-prolog:
 Para usar o SWI-Prolog, deve-se criar o arquivo 
fonte, com a terminação ‘pl’, e carregá-lo a partir do 
interpretador.
 Para iniciar o programa basta clicar duas vezes sobre 
o programa fonte, ou carregar um programa 
digitando-se o nome do arquivo fonte a ser carregado 
entre colchetes. 
 A seguir escrevem-se as consultas a serem 
executadas contra a base de conhecimento 
carregada. 
 Todas as linhas de comando digitadas na janela do 
interpretador devem terminar com um ponto (‘.’). 
 Para terminar deve-se usar o predicado halt. 
15
Prolog
 Sintaxe swi-prolog:
 Variáveis: iniciadas com letras maiúsculas ou _
 Ex: X, Lista, _Nome
 _ (sozinho) significa variável anônima, não interessa valor de 
unificação para esta variável.
 Não variáveis:
 Atômicas: 
 Constantes: joão, maria
 Inteiros: 1, 6, -3
 Números em ponto flutuante: 5.3, 2.4
 Listas: seqüência de elementos
 [a,b,c], [a | b,c]
16
Prolog
 Comandos write e read:
 write(‘Teste’). % imprime Teste na tela.
 writef(formato, argumentos) 
 %w – imprime o termo
 %d – imprime o termo ignorando seu tipo, \n é impresso como string
 %s – imprime o termo como string
 \n – cria nova linha
 writef("O valor de X é %d.\n Já Y é %d.", [1, 2]).
 read(X). %lê um valor no dispositivo de entrada e unifica (atribui) o valor com a 
variável X.
 Comentários:
 % comentário
 /* comentário */
17
Prolog
 Fatos em Prolog:
 mulher(maria).
 homem(joao).
 mae(maria, joao).
 pai(pedro, joao).
 Regras em Prolog:
 Lado esquerdo: conclusão da regra
 Lado direito: premissas da regra
 Conjunção: ;
 Disjunção: ,
pais(X, Y) :- mae(X, Y) ; pai(X,Y).
avo(X, Z) :- pais(X,Y) , pais(Y,Z).
conclusão :- premissas 
18
Prolog
 Consultas em Prolog:
?- mulher(maria).
?- homem(joao).
?- mae(maria, joao).
?- pai(pedro, joao).
?- pai(X, joao).
?- mulher(Y).
?- mulher(maria), homem(pedro).
 Respostas: yes, no ou instanciação de variáveis.
19
Prolog
 Consultas em Prolog:
 BC:
 homem(pedro).
 homem(joao).
 mulher(maria).
 mulher(ana).
 Consultas:
 homem(pedro).
 yes
 homem(carlos).
 no
 homem(X).
 X=pedro; X=joao.
20
Prolog
 As únicas verdades são aquelas que podem ser 
provadas.
 Não existe conhecimento do mundo que não 
está especificado na sua base de conhecimento.
 Qualquer consulta que não pode ser provada é 
presumida ser falsa.
?- mulher(rafaela).
no.
?- homem(fred).
no.
21
Mecanismo de inferência
 Consultas são denominadas objetivos.
 Quando um objetivo é uma proposição 
composta, cada um dos fatos é chamado um 
subobjetivo.
 Para provar que um objetivo é verdadeiro 
o mecanismo de inferência deve encontrar 
uma cadeia de regras de inferência e/ou 
fatos na BC que conecte o objetivo a um 
ou mais fatos da BC.
22
Mecanismo de inferência
 Exemplo: consulta Q
 Q é objetivo:
 Q deve estar na BC ou
 Mecanismo de inferência deve encontrar um fato P1 e uma 
seqüência de proposições P2, P3, ..., Pn tal que:
P2 :- P1
P3 :- P2
...
Q :- Pn
 O mecanismo de encontrar os Ps, quando eles 
existem, é basicamente uma comparação entre 
termos.
23
Mecanismo de inferência
 Consulta:
 homem(bob).
 Fácil de se determinar se verdadeiro ou falso, o objetivo é 
comparado com os fatos e regras na BC:
 Se o fato 
?- homem(bob). 
 Pertence a BC a prova é trivial.
 Se a BC contém
?- pai(bob).
?- homem(X) :- pai(X).
 O mecanismo de inferência deve encontrar essas duas 
proposições e unificar a variável X temporariamente com bob.
24
Mecanismo de inferência
 Há duas formas de corresponder um dado 
objetivo com um fato na BC:
 Encadeamento para frente: o mecanismo de 
inferência começa com os fatos e regras na BC e 
tenta encontrar uma seqüência de correspondências 
que levam ao objetivo.
 Funciona melhor quando o número de respostas possíveis é 
grande.
 Encadeamento para trás: o mecanismo de 
inferência começa com o objetivo e tenta encontrar 
uma seqüência de correspondências que levam a 
fatos na BC.
 Funciona bem quando há um conjunto pequeno de 
respostas possíveis. 
25
Mecanismo de inferência Exemplo:
 Consulta:
?- homem(bob).
 BC:
?- pai(bob).
?- homem(X) :- pai(X).
 Por encadeamento para frente:
 Encontra a primeira proposição “pai(bob).” e corresponde com a 
parte direita da regra “homem(X) :- pai(X).” instanciando X=bob. 
Então corresponde o lado esquerdo da regra com o objetivo.
 Por encadeamento para trás:
 Encontra primeiro a regra “homem(X) :- pai(X).” e corresponde o 
objetivo com parte esquerda da regra instanciando X=bob. Então 
corresponde lado direito da regra com proposição “pai(bob).”
26
Mecanismo de inferência
 Quando o objetivo tem mais de uma 
estrutura, a busca pela solução pode se 
dar:
 Em largura: trabalha todos os subobjetivos 
em paralelo.
 Em profundidade: encontra uma seqüência 
completa de proposições para o primeiro 
subobjetivo antes de buscar soluções para os 
demais. 
27
Mecanismo de inferência
 Quando um objetivo está sendo processado e 
um subobjetivo falha (não se consegue provar 
sua verdade), então volta-se para o subobjetivo 
anterior ao que apresentou falha e tenta 
encontrar uma nova solução para este 
subobjetivo.
 Uma nova solução para o subobjetivo resulta de 
uma nova instanciação para suas variáveis.
 Essa volta ao subobjetivo anterior é chamada 
retrocesso. 
28
Mecanismo de inferência
 Exemplo:
 Consulta:
?- homem(X), amigo(X,joana).
 BC:
 homem(joao).
 homem(jose).
 homem(manuel).
 homem(carlos).
 amigo(maria,joana).
 O mecanismo de inferência deve encontrar todos os homens 
antes de provar que o objetivo não pode ser satisfeito. 
 Se trocasse ordem dos subobjetivos seria mais eficiente 
(considerando que joana tem menos amigos na BC do que o 
número de homens).
29
Mecanismo de inferência
 Prolog:
 Resolução.
 Encadeamento para trás.
 Busca em profundidade.
 Retrocesso.
30
Aritmética
 Prolog possui definidos operadores para as quatro 
operações: +, -, *, /
 O resultado de uma operação é obtido com o operador 
is
 Exemplos:
?- X is 2+3.
X = 5.
?- X is 4-1.
X = 3.
?- X is 2*3.
X = 6.
?- X is 9/2.
X = 4.5.
31
Aritmética
 Operadores de comparação: >, <, >=, <=, =:= 
(igual), =/=(diferente)
 Note:
1+2=2+1. % verifica se dois objetos são iguais
No
1+2=:=2+1 %verifica se o resultado da operação é igual
Yes
1+A=B+2.
A=2
B=1.
32
Listas
 Listas: 
 Um dos tipos de dados mais úteis existentes 
na linguagem Prolog. 
 Uma lista é uma seqüência ordenada de uma 
quantidade qualquer de elementos. 
 Os elementos de uma lista podem ser de 
qualquer tipo, tais como, números ou átomos.
[azul, amarelo, vermelho, branco].
33
Listas
 Listas:
 Uma lista vazia é representada por [ ].
 Listas não vazias podem ser divididas em duas 
partes, são elas:
 cabeça - corresponde ao primeiro elemento da lista.
 cauda - corresponde aos elementos restantes da lista.
 É possível separar as partes de uma lista utilizando 
uma barra vertical, assim, pode-se escrever 
 Lista = [cabeça | cauda]. 
 [a | b, c] = [a, b, c].
34
Listas
 Membros da lista:
 Para se verificar se um determinado elemento 
pertence à uma lista deve-se utilizar a relação 
member(x,y) :
?- member( a , [ a , b , c ] ) .
Yes
?- member( a , [ [ a , b ] , c ] ) .
No
?- member ( [ a , b ] , [ [ a , b ] , c ] ) .
Yes
35
Exemplos
36
Exemplo 1
 Exemplo de programa simples em prolog (BF): 
gosta(josé, peixe).
gosta(josé, maria).
gosta(maria, livro).
gosta(joão, livro). 
 Apresente as seguintes questões ao 
interpretador Prolog e anote as respostas:
?-gosta(josé, peixe).
?-gosta(josé, dinheiro).
?-gosta(maria, josé).
?-gosta(maria, livro).
?-possui(joão, livro).
37
Exemplo 2
 Considere a seguinte base de conhecimento:
gosta(joão, flores).
gosta(joão, maria).
gosta(paulo, maria).
 Qual a resposta ao ser realizada a questão:
?-gosta(joão, X).
38
Exemplo 3
 Considere a seguinte base de conhecimento:
genitor(jaques, benedicte).
genitor(miriam, benedicte).
genitor(jaques, carolina).
genitor(miriam, carolina).
mulher(miriam).
mulher(benedicte).
mulher(carolina).
homem(jaques).
irmã(X, Y) :- genitor(Z, X), genitor(Z, Y), mulher(X), X =\= Y. 
 Qual a resposta ao serem realizadas as questões:
?-irmã(benedicte, carolina).
?-irmã(benedicte, Quem).
39
Exemplo 4
 Verifique o funcionamento do programa 
abaixo, que pergunta seu nome e o 
imprime. 
dialogo :- nl, nl, 
writef("Qual e' o seu nome?"),
read(Nome),
writef("Ola %t", [Nome]), nl.
40
Exercício 1
 Considere o conjunto de fatos dados com 
predicados para homem, mulher, e pais. 
Formule regras para pai, mãe, filhos, irmã, 
irmão e avós.
41
Exercício 1
% Conjunto de fatos
homem(carlos).
homem(julio).
homem(mauricio).
mulher(alice).
mulher(carolina).
mulher(luiza).
mulher(sofia).
pais(carlos,alice).
pais(sofia,alice).
pais(carlos,carolina).
pais(sofia,carolina).
pais(julio,mauricio).
pais(carolina,mauricio).
pais(julio,luiza).
pais(carolina,luiza).
Carlos Sofia
AliceCarolinaJulio
Mauricio Luiza
42
Solução 1
% Conjunto de regras
mae(X,Y) :- pais(X,Y), mulher(X).
pai(X,Y) :- pais(X,Y), homem(X).
filhos(Y,X) :- pais(X,Y).
irma(X,Y) :- pais(Z,X), pais(Z,Y), mulher(X), not(X 
= Y).
irmao(X,Y) :- pais(Z,X), pais(Z,Y), homem(X), 
not(X = Y).
avos(X,Z) :- pais(X,Y), pais(Y,Z).
43
Exercício 2
 Com relação ao programa Prolog dado a seguir 
responda:
 Quais as respostas para as seguintes consultas?
 come(urso,peixinho).
 come(raposa,coelho).
 come(guaxinim,X).
 come(X,grama).
 come(urso, X), come(X,coelho).
 presa(X), not(come(raposa,X)).
 Formule regras para as seguintes relações:
 herbívoro;
 carnívoro.
 Utilizando as regras criadas, elabore consultas para:
 Quais animais são herbívoros?
 Quais animais são carnívoros?
 Quais animais herbívoros são presas de uma raposa?
44
Exercício 2
% Base de fatos
animal(urso).
animal(peixe) .
animal(peixinho).
animal(guaxinim).
animal(raposa).
animal(coelho).
animal(veado).
animal(lince).
planta(alga).
planta(grama).
come(urso,peixe) .
come(peixe,peixinho).
come(peixinho,alga).
come(guaxinim,peixe).
come(urso,guaxinim).
come(urso,raposa).
come(raposa,coelho).
come(coelho,grama).
come(urso,veado).
come(veado,grama).
come(lince,veado).
% Base de regras
presa(X) :- come(_,X), animal(X).
45
Solução 2
 come(urso,peixinho).
 false.
 come(raposa,coelho).
 true.
 come(guaxinim,X).
 X = peixe.
 come(X,grama).
 X = coelho.
 come(urso, X), come(X,coelho).
 X = raposa.
 presa(X), not(come(raposa,X)).
 X = peixe.
46
Solução 2
% Base de regras
herbivoro(X) :- come(X,Y), planta(Y).
carnivoro(X) :- come(X,Y), animal(Y).
47
Solução 2
 Quais animais são herbívoros?
 herbivoro(X).
 X = peixinho ;
 X = coelho ;
 X = veado ;
 false.
 Quais animais são carnívoros?
 carnivoro(X).
 X = urso ;
 X = peixe ;
 X = guaxinim ;
 X = urso ;
 X = urso ;
 X = raposa ;
 X = urso ;
 X = lince.
 Quais animais herbívoros são 
presas de uma raposa?
 herbivoro(X),come(raposa,X).
 X = coelho ;
 false.
48
Bibliografia
 Russell, S & Norvig, P. Inteligência 
Artificial. Prentice Hall, 2004. 
http://aima.cs.berkeley.edu/
 Swi-prolog
http://www.swi-prolog.org
 Apostilas:
http://www.dsc.ufcg.edu.br/~logica/PROLOG/apostila
-prolog.pdf
 
 
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 42
	Slide 43
	Slide 45
	Slide 46
	Slide 48

Outros materiais