Lógica de Predicados Estratégias de Resolução. Defeitos da resolução Apesar de, para lógica...
Transcript of Lógica de Predicados Estratégias de Resolução. Defeitos da resolução Apesar de, para lógica...
Lógica de Predicados
Estratégias de Resolução
Defeitos da resolução
Apesar de, para lógica de predicados, resolução ser bem melhor que o algoritmo de Gilmore Mas ainda podemos melhorá-la!
Durante a resolução, em ambas as lógicas, há passos e cláusulas não usados na
prova
Exemplo (proposicional)
Darcy Darcy Criança Criança ^ Macho Garoto Infantil Criança Criança ^ Fêmea Garota Fêmea
Isto deriva Garota????
Em Cláusulas [Darcy] [Darcy,Criança] [Criança,Macho,Garoto]
[(Criança ^ Macho), Garoto] [Infantil,Criança] [Criança,Fêmea,Garota]
[(Criança ^ Fêmea),Garota] [Fêmea] [Garota] (conseqüência lógica)
Prova gráfica [Darcy] [Darcy,Criança]
[Criança] [Criança,Fêmea,Garota]
[Fêmea,Garota] [Fêmea]
[Garota] [Garota]
{}
Estratégias mais eficientes Estratégias de Deleção (ou
simplificação) Tautologias Subsunções Literais puros
Estratégias de refinamento Resolução de entrada Resolução de unidade Resolução linear …
Estratégias de Deleção -Tautologias
Tirar tautologias do conjunto de cláusulas ANTES da unificação
Sua ausência não afeta a prova Ex: {[P(a), P(a)], [P(a), Q(x), Q(y)]} Depois da unificação Ex: {[P(a), P(x)], [P(a)],[P(b)]} Se retirarmos [P(a), P(x)], já que são
complementares se unificados????
Estratégias de Deleção - Subsunções
C1 subsume C2 sse existe O tal que C1O C2O
Retirar C2 não altera a prova Exs:
P(x) subsume P(y) v Q(z) P(x) subsume P(a) P(y) v Q(a) subsume P(f(a)) v Q(a) v R(y)
Estratégias de Deleção -Literais puros Um literal é puro sse se seu
complemento (unificável ou não) não existir nas cláusulas
Ex: {[R, P, Q], [P, S], [Q, S], [P], [Q], [R]} S é puro Cláusulas que o contém podem ser
deletadas pois não serão eliminadas na resolução!
Estratégias de refinamento Resolução de unidade
Procura-se empregar cláusulas unitárias Com um só literal
Eficiente mas incompleta, se o conjunto de cláusulas não contiver unitárias o suficiente
Resolução de entrada Usar pelo menos uma cláusula do conjunto
inicial Equivalente à de unidade Completo para cláusulas de Horn
Exemplo de falha de ambos {[P, S], [P, S], [P, S], [P, S]}
Cláusulas de Horn
Do tipo A1^...^An B, que vira [A1,...,An, B] Só há um literal positivo: o
conseqüente Lê-se: se A1 e ... e An então B Bons para estruturar conhecimento
e controlar a inferência
Resolução SLD Resolução Linear com função de
Seleção para cláusulas Definidas Generalização de resolução de entrada Sempre usam-se cláusulas do conjunto
de entrada ou suas filhas em 1º. grau Boa para cláusulas de Horn Busca-se tentar provar diretamente
a conseqüência lógica
O exemplo da garota
Garota
Criança Fêmea
DarcyNo conjunto inicial tínhamos Criança ^ Fêmea Garota ([Criança,Fêmea,Garota])
Example [U. Nilsson]
gp(X,Y) :- p(X,Z), p(Z,Y).
p(X,Y) :- f(X,Y).p(X,Y) :- m(X,Y).
f(adam,bill).f(bill,carl).m(anne,bill).
Queries
A query is an expression of the form:?- A1, ..., An.
where n=0,1,2,... and A1, ..., An are atomic formulas.
Examples:?- father(X, bill).
?- parent(X, bill), male(X).
Interpretation Queries
Consider a query ?- A1, ... , An.
Declarative (logical) reading:Are there values of the variables
such that A1 and...and An?
Procedural (operational) reading:First solve A1, then A2 etc
Ground SLD-Resolution
?- A1,A2,...,An.
?- B1,...,Bm,A2,...,An.
A1 :- B1,...,Bm.
whereA1 :- B1,...,Bm is an instantiated program clause.
parent(X,Y) :-father(X,Y).
parent(X,Y) :-mother(X,Y).
father(adam,bill).mother(anne,bill).
A Derivation
?- parent(adam,bill)
?- father(adam,bill)
?- true
parent(X,Y) :-father(X,Y).
parent(X,Y) :-mother(X,Y).
father(adam,bill).mother(anne,bill).
parent(X,Y) :-father(X,Y).
parent(X,Y) :-mother(X,Y).
father(adam,bill).mother(anne,bill).
parent(X,Y) :-father(X,Y).
parent(X,Y) :-mother(X,Y).
father(adam,bill).mother(anne,bill).
Another Derivation
?- parent(anne,bill)
?- mother(anne,bill)
?- true
parent(X,Y) :-father(X,Y).
parent(X,Y) :-mother(X,Y).
father(adam,bill).mother(anne,bill).
parent(X,Y) :-father(X,Y).
parent(X,Y) :-mother(X,Y).
father(adam,bill).mother(anne,bill).
Full SLD-Resolution
?- A1,A2,...,An.
?- A1= B0, B1,...,Bm,A2,...,An.
B0 :- B1,...,Bm.
where:
• B0 :- B1,...,Bm is a renamed program clause.
?- (B1,...,Bm,A2,...,An).
• is a solution to the equation A1 = B0.
?- X=X1, bill=Y1, father(X1,Y1). ?- father(X,bill).
Yet Another Derivation?- parent(X,bill).
parent(X1,Y1) :- father(X1,Y1).father(adam,bill).
?- X=adam, bill=bill. ?- true.
Answer: X=adam
And Another One...?- gp(X,Y).
gp(X1,Y1) :- p(X1,Z1),p(Z1,Y1).
?- X=X1, Y=Y1, p(X1,Z1), p(Z1,Y1).?- p(X,Z1), p(Z1,Y).
p(X2,Y2) :- f(X2,Y2).
?- X=X2, Z1=Y2, f(X2,Y2), p(Z1,Y).?- f(X,Z1), p(Z1,Y).
f(adam,bill).
?- X=adam,Z1=bill, p(Z1,Y).?- p(bill,Y).
X=adam
p(X3,Y3) :- f(X3,Y3).
?- bill=X3, Y=Y3, f(X3,Y3).?- f(bill,Y).
f(bill,carl).?- bill=bill, Y=carl.?- true.
Y=carl
And a Failed One...?- gp(X,Y).
gp(X1,Y1) :- p(X1,Z1),p(Z1,Y1).
?- X=X1, Y=Y1, p(X1,Z1), p(Z1,Y1).?- p(X,Z1), p(Z1,Y).
p(X2,Y2) :- f(X2,Y2).
?- X=X2, Z1=Y2, f(X2,Y2), p(Z1,Y).?- f(X,Z1), p(Z1,Y).
f(bill,carl).
?- X=bill,Z1=carl, p(Z1,Y).?- p(carl,Y).
X=bill
p(X3,Y3) :- f(X3,Y3).
?- carl=X3, Y=Y3, f(X3,Y3).?- f(carl,Y).
?- fail.FAILURE!!!
?- true.Y=carl
?- p(bill,Y).
X=adam
SLD-Tree?- gp(X,Y).
?- f(bill,Y). ?- m(bill,Y).
?- fail.
?- p(X,Z),p(Z,Y).
?- f(X,Z),p(Z,Y).
?- p(carl,Y).
?- f(carl,Y).?- m(carl,Y).
?- fail. ?- fail.
?- m(X,Z),p(Z,Y).
?- f(bill,Y). ?- m(bill,Y).
?- true.Y=carl
?- fail.
?- p(bill,Y).
X=anne
Logic Programming
• SLD-resolution: Soundness:
if n… 21 is a computed answer, then P n… 21G
Completeness: if P G, then there exists a computed
answer such that = for some
Example: p(X,Z) q(X,Y), p(Y,Z)p(X,X)q(a,b)
Logic Programming• PROLOG (Alain Colmerauer 1972):
Only Horn sentences are acceptable The occur-check is omitted from the unification unsound
Example: test p(X,X)p(X,f(X))
Backward chaining with depth-first search incomplete
Example: p(X,Y) q(X,Y)p(X,X)q(X,Y) q(Y,X)
Logic Programming p(X,b)
q(X,b) {X/b}
success q(b,X)
q(X,b)
Infinite SLD-tree:
Logic Programming• PROLOG (Alain Colmerauer 1972):
Unsafe cut incomplete
Example: A B, C AB D, !, ED B, C
D, !, E, C
!, E, C
Negation as failure: P if fails to prove P
Muito obg!
Gostei de trabalhar com vcs!! Desculpem as escorregadas! Estudem e boas provas! E depois...
BOAS FÉRIAS!