Lógica para Computação Segundo Semestre, Aula 10: SAT. Prof. Ricardo Dutra da Silva. ( p (q ( q r))) ( p r) ( p q) ( p q r) p r.

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

Aula 3: Linguagem Proposicional

Aula 7: Dedução Natural 2

Lógica Computacional Aula 4

Lógica para computação - Propriedades Semânticas da Lógica Proposicional (parte 2/2) Alfabeto Simplificado e Formas Normais

Aula 8: Tableaux Analíticos

Aula 6: Dedução Natural

Relações semânticas entre os conectivos da Lógica Proposicional(Capítulo 5)

Aula 4: Consequência Lógica e Equivalência Lógica

Aula 6: Dedução Natural

Lógica Computacional. Normalização e Formas Normais. Literais, Cláusulas e Monómios; Formas Normais NNF, CNF e DNF. Algoritmos de Conversão

Análise e Projeto de Algoritmos

Problemas NP-completos

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

Lógica Proposicional

Lógica Computacional

Lógica Computacional

Nelma Moreira. Aula 17

Fundamentos de Lógica Matemática

Lógica Computacional

Análise e Síntese de Algoritmos

Resolução Proposicional Fernando Bozza, Vanessa Maria da Silva

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34

2.3.4 Algoritmos de SAT

Agenda. Complexidade Não Determinista A classe NP. A classe Co-NP Reduções de tempo polinomial. Definida por. Exemplos em:

Análise e Projeto de Algoritmos

Lógica para Computação

ESCOLA ONLINE DE CIÊNCIAS FORMAIS CURSO DE INTRODUÇÃO À LÓGICA MATEMÁTICA (2) METALÓGICA DO CÁLCULO PROPOSICIONAL AULA 06 FORMAS NORMAIS

Problemas NP-Completos Bolas Mágicas

Afirmações Matemáticas

Lógica para computação

Reduções de Problemas Difíceis

Lógica para Computação

Lyneker Amorim (T1) Philipe Farias Rafael Mota Yure Bonifacio

Lógica Computacional (CC2003)

Lógica Proposicional Métodos de Validação de Fórmulas. José Gustavo de Souza Paiva. Introdução

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

LÓGICA PROPOSICIONAL

Aplicação: Resolvendo Problemas Usando Lógica

Métodos de Verificação

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

Introdução ao Curso. Área de Teoria DCC/UFMG 2019/01. Introdução à Lógica Computacional Introdução ao Curso Área de Teoria DCC/UFMG /01 1 / 22

Métodos para determinação de propriedades semânticas de fórmulas da Lógica Proposicional(Capítulo 4)

Lógica Computacional Aulas 8 e 9

Introdução. Programação em Lógica. Resolução na Lógica Proposional. Resolução na Lógica Proposional. Resolução na Lógica Proposional.

Lógica Computacional

Inteligência Artificial Taguspark

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 15 Agentes que Raciocinam Logicamente

Lógica Computacional

Lógica Computacional. Nelma Moreira. Departamento de Ciência de Computadores Faculdade de Ciências, Universidade do Porto

Lógica Proposicional Parte II. Raquel de Souza Francisco Bravo 25 de outubro de 2016

Lógica para Programação

Jogos de Anti-Coordenação e Colorações Estáveis em Grafos. Renato Lui Geh NUSP:

Linguagens Não-Regulares

Lógica Computacional. Nelma Moreira. Departamento de Ciência de Computadores Faculdade de Ciências, Universidade do Porto

Planejamento em IA. Blackbox Graphplan + SATplan. Leliane Nunes de Barros

impossível conclusão falso premissas verdadeiro

JOÃO NUNES de SOUZA. LÓGICA para CIÊNCIA da COMPUTAÇÃO. Uma introdução concisa

Lógica Computacional

Lógica Computacional

TEORIA DE COMPLEXIDADE

2.5 FORMAS NORMAIS. Forma normal da negação

Fundamentos de Lógica Matemática

NHI Lógica Básica (Lógica Clássica de Primeira Ordem)

Aula 2: Linguagem Proposicional

Os Fundamentos: Lógica Proposicional

RESOLVENDO O PROBLEMA PSAT COM O AUXÍLIO DA FERRAMENTA DE SOFTWARE LIVRE MINISAT. Aluno: Mikail Campos Freitas Orientador: Prof.

Projeto e Análise de Algoritmos

MDI0001 Matemática Discreta Aula 01

Lógica para Computação. Álgebra de Boole

Busca e Decisão. Problemas de Otimização. Kakuro. P e NP. Pode-se resolver o Kakuro somente resolvendo problemas de decisão?

Apresentação do curso

Lógica Computacional

LÓGICA EM COMPUTAÇÃO

Lógica Computacional

JOÃO NUNES de SOUZA. LÓGICA para CIÊNCIA da COMPUTAÇÃO. Uma introdução concisa

AULA 1 Introdução aos limites 3. AULA 2 Propriedades dos limites 5. AULA 3 Continuidade de funções 8. AULA 4 Limites infinitos 10

Uma Conjectura Refutada sobre Satisfazibilidade Probabilística

Provadores de Teoremas baseados em contagem

2.6 O ALGORITMO DPLL. Preliminares

Lógica para Computação

Lógica Proposicional e Álgebra de Boole

Lógica Computacional Frequência. Universidade da Beira Interior

Complexidade de Algoritmos. Edson Prestes

Cálculo proposicional

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

Lógica Computacional DCC/FCUP 2017/18

Apresentação do curso

Lógica Proposicional Semântica e Tabelas Verdade

Lógica Computacional. Nelma Moreira. Departamento de Ciência de Computadores Faculdade de Ciências, Universidade do Porto

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 16: Grafos Planares. Departamento de Matemática Aplicada

Pré-Cálculo. Humberto José Bortolossi. Aula 2 13 de agosto de Departamento de Matemática Aplicada Universidade Federal Fluminense

Lógica Computacional

SCC Capítulo 2 Lógica de Predicados

Aula 12: Lógica de Predicados

Complexidade de Algoritmos

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

Lógica. Fernando Fontes. Universidade do Minho. Fernando Fontes (Universidade do Minho) Lógica 1 / 65

Lógica para Programação

Fundamentos da Computação 1. Aula 03

Transcrição:

Lógica para Computação Segundo Semestre, 2014 Aula 10: SAT DAINF-UTFPR Prof. Ricardo Dutra da Silva Definição 10.1. SAT é o problema de decidir se existe uma valoração que satisfaça uma fórmula proposicional. A resposta do problema é sim se a fórmula for satisfazível e não caso contrário. Definição 10.2. Seja A uma fórmula proposicional, sua forma clausal é um conjunto de cláusulas disjuntivas que é satisfazível se e somente se A é satisfazível. Exemplo 10.1 Dada a seguinte fórmula proposicional A = (p (q (q r))) (p r). Podemos obter a fórmula em FNC equivalente (p (q (q r))) ( p r) (p (q ( q r))) ( p r) ( p (q ( q r))) ( p r) (( p q) ( p ( q r))) ( p r) (( p q) ( p q r)) ( p r) ( p q) ( p q r) ( p r) ( p q) ( p q r) p r. Na forma clausal, temos que A = { p q, p q r, p, r}. Para que a fórmula A seja satisfazível, todas as cláusulas precisam ser verdadeiras. Definição 10.3. k-sat é o problema de decidir se existe uma valoração que satisfaça uma fórmula proposicional, na forma clausal, cujas cláusulas contêm até k literais. O que se sabe sobre o k-sat: 2-SAT pode ser resolvido eficientemente (tempo polinomial); 1

2 Aula 10: SAT k-sat, k 3, é NP-completo. Vimos anteriormente que tabelas-verdade podem ser usadas para verificar se formas são satisfazíveis. No entanto, fica evidente a dificuldade do problema, uma vez que é possível que tenhamos que analisar 2 n linhas de tabela para uma fórmula com n variáveis proposicionais. Nosso propósito agora é tentar métodos mais eficientes de verificar se uma fórmula pode ser satisfeita. Vamos analisar inicialmente algumas propriedades de fórmulas na forma clausal. Definição 10.4. Um literal L é um átomo ou a negação de um átomo. Definição 10.5. for a negação de um átomo. Um literal é positivo se ele for um átomo. Um literal é negativo se ele Definição 10.6. Definição 10.7. Uma cláusula é uma disjunção de literais. Uma cláusula unitária é formada por um único literal. Definição 10.8. Uma cláusula é positiva se todos os seus literais são positivos. Uma cláusula é negativa se todos os seus literais são negativos. Exemplo 10.2 Algumas cláusulas positivas: p q p q r r. Algumas cláusulas negativas: p q p q r r.

Aula 10: SAT 3 Lema 10.1. Seja C um conjunto de cláusulas insatisfazíveis, então C contém pelo menos uma cláusula positiva e pelo menos uma cláusula negativa. Demonstração. Seja um conjunto C de fórmulas insatisfazível. Suponha que não existem cláusulas positivas em C. Então todas as cláusulas contém pelo menos um literal negativo. No entanto, neste caso, basta fazer a valoração de todos os átomos falsa e a fórmula será satisfeita. Mas isto é uma contradição, logo deve existir pelo menos uma cláusula positiva. A prova da cláusula negativa segue com raciocínio semelhante (convença-se). Exemplo 10.3 Seja o conjunto de cláusulas C = { p q, p q r, p, r}, pela tabela-verdade verificamos que a fórmula é insatisfazível. p q r p q r p q p q p q r C 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0 Então a fórmula deve conter cláusulas positivas e negativas. De fato, r é uma cláusula negativa e p é uma cláusula positiva. No entanto, o resultado não é suficiente para que possamos afirma que sempre que houver cláusulas positivas e negativas a fórmula será insatisfazível.

4 Aula 10: SAT Exemplo 10.4 Seja o conjunto de cláusulas C = { p q, p, q}. Existem cláusulas positivas e negativas mas a fórmula é satisfazível. p q p q p q C 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 Vamos inicialmente estudar um tipo de cláusula que possui restrições e verificar que podemos criar uma método para decidir se uma fórmula é satisfazível de maneira mais eficiente que uma tabela-verdade. Definição 10.9. Uma cláusula de Horn é uma disjunção de literais que contém no máximo um literal positivo. As cláusulas de Horn podem ser de três tipos: fatos: cláusulas unitárias com o único literal positivo; regras: cláusulas da forma p 1 p 2... q. restrições: cláusulas sem nenhum átomo positivo: p 1 p 2... p n, ou, equivalentemente, (p 1 p 2... p n ). Exemplo 10.5 A fórmula em FNC abaixo é uma fórmula de Horn. ( p q s p) ( q r p) ( p s s) p s A fórmula na forma clausal é dada abaixo. { p q s p, q r p, p s s, p, s} As cláusulas de Horn possuem propriedades que tornam a verificação de satisfazibilidade mais simples do que em cláusulas genéricas. Uma cláusula de Horn positiva é um fato, ou

Aula 10: SAT 5 seja, uma cláusula unitária positiva. O restante das cláusulas necessariamente possui literais negativos. Lema 10.2. Seja C um conjunto de cláusulas de Horn sem nenhum fato. Então, C é satisfazível. Demonstração. Em um conjunto de cláusulas de Horn sem fatos, todas as cláusulas têm pelo menos um literal negativo. Basta então fazer, para todo átomo p, V (p) = 0. O literal negativo das cláusulas será verdadeiro e todas as cláusulas serão satisfeitas. Exemplo 10.6 Considere as seguintes cláusulas de Horn, C = { p q s p, p r p, p s s}. Não há fatos, logo basta fazer V (p) = V (q) = V (r) = V (s) = 0 e temos ( p q s p) ( p r p) ( p s s) ( 0 0 0 0) ( 0 0 0) ( 0 0 0) (1 1 1 0) (1 1 0) (1 1 0) (1) (1) (1) 1 No entanto, cláusulas de Horn podem ter fatos! Como proceder nesse caso? Uma fato é uma cláusula positiva, portanto, seu único átomo p, necessariamente, tem que ser verdadeiro, caso contrário não há como satisfazer uma fórmula de Horn. Seja um fato p em um conjunto C de cláusulas de Horn, esse fato influencia na procura pela satisfazibilidade das cláusulas: 1. A satisfazibilidade das cláusulas não depende mais de p (V (p) = 1), apenas de C = C {p}. 2. p pode aparecer positivo em cláusulas da forma p 1 p 2... p, neste caso a cláusula torna-se verdadeira, já que p é verdadeiro. Não dependemos mais de qualquer cláusula desta forma e podemos removê-las do conjunto C. 3. p pode aparecer negativo em cláusulas da forma p p 1... p n, neste caso as cláusulas dependem apenas dos outros literais para serem verdadeiras, já que p é

6 Aula 10: SAT falso. Não dependemos mais do literal p e podemos substituir as cláusulas do tipo p p 1... p n por p 1... p n. Chamaremos o conjunto de cláusulas resultantes de conjunto simplificado e cada uma das operações aplicadas uma simplificação. Exemplo 10.7 Considere as seguintes cláusulas de Horn, C = { p q s p, p r p, p s s, s}. Temos um fato s. Logo V (s) = 1 e podemos remover s do conjunto de cláusulas. C = { p q s p, p r p, p s s} Mas s ainda aparece positivo em outras cláusulas e podemos removê-las. C = { p q s p, p r p} Ainda é possível remover o literal s de qualquer cláusula. C = { p q p, p r p} Agora temos um conjunto de cláusulas sem fatos, logo elas são satisfazíveis. Basta fazer V (p) = V (q) = V (r) = 0. Como consequência, C é satisfazível, com a valoração V (p) = V (q) = V (r) = 0 e V (s) = 1. Reescrevendo a fórmula em FNC temos a valoração abaixo. ( p q s p) ( p r p) ( p s s) s ( 0 0 1 0) ( 0 0 0) ( 0 1 1) 1 (1 1 0 0) (1 1 0) (1 0 1) 1 1 1 1 1 1 Exemplo 10.8 Considere as seguintes cláusulas de Horn, C = { p q, p}.

Aula 10: SAT 7 Temos um fato p. Logo V (p) = 1 e podemos remover p do conjunto de cláusulas. C = { p q} Removemos o literal p de qualquer cláusula. C = {q} Ficamos com uma única cláusula para ser satisfeita. Mas esta cláusula é um fato então basta fazer V (q) = 1. ( p q) p ( 1 1) 1 (0 1) 1 1 1 1 Exemplo 10.9 Considere as seguintes cláusulas de Horn, C = { p q, q s, p, s}. Temos um fato s. Logo V (s) = 1 e podemos remover s do conjunto de cláusulas. C = { p q, q s, p} Mas s ainda aparece negativo em outras cláusulas e podemos usar a terceira simplificação. C = { p q, q, p} Novamente temos um fato, p. Façamos V (p) = 1 e podemos removê-lo do conjunto de cláusulas. C = { p q, q}

8 Aula 10: SAT Podemos remover o literal p de qualquer cláusula. C = {q, q} Chegamos em cláusulas contraditórias e portanto insatisfazíveis. V (q) = 1 e V ( q) = 1 ao mesmo tempo. Vimos que V (s) = V (p) = 1. Se fizermos V (q) = 0 Não há como fazer ( p q) ( q s) p s ( 1 0) ( 0 1) 1 1 (0 0) (1 0) 1 1 0 1 1 1 0 falsificamos C. O mesmo ocorre se V (q) = 1. ( p q) ( q s) p s ( 1 1) ( 1 1) 1 1 (0 1) (0 0) 1 1 1 0 1 1 0