Classes de Complexidade e NP-Completude

Propaganda
Classes de Complexidade e NP-Completude
E. C. Xavier e F. K. Miyazawa
Instituto de Computação/Unicamp
8 de outubro de 2009
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
1 / 19
Mais Sobre Complexidade
Devemos estabelecer bem que problema estamos considerando
durante provas de NP-Completude.
Considere o problema 2CNF-SAT: Temos uma fórmula escrita na
CNF onde cada cláusula possui até 2 literais.
2CNF-SAT = {hf i : f é uma fórmula na 2CNF
e possui atribuição verdadeira }
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
2 / 19
Mais Sobre Complexidade
Teorema
Seja f uma fórmula na 2CNF. Existe um algoritmo polinomial que decide
se f possui ou não atribuição verdadeira.
Prova. Exercı́cio.
Com isso mostramos que 2CNF-SAT pertence a P.
Mas considere o problema MAX-2CNF-SAT:
MAX-2CNF-SAT = {hf i : f é uma fórmula na 2CNF e possui uma
atribuição que deixa pelo menos k
cláusulas verdadeiras }
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
3 / 19
Mais Sobre Complexidade
Teorema
MAX-2CNF-SAT é NP-Completo.
Vamos fazer uma redução do problema Vertex-Cover (VC) para o
MAX-2CNF-SAT.
Seja hG , ki uma instância para o VC com n vértices.
Para cada vértice xi de G criamos um literal xi . Também inserimos a
cláusula ¬xi na fórmula f .
Para cada aresta (xi , xj ) de G acrescentamos n3 cláusulas (xi ∨ xj ) na
fórmula f .
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
4 / 19
Continuação da prova
É claro que f pode ser construı́da em tempo polinomial. Consideramos a
instância hf , k 0 i para o MAX-2CNF-SAT onde k 0 = n3 |E | + n − k.
Ida:
Seja V 0 ⊆ V uma cobertura de tamanho k. Para cada vértice
xu ∈ V 0 faça xu = 1 em f . Para os demais vértices, deixe os valores
das variáveis em zero.
Como V 0 é uma cobertura então todas as cláusulas correspondentes
as arestas serão satisfeitas. Além disso, das n cláusulas
correspondentes aos vértices, k não serão satisfeitas.
Portanto n3 |E | + n − k cláusulas são satisfeitas
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
5 / 19
Continuação da prova
Volta:
Suponha que pelo menos |E |n3 + n − k cláusulas sejam satisfeitas em
f.
Primeiramente note que é impossı́vel satisfazer todas as cláusulas de
arestas e vértices ao mesmo tempo.
Note que se não satisfizermos alguma cláusula de aresta deixamos
pelo menos n3 cláusulas não satisfeitas.
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
6 / 19
Continuação da prova
Logo para haver |E |n3 + n − k cláusulas satisfeitas, todas as cláusulas
de aresta devem estar satisfeitas.
Do total de n cláusulas de vértices, teremos n − k satisfeitas, e
portanto existem k literais xi com valores em 1.
Os vértices correspondentes a estes literais devem formar um
cobertura pois todas as cláusulas de arestas estão satisfeitas.
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
7 / 19
Complexidade de Espaço
Da mesma forma como avaliamos algoritmos em termos de tempo,
podemos avalia-los em termos de espaço utilizado.
Definição
O espaço (memória) utilizado por um algoritmo determinı́stico corresponde
ao número de células (bits) que este acessa durante sua execução.
Definição
O espaço utilizado por um algoritmo não-determinı́stico é o número de
células acessadas em um ramo mais curto de execução da árvore até o
estado aceita.
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
8 / 19
Complexidade de Espaço
Definição
SPACE(f (n)) = {L : L é uma linguagem
decidida deterministicamente em espaço O(f (n))}
Definição
NSPACE(f (n)) = {L : L é uma linguagem decidida
não-deterministicamente em espaço O(f (n))}
Podemos mostrar por exemplo que linguagens em NP gastam espaço
polinomial.
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
9 / 19
Complexidade de Espaço
Definição
PSPACE são as linguagens que podem ser decididas por algoritmos
determinı́sticos que usam espaço polinomial:
PSPACE = ∪k SPACE(nk ) para constante k
.
Definição
NPSPACE são as linguagens que podem ser decididas por algoritmos
não-determinı́sticos que usam espaço polinomial:
NPSPACE = ∪k NSPACE(nk ) para constante k
.
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
10 / 19
Complexidade de Espaço
Teorema
Teorema de Savitch: Para qualquer função f : N → R
NSPACE(f (n)) ⊆ SPACE(f 2 (n))
O teorema nos diz que as linguagens decididas por algoritmos
não-determinı́sticos com f (n) de espaço podem ser decididas por
algoritmos determinı́sticos com espaço f 2 (n).
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
11 / 19
Complexidade de Espaço
Teorema
PSPACE = NPSPACE.
Prova. É claro que PSPACE ⊆ NPSPACE.
Se L ∈ NPSPACE então ela é decidida não deterministicamente em espaço
O(nk ) para uma constante k.
Pelo teo. de Savitch L pode ser decidida por alg. determinı́stico com
espaço O(n2k ) que é polinomial.
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
12 / 19
Complexidade de Espaço
Sabemos que existe a seguinte relação entre as classes:
P ⊆ NP ⊆ PSPACE = NPSPACE
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
13 / 19
Indecibilidade
Até então temos nos preocupado com o “esforço”necessário que um
algoritmo tem para resolver um problema.
Mas existem problemas insolúveis por algoritmos como temos usado!!!
Tais problemas são ditos indecidı́veis pois não há algoritmo que decide
o problema.
Mesmo que o algoritmo não seja polinomial!
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
14 / 19
Indecibilidade
Definição
Problema da Parada: Dado uma string s e um algoritmo A, deve-se decidir
se A aceita ou não s.
Vamos mostrar que este problema é indecidı́vel.
Uma idéia que poderı́amos ter é a de criar um algoritmo A0 que
simule A sobre a entrada s.
Mas não sabemos se A para ou não!! Quando decidir que A não
aceita s?
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
15 / 19
Indecibilidade
Teorema
O problema da Parada é indecidı́vel.
Prova. Vamos fazer uma prova por contradição. Suponha que haja um
algoritmo H que decida o problema.
(
aceita
H(hA, si) =
rejeita
se A aceita s
se A não aceita s
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
16 / 19
Continuação da Prova
Vamos montar um outro algoritmo H2 que usa H como subrotina. Este
algoritmo recebe como parâmetro apenas um algoritmo e testa se o
algoritmo aceita ou não o próprio algoritmo.
(
aceita se A aceita A (se H(hA, Ai) = 1)
H2 (hAi) =
rejeita se A não aceita A (se H(hA, Ai) = 0)
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
17 / 19
Continuação da Prova
Vamos considerar agora um novo algoritmo H3 que faz o contrário de H2 .
(
aceita se A não aceita A (se H(hA, Ai) = 0)
H3 hAi) =
rejeita se A aceita A (se H(hA, Ai) = 1)
O que acontece se passarmos o algoritmo H3 como entrada para ele
mesmo??
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
18 / 19
Continuação da Prova
Se passarmos H3 como parâmetro para H3 teremos:
(
aceita se H3 não aceita H3
H3 (hH3 i) =
rejeita se H3 aceita H3
O que é uma contradição pois H3 aceita ele próprio quando ele rejeita ele
próprio!
E. C. Xavier e F. K. Miyazawa (IC/Unicamp) Classes de Complexidade e NP-Completude
8 de outubro de 2009
19 / 19
Download