Lógica Computacional (CC2003)

Documentos relacionados
Exercícios de Lógica Computacional

Ex. 1) Considere que a árvore seguinte corresponde a uma parte do espaço de estados de um jogo de dois agentes: f=7 f=7 f=1 f=2

Capítulo 3 Lógica de Primeira Ordem

Lógica Computacional

Lógica Computacional

Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012

SCC Capítulo 2 Lógica de Predicados

Simplificação de Enunciados com um Quantificador Petrucio Viana

Exercício proposto em Algoritmos do Cotidiano

Modelagem Computacional. Parte 8 2

Programa. Raciocínio Lógico Matemático. Livros. Provas

Lógica Computacional DCC/FCUP 2017/18

Noções de Lógica Matemática. Domingos Moreira Cardoso Maria Paula Carvalho

DIM Resolução e método tableaux DIM / 37

A sintaxe do cálculo de predicados (II), cap. 7 de Introdução à Lógica (Mortari 2001) Luiz Arthur Pagani

Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010

Cálculo de Predicados. Matemática Discreta. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG. março

Conferência Árvores de resolução SLD

Fundamentos de Lógica Matemática

Predicados e Quantificadores

Lógica para Computação

Cálculo de Predicados

Fórmulas Bem Formadas (wff) Prioridade dos Conectivos. Prioridade dos Conectivos. Semântica do CR. Semântica do CR

Cálculo Numérico / Métodos Numéricos. Solução de equações polinomiais Briot-Ruffini-Horner

Polinómios. Integração de Fracções Racionais

Lógica para computação - Linguagem da Lógica de Predicados

Cálculo de Predicados 1

Polinómios. Integração de Funções Racionais

Exame (1º Teste) de Análise Numérica (LMAC, MEIC, MMA) Instituto Superior Técnico, 11 de Janeiro de 2016, 15h00-16h15 (1º Teste)

EXERCICIOS RESOLVIDOS - INT-POLIN - MMQ - INT-NUMERICA - EDO

Fundamentos de Lógica Matemática

Sistema dedutivo. Sistema dedutivo

Resolução de problemas com apenas restrições lineares de igualdade

Capítulo 3 Lógica de Primeira Ordem

Matemática Discreta. Lógica de Predicados. Profa. Sheila Morais de Almeida. agosto DAINF-UTFPR-PG

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 12

Determinação de raízes de polinômios: Método de Briot-Ruffini-Horner

23 e 24. Forma Quadrática e Equação do Segundo Grau em R 3. Sumário

Lógica Proposicional. LEIC - Tagus Park 2 o Semestre, Ano Lectivo 2007/08. c Inês Lynce c Luísa Coheur

Determinação de raízes de polinômios: Método de Briot-Ruffini-Horner

Algoritmos Numéricos I. Lucia Catabriga 1

Capítulo 5 - Optimização Não-Linear

Teoria dos Conjuntos MATEMÁTICA DISCRETA CONCEITOS PRELIMINARES. Fundamentos de Lógica Técnicas Elementares de Prova A NOÇÃO DE CONJUNTO

Unidade 3. Resolução. Objetivos:

Sabendo que f(x) é um polinômio de grau 2, utilize a formula do trapézio e calcule exatamente

4 ÁLGEBRA ELEMENTAR. 4.1 Monômios e polinômios: valor numérico e operações.

SME Cálculo Numérico. Lista de Exercícios: Gabarito

MATEMÁTICA DISCRETA CONCEITOS PRELIMINARES

Lógica para Computação Primeiro Semestre, Aula 10: Resolução. Prof. Ricardo Dutra da Silva

Transformações Geométricas

Transformações Geométricas Grafos de Cena

UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO. Exercícios para as aulas práticas de Lógica para Programação

Fórmulas da lógica proposicional

Polinômios (B) 4 (C) 2 (D) 1 3 (E). 2

UNIVERSIDADE FEDERAL DO ABC. 1 Existência e unicidade de zeros; Métodos da bissecção e falsa posição

Lógica de Primeira Ordem. Capítulo 9

Inteligência Artificial IA II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO

UNIVERSIDADE FEDERAL DO ABC

Matemática Computacional - 2 o ano LEMat e MEQ

Lógica predicados. Lógica predicados (continuação)

Matemática A - 10 o Ano

Definição: Uma função de uma variável x é uma função polinomial complexa se pudermos escrevê-la na forma n

Sistemas Dedutivos Lógica de 1ª. Ordem (LPO)

Métodos de Pesquisa Operacional

Transcrição:

Lógica Computacional (CC2003) Nelma Moreira Lógica Computacional 24 Conteúdo 1 Introdução à Programação em Lógica 1 1.1 Resolução SLD............................ 1 1 Introdução à Programação em Lógica 1.1 Resolução SLD Seja P um programa (conjunto de cláusulas de Horn positivas) e G uma cláusula negativa (objectivo), β 1,..., β n (= β 1 β n ). Temos que P = β 1 Sendo a resolução integra, basta que Mas então para alguma substituição θ. Mais especificamente: Resposta correcta β n sse = P G P {G} F. P = (β 1 β n )θ Uma substituição de variáveis θ em G é uma resposta correcta se P = ( Gθ) onde é o fecho universal das variáveis livres em Gθ. 1

Exemplo 24.1. Seja P Double(0, 0) Double(s(x), s(s(y))) Double(x, y) Então para P { Double(x, s(y)}, [s(0)/x, s(0)/y] é uma resposta correcta. Seja G um objectivo α 1,..., α m,..., α k e α β 1,..., β q, uma cláusula C. G é derivado por resolução de G e C, com unificador mais geral θ se: 1. α m é o átomo seleccionado em G 2. θ é um umg de α m e α 3. G é (α 1,..., β 1,..., β q,..., α k )θ, isto é 4. G diz-se a a resolvente de G e C. α 1,..., α m,..., α k α β 1,..., β q (α 1,..., β 1,..., β q,..., α k )θ Exemplo 24.2. Considera o seguinte programa P: e o objectivo: q(y, b), q(b, z). q(x, y) p(x, y) q(x, y) p(x, z), p(z, y) p(b, a) p(c, a) p(d, b) p(e, b) Exemplo 24.3. Em cada passo escolher um literal que complemente a cabeça duma cláusula do programa (usar sempre variáveis novas para o programa!). 1. Escolher q(y, b) e resolver com a primeira cláusula (q(x 1, y 1 ) p(x 1, y 1 )): p(y, b), q(b, z) e a substituição [y/x 1, b/y 1 ] 2. Escolher p(y, b) e resolver com a quinta cláusula ( p(d, b)): q(b, z) e substituição [d/y] 2

3. Resolver o literal que resta com a primeira cláusula (q(x 2, y 2 ) p(x 2, y 2 )): p(b, z) 4. Resolver o literal que resta com a terceira cláusula (p(b, a)): [] e a substituição [a/z]. A resposta é [d/y, a/z] e P = q(d, b) (q(b, a). E também, P = y zq(y, b) q(b, z) (como se pretendia...). Regras de Computação e de Procura Regra de Computação Uma regra de computação é uma regra para determinar um literal do objectivo com o qual aplicar a regra de resolução (resolver). Estratégia de Procura Uma estratégia de procura é uma regra para determinar como escolher qual a cláusula do programa que se vai usar para resolver com o literal escolhido no objectivo. Resolução SLD (Selectiva Linear para Claúsulas Definidas) Seja P um programa definido, R uma regra de computação e G um objectivo. Uma derivação por resolução-sld é uma sequência de passos de resolução entre as cláusulas do objectivo e as de programa. Seja G 0 = G. Dada a cláusula G i, G i+1 é obtida selecionando um literal β i de G i, de acordo com R e escolhendo C i P (com variáveis novas) tal que a cabeça de C i unifica com β i com umg θ i : G i = β 1,..., β i, β i+1,..., β n C i = α α 1,..., α k αθ i = β i θ i G i+1 = (β 1,..., α 1,..., α k, β i+1,..., β n )θ i Refutação SLD 3

G 0 = G C 1, θ 1 G 1 C 2, θ 2 G 2. G n 1 G n. C n, θ n Uma refutação SLD é uma derivação-sld de []. Se G n = [] dizemos que a refutação tem comprimento n. Exemplo 24.4. Seja P : Max(x, y, x) Less eq(y, x) Refutação SLD Max(x, y, y) Less eq(x, y) Less eq(0, x) Less eq(s(x), s(y)) Less eq(x, y) e G : Max(s(0), x, s(s(0))) Uma refutação para P {G} de comprimento n = 3 é: Max(s(0), x, s(s(0))) (Max(x 1, y 1, y 1) Less eq(x 1, y 1) θ 1 = [s(0)/x 1, s(s(0))/x, s(s(0))/y 1]) Less eq(s(0), s(s(0))) (Less eq(s(x 2), s(y 2)) Less eq(x 2, y 2)) θ 2 = [0/x 2, s(0)/y 2]) Less eq(0, s(0)) (Less eq(0, x 3), θ 3 = [s(0)/x 3]) ɛ Árvore de derivação SLD Dado um programa definido P, uma regra de computação e um objectivo G, todas as derivações-sld podem ser representadas por uma árvore tal que: A raiz é etiquetada por G Cada nó é etiquetado com uma cláusula objectivo G i e cria-se um novo ramo para cada G ij que pode ser obtido resolvendo G i com uma cláusula C j cuja cabeça unifique com um literal de G i. As folhas se forem ɛ são designadas nós de sucesso (que correspondem a soluções), senão nós de insucesso (ou falha). Árvore de derivação SLD Os ramos da árvore podem então ser 4

de sucesso se terminarem numa folha de sucesso de falha se terminarem numa folha de falha infinitos se corresponderem a uma derivação infinita Exemplo 24.5. Determinar a árvore-sld do exemplo 24.2, considerando como regra de computação a escolha do literal mais à esquerda. Um exemplo de um programa Prolog. Exemplo 24.6. Existem 5 casas de cores diferentes, habitadas por homens de nacionalidades diferentes, cada um dos quais tem um animal de estimação diferente, uma bebida preferida diferente e uma marca de cigarros diferente. E tais que: 1. o inglês vive na casa vermelha 2. o espanhol tem um cão 3. o dono da casa verde bebe café 4. o ucraniano bebe chá 5. a casa verde fica imediatamente à direita da casa cor de marfim 6. o fumador de Winston cria caracóis 7. o dono da casa amarela fuma Kools 8. o dono da casa do meio bebe leite 9. o norueguês mora na primeira casa da esquerda 10. o homem que fuma Chesterfields mora na casa ao lado do dono da raposa 11. o homem que fuma Kools mora ao lado do dono do cavalo 12. o homem que bebe sumo de laranja fuma Lucky Strike 13. o japonês fuma Parliaments 14. o norueguês vive ao lado da casa azul Quem é o dono da zebra? Quem prefere água? Exercício 24.1. Para cada uma das seguintes fórmulas encontre uma fórmula em forma clausal. Para tal: 1. Converte numa fórmula equivalente em forma normal prenexa. 2. Elimina os quantificadores existênciais introduzindo novos símbolos funcionais ( Skolemização. 3. Converte a matriz da fórmula resultante para forma normal conjuntitiva. 4. Distribuí os quantificadores universais pelas conjunções, aplicando a regra: x(ϕ ψ) xϕ xψ 5. Escreve a fórmula resultante em notação clausal. 5

a) xp (x) yq(y); b) ( xp (x) xq(x)) z( P (z) Q(z)); c) y( x(p (x, y) (Q(x) Q(f(x))))); d) xs(x, x) z(p (z) xr(x, z)) Exercício 24.2. Aplica o algoritmo de unificação de Robinson a cada um dos conjuntos S de expressões simples seguintes, indicando a resposta do algoritmo e ainda para cada iteração efectuada a substituição correspondente σ i e os conjuntos D i e Sσ i. 1. S = {P (f(a), g(x)), P (y, y)}; 2. S = {P (a, x, h(g(z))), P (z, h(y), h(y))}; 3. S = {P (x, x), P (y, f(y))}; 4. S = {R(f(x, g(u))), R(f(g(u), g(z))}; 5. S = {P (x, f(z)), P (f(z), y), P (y, z)} Resolução Para o último caso σ 0 = ι D 0 = {x, f(z), y}, σ 1 = [f(z)/x] e Sσ 1 = {P(f(z), f(z)), P(f(z), y), P(y, z)} D 1 = {f(z), y}, σ 2 = σ 1 [f(z)/y] = [f(z)/x, f(z)/y] e Sσ 2 = {P(f(z), f(z)), P(f(z), f(z)), P(f(z), z)} D 2 = {f(z), z}, como z ocorre em f(z) o algoritmo termina indicando que S não é unificável. Exercício 24.3. Considera G o objectivo P(x, x) e o programa P seguinte: P(a, b) P(x, z) P(x, y), P(y, z) P(x, y) P(y, x) Calcula uma refutação-sld para P {G} e a resposta calculada. 6

Resolução P(x, x) P(x 1, z 1 ) P(x 1, y 1 ), P(y 1, z 1 ) σ 1 = [x/x 1, x/z 1 ] P(x, y 1 ), P(y 1, x) P(a, b) σ 2 = [a/x/, b/y 1 ] P(b, a) P(x 2, y 2 ) P(y 2, x 2 ) σ 3 = [b/x 2 /, a/y 2 ] P(a, b) P(a, b) σ 4 = ι ɛ σ 1 σ 2 σ 3 σ 4 = [a/x 1, a/z 1, a/x, b/y 1, b/x 2, a/y 2 ] Resposta calculada:σ = [a/x] Exercício 24.4. Para o programa definido P e objectivo G (da forma β) descritos abaixo: Calcula uma refutação SLD para P {G}, indicando as substituições em cada passo e a resposta calculada, no fim. Representa a refutação-sld por uma árvore de derivação. Verifica a execução do programa com o objectivo em Prolog. 1. P : Add(x, 0, x) Add(x, s(y), s(z)) Add(x, y, z) G : Add(s(0), x, s(s(y)) 2. P : Lenght(nil, 0) Lenght(cons(x, y), s(z)) Lenght(y, z) G : 3. P : Lenght(x, s(s(y))) Append(cons(x, x R ), x L, cons(x, x RL )) Append(x R, x L, x RL ) Append(nil, x L, x L ) G : Append(cons(x, nil), cons(x, nil), y) 4. P : Member(x, cons(x, y)) Member(x, cons(y, z)) Member(x, z) G : Member(x, cons(y, cons(x, z))) 7