Escolar Documentos
Profissional Documentos
Cultura Documentos
Aulas 19 - 20
Leila Silva
Problemas NP-Completos
■ Caracteriza-se por:
● Conjunto de dados (instância: objeto com dados
específicos).
● Objetivo do problema.
■ Resolver o problema:
● Desenvolver algoritmo ⇒ solução.
■ Ex.:
Problema da Clique
otimização
5 1 2
2 4
c
a b
6
um percurso : a b c d a ⇒ peso 16
um percurso ótimo : a b d c a ⇒ peso 11
2. Problemas de Localização
Dados: um grafo G e um inteiro k > 0.
Objetivo: Localizar em G um percurso de caixeiro
viajante de peso ≤ k.
3. Problema de Otimização
Dados: um grafo G.
Objetivo: Localizar em G um percurso de caixeiro viajante
cujo peso é mínimo.
■ Notação
π : problema de decisão.
π(D,Q) D : dados
Q : questão (decisão)
■ Observação:
● Se os algoritmos conhecidos para resolver um certo
problema π forem todos exponenciais, não
necessariamente π ∉ P.
1. Problema da Satisfabilidade
Considere:
Conjunto de variáveis booleanas: X1, X2, ..., Xn
Complemento das variáveis: X1, X2, ..., Xn
Literais: Símbolos X1, X1, X2, X2, ..., Xn, Xn
Operações binárias: Conjunção ∧(e) e Disjunção ∨(ou)
Cláusula: Disjunção de literais. Ex.: X1 ∨ X2 ∨ X3
Expressão booleana: operandos – literais; operadores: ∨ e ∧
Expressão booleana FNC: conjunção de cláusulas
Expressão booleana satisfatível: atribuição de V ou F às
variáveis e resultado V
Exemplo:
( X 1 ∨ X 1 ) ∧ ( X 1 ∨ X3 ∨ X2 ) FNC satisfatível
( X1 ) ∧ ( X 1 ) não satisfatível
Exemplo:
b
a
d e {d, b, e}
f clique de tamanho 3
g
c
h
Dados: G1 e G2 (grafos).
Decisão: G1 possui um subgrafo isomorfo a G2?
e b
d G2
c
d d e
e
Justificativa NÃO:
a, b, c, a
Justificativa SIM: e, c, f, e
a, b, c, d, e, f, a e, c, d, e
(passo da exibição) e, d, c, f, e
(passo da exibição)
Grafos e Algoritmos Computacionais DCOMP -
23
UFS
A Classe NP
3. Problema da Clique
▪ justificativa SIM:
exibição de uma clique P de tamanho ≥ k.
verificando para reconhecer
(a) Se P é de fato uma clique.
(b) |P| ≥ k.
▪ justificativa NÃO:
lista de todas as cliques do grafo.
(a) Verificar se a lista é completa e de fato o
tamanho de cada clique é < k.
Se o algoritmo é polinomial π ∈
NP
Justificativa SIM:
(i) Exibição : O grafo G e um subconjunto de vértices V’ ⊆ VG.
(ii) Reconhecimento:
Algoritmo : Examina-se cada lista de adjacências Adj(v’), v’ ∈ V’, para
verificar se todo w ∈ Adj(v’) é tal que w ∉ V’. Seja agora k’ = |V’|. A
justificativa está correta se e só se essas verificações forem satisfeitas e
além disso k’ ≥ k.
Justificativa SIM:
(i) Exibição : Apresentação de um conjunto S contendo todas as cliques
maximais de G.
(ii) Reconhecimento:
Algoritmo : Comprova-se que S tem de fato todas as cliques maximais
de G. Seja k’ o tamanho da maior clique de S. A justificativa está correta
se k = k’.
Lema
P ⊆ NP
Prova
■ P ≠ NP ?
■ Evidência → P ≠ NP
■ Outra questão:
● P ⊆ Co-NP
● Se π ∈ P ⇒ π ∈ NP ∩ Co-NP
■ NP = Co-NP ?
■ P = NP ∩ Co-NP ?
■ Conjectura-se:
P ≠ NP
NP ≠ Co-NP
NP P Co-NP P ≠ NP ∩ Co-NP
Algoritmo A2
T’ A2
■ Instância I1 ∈ D1 Instância I2 ∈ D2
T’’
Solução de π2 Solução de π1
A2 for polinomial
π1 pode ser
transformação
resolvido em
polinomial de π1 > tempo polinomial
em π2
f é polinomial porque:
• Conclusão:
Se π1 α π2 e π2 α π1 ⇒ π1 e π2 são equivalentes ⇒
idêntica dificuldade.
(i) π ∈ NP.
(ii) todo problema de decisão π’ ∈ NP satisfaz π’ α π.
=> todo problema da classe NP pode ser transformável
polinomialmente no π’ NP-completo.
Se um problema π , NP-completo, puder ser resolvido
em tempo polinomial TODO problema de NP admite
algoritmos polinomial ⇒ P = NP
Lema
Prova
Como π2 ∈ NP, para mostrar que π2 é NP-completo basta
provar que (ii) vale, ou seja, que π’ α π2 ∀π’ ∈NP. Como π1 é
NP-completo , então necessariamente π’ α π1 ∀π’ ∈NP. Como
π1 α π2 , por trasitividade temos que π’ α π2 ∀π’ ∈NP.
Teorema de Cook
■
O problema Clique é NP-completo.
Prova
• Clique ∈ NP. (já vimos).
• Seja E uma expressão booleana na FNC.
• Seja m o nº de cláusulas de E.
• Seja E := E1, E2,... Em. Ei := (x1, x1,...,xn)
• Associamos uma coluna de n vértices com as variáveis de Ei ,
mesmo se essas variáveis ocorrem em outras cláusulas.
• O problema é: como ligar os vértices tais que G contenha uma
clique de tamanho ≥ k se e só se E é satisfatível?
Grafos e Algoritmos Computacionais DCOMP -
57
UFS
Alguns Problemas NP-completo
• Observe que podemos escolher o k. Escolhemos k = m.
• Ligamos os vértices segundo: vértices de mesma coluna
(numa mesma cláusula) não são ligados. Vértices de cláusulas
diferentes são ligado, a não ser que sejam complementares(
ex.: x1 e x1)
X3 X3
X3
Grafos e Algoritmos Computacionais DCOMP -
58
UFS
Alguns Problemas NP-completo
■
O problema do Conjunto Independente de
Vértices é NP-completo.
Prova
• Conjunto Independente de Vértices ∈ NP. (já vimos).
• Vimos também que Clique α CIV.
• Acabamos de provar que Clique é NP-completo.
• Conjunto Independente de vértices é NP-completo.