Análise e Técnicas de Algoritmos
Período 2003.1

NP-Completude

Introdução


Funções de Complexidade Tamanho da Entrada $n$
10 20 30 40 50 60
$n$ .00001 seg .00002 seg .00003 seg .00004 seg .00005 seg .00006 seg
$n^2$ .0001 seg .0004 seg .0009 seg .0016 seg .0025 seg .0036 seg
$n^3$ .001 seg .008 seg .027 seg .064 seg .125 seg .216 seg
$n^5$ .1 seg 3.2 seg 24.3 seg 1.7 min 5.2 min 13.0 min
$2^n$ .001 seg 1.0 seg 17.9 min 12.7 dias 35.7 anos 366 sec.
$3^n$ .059 seg 58 min 6.5 anos 3855 sec. $2x10^8$ sec. $1.3x10^13$ sec.

Problemas de Decisão

Exemplo: Problema algorítmico

Classes de Problemas

É possível relacionar problemas de otimização e localização com problemas de decisão. Por exemplo:

Todos os problemas que vamos utilizar no estudo de NP-Completude são problemas de decisão. Apesar de serem mais simples, já vimos que é possível relacionar um problema de decisão com problemas de localização e otimização. Prova de intratabilidade de problemas de decisão pode ser estendida aos outros casos.

Classes de Complexidade P e NP

Alguns Problemas de Decisão em NP

Problema 1: Satisfabilidade

O problema da satisfabilidade (SAT) é um problema de lógica que envolve expressões booleanas. Pode ser definido da seguinte forma:

Uma expressão é FNC quando for uma conjunção de cláusulas. Por exemplo, $(x_2 \vee \overline{x_1}) \wedge (\overline{x_1} \vee \overline{x_3}
\vee x_2) \wedge (x_3) \wedge (x_1 \vee \overline{x_3} \vee x_2)$.

Problema 2: Conjunto Independente de Vértices

Dado um grafo $G = (V, E)$, um conjunto independente de vértices é um subconjunto $V_1 \subset V$ tal que qualquer par de vértices de $V_1$ não é adjacente. Por exemplo, na figura abaixo: $V_1 = \{ a, c, b, g, h \}$ é um conjunto independente de vértices de tamanho 5.



\epsffile{clique.eps}

Problema 3: Clique

Dado um grafo $G = (V, E)$, um clique é um subconjunto $V_1 \subset V$ tal que qualquer par de vértices de $V_1$ é adjacente. Por exemplo, na figura acima: $V_1 = \{ d, b, e \}$ é um clique de tamanho 3.

Problema 4: Cobertura de Vértices

Dado um grafo $G = (V, E)$, uma cobertura de vértices é um subconjunto $V_1 \subset V$ tal que qualquer aresta de vértices de $V$ é incidente a um vértice de $V_1$. Por exemplo, no grafo acima: $V_1 = \{ d, f, e \}$ é uma cobertura de vértices de tamanho 3.

Problema 5: Coloração

Dado um grafo $G = (V, E)$, uma coloração é uma atribuição de cores aos vértices do grafo, de modo que dois vértices adjacentes tenham cores distintas.

Problemas NP-Completos

Redução em Tempo Polinomial

Teorema de Cook

Como Determinar se um Problema é NPC

Se $D_1, D_2 \in NP$, $D_1$ é NPC e $D_1 \preceq _R D_2$, então $D_2$ é NP-Completo.

Para provar se um problema de decisão $D$ é NP-Completo, devemos seguir os seguintes passos:

  1. Mostra que $D \in NP$.
  2. Selecionar, $D_1$, um problema NPC conhecido.
  3. Achar uma redução de $D_1$ para $D$.
  4. Mostrar que a redução foi feita em tempo polinomial.

Exemplos de Problemas NPC

Vamos apresentar como utilizar redução para provar que alguns dos problemas conhecidos são NPC. A figura abaixo mostra um resumo dos problemas que vamos mostrar a prova. Cada arco denota uma redução em tempo polinomial.



\epsffile{NPCProva.eps}

3SAT

O problema 3SAT consiste em determinar o resultado de uma expressão booleana $E$ que está escrita em sua FNC é satisfatível. Cada cláusula de $E$ tem exatamente três literais. Por exemplo, $(\overline{v_1} \vee v_2 \vee \overline{v_7}) \wedge
(v_3 \vee \overline{v_5} \vee v_6) \wedge (v_1 \vee v_5 \vee \overline{v_8})$ é uma instância de 3SAT.

Aplicando os passos para determinar se 3SAT é NPC temos:

  1. 3SAT é claramente NP.
  2. SAT é NPC. Se SAT $\preceq _R$ 3SAT. (vamos mostrar como a redução é feita)
  3. Se a redução é feita em tempo polinomial, 3SAT é NPC.

Para fazer a redução, devemos substituir cada cláusula $C_i$em $E$ por:

Cobertura de Vértices

Vamos reduzir o problema 3SAT ao problema de cobertura de vértices.

\epsffile{vertex.eps}



Jorge C. A. de Figueiredo 2003-10-02