Upload
martin-spyyd-pridal
View
214
Download
2
Tags:
Embed Size (px)
DESCRIPTION
AI
Citation preview
Prolog Aula #2
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
1
Regras
Definir a relao Antepassado
Regra 1: Um antepassado directo pode ser definido pela seguinte regra:
X antepassado de Y se X progenitor de Y
Em Prolog: antepassado(X,Y):-progenitor(X,Y).
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
2
Regras
Regra 2: Um antepassado em 2 grau de Y existe se existir algum (Z) que seja progenitor de Y e outro algum (X) que seja progenitor de Z
, . , . , (, )
Em Prolog
antepassado(X,Y):-progenitor(Z,Y),progenitor(X,Z).
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
3
Regras
Regra 3: Um antepassado em 3 grau de Y existe se
Em Prolog
antepassado(X,Y):-progenitor(Z,Y),progenitor(W,Z),progenitor(X,W).
E assim sucessivamente
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
4
Regras
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
5
Regras
Com esta abordagem teramos de criar uma regra para cada grau o que limitaria sempre a profundidade da rvore genealgica!
Podemos reformular a segunda regra nos seguintes termos Para todo X e Y
X antepassado de Y se
X progenitor de Z e Z antepassado de Y
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
6
Recursividade
Em Prolog antepassado(X,Y):-
progenitor(X,Z),antepassado(Z,Y).
A relao antepassado definida recursivamente.
O Prolog pode, de facto, ser utilizado para especificar definies recursivas.
A programao recursiva um dos princpios fundamentais da programao em Prolog.
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
7
Recursividade
Assim sendo o predicado antepassado/2 composto pelas 2 regras
antepassado(X,Y):-progenitor(X,Y).
antepassado(X,Y):-
progenitor(X,Z),antepassado(Z,Y).
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
8
Recursividade
O que significa Para todo X e Y
X antepassado de Y se
X progenitor de Y ou X progenitor de Z e Z antepassado de Y
A disjuno destas condies pode ser tambm representada em prolog pelo simbolo ;
antepassado(X,Y):- progenitor(X,Y);
progenitor(X,Z),antepassado(Z,Y).
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
9
Estratgia de Prova
Uma questo ao Prolog sempre uma sequncia de uma ou mais condies.
Para obter uma resposta o Prolog procura satisfazer todas as condies.
Satisfazer uma condio significa obter uma deduo lgica que prove que a condio verdadeira.
Essa deduo efectuada percorrendo todos os factos e regras que compe o predicado que corresponde condio a provar. Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
10
Estratgia de Prova
Suponhamos que o objectivo (goal) provar
?- G1, G2, ..., Gn
O motor de inferncia procura na base de conhecimento (de cima para baixo) uma regra cuja cabea unifique com G1.
Essa unificao produz uma substituio :
Se R :- C1, ..., Cm a regra encontrada. tal que R = G1 .
O objectivo a provar passa agora a ser
?- C1 , ..., Cm , G2 , ..., Gn
Se a regra encontrada um facto F. tal que F = G1.
O novo objectivo passa a ser provar ?- G2 , ..., Gn
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
11
Estratgia de Prova
A prova termina quando j no h mais nada a provar.
O Prolog responde questo indicando as substituies necessrias para as todas variveis existentes na questo inicial, para produzir a prova.
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
12
rvore de Procura
A estratgia de prova passa por percorrer a base de conhecimento utilizando as tcnicas top-down e depth-first.
O mecanismo backtracking serve para o motor de inferncia retornar pelo mesmo caminho percorrido com a finalidade de encontrar solues alternativas.
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
13
rvore de Procura
Consideremos a seguinte base de conhecimento
#1 progenitor(marta,maria).
#2 progenitor(maria,jose).
#3 antepassado(X,Y):-progenitor(X,Y).
#4 antepassado(X,Y):-progenitor(X,Z),antepassado(Z,Y).
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
14
rvore de Procura
?-antepassado(marta,Y).
#3 X=marta
?-progenitor(marta,Y).
#1 Y=maria
?-progenitor(marta,maria) OK ;
#2
Fail
#4 X=marta
?-progenitor(marta,Z), antepassado(Z,Y).
#1 Z=maria
?-antepassado(maria,Y).
#3 X=marta
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
15
Exerccios
Desenhe as rvores de procura para as seguintes questes
?-antepassado(X,maria).
?-antepassado(X,jose).
Hu
go P
ire
s @
Un
ive
rsid
ade
Lu
sfo
na
do
Po
rto
17