Baixe o app para aproveitar ainda mais
Prévia do material em texto
LPO NA PRÁTICA Símbolos de função e Datalog ¨ Muitas vezes queremos referir-‐se a indivíduos em termos de componentes. ¤ Exemplos: 16:55. Sentenças em Inglês . Um lista de classe. ¨ Estendemos a noção de . Para que um termo possa ser f(t1, ..., tn) quando f é um e o ti são termos. ¨ Em uma interpretação e com uma atribuição de variável, o termo f(t1, ..., tn) denota um indivíduo no domínio. ¨ Um símbolo de função e uma constante podem se referir a uma infinidade de indivíduos. ¨ Símbolos de função são usados para definir estruturas de dados. 3 Usando símbolos de funções l Para definirmos a relação before(T1, T2), que é verdadeira se T1 ocorre antes de T2 em um dia. l Definimos os símbolos de função am(H,M) e pm(H,M) e então definimos a relação. before(am(H1, M1), pm(H2, M2)). before(am(12, M1), am(H2, M2)) ß H2 < 12. before(am(H1, M1), am(H2, M2))ß H1 < H2 ∧ H2 < 12. before(am(H, M1), am(H, M2)) ß M1 < M2. before(pm(12, M1), pm(H2, M2)) ß H2 < 12. before(pm(H1, M1), pm(H2, M2)) ß H1 < H2 ∧ H2 < 12. before(pm(H, M1), pm(H, M2)) ß M1 < M2. 4 Procedimento de prova com símbolos de funções l A diferença dos procedimentos anteriores é que a classe de termos é expandida com os símbolos de funções. l Com símbolos de funções existem infinitamente muitos termos. . ¤ Temos que assegurar que o critério de seleção para selecionar as cláusulas seja imparcial. ¤ Um (fair) é aquele que qualquer cláusula que está disponível para ser escolhida será escolhida em algum momento. ¤ É completo somente se o critério de seleção for imparcial. 5 Procedimento de prova com símbolos de funções ¤ Usa o unificador mais geral. ¤ Temos que tomar cuidado com: a variável X não unifica com o termo t no qual X ocorre, e ele não é o próprio X. n Suponha que o símbolo de função s denota a função sucessor, onde s(n) é o número depois de n. n Nesta interpretação não existe nenhum número X que é igual ao seu sucessor, não faz sen]do unificar {X/s(X)} ¤ Se isso for permi]do o procedimento de prova torna-‐se incorreto (unsound). Exemplo: Listas ¨ Uma lista é uma sequência ordenada de elementos. ¨ Vamos usar a constante para denotar uma lista vazia e a função para denotar a lista com o primeira elemento H e o resto da lista T. N . ¨ ¨ A lista que contém sue, kim e é randy cons(sue,cons(kim,cons(randy,nil))) ¨ é TRUE se a lista z contém os elementos de X seguidos pelos elementos de Y append(nil,Z,Z). append(cons(A,X),Y,cons(A,Z))← append(X,Y,Z). 7 Procedimento de prova top-‐down com símbolos de funções n Considere a BC: append(c(A,X),Y,c(A,Z)) ß append(X,Y,Z)). append(nil,Z,Z). ¤ Considere a query: ?append(F,c(L,nil),c(l,c(i,c(s,c(t,nil))))). yes(F,L) ß append(F,c(L,nil),c(l,c(i,c(s,c(t,nil))))). ¨ Resolve com append(c(A1,X1),Y1,c(A1,Z1)) ß append(X1,Y1, Z1)). Subs]tuição {F/c(l, X1), Y1/c(L, nil), A1/l, Z1/c(i, c(s, c(t, nil)))} yes(c(l,X1),L) ß append(X1,c(L,nil),c(i,c(s,c(t,nil)))). ¨ Resolve com append(c(A2,X2),Y2,c(A2,Z2)) ß append(X2,Y2,Z2)). Subs]tuição {X1/c(i, X2), Y2/c(L, nil), A2/i, Z2/c(s, c(t, nil))} yes(c(l,c(i,X2)),L) ß append(X2,c(L,nil),c(s,c(t,nil))). 8 Procedimento de prova top-‐down com símbolos de funções yes(c(l,c(i,X2)),L) ß append(X2,c(L,nil),c(s,c(t,nil))). ¤ Resolve com append(c(A3,X3),Y3,c(A3,Z3)) ß append(X3,Y3, Z3)). n Subs]tuição {X2/c(s, X3), Y3/c(L, nil), A3/s, Z3/ c(t, nil))} yes(c(l,c(i,c(s,X3))),L) ß append(X3,c(L,nil),c(t,nil)). ¤ Escolhendo a primeira cláusula para resolver append(c(A4,X4),Y4,c(A4,Z4)) ß append(X4,Y4, Z4)). n Subs]tuição {X3/c(t, X4), Y4/c(L, nil), A4/t, Z4/nil} yes(c(l,c(i,c(s,c(t,X4)))),L) ß append(X3,c(L,nil),nil). ¤ Não existe mais nenhuma cláusula na qual a cabeça unifica com append(X3,c(L,nil),nil) e a prova falha 9 Procedimento de prova top-‐down com símbolos de funções n voltando.... yes(c(l,c(i, c(s, X3))), L) ß append(X3, c(L, nil), c(t, nil)). n E escolhendo a segunda cláusula: append(nil , Z5, Z5)). n Subs]tuição {X3/nil), Z5/c(t, nil), L/t} yes(c(l,c(i, c(s, nil))), t) ß . n F = c(l,c(i, c(s, nil))) e L = t 10 Exercícios ¨ Considere os seguintes fatos: Cachorros são animais. Todos os animais têm prazer com a alimentação. As pessoas gostam dos animais que elas têm. As pessoas fazem coisas que tragam prazer às coisas que elas gostam. Fido é o cachorro da Maria. A. Escreva os fatos acima como um conjunto de cláusulas definidas. B. Mostre como definir uma pergunta que ques]one: “O que Maria faz?” C. Mostre a uma derivação SLD para a pergunta acima, mostrando as ligações das variáveis. 11 Exercícios l Considere o seguinte programa lógico: F(nil, X,Y). f(cons(X,Y),W,Z) ß f(Y,W,cons(X,Z)). l Apresente cada uma das derivações top-‐down, mostrando as subs]tuições para a pergunta: ?f(cons(a,cons(b,cons(c,nil))),L,nil). Igualdade ¨ Às vezes, dois termos denotam o mesmo indivíduo. ¨ Exemplo: ¤ Clark Kent e Superman. ¤ 4 × 4 e 11 5. ¤ O projetor que foiu]lizado úl]ma terça-‐feira e este projetor. ¨ Em LPO podemos usar o para fazer declarações dizendo que dois termos se referem ao mesmo objeto: ¤ pai(joão)=henrique ¤ O objeto referido por pai(joão) e o objeto referido por henrique são iguais. Igualdade 13 ¨ O termo básico t1 é ao termo básico t2, escrito , é verdade na interpretação I se t1 e t2 denotam o mesmo indivíduo na interpretação I. ¨ O símbolo de igualdade também pode ser empregado com a negação para insis]r no fato de que termos são o mesmo objeto: ¤ ∃X,Y irmão(X,ricardo) ٨۸ irmão(Y,ricardo) ٨۸ ¬(X = Y) ¨ chair1 = chair2 ¨ chair_on_right = chair2 ¨ chair_on_right não é similar a chair2, a chair2. A igualdade não significa similaridade Por que igualdade importante? ¨ Em um consultório médico, o médico quer saber se um paciente que ele viu na semana passada (ou é sua irmã gêmea). ¨ Em uma inves]gação criminal, a polícia pretende determinar se alguém que a pessoa que cometeu algum crime. ¨ Ao comprar um interruptor para subs]tuição, um eletricista pode querer saber se ele foi construído na em que os interruptores que não eram confiáveis. (E se é um do que o que foi subs]tuído em um momento anterior). ¨ Sem afirmações de igualdade, a única coisa que é igual a um termo básico é ele mesmo. Isso pode ser capturado como se você ]vesse a afirmação X = X. A igualdade explícita nunca precisa ser usada. ¨ Se você permi]r afirmações de igualdade, é necessário derivar o que decorre delas. Ou se: ¤ Axioma]za a igualdade como qualquer outro predicado, ou se ¤ Constrói máquinas de inferência para fins específicos para a igualdade Permi]ndo afirma]vas de igualdade X = X. X = Y ← Y = X. X = Z ← X = Y ∧ Y = Z. ¨ Para cada símbolo de função n-‐aria f existe uma regra da forma f(X1, . . . , Xn) = f(Y1, . . . , Yn) ← X1 = Y1 ∧ ・ ・ ・ ∧ Xn = Yn. ¨ Para cada símbolo de predicado n-‐ario p, existe uma regra na forma p(X1, ...,Xn) ← p(Y1, ...,Yn) ∧ X1 = Y1 ∧ ・ ・ ・ ∧ Xn = Yn. Axioma]zando a igualdade Raciocinador especial para igualdade : se você tem t1 = t2, então você pode subs]tuir qualquer ocorrência de t1 por t2. ¤ Trate a igualdade como uma , subs]tuindo iguais por iguais. ¤ Você seleciona uma para cada indivíduo e reescrever todas as outras representações nesta representação. ¨ Exemplo: trate a sequência de dígitos como a representação canônica de um número. ¨ Exemplo: use o RA de um aluno como a representação canônica para os alunos. ¨ A convenção de que os termos básicos diferentes denotam indivíduos diferentes é o pressuposto de nomes exclusivos (UNA). ¨ Para cada par de termos básicos dis]ntos t1 e t2, assumir t1 ≠ t2, onde ”≠" significa "não igual". ¤ Exemplo: Para cada par de cursos, você não quer ter que afirmar, math302 = psyc303, ... ¨ Problemas: Às vezes, a pressuposição de nomes exclusivos é inadequada, por exemplo, 3 + 7 ≠ 2 × 5 é errado. Pressuposição de Nomes exclusivos (UNA) ¨ c ≠ c’ para cada constante dis]nta c e c’. ¨ f(X1, . . . , Xn) ≠ g(Y1, . . . , Ym) para cada símbolo de função f e g. ¨ f(X1, . . . , Xn) ≠ f (Y1, . . . , Yn) ← Xi ≠ Yi, para cada símbolo de função f. Existe n instancias deste esquema para cada símbolo de função n-‐ary f (um para cada i tal que 1 ≤ i ≤ n). ¨ f(X1, . . . , Xn) ≠ c para cada símbolo de função f e constante c. ¨ t ≠ X para cada termo t no qual X parece (no qual t não é o termo X). Axioma]zando a desigualdade para a UNA ¨ A desigualdade não é apenas um outro predicado. Há um número infinito de respostas para X ≠ f (Y). ¨ Se você tem um subobje]vo t1 ≠ t2, para termos de t1 e t2, existem três casos: ¤ t1 e t2 não se unificam. Neste caso, t1 ≠ t2 é bem-‐sucedido. ¤ t1 e t2 são idên]cos inclusive com as mesmas variáveis nas mesmas posições. Aqui t1 ≠ t2 falha. ¤ Caso contrário, há exemplos de t1 ≠ t2 que tem sucesso e casos de t1 ≠ t2 que falham. Procedimento Top-‐down e a UNA ¨ Lembre-‐se: na resolução SLD você pode selecionar qualquer subgoal no corpo de uma cláusula de resposta para resolver a seguir. : só selecionar a desigualdade quando ela puder ter sucesso ou falhar, caso contrário, selecione outro subgoal. Assim, você estará as metas de desigualdade. ¨ Se só restarem as submetas de desigualdade, e nenhuma falha, a consulta será bem-‐sucedida. Implementando a UNA não_em(X,[]). não_em(X,[H|T]) ← X = H ∧ não_em(X,T). bom_curso(C) ← curso(C) ∧ passou_analise(C). curso(cs312). curso(cs444). curso(cs322). passou_analise(C) ← algo_complicado(C). ?não_em(C,[cs312,cs322,cs422,cs310,cs402]) ∧ bom_curso(C). Exemplo de desigualdade ¨ Às vezes você quer assumir que um banco dedados está completo. Qualquer fato não mencionado é falso. ¤ Exemplo: Supondo que um banco de dados de relações de enrolled está completo, você pode definir um empty_course. ¨ O SRR de cláusulas definidas é : ¤ A adição de novas clausulas não invalida a conclusão anterior. ¨ Com o pressuposto de conhecimento completo ele passa a ser : ¤ Uma conclusão pode ser invalidada ao adicionar mais cláusulas. Pressuposição do Conhecimento Completo (CKA) ¨ Suponha que as regra para o átomo a são: a ← b1. ... a ← bn. ou equivalentemente: a ← b1 ∨ ... ∨ bn. ¨ Sobre a CKA, se a é verdade, um dos bi deve ser verdade: a → b1 ∨ ... ∨ bn. ¨ Sobre a CKA, as cláusulas para a significam a : a ↔ b1 ∨ ... ∨ bn. CKA: Caso proposicional ¨ Exemplo: Considere a relação definida por: estudante(maria). estudante(joão). estudante(ying). ¨ A CKA especifica que este três são os únicos alunos: estudante(X) ↔ X = maria ∨ X = joão ∨ X = ying. ¨ Para concluir ¬estudante(alan), você tem que pode provar alan ≠ mary ^ alan ≠ john ∧ alan ≠ ying ¨ Isto requer a pressuposição de nomes exclusivos (UNA). CKA: Banco de dados básico ¨ A de uma cláusula: p(t1, ... , tk) ← B. ¨ É a cláusula: p(V1,..., Vk) ← ∃W1 ... ∃Wm V1 = t1 ∧ … ∧ Vk = tk ∧ B. ¨ Na qual V1, … ,Vk são k variáveis diferentes das presentes na cláusula original. ¨ W1, … , Wm são as variáveis originais na cláusula. Forma Normal de Clark ¨ A forma normal de Clark de: sala(C,sala208) ← curso_cc(C) ∧ matriculado(C,E) ∧ E < 120. ¨ é: sala(X,Y) ← ∃C ∃E X = C ∧ Y = sala208 ∧ curso_cc(C) ∧ matriculado(C,E) ∧ E < 120. Exemplo: Forma normal de Clark ¨ Coloque todas as cláusulas para p na forma normal de Clark, com o mesmo conjunto de variáveis introduzidas: p(V1, ... , Vk) ← B1. … p(V1, ... , Vk) ← Bn. ¨ Isto é o mesmo que: p(V1, ... , Vk) ← B1 ∨ ... ∨ Bn. ¨ A completude de Clark de p é a equivalência: p(V1, ... , Vk) ↔ B1 ∨ ... ∨ Bn. ¨ Isto é, p(V1, ... , Vk) é verdade se, e somente se, um dos Bi é verdadeiro, e cada uma das variáveis é universalmente quantificada. Completude de Clark de um predicado ¨ Dada a função membro (que denota se um elemento é membro de uma lista): membro(X, [X|T]). membro(X, [H|T]) ← membro(X, T). ¨ Sua completude é: membro(X, Y) ↔ (∃T Y = [X|T]) ∨ (∃H ∃T Y = [H|T] ∧ membro(X, T)). Exemplo da completude de Clark ¨ A de uma base de conhecimento consiste da completude de cada símbolo de predicado, juntamente com os axiomas para igualdade e desigualdade. ¨ Se você ]ver um predicado p definido pela base de conhecimento sem cláusulas, sua completude é p ↔ false. Isto é ¬p. ¨ Você pode interpretar negações nos corpos da cláusulas. ∼p significa que p é falso sobre a pressuposição de conhecimento completo. Isso é chamado de . Completude de Clark de uma BC ¨ Anteriormente não poderíamos definir curso_vazio(C) a par]r de um banco de dados de fatos matriculado(S,C). ¨ Isso pode ser definido usando negação como falha: curso_vazio(C) ← curso(C) ˄ ∼tem_matriculados(C). tem_matriculados(C) ← matriculado(S,C). Usando negação como falha C ß {} repita ou selecione “h ← b1 ˄ … ˄ bm” ∈ BC tal que: bi ∈ C para todo i, e h ∉ C; C ß C ∪ {h} ou selecione h tal que: para cada regra “h ← b1 ˄ … ˄ bm” ou para algum bi, ∼bi ∈ C ou algum bi = ∼g e g ∈ C C ß C ∪ {∼h} até que não seja mais possível fazer seleções Procedimento de prova BoPom-‐up para negação como falha p ← q ∧ ∼r. p ← s. q ← s. r ← t. t. s ← w. Exemplo de Negação como falha ¨ Se a prova para a falha, você pode concluir ∼a. ¨ Falha e sucesso podem ser definidos recursivamente: ¤ Suponha que você tenha as regras para o átomo a: a ← b1 ... a ← bn Se cada corpo bi falha, a falha. Se um corpo bi é bem-‐sucedido, a é bem sucedido. ¨ Um corpo falha se uma das conjunções no corpo falha. Um corpo é bem-‐sucedido se todas as conjunções são bem sucedidas. ¨ Se a falhar, ∼a é bem-‐sucedido. Se a bem-‐sucedido ∼a falha. Procedimento Top-‐Down para Negação como falha ¨ Exemplo: ¤ Existe apenas uma resposta para a pergunta ?p(X), ou seja X= c. ¨ Nas chamadas para a negação como falha com variáveis livres, você precisa os obje]vos com negação como falha que contenham variáveis até que as variáveis se tonem ligadas. Variáveis livre na negação
Compartilhar