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