• Nenhum resultado encontrado

A Nova Teoria da Complexidade

´e que a informa¸c˜ao pode ser codificada em correla¸c˜oes n˜ao locais entre as diferentes partes de um sistema f´ısico. Na verdade, este ´e o caso do estado (1.26); as propriedades da fun¸c˜ao f est˜ao armazenadas nas correla¸c˜oes entre o registro de entrada e o registro de sa´ıda do computador quˆantico. Esta correla¸c˜ao n˜ao local, no entanto, n˜ao ´e f´acil de ser decifrada.

Por exemplo, se tiv´essemos que medir o registro de entrada obter´ıamos o estado |x0i,

onde x0 ´e escolhido aleatoriamente dentre um conjunto de 2n poss´ıveis valores. Este pro-

cedimento prepararia um estado

|x0i| f (x0)i. (1.27)

Poder´ıamos continuar a medir o registro de sa´ıda para descobrir f (x0). Mas como o

estado (1.26) foi destru´ıdo pela medida, as intricadas correla¸c˜oes entre os registros foram perdidas, e n˜ao ter´ıamos a oportunidade de determinar f (y0) para qualquer y06= x0atrav´es

de medida futuras. Neste caso ent˜ao, a computa¸c˜ao quˆantica n˜ao oferece vantagem sobre a computa¸c˜ao cl´assica.

A li¸c˜ao que tiramos da solu¸c˜ao para o problema de Deutsch ´e que podemos algumas vezes ser mais inteligentes em explorar as correla¸c˜oes codificadas no estado (1.26). Muito da estrutura dos algoritmos quˆanticos envolve descobrir caminhos para fazer um uso mais inteligente das correla¸c˜oes n˜ao locais.

1.6

A Nova Teoria da Complexidade

It should not come as a surprise that our choice of polynomial algorithms as the math- ematical concept that is supposed to capture the informal notion of “practically efficient computation” is open to criticism from all sides. [. . . ] Ultimately, our argument for our choice must be this: Adopting polynomial worst-case performance as our criterion of effi- ciency results in an elegant and useful theory that says something meaningful about prac- tical computation, and would be impossible without this simplification.

O computador que usamos em casa ou no trabalho n˜ao ´e um computador quˆantico, mas ainda assim ´e uma m´aquina fant´astica. Em princ´ıpio, ´e capaz de realizar qualquer computa¸c˜ao imagin´avel. Por´em, na pr´atica, existem computa¸c˜oes que n˜ao ´e capaz de realizar por exigirem uma quantidade extraordinariamente grande de tempo e/ou mem´oria. Mas se fornecermos uma quantidade ilimitada de mem´oria, e se estivermos dispostos a esperar quanto tempo for necess´ario, ent˜ao qualquer coisa que mere¸ca ser chamada de uma computa¸c˜ao pode ser feita em nosso modesto PC. Dizemos, portanto, que nosso computador ´e um computador universal.

A teoria da complexidade cl´assica tem se desenvolvido ao longo dos anos para classificar os problemas de acordo com a sua dificuldade. Usualmente, a classifica¸c˜ao de um problema entre “dif´ıcil” e “f´acil” ´e feita em termos do quanto de tempo e mem´oria ´e necess´ario para resolvˆe-lo. Mas como fazer distin¸c˜oes claras entre “dif´ıcil” e “f´acil” sem especificar o hardaware que iremos usar ? Afinal, um problema pode ser dif´ıcil em um PC, mas talvez exista uma outra m´aquina que o resolva rapidamente. Ou talvez no futuro um computador muito melhor seja capaz de resolver o problema com mais eficiˆencia. Portanto, as distin¸c˜oes entre um problema “dif´ıcil” e um problema “f´acil” devem ser universais, ou seja, n˜ao podem depender da m´aquina que estamos usando.

A teoria cl´assica da complexidade est´a focada sobretudo na distin¸c˜ao entre os algorit- mos de tempo polinomial e os algoritmos de tempo exponencial. Para qualquer algoritmo A atuando sobre um dado de entrada de comprimento vari´avel, podemos associar uma fun¸c˜ao de complexidade TA(n), onde n ´e o comprimento do dado de entrada em bits. A

fun¸c˜ao TA(n) ´e o tempo (isto ´e o n´umero de passos elementares) mais longo necess´ario

para o algoritmo executar uma tarefa por completo (por exemplo, se A ´e um algoritmo de fatora¸c˜ao, TA(n) ´e o tempo necess´ario para fatorar um n´umero de n bits no pior caso

poss´ıvel). ´E dito que A ´e um algoritmo polinomial se

TA(n) ≤ Pol(n), (1.28)

onde Pol(n) denota um polinˆomio de n. Portanto, quando se diz que um problema necessita de um algoritmo de tempo polinomial para ser resolvido, estamos querendo dizer que o tempo necess´ario para resolver aquele problema n˜ao cresce mais r´apido que uma potˆencia

1.6. A Nova Teoria da Complexidade 23 do n´umero de bits do dado de entrada.

Se o problema n˜ao ´e de tempo polinomial, diz-se que ´e de tempo exponencial (embora isto seja uma designa¸c˜ao incorreta, pois existem fun¸c˜oes superpolinomiais como nlog n que aumentam muito mais lentamente que uma fun¸c˜ao exponencial). Este ´e um meio razo´avel de tra¸car uma linha que distingue problemas “dif´ıceis” de problemas “f´aceis”. Mas a prin- cipal raz˜ao para fazer a distin¸c˜ao desta forma ´e que o crit´erio em quest˜ao independe da m´aquina: n˜ao importa qual computador estamos usando, a classifica¸c˜ao ser´a sempre a mesma. A universalidade da distin¸c˜ao entre polinomial e exponencial segue de um dos resultados centrais da ciˆencia da computa¸c˜ao: um computador (cl´assico) universal pode simular outro com, no pior dos casos, um “limitante superior polinomial”. Isto significa que, se somos capazes de executar um algoritmo em nosso computador em tempo polinomial, ent˜ao poderemos sempre execut´a-lo em tempo polinomial em qualquer outro computador. Portanto, sempre concordaremos sobre quais algoritmos s˜ao de tempo polinomial.

`

A classe de problemas que pode ser resolvida com algoritmos que se utilizam de fontes (tais como tempo e mem´oria) polinomiais com o tamanho do dado de entrada d´a-se o nome de classe P. Tais problemas computacionais podem ser facilmente resolvidos em um computador cl´assico. Dentre os problemas de tempo n˜ao polinomial, ou seja, de tempo exponencial, alguns pertencem `a classe NP (de non-deterministic polynomial ). Esta classe engloba todos os problemas que, dada uma caixa preta que forne¸ca a solu¸c˜ao (um or´aculo), pode-se verificar em tempo polinomial se a solu¸c˜ao ´e correta. Um problema NP bastante conhecido ´e o problema de encontrar os fatores primos de um n´umero com n bits. At´e hoje n˜ao ´e conhecido um algoritmo r´apido que resolva este problema em um computador cl´assico. Mas dados os fatores primos, ´e f´acil de verificar se s˜ao a solu¸c˜ao verdadeira. Outro problema classicamente intrat´avel, e tamb´em bastante conhecido, que pertence `a classe NP, ´e o problema do caixeiro viajante (encontrar o caminho c´ıclico m´ınimo conectando n cidades com distˆancias especificadas uma da outra). Em particular, o problema do caixeiro viajante ´e um problema NP-completo; isto ´e, qualquer problema da classe NP pode ser transformado em um exemplo de problema do caixeiro viajante em tempo polinomial. Isto significa que se conseguirmos resolver o problema do caixeiro viajante em tempo polinomial poderemos resolver qualquer problema NP em tempo polinomial.

Com o advento da teoria da computa¸c˜ao quˆantica, percebeu-se que o extraordin´ario poder computacional dos computadores quˆanticos poderia ser usado para tentar resolver problemas que classicamente s˜ao intrat´aveis. Isto ficou evidente quando o algoritmo quˆan- tico de Shor (a ser apresentado na pr´oxima se¸c˜ao) provou que a simula¸c˜ao de um problema de tempo n˜ao polinomial ´e poss´ıvel em um computador quˆantico. Neste caso, a teoria que se conhece hoje da complexidade computacional deve ser repensada. Por exemplo, pode- mos definir um nova classe BQP (de bounded quantum polynomial ) como sendo a classe de todos os problemas computacionais que podem ser resolvidos eficientemente em um com- putador quˆantico com um determinado limitante para a probabilidade de erro. A Figura 1.2 mostra a suposta rela¸c˜ao entre as classes computacionais cl´assicas P e NP e a classe computacional quˆantica BQP. Exatamente onde BQP est´a com respeito a P e NP ainda ´e algo desconhecido.

NP

P

BQP ?

Figura 1.2: Suposta rela¸c˜ao entre as classes computacionais cl´assicas P e NP e a classe computacional quˆantica BQP.

Se a classifica¸c˜ao quˆantica da complexidade ´e realmente diferente da classifica¸c˜ao cl´as- sica (como suspeitado, embora n˜ao provado), ent˜ao este resultado ir´a “estremecer” os fundamentos da ciˆencia da computa¸c˜ao. A longo prazo, poder´ıamos esperar por novas revolu¸c˜oes tecnol´ogicas, com consequˆencias (certamente boas e m´as) imprevis´ıveis.