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 = { f : 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 = { f : 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 G, k uma instância para o VC com n vértices. Para cada vértice x i de G criamos um literal x i. Também inserimos a cláusula x i na fórmula f. Para cada aresta (x i, x j ) de G acrescentamos n 3 cláusulas (x i x j ) 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 f, k para o MAX-2CNF-SAT onde k = n 3 E + n k. Ida: Seja V V uma cobertura de tamanho k. Para cada vértice x u V faça x u = 1 em f. Para os demais vértices, deixe os valores das variáveis em zero. Como V é 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 n 3 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
Volta: Continuação da prova Suponha que pelo menos E n 3 + 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 n 3 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 n 3 + 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 x i 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:. Definição PSPACE = k SPACE(n k ) para constante k NPSPACE são as linguagens que podem ser decididas por algoritmos não-determinísticos que usam espaço polinomial:. NPSPACE = k NSPACE(n k ) 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(n k ) para uma constante k. Pelo teo. de Savitch L pode ser decidida por alg. determinístico com espaço O(n 2k ) 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 A 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. H( A, s ) = { aceita 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 H 2 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( A, A ) = 1) H 2 ( A ) = rejeita se A não aceita A (se H( A, A ) = 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 H 3 que faz o contrário de H 2. { aceita se A não aceita A (se H( A, A ) = 0) H 3 A ) = rejeita se A aceita A (se H( A, A ) = 1) O que acontece se passarmos o algoritmo H 3 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 H 3 como parâmetro para H 3 teremos: { aceita se H 3 não aceita H 3 H 3 ( H 3 ) = rejeita se H 3 aceita H 3 O que é uma contradição pois H 3 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