Upload
nguyenanh
View
229
Download
0
Embed Size (px)
Citation preview
Aula 2 Programao LgicaSintaxe Prolog
Profa. Elaine FariaUFU - 2014
Crditos
O material a seguir consiste de adaptaes e extenses dos originais gentilmente cedidos pelo Prof. AlexsandroSantos Soares
Agradecimento especial ao Prof. Gabriel Coutinho que auxiliou na confeco do material
Introduo
Linguagens que utilizam o paradigma lgico so classificadas com Declarativas Descrevem o problema e no a soluo
Descrevem O QUE deve ser feito e no COMO deve ser feito
Conceito de Mundo Fechado Descreve o problema atravs de FATOS e REGRAS
Realiza-se CONSULTAS que devero ser respondidas pelo interpretador avaliando-se os fatos e regras descritos
Tudo o que o interpretador no souber ter uma resposta negativa
Introduo
Principal linguagem de programao do paradigma de programao lgico PROLOG
Prolog = Programming in Logic Linguagem de programao utilizada para resolver
problemas envolvendo objetos e relaes entre objetos
Ex:Expressar em Prolog o fato Joo gosta de Maria: objetos: Maria e Joo
relacionamento: gosta de, ou simplificando, gosta.
Em Prolog: gosta(joao,maria).
Aplicaes da Programao Lgica
Sistemas Baseados em Conhecimento Sistemas que aplicam mecanismos automatizados de raciocnio
para a representao e inferncia de conhecimento
Bancos de Dados Inteligentes Sistemas que empregam agentes de busca de dados com
base em critrios
Sistemas Especialistas Sistemas que emulam a especializao humana em algum
domnio especfico.
Processamento da Linguagem Natural Usada para desenvolvimento de ferramentas para a
comunicao homem-mquina em geral e para a construo de interfaces
Aplicaes da Programao Lgica
Indstria de aviao, em solues de planejamento e escalonamento Coordena 20% do trfico areo do mundo
Instituto Nacional de Meteorologia (INMET) Previso do tempo
Modelagem ambiental Modelos matemticos para a simulao do
desenvolvimento de florestas
Aplicaes da Programao Lgica
Logstica Solues timas em tempo-real para um fluxo
contnuo de ordens de servio
Minerao de dados Busca automtica em bancos de dados por
padres e relacionamentos significantes
Construo de compilares Erlang uma linguagem criada pela Ericsson
cuja primeira verso foi feita em Prolog
Idia bsica do Prolog
Descrever a situao de interesse
Fazer uma pergunta
Prolog deduz logicamente novos fatos sobre a situao que ns descrevemos
Prolog retorna suas dedues como respostas
Consequncias
Pensar declarativamente, no procedimentalmente Desafiador
Requer uma mentalidade diferente
Linguagem de alto nvel No to eficiente quanto, digamos, C
Bom para prototipagem rpida
til em muitas aplicaes de IA
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?-
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
true
?-
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
true
?- tocaGuitarra(joana).
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
true
?- tocaGuitarra(joana).
true
?-
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
true
?- tocaGuitarra(joana).
true
?- tocaGuitarra(maria).
false
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- tatuada(joana).
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- tatuada(joana).
ERROR: predicate tatuada/1 not defined.
?-
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- festa.
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- festa.
true
?-
Introduo
O prolog baseado em: Fatos
Regras
Consultas
Programa Prolog
Fatos So entendidos como relaes entre objetos
Constituem-se de afirmaes que so feitas ao Prolog
So verdades nas quais a Prolog ir basear-se para responder as consultas solicitadas
Ex: rvore genealgica
Programa Prolog
Fatos cont.
progenitor(maria, jose) Fonte: Luis, A. M. Palazzo, Introduo Programao Prolog, Educat, 1997
Programa Prolog
Regras Especificao de algo que pode ser
verdadeiro se algumas condies forem satisfeitas
composta de duas partes: Concluso (esquerda) e condio (direita)
Exemplo: Relao Filho. filho(X,Y) :- progenitor(Y,X).
Programa Prolog
Consultas Questionamentos que sero respondidos
avaliando-se os fatos e regras Joo filho de Jos? ? filho(joo, jos).
Quem o filho de Jos? ?filho(X, jos).
Quem so os filhos de Joo ?filho(X,joo). X uma varivel que representa um objeto
desconhecido
Variveis so escritas com a primeira letra em maisculo
Base de conhecimento 2
progenitor(maria, jos).progenitor(joo, jos).progenitor(joo, ana).progenitor(jos,jlia).progenitor(jos, ris).progenitor(ris,jorge).filho(X,Y) :- progenitor(Y,X).
fato
regra
cabea corpo
Base de conhecimento 3
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
?-
Base de conhecimento 3
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
?- tocaGuitarra(maria).
true
?-
Base de conhecimento 3
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
?- tocaGuitarra(maria).
true
?- tocaGuitarra(iolanda).
true
Clusulas
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
Existem cinco clusulas nesta base de conhecimento:
dois fatos e trs regras.
O final de uma clusula marcado com um ponto final.
Predicados
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
Existem trs predicados nesta base de
conhecimento:
feliz, escuta_musica e tocaGuitarra
Base do Conhecimento 4
feliz(vicente).
escuta_musica(bruno).
tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).
tocaGuitarra(bruno):- feliz(bruno).
tocaGuitarra(bruno):- escuta_musica(bruno).
Base do Conhecimento 4
feliz(vicente).
escuta_musica(bruno).
tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).
tocaGuitarra(bruno):- feliz(bruno).
tocaGuitarra(bruno):- escuta_musica(bruno).
A vrgula ," expressa conjuno em Prolog
Expressando Disjuno
feliz(vicente).
escuta_musica(bruno).
tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).
tocaGuitarra(bruno):- feliz(bruno).
tocaGuitarra(bruno):- escuta_musica(bruno).
feliz(vicente).
escuta_musica(bruno).
tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).
tocaGuitarra(bruno):- feliz(bruno); escuta_musica(bruno).
Prolog e Lgica
Prolog tem algo a ver com lgica
Operadores Implicao :-
Conjuno ,
Disjuno ;
Uso do modus ponens
Negao
Base do Conhecimento 5
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
Variveis em Prolog
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- mulher(X).
Instanciao de Variveis
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- mulher(X).
X=maria
Solicitando Alternativas
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- mulher(X).
X=maria;
Solicitando Alternativas
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- mulher(X).
X=maria;
X=joana
Solicitando Alternativas
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- mulher(X).
X=maria;
X=joana;
X=iolanda
Solicitando Alternativas
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- mulher(X).
X=maria;
X=joana;
X=iolanda.
?
Base do Conhecimento 5
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- ama(marcelo,X), mulher(X).
Base do Conhecimento 5
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- ama(marcelo,X), mulher(X).
X=maria.
?-
Base do Conhecimento 5
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- ama(abobrinha,X), mulher(X).
Base do Conhecimento 5
mulher(maria). mulher(joana). mulher(iolanda).
ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).
?- ama(abobrinha,X), mulher(X).
false
?-
Base do Conhecimento 6
ama(vicente,maria).
ama(marcelo,maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
tem_ciumes(X,Y):- ama(X,Z), ama(Y,Z).
Base do Conhecimento 6
ama(vicente,maria).
ama(marcelo,maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
tem_ciumes(X,Y):- ama(X,Z), ama(Y,Z).
?- tem_ciumes(marcelo,W).
Base do Conhecimento 6
ama(vicente,maria).
ama(marcelo,maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
tem_ciumes(X,Y):- ama(X,Z), ama(Y,Z).
?- tem_ciumes(marcelo,W).
W=vicente;
W=marcelo;
false.
?-
Base do Conhecimento 7
Base de fatos: Qual o resultado das seguintes perguntas?
gosta(joao, peixe). ?- gosta(maria,X).gosta(joao,maria). ?- gosta(X,livro).gosta(maria,livro). ?- gosta(Quem,Oque).gosta(pedro,livro). ?- gosta(X,Y).gosta(maria,flor). ?- gosta(X,X).gosta(maria,vinho). ?- gosta(_a,_b).
?- gosta(A,peixe).
Prolog
Comentrio em Prolog Linha: %
Bloco: /* ..... */
Referncias
Luis, A. M. Palazzo, Introduo Programao Prolog, Educat, 1997.
Slides da Profa Solange ICMC-USP Inteligncia Artificial