Análise de Algoritmos
As classes P e NP
An´alise de Algoritmos – p. 1/21
Problemas de decisão e otimização
Problema de decis˜ao: Existe uma solução que
satisfaz uma certa propriedade?
Resposta: “sim” ou “não”.
An´alise de Algoritmos – p. 2/21
Problemas de decisão e otimização
Problema de decis˜ao: Existe uma solução que
satisfaz uma certa propriedade?
Resposta: “sim” ou “não”.
Problema de otimizac¸ ˜ao: Dentre as soluções que
satisfazem uma certa propriedade, qual é a melhor
em relação à uma dada função.
An´alise de Algoritmos – p. 2/21
Problemas de decisão e otimização
Exemplo: Problema do caixeiro viajante.
Otimização: determine um circuito hamiltoniano
de custo mínimo?
An´alise de Algoritmos – p. 3/21
Problemas de decisão e otimização
Exemplo: Problema do caixeiro viajante.
Otimização: determine um circuito hamiltoniano
de custo mínimo?
Decisão: dado um valor L, existe um circuito
hamiltoniano de custo ≤ L?
An´alise de Algoritmos – p. 3/21
Problemas de decisão e otimização
Exemplo: Problema do caixeiro viajante.
Otimização: determine um circuito hamiltoniano
de custo mínimo?
Decisão: dado um valor L, existe um circuito
hamiltoniano de custo ≤ L?
Outros exemplos: mochila, clique, etc.
An´alise de Algoritmos – p. 3/21
As classes P e NP
O estudo da teoria da complexidade de algoritmos
concentra-se nos problemas de decisão.
An´alise de Algoritmos – p. 4/21
As classes P e NP
O estudo da teoria da complexidade de algoritmos
concentra-se nos problemas de decisão.
Definic¸ ˜ao: A classe P representa o conjunto dos
problemas de decisão que podem ser resolvidos
por um algoritmo polinomial.
An´alise de Algoritmos – p. 4/21
As classes P e NP
Definic¸ ˜ao: A classe NP representa o conjunto dos
problemas de decisão em que dado qualquer
instância do problema para a qual a resposta é
“sim”, existe um certificado validando este fato e
que pode ser verificado em tempo polinomial.
An´alise de Algoritmos – p. 5/21
As classes P e NP
Definic¸ ˜ao: A classe NP representa o conjunto dos
problemas de decisão em que dado qualquer
instância do problema para a qual a resposta é
“sim”, existe um certificado validando este fato e
que pode ser verificado em tempo polinomial.
A partir destas definições, temos que
P ⊆ NP
An´alise de Algoritmos – p. 5/21
As classes P e NP
Por exemplo:
Um dado grafo G
é bipartido?
An´alise de Algoritmos – p. 6/21
As classes P e NP
Por exemplo:
Um dado grafo G
é bipartido?
tem aresta de corte?
An´alise de Algoritmos – p. 6/21
As classes P e NP
Por exemplo:
Um dado grafo G
é bipartido?
tem aresta de corte?
é hamiltoniano?
An´alise de Algoritmos – p. 6/21
As classes P e NP
Por exemplo:
Um dado grafo G
é bipartido?
tem aresta de corte?
é hamiltoniano?
é conexo?
An´alise de Algoritmos – p. 6/21
As classes P e NP
Por exemplo:
Um dado grafo G
é bipartido?
tem aresta de corte?
é hamiltoniano?
é conexo?
tem uma clique de tamanho ≥ k?
An´alise de Algoritmos – p. 6/21
As classes P e NP
Por exemplo:
Um dado grafo G
é bipartido?
tem aresta de corte?
é hamiltoniano?
é conexo?
tem uma clique de tamanho ≥ k?
existe caminho de custo ≤ k entre os
vértices u e v?
An´alise de Algoritmos – p. 6/21
As classes P e NP
Por exemplo:
Dois grafos G e H são isomorfos?
An´alise de Algoritmos – p. 7/21
As classes P e NP
Por exemplo:
Dois grafos G e H são isomorfos?
Uma fórmula boleana é satisfatível?
An´alise de Algoritmos – p. 7/21
As classes P e NP
Por exemplo:
Dois grafos G e H são isomorfos?
Uma fórmula boleana é satisfatível?
Questão fundamental da teoria da computação:
P = NP?
An´alise de Algoritmos – p. 7/21
As classes P e NP
Por exemplo:
Dois grafos G e H são isomorfos?
Uma fórmula boleana é satisfatível?
Questão fundamental da teoria da computação:
P = NP?
Em geral, acredita-se que a questão é falsa.
An´alise de Algoritmos – p. 7/21
As classes P e NP
Como mostrar que a questão é falsa?
An´alise de Algoritmos – p. 8/21
As classes P e NP
Como mostrar que a questão é falsa?
Encontrar um problema em NP e mostrar que
nenhum algoritmo polinomial pode resolvê-lo.
An´alise de Algoritmos – p. 8/21
As classes P e NP
Como mostrar que a questão é falsa?
Encontrar um problema em NP e mostrar que
nenhum algoritmo polinomial pode resolvê-lo.
Como mostrar que a questão é verdadeira?
An´alise de Algoritmos – p. 8/21
As classes P e NP
Como mostrar que a questão é falsa?
Encontrar um problema em NP e mostrar que
nenhum algoritmo polinomial pode resolvê-lo.
Como mostrar que a questão é verdadeira?
Mostra que para todo problema em NP existe
algoritmo polinomial que o resolve.
An´alise de Algoritmos – p. 8/21
Exercícios
Indique quais dos problemas abaixo estão em NP.
1. (MST) Dado um grafo G com custos inteiros nas
arestas, e um inteiro k, existe uma árvore geradora de
G com custo máximo k?
2. (3-EXACT COVER) Dada uma família
F = {S1, S2, . . . , Sn} de n subconjuntos de
S = {u1, u2, . . . , u3m}, com |Si| = 3, para todo 1 ≤ i ≤ n,
existe uma subfamília de m subconjuntos que cobre S?
3. (MOCHILA 0 − 1) Dado inteiros cj, 1 ≤ j ≤ n, e k, existe
um subconjunto S de {1, 2, . . . , n} tal que j∈S cj = k?
4. (PARTIÇÃO) Dado inteiros c1, c2, . . . , cn, existe um
subconjunto S ⊆ {1, 2, . . . , n} tal que
j∈S cj = j /∈S cj?
An´alise de Algoritmos – p. 9/21
Redução entre problemas
Uma forma comum de resolver um dado problema
A é transformá-lo em um outro problema B cuja
solução é conhecida e converter a solução de B
para uma solução de A. Este procedimento é
chamado de redução.
An´alise de Algoritmos – p. 10/21
Redução entre problemas
Definic¸ ˜ao de reduc¸ ˜ao: Dados dois problemas A e B.
Uma redução polinomial de A para B (notação
A B) é um algoritmo polinomial que resolve A
utilizando B, onde cada chamada de B é contado
como um passo de computação.
An´alise de Algoritmos – p. 11/21
Redução entre problemas
Definic¸ ˜ao de reduc¸ ˜ao: Dados dois problemas A e B.
Uma redução polinomial de A para B (notação
A B) é um algoritmo polinomial que resolve A
utilizando B, onde cada chamada de B é contado
como um passo de computação.
Exemplo: A seleção do k-ésimo mínimo pode ser
reduzido ao problema da ordenação.
An´alise de Algoritmos – p. 11/21
Exemplo de redução
Problema 1: Sejam A = a1a2 . . . an e B = b1b2 . . . bn
duas cadeias de caracteres. Determinar de B é um
deslocamento cíclico de A.
An´alise de Algoritmos – p. 12/21
Exemplo de redução
Problema 1: Sejam A = a1a2 . . . an e B = b1b2 . . . bn
duas cadeias de caracteres. Determinar de B é um
deslocamento cíclico de A.
OBS: B é deslocamento cíclico de A ⇔ B é
subcadeia de AA.
An´alise de Algoritmos – p. 12/21
Exemplo de redução
Problema 1: Sejam A = a1a2 . . . an e B = b1b2 . . . bn
duas cadeias de caracteres. Determinar de B é um
deslocamento cíclico de A.
OBS: B é deslocamento cíclico de A ⇔ B é
subcadeia de AA. Portanto, este problema pode
ser reduzido ao KMP.
An´alise de Algoritmos – p. 12/21
Exemplo de redução
Problema 1: Sejam A = a1a2 . . . an e B = b1b2 . . . bn
duas cadeias de caracteres. Determinar de B é um
deslocamento cíclico de A.
OBS: B é deslocamento cíclico de A ⇔ B é
subcadeia de AA. Portanto, este problema pode
ser reduzido ao KMP.
Problema 1 KMP
An´alise de Algoritmos – p. 12/21
Redução
Observações: Suponha que A B.
Se B ∈ P então A ∈ P.
An´alise de Algoritmos – p. 13/21
Redução
Observações: Suponha que A B.
Se B ∈ P então A ∈ P.
Se B C então A C.
An´alise de Algoritmos – p. 13/21
Redução
Observações: Suponha que A B.
Se B ∈ P então A ∈ P.
Se B C então A C.
A B significa que B é pelo menos tão difícil
quanto A.
An´alise de Algoritmos – p. 13/21
Problemas NP-completos
Definic¸ ˜ao: Um problema de decisão A é
NP-completo se
A ∈ NP e
B A, para todo B ∈ NP.
An´alise de Algoritmos – p. 14/21
Problemas NP-completos
Definic¸ ˜ao: Um problema de decisão A é
NP-completo se
A ∈ NP e
B A, para todo B ∈ NP.
Propriedade: Seja A um problema NP-completo e
B ∈ NP. Se A B então B é NP-completo.
An´alise de Algoritmos – p. 14/21
Problema da satisfatibilidade (SAT)
Dada uma expressão lógica (boleana) na forma
normal conjuntiva, existe uma atribuição de valores
(V ou F) para suas variáveis tal que o resultado da
expressão seja verdadeiro?
S = (x + y + z).(x + y + z).(x + y + z)
An´alise de Algoritmos – p. 15/21
Problema da satisfatibilidade (SAT)
S. A. Cook (1971) e L. A. Levin (1973) provaram,
independentemente, que SAT é um problema
NP-completo.
Teorema [Cook – Levin]: SAT é NP-completo.
An´alise de Algoritmos – p. 16/21
Problema 3-SAT
Dada uma expressão lógica na forma normal
conjuntiva onde cada cláusula contém 3 variáveis,
existe uma atribuição de valores (V ou F) para as
variáveis tal que o resultado da expressão seja
verdadeiro?
S = (x + y + z).(x + y + z).(x + y + z)
An´alise de Algoritmos – p. 17/21
Problema 3-SAT
Teorema: 3-SAT é NP-completo.
An´alise de Algoritmos – p. 18/21
Problema 3-SAT
Teorema: 3-SAT é NP-completo.
Prova:
3-SAT ∈ NP (
√
)
An´alise de Algoritmos – p. 18/21
Problema 3-SAT
Teorema: 3-SAT é NP-completo.
Prova:
3-SAT ∈ NP (
√
)
SAT 3-SAT
An´alise de Algoritmos – p. 18/21
Problema 3-SAT
Teorema: 3-SAT é NP-completo.
Prova:
3-SAT ∈ NP (
√
)
SAT 3-SAT
Considere uma instância S do SAT. Vamos
construir uma instância para 3-SAT da seguinte
forma:
An´alise de Algoritmos – p. 18/21
Problema 3-SAT
Seja C = (x1 + x2 + · · · + xk) uma cláusula do SAT.
An´alise de Algoritmos – p. 19/21
Problema 3-SAT
Seja C = (x1 + x2 + · · · + xk) uma cláusula do SAT.
se k = 1 (C = (x1)), fazemos
C = (x1 +y+z).(x1 +y+z).(x1 +y+z).(x1 +y+z)
An´alise de Algoritmos – p. 19/21
Problema 3-SAT
Seja C = (x1 + x2 + · · · + xk) uma cláusula do SAT.
se k = 1 (C = (x1)), fazemos
C = (x1 +y+z).(x1 +y+z).(x1 +y+z).(x1 +y+z)
se k = 2 (C = (x1 + x2)), fazemos
C = (x1 + x2 + z).(x1 + x2 + z)
An´alise de Algoritmos – p. 19/21
Problema 3-SAT
Seja C = (x1 + x2 + · · · + xk) uma cláusula do SAT.
se k ≥ 4, construímos
C = (x1 + x2 + y1).(x3 + y1 + y2).(x4 + y2 + y3)...
(xk−2 + yk−4 + yk−3).(yk−3 + xk−1 + xk)
An´alise de Algoritmos – p. 20/21
Problema 3-SAT
Seja C = (x1 + x2 + · · · + xk) uma cláusula do SAT.
se k ≥ 4, construímos
C = (x1 + x2 + y1).(x3 + y1 + y2).(x4 + y2 + y3)...
(xk−2 + yk−4 + yk−3).(yk−3 + xk−1 + xk)
Em cada caso, C é satisfatível ⇔ C é satisfatível.
An´alise de Algoritmos – p. 20/21
Exercícios
1. Problema MAX-SAT: Dada uma expressão
lógica na forma normal conjuntiva, e um inteiro
K, existe uma atribuição de valores para as
variáveis que satisfaz pelo menos K cláusulas?
Mostre que MAX-SAT é NP-completo.
2. O que voce acha do problema 2-SAT? (Ele é
NP-completo?)
An´alise de Algoritmos – p. 21/21

Análise de Algoritmos - As classes P e NP

  • 1.
    Análise de Algoritmos Asclasses P e NP An´alise de Algoritmos – p. 1/21
  • 2.
    Problemas de decisãoe otimização Problema de decis˜ao: Existe uma solução que satisfaz uma certa propriedade? Resposta: “sim” ou “não”. An´alise de Algoritmos – p. 2/21
  • 3.
    Problemas de decisãoe otimização Problema de decis˜ao: Existe uma solução que satisfaz uma certa propriedade? Resposta: “sim” ou “não”. Problema de otimizac¸ ˜ao: Dentre as soluções que satisfazem uma certa propriedade, qual é a melhor em relação à uma dada função. An´alise de Algoritmos – p. 2/21
  • 4.
    Problemas de decisãoe otimização Exemplo: Problema do caixeiro viajante. Otimização: determine um circuito hamiltoniano de custo mínimo? An´alise de Algoritmos – p. 3/21
  • 5.
    Problemas de decisãoe otimização Exemplo: Problema do caixeiro viajante. Otimização: determine um circuito hamiltoniano de custo mínimo? Decisão: dado um valor L, existe um circuito hamiltoniano de custo ≤ L? An´alise de Algoritmos – p. 3/21
  • 6.
    Problemas de decisãoe otimização Exemplo: Problema do caixeiro viajante. Otimização: determine um circuito hamiltoniano de custo mínimo? Decisão: dado um valor L, existe um circuito hamiltoniano de custo ≤ L? Outros exemplos: mochila, clique, etc. An´alise de Algoritmos – p. 3/21
  • 7.
    As classes Pe NP O estudo da teoria da complexidade de algoritmos concentra-se nos problemas de decisão. An´alise de Algoritmos – p. 4/21
  • 8.
    As classes Pe NP O estudo da teoria da complexidade de algoritmos concentra-se nos problemas de decisão. Definic¸ ˜ao: A classe P representa o conjunto dos problemas de decisão que podem ser resolvidos por um algoritmo polinomial. An´alise de Algoritmos – p. 4/21
  • 9.
    As classes Pe NP Definic¸ ˜ao: A classe NP representa o conjunto dos problemas de decisão em que dado qualquer instância do problema para a qual a resposta é “sim”, existe um certificado validando este fato e que pode ser verificado em tempo polinomial. An´alise de Algoritmos – p. 5/21
  • 10.
    As classes Pe NP Definic¸ ˜ao: A classe NP representa o conjunto dos problemas de decisão em que dado qualquer instância do problema para a qual a resposta é “sim”, existe um certificado validando este fato e que pode ser verificado em tempo polinomial. A partir destas definições, temos que P ⊆ NP An´alise de Algoritmos – p. 5/21
  • 11.
    As classes Pe NP Por exemplo: Um dado grafo G é bipartido? An´alise de Algoritmos – p. 6/21
  • 12.
    As classes Pe NP Por exemplo: Um dado grafo G é bipartido? tem aresta de corte? An´alise de Algoritmos – p. 6/21
  • 13.
    As classes Pe NP Por exemplo: Um dado grafo G é bipartido? tem aresta de corte? é hamiltoniano? An´alise de Algoritmos – p. 6/21
  • 14.
    As classes Pe NP Por exemplo: Um dado grafo G é bipartido? tem aresta de corte? é hamiltoniano? é conexo? An´alise de Algoritmos – p. 6/21
  • 15.
    As classes Pe NP Por exemplo: Um dado grafo G é bipartido? tem aresta de corte? é hamiltoniano? é conexo? tem uma clique de tamanho ≥ k? An´alise de Algoritmos – p. 6/21
  • 16.
    As classes Pe NP Por exemplo: Um dado grafo G é bipartido? tem aresta de corte? é hamiltoniano? é conexo? tem uma clique de tamanho ≥ k? existe caminho de custo ≤ k entre os vértices u e v? An´alise de Algoritmos – p. 6/21
  • 17.
    As classes Pe NP Por exemplo: Dois grafos G e H são isomorfos? An´alise de Algoritmos – p. 7/21
  • 18.
    As classes Pe NP Por exemplo: Dois grafos G e H são isomorfos? Uma fórmula boleana é satisfatível? An´alise de Algoritmos – p. 7/21
  • 19.
    As classes Pe NP Por exemplo: Dois grafos G e H são isomorfos? Uma fórmula boleana é satisfatível? Questão fundamental da teoria da computação: P = NP? An´alise de Algoritmos – p. 7/21
  • 20.
    As classes Pe NP Por exemplo: Dois grafos G e H são isomorfos? Uma fórmula boleana é satisfatível? Questão fundamental da teoria da computação: P = NP? Em geral, acredita-se que a questão é falsa. An´alise de Algoritmos – p. 7/21
  • 21.
    As classes Pe NP Como mostrar que a questão é falsa? An´alise de Algoritmos – p. 8/21
  • 22.
    As classes Pe NP Como mostrar que a questão é falsa? Encontrar um problema em NP e mostrar que nenhum algoritmo polinomial pode resolvê-lo. An´alise de Algoritmos – p. 8/21
  • 23.
    As classes Pe NP Como mostrar que a questão é falsa? Encontrar um problema em NP e mostrar que nenhum algoritmo polinomial pode resolvê-lo. Como mostrar que a questão é verdadeira? An´alise de Algoritmos – p. 8/21
  • 24.
    As classes Pe NP Como mostrar que a questão é falsa? Encontrar um problema em NP e mostrar que nenhum algoritmo polinomial pode resolvê-lo. Como mostrar que a questão é verdadeira? Mostra que para todo problema em NP existe algoritmo polinomial que o resolve. An´alise de Algoritmos – p. 8/21
  • 25.
    Exercícios Indique quais dosproblemas abaixo estão em NP. 1. (MST) Dado um grafo G com custos inteiros nas arestas, e um inteiro k, existe uma árvore geradora de G com custo máximo k? 2. (3-EXACT COVER) Dada uma família F = {S1, S2, . . . , Sn} de n subconjuntos de S = {u1, u2, . . . , u3m}, com |Si| = 3, para todo 1 ≤ i ≤ n, existe uma subfamília de m subconjuntos que cobre S? 3. (MOCHILA 0 − 1) Dado inteiros cj, 1 ≤ j ≤ n, e k, existe um subconjunto S de {1, 2, . . . , n} tal que j∈S cj = k? 4. (PARTIÇÃO) Dado inteiros c1, c2, . . . , cn, existe um subconjunto S ⊆ {1, 2, . . . , n} tal que j∈S cj = j /∈S cj? An´alise de Algoritmos – p. 9/21
  • 26.
    Redução entre problemas Umaforma comum de resolver um dado problema A é transformá-lo em um outro problema B cuja solução é conhecida e converter a solução de B para uma solução de A. Este procedimento é chamado de redução. An´alise de Algoritmos – p. 10/21
  • 27.
    Redução entre problemas Definic¸˜ao de reduc¸ ˜ao: Dados dois problemas A e B. Uma redução polinomial de A para B (notação A B) é um algoritmo polinomial que resolve A utilizando B, onde cada chamada de B é contado como um passo de computação. An´alise de Algoritmos – p. 11/21
  • 28.
    Redução entre problemas Definic¸˜ao de reduc¸ ˜ao: Dados dois problemas A e B. Uma redução polinomial de A para B (notação A B) é um algoritmo polinomial que resolve A utilizando B, onde cada chamada de B é contado como um passo de computação. Exemplo: A seleção do k-ésimo mínimo pode ser reduzido ao problema da ordenação. An´alise de Algoritmos – p. 11/21
  • 29.
    Exemplo de redução Problema1: Sejam A = a1a2 . . . an e B = b1b2 . . . bn duas cadeias de caracteres. Determinar de B é um deslocamento cíclico de A. An´alise de Algoritmos – p. 12/21
  • 30.
    Exemplo de redução Problema1: Sejam A = a1a2 . . . an e B = b1b2 . . . bn duas cadeias de caracteres. Determinar de B é um deslocamento cíclico de A. OBS: B é deslocamento cíclico de A ⇔ B é subcadeia de AA. An´alise de Algoritmos – p. 12/21
  • 31.
    Exemplo de redução Problema1: Sejam A = a1a2 . . . an e B = b1b2 . . . bn duas cadeias de caracteres. Determinar de B é um deslocamento cíclico de A. OBS: B é deslocamento cíclico de A ⇔ B é subcadeia de AA. Portanto, este problema pode ser reduzido ao KMP. An´alise de Algoritmos – p. 12/21
  • 32.
    Exemplo de redução Problema1: Sejam A = a1a2 . . . an e B = b1b2 . . . bn duas cadeias de caracteres. Determinar de B é um deslocamento cíclico de A. OBS: B é deslocamento cíclico de A ⇔ B é subcadeia de AA. Portanto, este problema pode ser reduzido ao KMP. Problema 1 KMP An´alise de Algoritmos – p. 12/21
  • 33.
    Redução Observações: Suponha queA B. Se B ∈ P então A ∈ P. An´alise de Algoritmos – p. 13/21
  • 34.
    Redução Observações: Suponha queA B. Se B ∈ P então A ∈ P. Se B C então A C. An´alise de Algoritmos – p. 13/21
  • 35.
    Redução Observações: Suponha queA B. Se B ∈ P então A ∈ P. Se B C então A C. A B significa que B é pelo menos tão difícil quanto A. An´alise de Algoritmos – p. 13/21
  • 36.
    Problemas NP-completos Definic¸ ˜ao:Um problema de decisão A é NP-completo se A ∈ NP e B A, para todo B ∈ NP. An´alise de Algoritmos – p. 14/21
  • 37.
    Problemas NP-completos Definic¸ ˜ao:Um problema de decisão A é NP-completo se A ∈ NP e B A, para todo B ∈ NP. Propriedade: Seja A um problema NP-completo e B ∈ NP. Se A B então B é NP-completo. An´alise de Algoritmos – p. 14/21
  • 38.
    Problema da satisfatibilidade(SAT) Dada uma expressão lógica (boleana) na forma normal conjuntiva, existe uma atribuição de valores (V ou F) para suas variáveis tal que o resultado da expressão seja verdadeiro? S = (x + y + z).(x + y + z).(x + y + z) An´alise de Algoritmos – p. 15/21
  • 39.
    Problema da satisfatibilidade(SAT) S. A. Cook (1971) e L. A. Levin (1973) provaram, independentemente, que SAT é um problema NP-completo. Teorema [Cook – Levin]: SAT é NP-completo. An´alise de Algoritmos – p. 16/21
  • 40.
    Problema 3-SAT Dada umaexpressão lógica na forma normal conjuntiva onde cada cláusula contém 3 variáveis, existe uma atribuição de valores (V ou F) para as variáveis tal que o resultado da expressão seja verdadeiro? S = (x + y + z).(x + y + z).(x + y + z) An´alise de Algoritmos – p. 17/21
  • 41.
    Problema 3-SAT Teorema: 3-SATé NP-completo. An´alise de Algoritmos – p. 18/21
  • 42.
    Problema 3-SAT Teorema: 3-SATé NP-completo. Prova: 3-SAT ∈ NP ( √ ) An´alise de Algoritmos – p. 18/21
  • 43.
    Problema 3-SAT Teorema: 3-SATé NP-completo. Prova: 3-SAT ∈ NP ( √ ) SAT 3-SAT An´alise de Algoritmos – p. 18/21
  • 44.
    Problema 3-SAT Teorema: 3-SATé NP-completo. Prova: 3-SAT ∈ NP ( √ ) SAT 3-SAT Considere uma instância S do SAT. Vamos construir uma instância para 3-SAT da seguinte forma: An´alise de Algoritmos – p. 18/21
  • 45.
    Problema 3-SAT Seja C= (x1 + x2 + · · · + xk) uma cláusula do SAT. An´alise de Algoritmos – p. 19/21
  • 46.
    Problema 3-SAT Seja C= (x1 + x2 + · · · + xk) uma cláusula do SAT. se k = 1 (C = (x1)), fazemos C = (x1 +y+z).(x1 +y+z).(x1 +y+z).(x1 +y+z) An´alise de Algoritmos – p. 19/21
  • 47.
    Problema 3-SAT Seja C= (x1 + x2 + · · · + xk) uma cláusula do SAT. se k = 1 (C = (x1)), fazemos C = (x1 +y+z).(x1 +y+z).(x1 +y+z).(x1 +y+z) se k = 2 (C = (x1 + x2)), fazemos C = (x1 + x2 + z).(x1 + x2 + z) An´alise de Algoritmos – p. 19/21
  • 48.
    Problema 3-SAT Seja C= (x1 + x2 + · · · + xk) uma cláusula do SAT. se k ≥ 4, construímos C = (x1 + x2 + y1).(x3 + y1 + y2).(x4 + y2 + y3)... (xk−2 + yk−4 + yk−3).(yk−3 + xk−1 + xk) An´alise de Algoritmos – p. 20/21
  • 49.
    Problema 3-SAT Seja C= (x1 + x2 + · · · + xk) uma cláusula do SAT. se k ≥ 4, construímos C = (x1 + x2 + y1).(x3 + y1 + y2).(x4 + y2 + y3)... (xk−2 + yk−4 + yk−3).(yk−3 + xk−1 + xk) Em cada caso, C é satisfatível ⇔ C é satisfatível. An´alise de Algoritmos – p. 20/21
  • 50.
    Exercícios 1. Problema MAX-SAT:Dada uma expressão lógica na forma normal conjuntiva, e um inteiro K, existe uma atribuição de valores para as variáveis que satisfaz pelo menos K cláusulas? Mostre que MAX-SAT é NP-completo. 2. O que voce acha do problema 2-SAT? (Ele é NP-completo?) An´alise de Algoritmos – p. 21/21