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.

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Lógica de Predicados e Representação de Conhecimento
Capítulo 7 Tableaux semânticos e resolução na Lógica Proposicional
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
Tópicos de Lógica Proposicional
Formalizar semântica da LPO
Elsa Carvalho 241 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Interpretação.
Elsa Carvalho 49 Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
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.
Elsa Carvalho 112 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Existe também.
Capítulo 2 - Derivadas No final do capítulo 1, já definimos o coeficiente angular de uma curva y = f(x) no ponto onde x = x0. Chamamos esse limite, quando.
Derivadas Já definimos o coeficiente angular de uma curva y = f(x) no ponto onde x = x0. Chamamos esse limite, quando ele existia, de derivada de f em.
Introdução à Programação Lógica
Máquinas de Turing Não Deterministas
Resolução.
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP.
Medida do Tempo de Execução de um Programa
Identificando Linguagens Não Regulares
SISTEMAS LINEARES I Prof. Marlon.
Lógica para Computação
RESOLUÇÃO PROPOSICIONAL
RESOLUÇÃO PROPOSICIONAL
AXIOMATIZAÇÃO Equipe: André Augusto Kaviatkovski, Daniel Elias Ferreira, Vinicius Zaramella.
Linguagem de 1ª ordem da teoria de conjuntos
Aron Sebastian André Sousa Vivian Maria Márcio André
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE MATEMÁTICA
Análise do Lugar das Raízes
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Prof. Roberto Cristóvão
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Lógica de Predicados Teorema de Herbrand.
Componentes: Lucas, Ítalo, Wagner, Newton e Gabriel
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Cássio Cristo Dawyson Guerra Matheu Santos
Capítulo 11 Programação Lógica
Teorema de Herbrand e Unificação
Implementação de Resolução
Teorema de Herbrand e Unificação
Sistemas Especialistas
1 - Equações Diferenciais Ordinárias
André Luiz da Costa Carvalho
Introdução a Cálculo Numérico
Elsa Carvalho 186 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição.
Inteligência Artificial
Lógica para Computação
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Estruturas de.
94 Elsa Carvalho Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
INE Fundamentos de Matemática Discreta para a Computação
©Silberschatz, Korth and Sudarshan (modificado)7.3.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design.
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Decidibilidade, Corretude, Completude, Consistência
Sistema Formal Um Sistema Formal para a lógica proposicional é uma 2-tupla < L, R >, onde: L: linguagem proposicional R: conjunto de regras de inferências.
Linguagem de 1ª ordem da teoria de conjuntos
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.
Elsa Carvalho BEGIN  := id; b:=true; S:=[,..., ] WHILE (S  AND b)DO := top(S); S:=pop(S); := ; IF s e v são da forma f(t 1,... t n ), g(r 1,..., r m.
Elsa Carvalho 1 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Conceitos Prolog.
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação recursiva.
Sistema Formal Um Sistema Formal para a lógica proposicional é uma 2-tupla < L, R >, onde: L: linguagem proposicional R: conjunto de regras de inferências.
Busca em Espaço de Estados Parte2 Algoritmos de Busca Cega
Anjolina Grisi de Oliveira
Vinicius Ponte Machado
Interpretação do Teorema de Herbrand
Informática Teórica Engenharia da Computação
Aulão de Matemática Análise Combinatória Professor: Mundico
Transcrição da apresentação:

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 variáveis) No caso da resolução com variáveis temos, de uma maneira mais formal, considerando as seguintes cláusulas: C1: A(arg1)  A 1  A 2  …  A n C2: B  A(arg2)  B 1  …  B m se existir um unificador mais geral  para A tal que A(arg1)  = A(arg2)  então estas duas cláusulas podem ser premissas do passo de resolução, em que o resolvente é: C3: (B  A 1  A 2  …  A n  B 1  …  B m ) 

Elsa Carvalho 204 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução (com variáveis) C1:gosta(ana, X)  gosta(X, logica) C2:gosta(luis, Y)  divertido(Y)  = {X/luis, Y/logica} Assim obtemos o resolvente C3:gosta(ana,luis)  divertido(logica)

Elsa Carvalho 205 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução (com variáveis) O motivo pelo qual temos de utilizar o unificador mais geral é para manter a propriedade de completude da refutação (‘refutation-complete’), quando são impostos critérios de selecção para as premissas dos passos da mesma. Ou seja, termos a garantia de que conseguimos inferir a cláusula vazia para qualquer conjunto que seja inconsistente. Mais adiante estudaremos esses critérios que são utilizados para tornar mais eficiente a resolução.

Elsa Carvalho 206 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução (com variáveis) Por exemplo sabemos que o conjunto de cláusulas C1:  p(X) C2:p(Y)  q(Y) C3:q(a) é inconsistente, logo, pela propriedade de completude da refutação (‘refutation-complete’), teremos de conseguir derivar a cláusula vazia.

Elsa Carvalho 207 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução (com variáveis) Em princípio é possível construir um sistema de prova de teoremas que investigue todas as possibilidades de ‘resolver’ as cláusulas de forma a obter. No entanto tal sistema seria muito ineficiente. Assim, esses sistemas têm critérios de selecção para escolher as premissas e literais de cada passo da refutação. Neste caso teríamos a árvore C1 C2 R1:  q(Y) C3 {X/Y} R2: {Y/a}

Elsa Carvalho 208 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução (com variáveis) Se tivéssemos decidido utilizar outro unificador menos geral no primeiro passo da refutação, por exemplo {X/b, Y/b}, não conseguiríamos obter a cláusula vazia... e perderíamos a propriedade de completude da refutação.

Elsa Carvalho 209 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação em Lógica e Resolução Dado um programa P, uma interrogação tem a forma ?A 1 ...  A n que é lida em lógica como  (A 1 ...  A n ) Para responder à interrogação usando o programa P, aplica-se resolução para testar se P  {  (A 1 ...  A n )}├ e assim P╞  (A 1 ...  A n ) A resolução é um mecanismo construtivo em que são retornados os valores para as variáveis presentes na interrogação. Estes valores são gerados pelo processo de unificação.

Elsa Carvalho 210 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Exemplo C1: append([ ], W, W)  C2: append([U|X],Y, [U|Z])  append(X, Y, Z) Interrogação (query) inicial Q1: ?append([V|L], R, [V,a]) Q1 só pode ser resolvido com a cláusula de programa C2, usando o unificador mais geral  = {U1/V, X1/L, Y1/R, Z1/[a]} onde as novas variáveis são resultado de uma mudança de variáveis (ou renomeação) das variáveis originais de C2.

Elsa Carvalho 211 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação em Lógica e Resolução Quando se vai utilizar uma cláusula de programa como premissa de um passo da resolução é primeiro aplicada uma mudança de variáveis à cláusula. Motivos Evitar a confusão quando usos repetidos da mesma cláusula resultassem em substituições distintas para as suas variáveis. as premissas de algum passo de resolução tivessem variáveis em comum.

Elsa Carvalho 212 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Exemplo (cont.) Os restantes passos podem ser resumidos no grafo seguinte: Q1 C2 C1Q2 C2 Q3: ?append(X2, L2, []) C1

Elsa Carvalho 213 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Exemplo (cont.) Uma forma mais compacta de representar a execução de Q1 é através de uma árvore de resolução (a que vamos chamar árvore SLD ou de pesquisa). Aqui apenas aparecem os resolventes e os u.m.g..  append([V|L], R, [V,a])  append(L, R, [a])  1 = {U1/V, X1/L, Y1/R, Z1/[a] }  append(X2, R, [ ])  4 = {X2/[], R/[], W2/[] }  2 = {L/[], R/[a], W1/[a] }  3 = {Y2/R, U2/a, Z2/[], L/[a|X2]}

Elsa Carvalho 214 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação em Lógica e Resolução Uma computação pode ser vista como um ramo da árvore. O ramo pode terminar com: sucesso(representado por ) insucesso finito (representado por ) insucesso infinito (representado por ∞ ) A resposta derivada é um subconjunto relevante da composição dos unificadores mais gerais utilizados durante os passos de resolução dessa computação. Isto é, é um subconjunto de  * =  1 °  2 °...  n

Elsa Carvalho 215 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação em Lógica e Resolução Neste exemplo temos duas computações e como tal  * =  1 °  2 (ramo da esquerda) e  * =  1 °  3 °  4 (ramo da direita) no entanto utilizamos apenas o subconjunto relevante de  * -  - que contribui para os valores finais das variáveis da interrogação inicial. No caso deste exemplo as variáveis são V, L e R e por isso, se considerarmos o ramo da esquerda, o subconjunto de  1 °  2 = {U1/V, X1/[], Y1/[a], Z1 /[a], L/[], R/[ a] } que nos interessa é  = { L/[], R/[ a]} (resposta derivada para o ramo esquerdo). Como foi dito atrás temos que P╞  ((append ([V|L], R, [V, a])  ) e aplicando a substituição P ╞ (  V)append([ V], [a], [V,a])

Elsa Carvalho 216 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação em Lógica e Resolução Temos ainda outra resposta derivada, uma vez que também chegámos à cláusula vazia através do ramo direito. Ao considerarmos o ramo da direita, o subconjunto de  1 °  3 °  4 = {U1/V, X1/[a], Y1/[], Z1 /[a], Y2/[], U2/a, Z2/[], L/[a], X2/[], R/[ ], W2/[] } que nos interessa é  = { L/[a], R/[ ]} (resposta derivada para o ramo direito). E assim temos P╞  ((append ([V|L], R, [V, a])  ) e aplicando a substituição P ╞ (  V)append([ V,a], [], [V,a])

Elsa Carvalho 217 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação em Lógica e Resolução Em geral (A 1 ...  A n )  pode não ser chã, como no exemplo anterior. Nesse caso a resposta mais geral é o fecho universal da fórmula que também é implicada por P. Assim, a nossa resposta final seria (  V)append([V,a], [], [V,a]), que representa toda a classe de tuplos na relação de ‘append’ que são a solução para a interrogação inicial. Desenhe a árvore de pesquisa para a interrogação ?append ([a,X], [Y], Z)