Implementação de Resolução

Slides:



Advertisements
Apresentações semelhantes
Inteligência Artificial
Advertisements

AULA 02 PROGRAMAÇÃO LINEAR INTEIRA
Algoritmos em Grafos (Parte 2)
Lógica de Predicados e Representação de Conhecimento
Capítulo 7 Tableaux semânticos e resolução na Lógica Proposicional
Prolog: Predicados Built-in 1
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Cláusulas Conjuntos de cláusulas
Tópicos de Lógica Proposicional
Formalizar semântica da LPO
Elsa Carvalho 163 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Teoria dos Modelos.
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
SLX: Procedimentos para WFSX SLX (SL with eXplicit negation) é um procedimento top- down para a WFSXp –Aqui apresenta-se apenas a caracterização de AND-trees.
Introdução à Programação Lógica
Resolução.
Busca Cega (Exaustiva)
Programação em lógica e lógica
APRENDIZAGEM COM CONHECIMENTO A PRIORI
SISTEMAS LINEARES II Prof. Marlon.
Aula 5 - Cap. 7 Fundamentos da IA Mestrado – FEI
6. Backtracking e Controle
2. A Linguagem Prolog.
Lógica para Computação
RESOLUÇÃO PROPOSICIONAL
Resolução Proposicional
RESOLUÇÃO PROPOSICIONAL
DEDUÇÃO NO CÁLCULO PROPOSICIONAL
A Lógica das Sentenças Abertas Profa. Ana Florencia Aula 9
Aron Sebastian André Sousa Vivian Maria Márcio André
Luís Rodrigues – Universidade dos Açores
Aula Prática - Prolog Sistemas Inteligentes /~if684
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Lógica de Predicados Teorema de Herbrand.
Capítulo 4 Métodos para determinação de propriedades semânticas de fórmulas da Lógica Proposicional
Cássio Cristo Dawyson Guerra Matheu Santos
Capítulo 11 Programação Lógica
Onde c, c1, c2 é uma constante.
Lógica Proposicional Tableaux semânticos.
Formas Normais e Resolução
Introdução e Busca Cega
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
Lógica de Predicados Implementação de Resolução. Em Lógica de 1ª. Ordem Resolução não é uma simples extensão da Resolução da Lógica Proposicional O processo.
Teorema de Herbrand e Unificação
Lógica de Predicados Forma Prenex e Skolem.
Completude e Corretude do Sistema de Tableaux Semânticos
Lógica Proposicional Resolução.
Lógica de Predicados Resolução.
Lógica Proposicional Tableaux semânticos.
Sistema de equações lineares
Lógica de Predicados Forma Prenex e Skolem.
Lógica Proposicional Resolução.
Teorema de Herbrand e Unificação
SISTEMAS LINEARES Prof. Moacir.
Construção e Análise de Algoritmos
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Lógica para Computação
Semântica de uma fórmula da lógica da 1a ordem via modelo de Herbrand
Estratégias de Resolução
Equações.
Decidibilidade, Corretude, Completude, Consistência
Elsa Carvalho 262 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Com os.
Lógica de Predicados Resolução. Cláusulas e literais complementares Cláusula em lógica de predicados é uma disjunção de literais Usando a notação de conjuntos:
Elsa Carvalho 203 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução (com.
Frases de Horn Forma Normal Conjuntiva- para frases sem quantificadores conjunção de frases cada elemento da conjunção é disjunção de literais literal:
Interpretação do Teorema de Herbrand
Sistemas Inteligentes Busca Cega (Exaustiva)
Lógica de Predicados Tableaux semânticos.
Busca Heurística Prof. Valmir Macário Filho. 2 Busca com informação e exploração Capítulo 4 – Russell & Norvig Seção 4.1 Estratégias de Busca Exaustiva.
Transcrição da apresentação:

Implementação de Resolução Lógica de Predicados Implementação de Resolução

Em Lógica de 1ª. Ordem Resolução não é uma simples extensão da Resolução da Lógica Proposicional O processo é mais longo e cuidadoso: Transformar a(s) fórmula(s) para a forma normal Prenex Skolemizá-la(s) Transformá-las para CNF Transformá-las para a forma clausal Unificá-las durante a resolução Por outro lado, ao usar a unificação, a resolução torna-se bem mais rápida do que os métodos de Gilmore e Davis-Putnam!

Resolução eficiente Idealmente todas as expansões possíveis devem ser efetuadas Mas isso é caro computacionalmente! Então organizemos os passos destas expansões num algoritmo e escolhamos melhor as expansões Devemos evitar gerar o que já existe, para torná-lo eficiente Tentar ir o mais rápido possível para {}

Exemplo {[P],[P,Q],[Q, R],[R]} [P] [P,Q] [Q, R] [R] [Q] 1,2 [P, R] 2,3 [Q] 3,4 [R] 3,5 [R] 1,6 [P] 4,6 [P] 2,7 {} 5,7 {[P],[P,Q],[Q, R],[R]} [P] [P,Q] [Q, R] [R] [Q] 1,2 [Q] 3,4 {} 5,6

Rastro da resolução [P] [P,Q] [Q, R] [R] [Q] [P, R] [Q] [R] [R] {} [P] [P]

Usos da resolução - decisões Exemplo genitor(X,Y) :- pai(X,Y).  pai(adam,bill). pai(bill,carl). Para provar que adam é genitor de bill {[genitor(X,Y),pai(X,Y)],[pai(adam,bill)], [pai(bill,carl)], [genitor(adam,bill)]}

Usos da resolução - decisões [genitor(X,Y),pai(X,Y)] [pai(adam,bill)] [pai(bill,carl)] [genitor(adam,bill)] [genitor(adam,bill)] 1,2 [genitor(bill,carl)] 1,3 [pai(adam,bill)] 1,4 {} 4,5 {} 2,7

Usos da resolução - perguntas Ou Consultas Quem é o genitor de Bill?? genitor(X,bill). X??? Incluir a seguinte cláusula na Base [genitor(X,bill), Resp(X)] Por quê???

Usos da resolução - consultas [genitor(X,Y),pai(X,Y)] [pai(adam,bill)] [pai(bill,carl)] [genitor(X,bill),Resp(X)] [genitor(adam,bill)] 1,2 [genitor(bill,carl)] 1,3 [pai(X,bill),Resp(X)] 1,4 [Resp(adam)] 4,5 [Resp(adam)] 2,7 Pára quando achamos a(s) resposta(s)!

Sobre consultas Pode resultar em mais de uma resposta Se eu disser que mae(anne,bill) e pai (adam,bill) E perguntar “quem é genitor de bill?”

Usos da resolução - decisões [genitor(X,Y),pai(X,Y)] [genitor(X,Y),mae(X,Y)] [pai(adam,bill)] [mae(anne,bill)] [genitor(X,bill),Resp(X)] [genitor(adam,bill)] 1,3 [genitor(anne,bill)] 2,4 [pai(X,bill),Resp(X)] 1,5 [mae(X,bill),Resp(X)] 2,5 [Resp(adam)] 3,8 [Resp(anne)] 4,9

Consultas – informação incompleta Se eu disser que adam ou tom é pai de bill e perguntar quem é pai de bill, o que acontecerá??? A resposta é adam ou tom: [pai(adam,bill), pai(tom,bill)] [pai(X,bill),Resp(X)] [pai(tom,bill),Resp(adam)] 1,2 [Resp(adam),Resp(tom)] 2,3

Resolução eficiente na prática Escolher bem os resolventes a cada passo (refinamentos) Diminuir o espaço de busca (simplificação) Todas as estratégias para melhorar o desempenho da resolução passam por atacar estes problemas

Estratégias de refinamento Resolução Linear Construir uma linha, ao invés de uma árvore de expansões Usar sempre a cláusula gerada por último Se pensarmos neste problema como uma busca para um caminho que contém a solução, que tipo de busca é essa??

Solução para “Cap. West”

Solução por resolução linear

Estratégias de refinamento Estratégia Unitária Privilegiar cláusulas com um só literal Como pegamos cláusulas pequenas, há garantia de chegarmos rápido a {} Porém, não é completa para qualquer conjunto de cláusulas Mas é completa para cláusulas de Horn A1 ^...An  A

Estratégias de Simplificação Eliminação de literais puros Um literal é puro se não existe no conjunto de prova a sua negação Ex: {[P],[Q],[P,L],[L,Q],[P,Q,R], ,[R]} L é puro, pois nunca será eliminado por resolução Então é melhor retirar as cláusulas que o contém do processo de busca da {} Se é para chegar a {}, podemos partir de {[P],[Q],[P,Q,R], ,[R]}

Estratégias de Simplificação Descarte por englobamento (ou subsunção) Uma cláusula C1 engloba outra C2 sse existir uma substituição O, tal que C1O  C2 Se descartamos C2, não estamos perdendo a insatisfatibilidade do conjunto, apenas apressando a chegada de {} Ex1: P(x)  P(y) v Q(z) Ex2: A v B v C, A v C, B v C Resolvendo as 2 últimas, temos AvB, que engloba a 1ª. Então o conjunto resultante seria A v B, A v C, B v C Ajuda a resolução unitária

E este exemplo por linear? {[P,Q],[P,Q],[P,Q],[P,Q]} Claramente insatisfatível!! Porém IMPOSSÍVEL por linear (e tb por unitária) !! Qual a vantagem das cláusulas de Horn para casos como este??

Resolução e Cláusulas de Horn É que sempre que aparece um negado (o conseqüente), se ele existir em outra cláusula, ele não estará negado! A1 ^...An  A é {[A1],...[An],[A]} Então se existir prova, será fácil encontrá-la Correto e completo e barato, se existir prova

Exemplo em Prolog avo(X,Y) :- genitor(X,Z), genitor(Z,Y).  ^  ^ genitor(X,Y) :- pai(X,Y). genitor(X,Y) :- mae(X,Y). pai(adam,bill). pai(bill,carl). mae(anne,bill). Quem é avó(ô) nessa história????

Árvore SLD ?- avo(X,Y). ?- gen(X,Z),gen(Z,Y). ?- pai(bill,Y). X=anne ?- gen(bill,Y). X=adam ?- pai(X,Z),gen(Z,Y). ?- mae(X,Z),gen(Z,Y). ?- gen(carl,Y). ?- pai(bill,Y). ?- mae(bill,Y). ?- pai(bill,Y). ?- m(bill,Y). ?- pai(carl,Y). ?- m(carl,Y). ?- fail. ?- fail. ?- true. Y=carl ?- fail. ?- true. Y=carl ?- fail.

Conclusões

Paradigma de programação A ”função” membro, implementada como relação: member(X,[X|Xs]). member(X,[Y|Ys]) :- member(X,Ys). Vão-se gerando sentenças novas que precisam ser provadas até que uma é provada! Pode entrar em loop, por falta do occur-check

Negação por falha em Prolog Prolog tem várias extensões (ex:LIFE, CHR,...), com diferentes melhorias Prolog tem comandos built-in para controlar a busca na árvore Ex: evitar insistir em determinados ramos Operador de negação por falha em premissas: not p(X) verificado sse p(X) falha Isso é MUITO DIFERENTE de p(X) SER FALSO, mas quebra o galho muitas vezes

Implementando resolução Prover boas estruturas de dados Indexação e hashtables Boas ligações de pesquisa com BDs BDs inteligentes ou dedutivos Estamos sempre recuperando literais para tentar prová-los Bons algoritmos de unificação O problema reduz a busca em árvore Obj: Reduzir o backtracking Ex: Residente(p,Itu)^Ocupacao(p,Presidente)