PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS - PUC-GOIÁS DEPARTAMENTO DE COMPUTAÇÃO
ALGORITMOS QUÂNTICOS
LEILA CRISTINA LUCIANO DE MORAIS PEDRO AMORIM RAPHAEL RODRIGO
1. Introdução
O desenvolvimento e a análise de novos algoritmos que possam usufruir dos benefícios providos pelo paralelismo quântico [Rieffel and Polak, 2000] desperta grande interesse da comunidade cientifica, como intuito de aproveitar todo o poder computacional provido pelo computador quântico. Este trabalho propõe o estudo destes algoritmos, teoricamente mais rápidos que os algoritmos desenvolvidos para os computadores convencionais, denominados de algoritmos quânticos. A primeira descrição de um aparato computacional (máquina de Turing) em termos da Mecânica Quântica foi realizada por Paul Benioff em 1980. No entanto, a máquina de Benioff não era exatamente um computador quântico. A possibilidade que efeitos quânticos poderiam oferecer algo verdadeiramente novo foi apontada pela primeira vez por Richard Feynman, em 1982, que mostrou que nenhuma máquina de Turing (clássica) poderia simular certos fenômenos quânticos sem introduzir um fator exponencial em seu desempenho. Ciente de que a programação puramente funcional não possui estruturas de controle, este trabalho utiliza-se do conceito de mônada [Wadler, 1995], viabilizando a possibilidade de discretizar passos de um programa, lidando com transformações de estados, exceções e continuações. Tendo em vista que todo modelo de computação quântica deve comprometer-se com a interpretação da Mecânica Quântica [Hirvensalo, 2001], a metodologia sugerida por Amr Sabry [Sabry, 2003] para modelagem de algoritmos quânticos engloba efeitos colaterais globais, podendo ou não estarem relacionados com a “realidade física”. Nesta abordagem, para a representação de qubits (bits quânticos) define-se um novo tipo de dado na linguagem, interpretando o vetor quântico como um estado de memoria. Esta interpretação deixa implícita a superposição de estados, ou seja, a possibilidade de um bit quântico assumir mais de um valor (Falso, Verdadeiro ou Falso e Verdadeiro), simultaneamente.
A partir desta representação pode-se ser explorado o paralelismo quântico e torna- se viável o tratamento das operações básicas como a negação de operadores e o operador and, ambos caracterizados como operadores reversíveis. Com base nestes resultados, o objetivo deste trabalho foi estender a implementação introduzida em [Sabry,2003] para outros algoritmos básicos da Computação Quântica. Neste trabalho foram estudados os conceitos fundamentais da linguagem Haskell incluindo a aplicação da técnica de valores virtuais para implementação de algoritmos quânticos, com analise e especificação de tipos de dados quânticos (clássicos, sobreposição e emaranhados), atribuição de valores, transformações unárias e modelagem de medidas.
2. Computação quântica
A evolução dos processadores com chips cada vez menores e mais rápidos, converge para o estudo da nanotecnologia. Isso significa que estamos nos aproximando dos limites físicos da matéria e para continuarem os avanços, será preciso abandonar o uso de transistores e partir para alguma estrutura mais eficiente, justificando-se o interesse pela Computação Quântica [Rieffel and Polak, 2000]. A Computação Quântica consiste em um modelo de computação baseado nas leis da Mecânica Quântica [Oliveira et al., 2003]. São significativos os casos estudados, onde os procedimentos e os cálculos quânticos mostram-se capazes de realizar, em minutos ou horas, tarefas que levariam bilhões de anos em computadores clássicos. Estes resulta- dos despertam um grande entusiasmo na comunidade cientifica e ao mesmo tempo uma grande busca pela compreensão e manipulação da chamada informação quântica.
2.1. O computador quântico
O tempo que leva uma certa computação pode ser diminuído através da utilização de processadores paralelos. Para realizar uma redução exponencial no tempo é requerido um incremento no numero de processadores, e consequentemente, implica em um aumento exponencial na quantia de espaço físico requerido. Contudo, em um sistema quântico, o
aumento na quantia física implica apenas em um aumento exponencial do paralelismo no sistema. Assim, para se obter um aumento exponencial relacionado ao paralelismo é necessário apenas um aumento linear na quantia de espaço físico, efeito este chamado paralelismo quântico. Em um computador temos, por exemplo, capacitores que carregados estão representando 1, e quando descarregados, representam 0. A partir disso, pode-se lidar com as informações. Quando utilizamos átomos, fótons, ou outros sistemas desse tipo, podemos aproveitar as propriedades da Mecânica Quântica para construirmos computadores mais rápidos que os atuais.
2.2. O Funcionamento do Computador Quântico Funciona
Uma partícula quântica é similar a um elétron ou núcleo atômico, onde o mesmo aceita dois estados ao mesmo tempo, ou seja, com seu giro(spin) positivo e negativo. Assim, a construção do bit quântico, ou qubit, é obtida. Quando o spin está positivo, o átomo pode ser lido como 1, e quando o spin for negativo, o átomo pode ser lido como 0. Isto corresponde ao sistema digital de 1s e 0s que os computadores tradicionais utilizam. O giro de um átomo para positivo ou negativo é o mesmo que mudar o estado de um transistor de ligado para desligado, onde ambos representam dados em termos de 1s e 0s. Os qubits diferem dos bits dos computadores digitais tradicionais, porque um átomo ou núcleo pode estar em um estado de “ superposição”, representando simultaneamente ambos 0 e 1 e tudo entre os mesmos. A combinação de superposições [de Lima et al., 2003] e correlações permitem um computador quântico ter um enorme poder computacional, permitindo e execução cálculos em paralelo, de maneira não linear e, exponencialmente, mais rápido que os computadores convencionais.
2.3. Notação
O qubit é representado por um sistema quântico[Schuler and Alvares, 2001] de dois estados que é constituído por apenas uma partícula. Um sistema quântico de dois estados é descrito por um vetor unitário complexo no espaço de Hilbert C2. O espaço de Hilbert é um espaço vetorial complexo. Os dois estados do sistema quântico são representados por: |0> e |1>. O estado |0> é representado pelo vetor complexo (1,0) em C2 enquanto que o estado |1> é representado pelo vetor (0,1). Os vetores (1,0) e (0,1) ou |0> e |1> constituem a base ortogonal no espaço de Hilbert. Para ilustrar, abordaremos um registrador quântico de 3 qubits. Esse registrador é representado pela superposição linear de seus oito autoestados como segue: c1|000> + c2|001> + c3|010> + c4|011> + c5|100> +c6|101> + c7|110> + c8|111>. Para reduzir a notação, considera-se x1 = |000>, x2 |001>, x3 = |010> ... x8 = |111>. Sejam c1..c8 são amplitudes de probabilidade, então Σ8 j=1 (|Cj|)2=1. O estado de um registrador quântico de n qubits é a superposição linear de 2n autoestados. Uma superposição uniforme de autoestados é uma superposição linear de estados onde todos os autoestados apresentam a mesma amplitude de probabilidade.
Comprimento do Numero a ser Fatorado (em Bits)
Tempo de Fatoração por Algoritmo Clássico
Tempo de Fatoração com o Algoritmo de Shor
512
4 dias
34 segundos
1024
100 mil anos
4,5 minutos
2048
100 mil bilhões de anos
36 minutos
4096
100 bilhões de quadrilhões de anos
4,8 horas
Tabela 1: Comparações entre os tempos estimados para fatoração de números de comprimentos diferentes com um algoritmo clássico e com o de Shor
3. Algoritmos Quânticos
Algoritmos Quânticos são desenvolvidos de forma que se possa minimizar a complexidade do código e aumentar a eficiência computacional, quando comparados com algoritmos rodados em computadores convencionais [Emberson, 2002]. Dentre os algoritmos quânticos já definidos, serão comentados nesta seção, dois dos algoritmos mais conhecidos: o algoritmo de Shor e o algoritmo de Grover [Hirvensalo, 2001].
3.1. Algoritmo de Shor
Em 1994, Peter Shor [Shor, 1994] desenvolveu um algoritmo para fatorar em tempo polinomial (ou probabilístico) n-dígitos em um computador quântico. Um dos algoritmos clássicos mais eficiente atualmente, tem seu tamanho de entrada exponencial. A relevância do algoritmo de Shor [Hayward, 1999b] esta em apresentar a possibilidade de aplicação da Computação Quântica em relevantes áreas da Ciência da Computação, como a Criptografia e a Codificação de Dados. O algoritmo de Shor propõe a fatoração de números grandes utilizados na maioria dos mundos sistemas de criptografia. Se um método eficiente de fatorar números grandes é implementado, a maioria das cenas de encriptação atuais seriam quase que inúteis na proteção de dados. A tabela 1 mostra algumas comparações entre esses tempos estimados para fatoração de números de comprimentos distintos. No caso do algoritmo clássico (coluna do meio), o tempo é estimado com base na velocidade dos processadores atuais. Acreditava-se que nenhum algoritmo seria eficiente o bastante a ponto de poder quebrar a segurança de sistemas criptográficos. Dentro desta perspectiva, tem-se como exemplo, o algoritmo de RSA, extensamente usado na codificação de protocolos, e cuja segurança se baseia na dificuldade da solução para este problema.
3.2. Algoritmo de Procura de Grover
Grover [Hirvensalo, 2001] desenvolveu um algoritmo para ser utilizado na procura de dados não ordenados em base de dados. Embora esse algoritmo não possua uma eficiência tão grande quanto o algoritmo de Shor, ele permite a solução de problemas que seriam não computáveis em computadores clássicos. Suponha que você tem um sistema com N = 2n estados, etiquetado S1, S2, . . . S N. Estes estados de tamanho 2n são representados por strings de n bit’s. Suponha que ha um elemento marcado Sm que satisfaça a condição C(Sm) = 1, e que, para todos esta- dos restantes C(S) = 0. Além disso, suponha que C pode ser avaliado em um tempo unitário [Hayward, 1999a]. A ideia do algoritmo de Grover é colocar o registo em uma superposition igual de todos os estados, e então, inverter seletivamente a fase do estado marcado. Neste momento, o algoritmo e executa uma inversão sobre uma operação media um numero de vezes. A inversão seletiva do estado marcado segue pela inversão sobre as etapas medias e tem o efeito de aumentar a amplitude do estado marcado por O(1/ √N). Consequentemente, após O(√N) operações de probabilidade a medição de todos os estados marcados aproxima-se a 1. O algoritmo de Grover tem outra aplicação muito útil, no campo de 'quebrar' dados codificados. Nós estamos interessados na situação onde um banco de dados virtual é tão grande que não caberia nas memórias de todos os computadores do mundo. Isto permite que um computador quânticos quebre outro sistema extensamente usado para proteger dados. Este é o Padrão para Codificação de Dados. DES se baseia em um número de 56 bits onde ambos os participantes têm que saber de antecipadamente. Se um espião intercepta texto claro então a meta dele é achar a chave de forma que qualquer texto futuro possa ser decodificado. Uma procura exaustiva através de meios convencionais faria necessário procurar 2 elevado a 55 chaves antes de atingir o correto. Isto levaria mais que um ano até mesmo se um bilhão de chaves fossem experimentadas por segundo. Através de comparação, o algoritmo de Grover DES poderia achar a chave depois de só 185 pesquisas. Para DES convencional, um método para parar computadores modernos de quebrar o código (i.e. se eles se tornassem mais rápidos) simplesmente seria acrescentar dígitos extras ao código que aumentaria
exponencialmente o número de pesquisas necessárias. Isto não acontece desta forma em uma quebra em um computador quântico. Grover também declarou que computadores quânticos seriam estatísticos, enquanto achando simples números que dependam coletivamente de muitos dados por exemplo idade mediana de uma população.
4. Conclusão
O tema abordado está inserido dentro de uma abordagem atual e muito interessante, exigindo uma extensa base teórica, tanto nos aspectos fundamentais da Computação Quântica quanto no paradigma da programação funcional. As idéias fundamentais da Computação Quântica foram brevemente discutidas, tornando explicitas as principais vantagens de sua utilização, seu funcionamento e aspectos essenciais para sua aplicação.
Referências
É hora de descobrir os segredos da computação quântica, http://www.tecmundo.com.br/2666e-hora-de-descobrir-os-segredos-da-computacao-quantica.htm Computador Quântico, http://pt.wikipedia.org/wiki/Computador_qu%C3%A2ntico Vilar, V. S. (2003). Superposição Coerente. Emberson, P. (2002). Quantum Algorithm Designer. Hayward, M. (1999a). Quantum computing and grover’s algorithm. Hayward, M.
(1999b). Quantum computing and shor’s algorithm. Hirvensalo, M. (2001). Quantum Computing. Springer Verlag. Oliveira, I. S., Sarthour, R. S., Bulnes, J. D., Belmonte, S. B., Guimaraes, A. P., de Azevedo, E. R., Vidoto, E. L. G., Bonagamba, T. J., and Freitas, J. C. C. (2003). Computação quântica manipulando a informação oculta do mundo quântico. Ciência Hoje, 33(139):22 – 29. Rieffel, E. G. and Polak, W. (2000). An Introduction to Quantum Computing for NonPhysicists.
Sabry, A. (2003). Modeling quantum computing in haskell. In ACM SIGPLAN 2003 Haskell Workshop. Schuler, J. P. S. and Alvares, L. O. C. (2001). Operações logicas quânticas e colorabilidade de grafos. In Jornadas Chilenas de Computação, Puntarenas. Shor, P. W. (1994). Algorithms for quantum computation: Discrete logarithms and factoring. In IEEE Symposium on Foundations of Computer Science, pages 124 – 134. Wadler, P. (1995). Monads for functional programming. Lecture Notes in Computer Science, 925:24 – ??