Escolar Documentos
Profissional Documentos
Cultura Documentos
pai_de(joao, pedro).
Fatos bonita(maria).
gosta_de(ana, vinho).
maior(5, 4, 3, 2, 1).
Regras gosta(X, vinho). (fatos universais)
vezes(0, X, 0).
Consultas
Base de Dados: conjunto de fatos
Consultas Compostas
| ?- pai_de(X,eduardo),pai_de(Y,X).
So interpretadas como conjuno.
(Quem o av de eduardo?)
X = henrique ,
Y = henrique_pai ;
| ?- pai_de(X,elizabeth2),pai_de(X,eduardo). no
(Existe um valor para X que torne as duas partes da consulta verdadeiras
ao mesmo tempo?) | ?- pai_de(henrique_pai,X),pai_de(X,Y).
X = henrique ; (Quem so os netos de henrique_pai?)
no X = henrique ,
Y = elizabeth2 ;
X = henrique ,
Y = eduardo ;
no
Exemplos:
Termo 1: pai_de(henrique, filhos(eduardo,elizabeth2))
Termo 2: pai_de(henrique,X)
Termo 1 : data(25,maio, Ano)
Termo 2 : data(D,maio,1983) Resultado: X = filhos(eduardo,elizabeth2)
Resultado : D = 25
Ano = 1983
Unificao
Regras para decidir se dois termos unificam:
T erm o 1 T erm o 2 R e s u lt a d o d a
U n if ic a o
1) Se S e T so constantes ento S e T unificam se e s se so o mesmo h e n r iq u e h e n r iq u e u n if ic a m
e d u a rd o h e n r iq u e n o u n if ic a m
objeto;
X p a r ( a ,b ) X = p a r ( a ,b )
2 .3 5 Y Y = 2 .3 5
2) se S uma varivel e T qualquer termo, ento unificam e S d a ta ( 2 5 ,m a io ,A n o ) d a ta ( D ,m a io ,1 9 8 3 ) D = 15
instanciada com T; vice-versa com a varivel T instanciada com S; A no = 1983
d a ta ( D 1 ,a b r il,A ) d a ta ( D 2 ,M ,1 9 0 0 ) D1 = D2
M = a b r il
3) se S e T so estruturas, elas unificam se e s se S e T tem o mesmo A = 1900
funtor principal e todos os elementos correspondentes unificam. d a ta ( 1 7 ,m a r c o ,2 0 0 0 ) d a te ( 1 7 ,M ,2 0 0 0 ) n o u n if ic a m
p a i_ d e ( X ,e d u a r d o ) p a i_ d e ( h e n r iq u e ,Y ) X = h e n r iq u e
Y = e d u a rd o
A regra fica:
filho_de(eduardo,henrique):- Duas ou mais regras sobre a mesma relao indicam formas
alternativas de provar um objetivo, portanto correspondem ao
pai_de(henrique,eduardo), homem(eduardo)
operador ou.
Observao 1:
| ?- predecessor(henrique_pai,X).
X = henrique ; Variveis DIFERENTES em uma mesma clusula PODEM assumir o mesmo
X = maria ;
valor
X = elizabeth2 ;
X = eduardo ;
no Exemplo: Definir a relao de irm
pai_ou_mae(tom,bob).
| ?- predecessor(X,henrique). X = henrique_pai ; pai_ou_mae(tom,liz).
X = elizabeth1 ;
pai_ou_mae(bob,ana).
no
pai_ou_mae(bob,pat).
| ?- predecessor(X,eduardo). pai_ou_mae(pat,jim).]
X = henrique ; mulher(ana).
X = jane ; mulher(pat).
X = henrique_pai ;
irma(X,Y) :- pai_ou_mae(Z,X),
X = elizabeth1 ;
no pai_ou_mae(Z,Y),
mulher(Y).
HAC IA2014 31 HAC IA2014 32
Observao 2:
Consulta:
Escopo de Variveis:
Backtracking
pai_ou_mae(tom,bob). irma(X,Y) :- pai_ou_mae(Z,X), Tcnica de busca que consiste em sistematicamente testar todos os
pai_ou_mae(Z,Y), caminhos alternativos que levam a uma soluo
pai_ou_mae(tom,liz).
pai_ou_mae(bob,ana). mulher(Y).
pai_ou_mae(bob,pat). irmao(X,Y) :-
pai_ou_mae(Z,X), rvore AND/OR (E/OU)
pai_ou_mae(bob,joe).
pai_ou_mae(Z,Y),
pai_ou_mae(pat,jim). homem(Y).
mulher(ana). sobrinho(X,Y) :- irma(X,Z), Ns AND - representam conjunes
mulher(pat). pai_ou_mae(Z,Y). Ns OR - representam disjunes (caminhos alternativos)
homem(joe). sobrinho(X,Y) :- irmao(X,Z),
homem(bob). pai_ou_mae(Z,Y).