• Nenhum resultado encontrado

limitante inferior. Por exemplo, um resultado famoso de Kannan [64] mostra que, para todo inteiro k, existem linguagens na hierarquia polinomial (definida na se¸c˜ao 4.1) com complexidade de circuito Ω(nk). Por outro lado, ´e f´acil provar que se P = NP ent˜ao a hierarquia polinomial coincide com a classe P (veja a se¸c˜ao4.1). Por isso, basta demonstrar que existe um inteiro k0 tal que toda linguagem em P possui circuitos de tamanho O(nk0) para mostrar que P 6= NP. Esse exemplo mostra que se os problemas em P s˜ao f´aceis demais, ent˜ao h´a problemas em NP que s˜ao dif´ıceis.

A principal ideia por tr´as da abordagem GCT ´e baseada em um argumento similar, por´em aplicado em um contexto diferente. Essencialmente, para provar que P 6= NP basta demonstrar que diversos problemas de decis˜ao em geometria alg´ebrica e teoria de representa¸c˜oes percentem `a classe P. A abordagem utiliza t´ecnicas matem´aticas bastante avan¸cadas e os autores admitem que o desenvolvimento completo desse projeto pode levar d´ecadas. Veja a se¸c˜ao de referˆencias deste cap´ıtulo para mais detalhes.

2.8

Resultados B´asicos

Nesta se¸c˜ao introduzimos duas novas classes de complexidade e relacionamos atrav´es de alguns resultados simples todas as classes discutidas at´e agora.

Lembre que o problema P vs NP pode ser enunciado como o estudo da rela¸c˜ao entre m´aquinas eficientes determin´ısticas e n˜ao-determin´ıticas. Para entendermos melhor a diferen¸ca entre determinismo e n˜ao-determinismo ´e interessante o estudo desses conceitos em m´aquinas com muito mais poder computacional. Para isso, introduzimos a seguir as classes EXP e NEXP.

Defini¸c˜ao 2.26. [Classe de Complexidade EXP].

EXP =S

k≥1DTIME(2 nk

).

Defini¸c˜ao 2.27. [Classe de Complexidade NEXP].

NEXP =S

k≥1NTIME(2n k

).

Primeiro, enunciamos um fato muito simples envolvendo as novas classes. Lema 2.28. P ⊆ NP ⊆ EXP ⊆ NEXP.

Demonstra¸c˜ao. A primeira inclus˜ao foi provado no lema2.13 e a ´ultima inclus˜ao ´e imedi- ata. Suponha que L ∈ NP e seja V um verificador para L de complexidade O(nc). Al´em disso, considere que os certificados aceitos por V possuam tamanho O(nd). Dada uma entrada x ∈ {0, 1}?, podemos decidir se x ∈ L deterministicamente enumerando todos os O(2nd) certificados poss´ıveis e utilizando a m´aquina V para checar se alguns deles ´e um cer- tificado v´alido para x. Isso pode ser feito em tempo determin´ıstico O(2ndnd) e, portanto, em tempo determin´ıstico O(2nd+1). Logo, temos L ∈ EXP e portanto NP ⊆ EXP.

De forma an´aloga ao problema P vs NP, temos a seguinte conjectura. Quest˜ao em Aberto 2.29. EXP = NEXP ?

As conjecturas envolvendo o poder do n˜ao-determinismo em computa¸c˜ao podem ser relacionadas atrav´es do seguinte teorema.

Teorema 2.30. Se P = NP ent˜ao EXP = NEXP.

Demonstra¸c˜ao. Utilizaremos um argumento muito ´util em complexidade computacional que ´e conhecido como m´etodo do preenchimento. Basicamente, adicionamos diversos bits redundantes `as palavras que representam as instˆancias de uma linguagem para reduzirmos sua complexidade total.

Suponha que L ∈ NEXP, ou seja, existe uma MTND M que decide L em no m´aximo k02nk

passos. Temos ent˜ao que a linguagem Lpreenchida = {hx, 1k

02|x|k

i : x ∈ L}

est´a em NP, uma vez que a seguinte MTND M0 decide Lpreenchida eficientemente: dado y ∈ {0, 1}?, primeiro M0 verifica se y = hz, 1k02|z|ki para alguma palavra z. Se isso n˜ao ocorre, M0rejeita y. Caso contr´ario, M0 simula a m´aquina M com entrada z por at´e k02|z|k passos e aceita ou rejeita a entrada y de acordo com a decis˜ao de M . Devido ao nosso preenchimento, temos que M0 computa em tempo polinomial no tamanho de y, ou seja, Lpreenchida ∈ NP. Por´em, por hip´otese, temos que P = NP e portanto Lpreenchida ∈ P. Uti- lizando uma m´aquina determin´ıstica de tempo polinomial que decide Lpreenchida podemos decidir L em tempo determin´ıstico exponencial: basta adicionar os bits de preenchimento e aplicar a m´aquina eficiente de Lpreenchida. Isso prova que NEXP ⊆ EXP e portanto EXP = NEXP.

Observe que para provar que P 6= NP basta demonstrar que EXP 6= NEXP.

O resultado anterior mostra que, para alguns recursos computacionais, a igualdade entre classes de complexidade inferiores pode ser estendida `as classes de complexidade superiores. ´E poss´ıvel demonstrar uma vers˜ao mais geral do teorema 2.30, v´alida tanto para tempo quanto para espa¸co. Veja o livro de Papadimitriou [88] para mais detalhes. Veremos no cap´ıtulo 3 que muitos resultados desse tipo podem ser unificados atrav´es de uma no¸c˜ao mais abrangente de complexidade de tempo e espa¸co.

Embora alguns problemas discutidos anteriormente permane¸cam em aberto, provare- mos no pr´oximo cap´ıtulo que P 6= EXP e NP 6= NEXP.

2.9. Referˆencias Adicionais 37

2.9

Referˆencias Adicionais

Os primeiros textos que consideram a quest˜ao da eficiˆencia dos algoritmos s˜ao os artigos de Cobham [22] e Edmonds [34]. Em particular, o artigo de Edmonds demonstra a existˆencia de um algoritmo eficiente para o problema do emparelhamento em grafos arbitr´arios. Diversos algoritmos para o problema do caminho m´ınimo s˜ao descritos no livro de Cormen et al. [29].

O enunciado do problema P vs NP pode ser obtido no artigo de Cook [28]. Histori- camente, um enunciado equivalente desse problema apareceu pela primeira vez em uma carta de Kurt G¨odel enviada para Von Neumann em 1956. Basicamente, G¨odel indagou se existe algum algoritmo eficiente para o problema computacional NP-completo discutido na se¸c˜ao2.6, notando que esse fato teria consequˆencias fant´asticas para a matem´atica. O conte´udo completo da carta est´a dispon´ıvel no artigo de Sipser [102].

O algoritmo de primalidade AKS foi desenvolvido por Agrawal, Kayal e Saxena [6]. Ele foi o primeiro algoritmo de primalidade proposto que ´e ao mesmo tempo geral, determi- n´ıstico, eficiente e incondicional. Uma descri¸c˜ao informal das principais ideias utilizadas no algoritmo AKS pode ser encontrada no artigo de Aaronson [3]. Uma referˆencia em portuguˆes sobre esse teste de primalidade ´e o livro de Coutinho [30]. Antes do desenvol- vimento do algoritmo AKS, Miller [81] apresentou um algoritmo eficiente para o mesmo problema assumindo a hip´otese de Riemann generalizada.

A quest˜ao NP vs coNP est´a intimamente relacionada com uma ´area de pesquisa cha- mada complexidade de prova. O principal objetivo dessa disciplina ´e demonstrar que n˜ao existem provas sucintas e facilmente verific´aveis de que uma f´ormula proposicional ´e uma tautologia. Isso separaria as classes NP e coNP, provando que P 6= NP. Uma referˆencia recente sobre o tema ´e o livro de Cook e Nguyen [25].

A se¸c˜ao2.4 ´e baseada no livro de Arora e Barak [7] e a se¸c˜ao2.6´e motivada por uma discuss˜ao apresentada no livro de Immerman [61].

A descoberta da existˆencia de problemas NP-completos foi feita independentemente por Cook [26] e Levin [74]. O livro de Garey e Johnson [45] ´e a referˆencia cl´assica sobre problemas NP-completos.

O artigo de Sipser e Boppana [15], embora n˜ao seja muito recente, ainda descreve os pricipais resultados obtidos em complexidade de circuitos. O livro de Immerman [61] ´e inteiramente dedicado `a rela¸c˜ao entre l´ogica e complexidade computacional. A abordagem GCT para o problema P vs NP est´a resumida no artigo de Regan [91]. Na p´agina pessoal de Ketan Mulmuney h´a uma s´erie de artigos sobre o tema.

Ao longo de d´ecadas diversas pessoas afirmaram ter uma solu¸c˜ao para o problema P vs NP. Veja o site [112] para mais detalhes.

assumirmos que os problemas NP-completos n˜ao podem ser resolvidos de forma eficiente no universo f´ısico. Veja tamb´em o site [1] mantido pelo mesmo autor para uma descri¸c˜ao de centenas de classes de complexidade estudadas em complexidade computacional.

Cap´ıtulo 3

Simula¸c˜ao e Diagonaliza¸c˜ao

“Time is the most valuable thing a man can spend.” Theophrastus.

Intuitivamente, esperamos que com mais recursos computacionais seja poss´ı- vel resolver mais problemas. Os teoremas de hierarquia de tempo e de espa¸co, alguns dos resultados mais importantes provados em complexidade computa- cional, estabelecem exatamente isso. O argumento utilizado na prova desses teoremas ´e conhecido como m´etodo da diagonaliza¸c˜ao. Neste cap´ıtulo vamos estudar essa t´ecnica em profundidade. Veremos tamb´em como generalizar e unificar a demonstra¸c˜ao dos teoremas de hierarquia e de outros resultados im- portantes em complexidade computacional.