300 likes | 399 Views
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.
E N D
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 Darcy No 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
?- B1,...,Bm,A2,...,An. Ground SLD-Resolution ?- A1,A2,...,An. A1 :- B1,...,Bm. where A1 :- B1,...,Bm is an instantiated program clause.
?- father(adam,bill) ?- true A Derivation 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). ?- parent(adam,bill)
?- mother(anne,bill) ?- true Another Derivation 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). ?- parent(anne,bill)
B0 :- B1,...,Bm. ?- A1= B0, B1,...,Bm,A2,...,An. ?- (B1,...,Bm,A2,...,An)q. where: • B0 :- B1,...,Bm is a renamed program clause. • q is a solution to the equation A1 = B0. Full SLD-Resolution ?- A1,A2,...,An.
?- X=X1, bill=Y1, father(X1,Y1). ?- father(X,bill). ?- X=adam, bill=bill. ?- true. Answer: X=adam Yet Another Derivation ?- parent(X,bill). parent(X1,Y1) :- father(X1,Y1). father(adam,bill).
X=adam ?- p(bill,Y). ?- f(X,Z1), p(Z1,Y). ?- X=X2, Z1=Y2, f(X2,Y2), p(Z1,Y). ?- bill=X3, Y=Y3, f(X3,Y3). ?- true. ?- X=X1, Y=Y1, p(X1,Z1), p(Z1,Y1). ?- f(bill,Y). ?- bill=bill, Y=carl. ?- X=adam,Z1=bill, p(Z1,Y). ?- p(X,Z1), p(Z1,Y). Y=carl And Another One... ?- gp(X,Y). f(bill,carl). p(X3,Y3) :- f(X3,Y3). p(X2,Y2) :- f(X2,Y2). gp(X1,Y1) :- p(X1,Z1),p(Z1,Y1). f(adam,bill).
X=bill ?- p(carl,Y). ?- fail. ?- f(X,Z1), p(Z1,Y). ?- X=X2, Z1=Y2, f(X2,Y2), p(Z1,Y). ?- X=bill,Z1=carl, p(Z1,Y). ?- p(X,Z1), p(Z1,Y). ?- X=X1, Y=Y1, p(X1,Z1), p(Z1,Y1). ?- f(carl,Y). ?- carl=X3, Y=Y3, f(X3,Y3). And a Failed One... ?- gp(X,Y). p(X3,Y3) :- f(X3,Y3). f(bill,carl). p(X2,Y2) :- f(X2,Y2). gp(X1,Y1) :- p(X1,Z1),p(Z1,Y1). FAILURE!!!
?- p(X,Z),p(Z,Y). X=anne X=adam ?- f(X,Z),p(Z,Y). ?- m(X,Z),p(Z,Y). ?- p(bill,Y). ?- p(bill,Y). ?- p(carl,Y). ?- f(carl,Y). ?- m(carl,Y). ?- f(bill,Y). ?- m(bill,Y). ?- f(bill,Y). ?- m(bill,Y). ?- fail. ?- fail. ?- true. Y=carl ?- fail. ?- true. Y=carl ?- fail. SLD-Tree ?- gp(X,Y).
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 s such that = s 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 Infinite SLD-tree: p(X,b) q(X,b) {X/b} success q(b,X) q(X,b)
Logic Programming • PROLOG (Alain Colmerauer 1972): • Unsafe cut incomplete Example: A B, C A B D, !, E D 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...