ITRODUÇÃO À COMPUTAÇÃO QUÂTICA Notas de aula do mini-curso ministrado na UFSCar Renato de Oliveira Violin e Prof. Dr. José Hiroki Saito Departamento de Computação Universidade Federal de São Carlos (UFSCar) Outubro - 2008 SUMÁRIO CAPÍTULO 1: INTRODUÇÃO À COMPUTAÇÃO CLÁSSICA.........................................................1 CAPÍTULO 2: PRINCÍPIOS MATEMÁTICOS E FÍSICOS................................................................12 CAPÍTULO 3: COMPUTAÇÃO QUÂNTICA - PORTAS LÓGICAS.................................................29 CAPÍTULO 4: ALGORITMOS QUÂNTICOS.....................................................................................44 1 CAPÍTULO 1: ITRODUÇÃO À COMPUTAÇÃO CLÁSSICA Dígitos binários Os computadores manipulam representações de números em forma binária, ou seja, uma seqüência de zeros e uns. Este formato é utilizado por ser de fácil representação no hardware, comparado com outros formatos, como por exemplo, o decimal. Fisicamente, números binários são implementados pelo hardware usando sinais elétricos. Por exemplo, +5 volts representa o número 1, e 0 volts representa o número 0. Um número binário tem a seguinte forma: bn −1...b2b1b0 onde n é o número de dígitos binários e b0 é o bit menos significativo. Para converter um número binário em decimal, usamos a seguinte formula: D = 2n −1(bn −1 ) + ... + 2n −2 (bn −2 ) + 22 (b2 ) + 21(b1 ) + 20 (b0 ) Exemplo 1: Convertendo o número binário 11010100 para decimal: 27 (1) + 26 (1) + 25 (0) + 24 (1) +23 (0) + 22 (1) + 21 (0) + 20 (0) = 128 + 64 + 16 + 4 = 212 Portas lógicas e circuitos As portas lógicas são os elementos mais básicos e elementares de um sistema de computação. Elas são responsáveis por realizar as operações lógicas sobre os bits. Os valores de entrada e saída são números binários. Cada porta lógica realiza uma tarefa trivial, porém, juntando várias portas podemos construir circuitos que realizam operações mais complexas. A tabela verdade de uma porta lógica mostra o resultado de sua aplicação, como será visto a seguir. As portas lógicas básicas e suas respectivas tabelas verdades são as seguintes: OT: inverte a entrada. Figura 1. Porta lógica NOT e sua tabela verdade. 2 OR: retorna 1 se uma das entradas é 1. Figura 2. Porta lógica OR e sua tabela verdade. AD: retorna 1 se ambas as entradas são 1. Figura 3. Porta lógica AND e sua tabela verdade. OR: é uma porta OR e uma porta NOT combinadas. O resultado é exatamente o inverso da porta OR. Figura 4. Porta lógica NOR e sua tabela verdade. 3 AD: é uma porta AND e uma porta NOT combinadas. O resultado é exatamente o inverso da porta AND. Figura 5. Porta lógica NAND e sua tabela verdade. XOR: retorna 1 somente se uma das entradas é 1. Figura 6. Porta lógica XOR e sua tabela verdade. Combinações de portas NAND podem ser usadas para simular todas as outras. Por este motivo, a porta NAND é considerada uma porta universal. Isso significa que qualquer circuito pode ser expresso pela combinação de portas NAND. A figura 7 exemplifica como construir as portas NOT, AND, e OR. (a) (b) (c) Figura 7. Combinação de portas NAND formando: (a) NOT, (b) AND e (c) OR. 4 Combinando as diferentes portas lógicas, criamos circuitos que realizam operações mais complexas do que uma simples porta lógica isolada. A figura 8 mostra um circuito composto pelas portas OR, AND, e NOT, e sua respectiva tabela verdade. Figura 8. Combinação de portas lógicas para formar circuitos mais complexos. Desafios de implementação de computadores usando circuitos integrados A evolução da computação passou das válvulas para os transistores. Com os transistores foi possível reduzir o tamanho dos circuitos e integrá-los em uma única pastilha de silício, além de serem mais rápidos, mais duradouros não esquentarem tanto e consumirem menos energia. A figura 9 mostra diferentes encapsulamentos de um transistor. Lembre-se que são os transistores que implementam as operações lógicas. Figura 9. Diferentes encapsulamentos de transistores. A figura 10 mostra a implementação de um transistor MOS (Metal-OxideSemiconductor). Não entraremos em detalhes de seu funcionamento. Apenas vamos nos atentar para o gate (porta) e o oxide (óxido). O gate é construído usando um metal. O oxide é uma fina camada isolante que separa o gate do substrato p. Figura 10. Esquema de implementação de um transistor MOS. 5 O termo feature size refere-se ao tamanho do gate do transistor, e consiste na menor dimensão que caracteriza a tecnologia de fabricação de um circuito integrado MOS. Nos dois gráficos a seguir podemos ver a relação do feature size com o oxide e a relação do feature size com a voltagem utilizada na fonte (source). Figura 11. Relação feature size e a espessura do oxido. Figura 12. Relação feature size e a voltagem. 6 Pelo gráfico da figura 11 podemos verificar que quanto menor o feature size, ou seja, o tamanho do transistor, menor deve ser a espessura do óxido isolante que separa o gate do substrato p. Portanto temos uma limitação no tamanho que o feature size pode atingir, pois atingindo um tamanho muito pequeno o óxido isolante tende a desaparecer, ou seja, perde-se o isolamento. No gráfico da figura 12 verificamos que diminuir o feature size implica em diminuir a voltagem necessária. Vemos que atualmente o feature size está entre 10-1 e 100 e a voltagem está entre 100 e 101, ou seja, os computadores atuais trabalham a aproximadamente 5 volts. Diminuindo a voltagem diminui a relação sinal/ruído, ou seja, com baixa voltagem fica mais difícil controlar a operação, pois qualquer ruído pode interferir no funcionamento do circuito. A miniaturização dos transistores possibilitou a criação de microprocessadores com milhares de transistores, como mostram as figuras a seguir. Figura 13. Microprocessador Intel 4004 com 2300 transistores (1971). Figura 14. Microprocessador Intel 8080 com 6000 transistores (1974) 7 Figura 15. Pentium IV com 35.000.000 transistores (2001). Figura 16. Itanium com dois bilhões de transistores (2008) 8 O crescimento da quantidade de transistores foi observado pela primeira vez em 1965 por Gordon Moore (um dos fundadores da Intel) em 1965. A lei de Moore diz que a cada dois anos a quantidade de transistores em um chip dobra. Após vermos essa evolução na miniaturização e o aumento da quantidade dos transistores, podemos concluir que em um determinado momento os transistores serão limitados pelas leis da Física, ou seja, eles se tornarão tão pequenos que efeitos quânticos irão aparecer. Nesse momento teremos de deixar a mecânica clássica de lado e começar a trabalhar com a mecânica quântica para lidar com esses efeitos. É nesse momento que a computação quântica entra em ação. Figura 17. Lei de Moore. Computação reversível e energia As portas lógicas que vimos anteriormente tomam como entrada dois bits e resultam em um bit. Uma porta lógica é irreversível quando, dado uma saída, não é possível encontrar quais bits originaram aquela saída. Por exemplo: suponha que usando uma porta AND obtemos a saída 1. Como podemos saber qual foi exatamente a entrada? A entrada poderia ser 0 e 1 ou 1 e 0. A mesma idéia pode ser aplicada na porta OR. Suponha que obtivemos 1, a entrada poderia ser 0 e 1 ou 1 e 0. Por esse motivo, isto é, dada a saída da porta lógica não podermos saber qual foi a entrada. Chamamos essas portas de portas irreversíveis. Por outro lado, quando temos a saída de uma porta e podemos saber com certeza qual foi a entrada que originou aquela saída, dizemos que a porta é reversível. Por exemplo: a porta NOT é reversível, pois se tiver 0 na saída, sabemos que a entrada foi 1, e se tivermos 1 na saída sabemos que a entrada foi 0. O problema das portas irreversíveis é que elas têm como entrada mais bits que a saída. No caso de uma porta de duas entradas e uma saída, o que acontece com a entrada? Um dos bits da entrada é transformado em saída, e o outro bit é “apagado”. Na 9 representação de bits ao nível de partículas, a operação de apagar a informação causa a dissipação dessa informação em forma de calor. Por outro lado, as portas reversíveis possuem bits de controle para controlar a operação da porta, além de possuir o mesmo número de bits na entrada e na saída, evitando que qualquer informação seja “apagada”. A questão de reversibilidade desempenha um papel importante na computação quântica, devido ao fato de que se a informação é apagada e é dissipada em calor, esse calor gera descoerência, que destrói as superposições afetando o paralelismo quântico. Ao mesmo tempo, a mecânica quântica impõe restrições que permite apenas operações reversíveis. As portas reversíveis possuem bits de controle e bits alvo (bits que vão sofrer as alterações). Se um bit de controle for 0, nenhuma operação será realizada nos bits alvo. Se todos os bits de controle forem 1, a operação nos bits alvo será realizada. Essas portas que possuem esse controle são chamadas de portas controladas, que estão exemplificadas a seguir: COT: parecida com a porta NOT, mas com a linha de controle no bit a. O bit b é o bit alvo. Figura 18. Porta lógica controlada CNOT e sua tabela verdade. Toffoli: possui duas linhas de controle. Se as duas linhas forem 1, a operação inverte o terceiro bit. Figura 19. Porta lógica controlada Toffoli e sua tabela verdade. Fredkin: possui uma linha de controle. Se o controle for 1, a operação inverte os bits alvos entre si, ou seja, o bit b´ = c e o bit c´ = b. 10 Figura 20. Porta lógica controlada Fredkin e sua tabela verdade. Breve histórico da computação quântica e seus desafios • • • Em 1982 Richard Feynman afirma que sistemas quânticos não poderiam ser modelados eficientemente em computadores clássicos, isto é, apenas computadores baseados nas leis da mecânica quântica poderiam modelar sistemas quânticos. Em 1985 David Deutsch estende a teoria da computação clássica desenvolvendo uma base para a computação quântica, isto é, um modelo de circuitos quânticos. Até o inicio dos anos 90 a computação quântica era apenas uma curiosidade acadêmica. A computação quântica tomou um grande impulso em 1994 quando Peter Shor publicou seu algoritmo que resolve o problema de fatoração de números grandes em tempo polinomial, colocando assim, em risco a segurança da criptografia RSA, a qual é baseada na fatoração. Outro trabalho muito importante na área foi publicado em 1996 por Lov Grover, que foi o algoritmo quântico de busca. Este algoritmo é conhecido como algoritmo de Grover. Atualmente, existem diversas variações dos algoritmos de Shor e de Grover, porém, não há noticia de nenhum novo algoritmo de importância como os dois anteriores. Pesquisadores afirmam que encontrar novos algoritmos quânticos é uma tarefa difícil, pois os “programas quânticos” são de nível muito baixo, isto é, eles são representados por circuitos quânticos. Assim, uma solução para esse problema seria a utilização de linguagens de programação quânticas, fornecendo um nível maior de abstração. Fazendo um paralelo com a computação clássica, construir algoritmos quânticos seria algo como programar um computador clássico manipulando diretamente suas portas lógicas (coisa que não é feita a muito tempo). Podemos resumir em três aspectos as dificuldades/desafios de se construir algoritmos quânticos: 1. A própria teoria da mecânica quântica ainda está incompleta, principalmente no que diz respeito às medidas quânticas. 2. A ausência de hardwares para executarem os algoritmos quânticos, ou seja, ainda não há hardwares que implementam um conjunto de operações quânticas (portas quânticas), dificultando o desenvolvimento de linguagens. 3. A falta de aplicações práticas para a computação quântica. 11 Resumo: computação clássica X computação quântica. Aspectos Computação Clássica Computação Quântica Bit Qubit 0 ou 1 exclusivamente 0, 1 e sobreposições Voltagens, 0v e 5v ou 2,5v e 2,5v Spins, up e down; polarização de fóton etc. Matemática Álgebra de Boole Espaços de Hilbert Teoria física Física clássica Física quântica Máquina de Turing Máquina de Turing quântica introduzida por David Deutsch Até 20 nm 10-10m, nível atômico e subatômico Em série Paralelização massiva 1 valor por registrador 2n valores por registrador, onde n é o número de qubits. Sujeita a atrasos Instantânea Informação Valores Representação Conceito Área de operação Processamento Memória Comunicação 12 CAPÍTULO 2: PRICÍPIOS MATEMÁTICOS E FÍSICOS Bits quânticos (qubits) Da mesma forma que na computação clássica, na computação quântica também precisamos armazenar, buscar e processar a informação. Como já vimos na aula anterior, na computação clássica, utilizamos o bit para armazenar a informação e nos dar uma abstração matemática para manipulá-los. Da mesma forma que temos uma abstração com o bit no computador clássico, fazemos também com os bits no computador quântico, que são chamados qubits. Os bits quânticos (qubits) são tratados como objetos matemáticos e representados por vetores. Os dois estados possíveis de um qubit são 0 ou 1 , que representam, respectivamente, os estados clássicos 0 e 1. A notação é chamada de notação de Dirac, que é a notação padrão para os estados quânticos. A representação vetorial dos qubits 0 e 1 são: 1 0 = 0 0 1 = 1 e Podemos ver que esses dois vetores formam uma base ortonormal de um espaço vetorial de dimensão 2 ou seja, eles são ortogonais (com produto interno igual a zero) e unitário (com norma igual a 1). Exemplo 1: Os vetores são ortogonais, 0 0 1 = 1 0 = 0 + 0 = 0 1 e são unitários, portanto, formam uma base ortonormal 0 = 0 0 = 1=1 1 = 11 = 1=1 Na computação quântica é utilizado o espaço vetorial complexo de Hilbert. Um estado arbitrário ψ é representado por ψ = α 0 + β 1 , onde α e β são números complexos. Os números α 2 e β 2 são as probabilidades do estado ψ ser 0 ou 1 , depois que uma medida for realizada. Uma forma muito útil para a visualização do estado de um qubit é a Esfera de Bloch, que nos fornece uma representação do estado de um qubit em três dimensões. Dado um estado arbitrário ψ = α 0 + β 1 , a sua representação na Esfera de Bloch é feita por um vetor de três dimensões, 13 x cos ϕ sen θ y = sen ϕ sen θ z cos θ onde, ( ) ( ) θ = 2 arccos α = 2 arcsen β ϕ = arg (β ) − arg (α) γ = arg (α) No procedimento inverso, ou seja, quando temos a representação na Esfera de Bloch e queremos obter o valor do qubit, usamos a seguinte equação: ψ = cos θ θ 0 +e iϕ sin 1 2 2 A Figura 1 mostra a representação gráfica da esfera. Figura 1. Esfera de Bloch. 14 Exemplo 2: Dado o estado ψ = 1 2 0 + 1 1 , encontrar a respectiva 2 representação na Esfera de Bloch. 1. Encontrar os ângulos θ e ϕ . 1 2 2 θ = 2 arccos + 0 = 2 arcsen 2 1 1 θ = 2 arccos = 2 arcsen 2 2 θ = 2 ⋅ 45° = 90° 1 2 + 02 2 1 1 ϕ = arg − arg 2 2 ϕ =0 2. Substituir os valores dos ângulos e encontrar as posições no plano 3-D. x cos ϕ sen θ y = sen ϕ sen θ z cos θ x cos 0° sen 90° 1⋅1 1 y = sen 0° sen 90° = 0 ⋅ 1 = 0 z cos 90 ° 0 0 1 1 Portanto, o estado ψ = 0 + 1 está posicionado no ponto coincidente à 2 2 intersecção do eixo x com a esfera simétrica. 15 Para finalizar a discussão sobre qubits, a principal diferença entre um bit e um qubit é o principio de superposição de estados, que será o próximo assunto a ser discutido. Princípio de Superposição de estados Para entender o que é superposição considere um exemplo: imagine um bit como uma moeda. As duas faces, cara e coroa, representam os dois estados possíveis, 0 e 1. Após lançarmos essa moeda e, depois, verificando seu estado, a encontraremos no estado “cara” ou “coroa” (“0” ou “1”), ou seja, um bit só pode ser 0 ou 1 em um dado instante, da mesma forma que a moeda só pode ser “cara” ou “coroa”. Considere agora uma moeda quântica representando um qubit. O qubit possui o princípio de superposição de estados, e nesse exemplo, a moeda representa o qubit, ao lançarmos essa moeda, ela poderá ser “cara” e “coroa” ao mesmo tempo, isto é, ela poderá estar nos dois estados possíveis simultaneamente. Assim, quando afirmamos que um dado qubit está em superposição, significa que esse qubit pode ser 0 e 1 ao mesmo tempo. A representação matemática para esse princípio é: ψ =α 0 +β 1 onde ψ é o estado em superposição, α e β são números complexos, cujo quadrado das normas representam as amplitudes das probabilidades, como segue: a 2 e β 2 2 2 tal que α + β = 1 A seguir veremos um exemplo de como calcular as probabilidades. Exemplo 3: Determine as probabilidades do resultado da medida ser 0 ou 1 , para o estado: ψ = 1 0 + 3 2 1 3 Primeiro verifique se a soma das probabilidades é 1. 2 1 0 + 3 2 1 = 3 = Converta o valor das frações em porcentagens. 1 + 3 2 2 3 1 2 + =1 3 3 16 1 (100) = 33.3 e 3 2 (100) = 66.6 3 Portanto, a probabilidade do resultado da medida ser 0 é 33.3%, e a probabilidade do resultado da medida ser 1 é 66.6%. Fazendo uso da superposição, com registrador quântico de n qubits, pode-se ter 2 estados superpostos simultaneamente. Com um registrador clássico de n bits, pode-se ter um total de 2n estados, porém, o registrador pode armazenar apenas um estado por vez. Portanto, com um registrador de 2 qubits teremos 4 estados ao mesmo tempo ( 00 , 01 , 10 , 11 ), com 3 qubits teremos 8 estados ao mesmo tempo etc. n A superposição desempenha um papel chave na computação quântica, permitindo que todos os dados sejam processados simultaneamente (paralelismo quântico). Existe um problema com este fenômeno, pois de acordo com as leis da mecânica quântica, quando é realizada uma medida em um objeto que está em superposição, este objeto se colapsa para um dos seus estados. Com isto, pode-se dizer que um qubit pode estar em superposição em tempo de execução, porém, quando é realizada uma medição, o valor deste se colapsa para um dos estados (“0” ou “1”) de acordo com a probabilidade de cada um dos estados. Os algoritmos quânticos conseguem “driblar” esse problema por meio de algumas técnicas, como por exemplo, a interferência, que não será abordado neste curso. Vamos revisar alguns pontos importantes da álgebra linear que são usados na computação quântica. Álgebra linear A álgebra linear é a base matemática utilizada na mecânica quântica e, portanto, na computação quântica. A álgebra linear é extensa, portanto, para o objetivo deste curso, serão apresentadas apenas as partes da álgebra linear que são utilizadas na computação quântica. Observação: É importante manter em mente a seguinte hierarquia: álgebra linear ← mecânica quântica ← computação quântica Isso significa que a computação quântica está baseada na mecânica quântica e a mecânica quântica usa a álgebra linear como base matemática. Portanto, sempre que falarmos da aplicação da álgebra linear na computação quântica estamos nos referindo a aplicação da álgebra linear na mecânica quântica. A computação quântica utiliza o espaço vetorial complexo de Hilbert. Este espaço é infinito, porém, na computação quântica é utilizado apenas em duas dimensões. Neste espaço, os vetores são compostos por números complexos. 17 a) otação otação z* Descrição Complexo conjugado do número complexo z. (1 + i ) * = 1 − i u Representação de vetor. Também chamado ket. u Vetor dual de u . Também chamado de bra. u v Produto interno dos vetores u e v . u ⊗v u v u, v Produto tensorial de u e v . uv A* AT Complexo conjugado da matriz A. Transposta da matriz A. ∗ ( ) Hermitiano conjugado ou matriz adjunta de A, A† = AT . A† v Au a b † a * c * c d = b * d * Produto interno entre v e A u . Lembre-se que os vetores são representados como: u u = 1 u2 onde u1 = a1 + b1i e u2 = a2 + b2i . b) Vetor dual É o vetor obtido transpondo o vetor u e conjugando seus componentes. O vetor dual é também conhecido como bra, e é representado pelo símbolo u = u Exemplo 4: † = u1∗, u2∗,..., un∗ O vetor dual de 0 é: 0 = 0 † = 1∗, 0∗ . . 18 Exemplo 5: Dado o vetor u onde: 1 − i . u = 1 + i O vetor dual de u é: ∗ ∗ u = (1 − i ) , (1 + i ) = (1 + i ), (1 − i ) c) Produto interno O produto interno toma como entrada dois vetores e produz um número complexo como saída. Na computação quântica, o produto interno de dois vetores u e v é representado por u v . Dados, α 1 u = ⋮ αn e β 1 v = ⋮ βn pode-se calcular o produto interno: β 1 α∗ ,... , α∗ ⋮ = u × v n 1 βn = u v Exemplo 6: Cálculo do produto interno dos seguintes vetores: 3 + 5i u = 2 + 2 i e 2 + 4i . v = 1 + 3 i 2 + 4i 1 + 3i 2 = (6 + 12i − 10i − 20i ) + (2 + 6i − 2i − 6i 2 ) u v = 3 − 5i 2 − 2i = 10 + 6i − 26i 2 = 36 + 6i i 2 =− 1 19 d) Vetores ortogonais Dois vetores são ortogonais se u ≠ 0, v ≠ 0, e u v = 0 . Exemplo 7: Os vetores 1 1 u = e v = 1 −1 são ortogonais porque: (( ) ( )) u v = 1, 1 , 1, − 1 = 1 × 1 + 1 × (−1) =0 e) Operador linear Um operador A é um operador linear se A: V → W, onde V e W são espaços vetoriais complexos e, A ∑ αi vi = i A notação A v ∑ αi A ( vi ) i ( ) é freqüentemente encontrada para denotar A v . Em computação quântica é mais comum descrevermos os operadores na forma de matriz. Exemplo 8: 0 1 , aplicado no Dado o operador linear A definido pela matriz A = 1 0 estado: 1 0 + 3 1 A 0 + 3 1 0 1 3 = 1 0 2 3 2 1= 3 = 2 1 3 0 1 1 1 0 3 0 + 2 3 1 3 = 2 1 3 2 0 + 3 1 1 3 20 Observação: A matriz A utilizada neste exemplo é a matriz que representa a operação lógica NOT. Veja que na saída o resultado foi o inverso da entrada, ou seja, as probabilidades de amplitudes foram trocadas. f) Matriz adjunta A matriz adjunta A† é uma matriz que é obtida conjugando todos os elementos de A e, em seguida, formando a matriz transposta dos elementos conjugados: T ( ) A† = A∗ Exemplo 9: Matriz adjunta 1 + i 1 − i † = 1 − i −1 −1 1 + i 1 1 g) Autovalor e autovetor O número complexo λ é um autovalor do operador linear A se existir um vetor u tal que: Au =λ u onde λ é um autovalor de u e u é um autovetor associado a este escalar. Os autovalores de A são obtidos a partir da equação característica de A: ( ) c (λ ) = det A − λI = 0 Resolvendo esta equação, chamada equação característica, obtemos o polinômio característico de A. Resolvendo este polinômio, encontramos todos os autovalores de A. Encontrando os autovalores de A podemos encontrar seus autovetores. Exemplo 10: Autovalores e autovetores de X. 0 1 X = 1 0 −λ 1 det X − λI = 1 − λ 2 =λ −1 ( ) Este é o polinômio característico. As duas soluções para λ 2 − 1 = 0 são λ =− 1 e λ = + 1 . Se nós usarmos o autovalor λ =− 1 para determinar o autovetor 21 correspondente λ−1 de X, temos: X λ−1 = − 1 λ−1 0 1 α = −α 1 0 β −β β = −α α −β Nós temos α =− β , portanto, para α = 2 então β =− 2 . Assim, obtemos um autovetor 2 para o autovalor λ =− 1 . −2 Note que foi usado o autovalor λ =− 1 para rotular o autovetor λ−1 . h) Operador unitário A matriz U é unitária (operadores unitários normalmente são representados por U) se: U −1 = U † ou UU † = U †U = I . Operadores unitários sempre preservam a norma do vetor e são inversíveis. Em computação quântica todas as operações devem ser unitárias. Exemplo 11: As matrizes de Pauli, a seguir, são unitárias: UU † = U †U = I 1 0 1 0 . = 1 0 I = 0 1 0 1 0 1 0 1 0 1 1 0 . X = 1 0 = 0 1 1 0 0 −i 0 −i 1 0 . Y = i 0 = 0 1 i 0 22 1 0 1 0 . Z = 0 −1 = 0 − 1 1 0 0 1 i) Operador Hermitiano Uma matriz hermitiana A possui a seguinte propriedade: A = A† . Exemplo 12: As matrizes de Pauli, a seguir, são hermitianas: 1 0 =, I † = 1 0 I = 0 1 0 1 0 1 =, X † = 0 1 X = 1 0 1 0 0 −i 0 −i † Y= =, Y = i 0 i 0 1 0 1 0 † Z= =, Z = 0 −1 0 − 1 j) Produto externo e Projetor O produto externo, ou produto vetorial, u v é definido como um operador linear A que realiza a seguinte operação: (u v )( w ) = u v w = v w u Este resultado pode ser interpretado como: 1. O resultado do operador linear u v atuando sobre w ou 2. O resultado da multiplicação de u por v w . Na forma matricial, u v pode ser representado como: 23 u 1 u 2 ⋮ v ∗ v ∗ 2 1 u v∗ u v∗ 1 1 1 2 ∗ ∗ u v u2v2 … = 2 1 ⋮ ∗ un v1 un v2∗ ⋯ u1vn∗ ⋯ u2vn∗ . ⋱ ∗ ⋯ un vn Na aula seguinte, usaremos projetores para trabalhar com medidas quânticas. Os projetores são um tipo de operador utilizado para realizar as medidas sobre os qubits. Um projetor pode ser representado por uma somatória de produtos externos: n P = ∑ ui ui ì =1 = u1 u1 + u2 u2 + ... + un un Por exemplo, { V = 00 , 01 , 10 , 11 um } projetor P que projeta em um subespaço Vs = um { 00 , 01 } espaço vetorial é dado por (veja exemplo 14): ( ) P α00 00 + α01 01 + α10 10 + α11 11 = α00 00 + α01 01 . Assim, podemos pensar nos projetores como um filtro que descarta os vetores que não estão contidos no seu subespaço. Exemplo 13: Considere o estado ψ = α 0 + β 1 . Aplicando o projetor P, que projeta o estado acima no subespaço Vs = { 0 , 1 } temos: ( ) ( ) 0 0 ψ = 0 0 α 0 +β 1 = 0 α =α 0 1 1 ψ = 1 1 α 0 +β 1 =1 β =β 1 24 { } Exemplo 14: Dado o espaço vetorial V = 00 , 01 , 10 , 11 . Aplicando o projetor P que projeta no subespaço no subespaço Vs = ( 00 00 + 01 01 ) (α 00 { 00 , 01 } temos: 00 + α01 01 + α10 10 + α11 11 ) 00 00 00 + 00 00 01 + 00 00 10 00 00 11 + 01 01 00 + 01 01 01 + 01 01 10 01 01 11 00 (1) + 00 (0) + 00 (0) 00 (0) + 01 (0) + 01 (1) + 01 (0) + 01 (0) α00 00 + α01 01 Portanto, fica claro, por meio deste exemplo que os projetores fazem uma espécie de filtro, filtrando apenas os vetores que pertencem ao seu subespaço vetorial. j) Produto tensorial É uma maneira de juntar espaços vetoriais para formar espaços vetoriais maiores. Essa construção é fundamental para entender a computação quântica quando estamos lidando com sistemas de muitos qubits. Se u e v são bases para V e W { } { } respectivamente, então {u ⊗v } forma uma base para V pode ser escrito de diferentes formas: u ⊗ v = u v = u, v = uv Exemplo 15: Produto tensorial a b ⊗ x y A ⊗ B = v w c d a ⋅ B b ⋅ B = c ⋅ B d ⋅ B ax ay bx by av aw bv bw = cx cy dx dy cv cw dv dw ⊗ W . O produto tensorial 25 Exemplo 16: Dado os dois qubits a seguir: 1 0 = 0 e 0 1 = 1 Temos os seguintes produtos tensoriais: 1 1 1 0 00 = ⊗ = 0 0 0 0 0 1 0 1 01 = ⊗ = 0 1 0 0 0 0 1 0 10 = ⊗ = 1 0 1 0 0 0 0 0 11 = ⊗ = 1 1 0 1 Emaranhamento “O emaranhamento é o único recurso da mecânica quântica que desempenha um papel fundamental central nas aplicações da computação quântica e da informação quântica” (NIELSEN; CHUANG, 2005, p. 41). “Todos os algoritmos quânticos com ganho exponencial conhecidos até hoje aproveitam o emaranhamento de alguma forma” (MARQUEZINO, 2006, p. 12). O emaranhamento é mais utilizado na comunicação quântica e no teleporte quântico. “Emaranhamento é a capacidade de pares de partículas interagirem a qualquer distância instantaneamente” (PERRY, 2006, p. 111). Bulnes (2005) define emaranhamento como: um processo atômico que produz fótons gêmeos, os mesmos que, pela conservação do momento linear são emitidos em direções contrárias, e por conservação do momento angular devem ter polarizações ortogonais. Agora, quando um dos fótons atravessa um polarizador (adquirindo a polarização correspondente), simultaneamente o fóton gêmeo (sem ter atravessado nenhum polarizador) adquire a polarização ortogonal. (BULNES, 2005, p. 35). Como pode ser observado na definição acima, é como se o segundo fóton soubesse do resultado da polarização do primeiro fóton, e assim, assumindo o resultado oposto ao do primeiro. Este fenômeno não possui um análogo clássico e ainda não possui uma teoria completa sobre ele (NIELSEN; CHUANG, 2005). O paradoxo EPR (Einstein, Podolski e Rosen) que tinha como objetivo mostrar que a mecânica quântica era uma teoria incompleta acabou colaborando para a descoberta deste fenômeno. 26 Postulados da mecânica quântica Podemos pensar nos postulados da mecânica quântica como uma teoria/modelo a ser considerado como um conjunto de regras apropriadas para descrever os eventos microscópicos. Assim, vamos descrever essas regras de forma resumida aqui, pois elas já estão implícitas nas operações da computação quântica. Postulado 1 – Espaço de estados A qualquer sistema físico isolado existe associado um espaço vetorial complexo com produto interno (ou seja, um espaço de Hilbert), conhecido como espaço de estados do sistema. O sistema é completamente descrito pelo seu vetor de estado, um vetor unitário no espaço de estados. No contexto da Computação quântica, 0 e 1 formam uma base ortogonal para ℂ2 , chamada base computacional. Obedecendo ao postulado 1, um vetor de estado arbitrário pode ser representado como ψ =α 0 + β 1 1 0 2 onde 0 = , 1 = . α, β ∈ C são chamadas amplitude do sistema, onde α é a 0 1 probabilidade do valor do qubit colapsar para 0 e β 2 a probabilidade do valor colapsar para 1 . O vetor deve ser unitário, isto é, as amplitudes devem satisfazer a 2 2 condição α + β = 1 , conhecida como condição de normalização. Postulado 2 – Evolução A evolução de um sistema quântico fechado é descrita por uma transformação unitária. Ou seja, o estado ψ de um sistema em um tempo t1 está relacionado ao estado ψ ' do sistema em t2 por um operador unitário U que depende somente de t1 e t2. ψ ' =U ψ Este postulado descreve como um sistema quântico evolui no tempo, isto é, aplicando operadores unitários. Na computação quântica a evolução do sistema se dá através dos operadores unitários que são a representação das portas lógicas, que nada mais são do que operadores unitários representados na forma matricial. Postulado 3 – Medidas quânticas As medidas quânticas são descritas por determinados operadores de medida {Mm}. Esses operadores atuam sobre o espaço de estados do sistema. O índice m se refere aos possíveis resultados da medida. Se o estado de um sistema quântico for ψ imediatamente antes da medida, a probabilidade de um resultado m ocorrer é dada por: p(m ) = ψ M m† M m ψ 27 e o estado após a medida será: Mm ψ ψ M m† M m ψ Existe uma classe especial de medidas muito importante para a computação quântica conhecida como medidas projetivas. Esta medição é composta por um observável M que possui uma decomposição espectral M = ∑ m Pm m de forma que Pm é o projetor sobre o auto-espaço de M com autovalor m. Medindo o estado ψ , a probabilidade de se obter o resultado m é p(m ) = ψ Pm ψ e após a medida, o estado do sistema será Pm ψ . p(m ) Exemplo 17: Dado um qubit ( V 0 ,1 ψ = α 0 + β 1 + γ 2 , obter o projetor P1 em ) e o projetor P2 em V ( 2 ) , onde V é um subespaço vetorial. Lembre-se que um projetor tem a função de filtrar e descartar os vetores que não estão no seu subespaço vetorial pr (1) = ψ P1 ψ = α * 2 β* =α +β Nessa operação o vetor γ 2 operador P1. 2 α γ * β γ foi descartado por não fazer parte do subespaço do 28 pr (2) = ψ P2 ψ = α * =γ 2 β* 0 * γ 0 γ Nessa operação os vetores α 0 e β 1 foram descartados por não fazer parte do subespaço do operador P2. Observação: A representação ψ =α 0 + β 1 +γ 2 é equivalente a ψ = α 00 + β 01 + γ 10 . Postulado 4 – Sistemas compostos O espaço de estados de um sistema físico composto é o produto tensorial dos espaços de estados dos sistemas físicos individuais. Se os sistemas forem numerados de 1 até n, e o sistema i for preparado no estado ψi , decorre que o estado do sistema composto será ψ1 ⊗ ψ2 ⊗ .... ⊗ ψn . 29 CAPÍTULO 3: COMPUTAÇÃO QUÂTICA - PORTAS LÓGICAS Introdução Como em um computador clássico, as operações em computação quântica são definidas por portas lógicas. Na computação clássica as portas lógicas são implementações físicas de transistores, os quais nós acessamos por meio de um formalismo matemático (lógica de Boole). Na computação quântica partimos da mesma idéia, isto é, precisamos de algum tipo de porta lógica para manipular nossos dados armazenados nos qubits. A implementação física das portas lógicas é um assunto que está sendo estudado, existindo um grande número de pesquisadores tentando encontrar formas de implementar fisicamente os qubits e as portas lógicas. Atualmente existem algumas formas para realizar a computação quântica, porém, ainda necessita de equipamentos caros para manipular os qubits e também para fornecerem um ambiente ideal de trabalho, tal como a temperatura. Vamos trabalhar sobre o formalismo matemático da computação quântica, que é a mecânica quântica, e supor que um hardware existe e executa perfeitamente as operações lógicas. Portas lógicas e circuitos Circuitos (clássicos ou quânticos) são compostos por um conjunto de portas lógicas, isto é, dispositivos mais simples que manipulam a informação, convertendo a informação de uma forma para a outra. Em computação quântica as portas lógicas passam a se chamar portas quânticas e são operadores unitários realizando transformações unitárias em algum sistema quântico de um ou mais qubits. As portas quânticas são divididas em três segmentos: • Portas quânticas de um qubit. • Portas quânticas de múltiplos qubits. • Portas quânticas universais. Uma maneira conveniente de representar as portas quânticas é sob a forma matricial, que será vista adiante. A figura 1 mostra o esquema de um circuito quântico genérico. 30 Figura 1. Circuito quântico utilizando uma porta quântica U-controlada. A seguir está a descrição do que cada item do circuito quântico acima faz: • A entrada pode ser o produto tensorial entre os qubits ou um estado emaranhado (não podem ser considerados individualmente). • O sentido de execução (também conhecido como evolução do sistema) do circuito é da esquerda para a direita. Circuitos quânticos são acíclicos, isto é, não permite retroalimentação (feedback). • As linhas horizontais representam a evolução do qubit, como por exemplo, a passagem do tempo ou o deslocamento de um fóton. • A linha vertical que une o símbolo ● e o símbolo representa o sincronismo. Isto significa que quando os qubits alcançarem aquele ponto o circuito atuará simultaneamente nos qubits. • O símbolo ● indica que o qubit que está nessa linha é um qubit de controle. Se o símbolo estiver preenchido ( ● ) significa que o valor é 1 ou seja, a operação definida em vazio ( • será realizada. Se o símbolo estiver ) significa que o valor é 0 ou seja, a operação definida em não será realizada. A medida é representada pelo símbolo de medição. A saída de um circuito pode ou não ser medida. No exemplo acima, apenas o qubit da linha inferior é medido. Portas quânticas de um qubit Portas quânticas de um qubit são descritas por matrizes unitárias 2x2. A restrição de que ela deve ser unitária garante que a computação possa ser reversível. Lembre-se que o Postulado 1 diz que um vetor de estado (qubit) deve ser unitário, e portanto, após a aplicação de uma porta quântica qualquer este vetor deve continuar sendo unitário. A seguir estão as principais portas quânticas de um qubit denotadas pela representação gráfica e pela matriz correspondente. Pauli I Esta porta também é conhecida como porta identidade e não realiza operação nenhuma. Em algumas literaturas ela é omitida das matrizes de Pauli. 31 1 0 I = 0 1 O resultado da aplicação é: 0 →I→ 0 1 →I→ 1 α 0 +β 1 → I →α 0 +β 1 Pauli X (ot) Esta porta também é conhecida como porta NOT (não). 0 1 X = 1 0 O resultado da aplicação é: 0 → X→ 1 1 → X→ 0 α 0 +β 1 → X →β 0 +α 1 Pauli Y 0 − i Y = i 0 O resultado da aplicação é: 0 →Y →i 1 1 → Y →− i 0 α 0 + β 1 → Y → − βi 0 + αi 1 Pauli Z 1 0 Z = 0 − 1 32 O resultado da aplicação é: 0 →Z→ 0 1 → Z →− 1 α 0 +β 1 → Z →α 0 −β 1 Phase (S) 1 S = 0 0 i O resultado da aplicação é: 0 → S→ 0 1 → S →i 1 α 0 + β 1 → S → α 0 + βi 1 π/8 (T) 1 T = 0 0 π i e 4 O resultado da aplicação é: 0 →T→ 0 1 → T →e i π 4 1 i π α 0 + β 1 → T → α 0 +e 4 β 1 Hadarmard (H) Ela é muito utilizada para preparar a entrada de um circuito quântico, colocando o qubit em superposição com mesma probabilidade para os dois estados. H= O resultado da aplicação é: 1 1 2 1 1 − 1 33 0 →H→ 1 →H→ 1 2 1 ( 0 +1) ( 0 −1) 2 0 +1 α 0 + β 1 → H → α 2 0 −1 + β 2 Portas quânticas de múltiplos qubits São portas onde a entrada é dada por mais de um qubit. Um protótipo para uma porta quântica de múltiplos qubits é a porta CNOT (controlled not). Esta porta possui dois qubits de entrada, um chamado qubit de controle e o outro chamado qubit alvo. A seguir, é representada uma porta CNOT onde a linha superior representa o qubit de controle e a linha inferior o qubit alvo. Figura 2. Representação da porta CNOT. Note que o qubit de controle não sofre nenhuma alteração. O símbolo ⊕ representa a operação XOR que resulta em verdadeiro somente se uma das condições for falsa. A representação matricial da porta quântica CNOT é a seguinte: 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 O resultado da aplicação desta porta é: 00 → CNOT → 00 01 → CNOT → 01 10 → CNOT → 11 11 → CNOT → 10 Quando o qubit de controle está em superposição, o resultado é: 34 (α 0 + β 1 ) 1 → CNOT → α 01 + β 10 0 (α 0 + β 1 ) → CNOT → α 00 + β 01 1 (α 0 + β 1 ) → CNOT → α 11 + β 10 Porta Toffoli Esta porta possui uma análoga clássica, e pode ser usada para simular a porta NAND e a porta FANOUT. Ela possui três qubits de entrada, onde dois deles são os qubits de controle, e o terceiro o qubit alvo. O qubit alvo só muda de estado se os dois qubits de controle forem 1 . A seguir, vemos a representação matricial e gráfica desta porta: Figura 3. Representação da porta Toffoli. O resultado da aplicação desta porta é: 35 Porta Fredkin Esta porta também possui uma análoga clássica, e pode ser usada para simular a porta AND, NOT, CROSSOVER e FANOUT. Ela possui três qubits de entrada, um deles é o qubit de controle e os dois últimos os qubits alvo. A função dessa porta é trocar os estados entre os qubits alvo, ou seja, o qubit 2 troca para o estado do qubit 3 e o qubit 3 troca para o estado do qubit 2. Os qubits alvo só trocam de estado caso o qubit de controle for 1 . A seguir, vemos a representação matricial e gráfica desta porta: Figura 4. Representação da porta Fredkin. O resultado da aplicação desta porta é: A região sombreada mostra a ação da porta que troca o estado do qubit β pelo estado do qubit c e vice-versa, quando o qubit de controle α é 1. Porta arbitrária U É uma porta genérica muitas vezes chamada como “black box”. É uma porta que não é pré-definida e, portanto, pode ser utilizada por qualquer número de qubits. Em outras palavras, ela é uma porta “genérica” onde se pode implementar qualquer operação, desde que esta obedeça as regras dos operadores unitários. 36 Figura 5. Representação da porta arbitrária U. Porta Swap Esta porta simplesmente inverte o estado dos qubits de entrada. Ela é utilizada no circuito que implementa a Quantum Fourier Transform (QFT) para inverter a ordem dos qubits, porém, é raramente mostrada como parte do circuito. A seguir, vemos a representação matricial e gráfica desta porta: Figura 6. Representação da porta SWAP. Portas quânticas universais Mesmo existindo uma quantidade infinita de portas quânticas de 1 q-bit (o número de matrizes unitárias 2x2 é infinito), esse conjunto não é universal, isto é, mesmo com essa infinidade de portas, este conjunto não é suficiente para construir qualquer operação. Da mesma forma que na computação clássica, onde existe a porta lógica universal NAND, a computação quântica também possui uma porta quântica universal que é a porta CNOT. Nielsen; Chuang (2005, p. 51) afirmam que “qualquer porta lógica de múltiplos qubits pode ser construída a partir da porta CNOT e de portas de um qubit”. Medidas Medida é a forma de “ler” a probabilidade associada ao qubit. As medidas desempenham um papel fundamental na computação quântica, pois por meio das medidas conseguimos obter os resultados dos algoritmos. A medida também impõe a restrição de que não podemos obter todos os valores superpostos que estão no nosso registrador quântico. Anteriormente, dizemos que um registrador quântico com 3 qubits pode estar nos oito possíveis estados simultaneamente, porém, quando fazemos uma medida nesse registrador, obtemos 37 apenas o estado que tinha a maior probabilidade. Após a medida, aquele registrador que, antes continha os oito possíveis estados, agora se transformou em outro estado que é definido por uma equação que veremos adiante. Considere o qubit a seguir: ψ =α 0 + β 1 Quando uma medida é feita o qubit é forçado em ψ → 0 ou ψ → 1 , de acordo com as probabilidades α e β. Depois da medida, o estado original é perdido, sendo impossível determinar ambos α e β. O modelo de medidas que iremos mostrar são as medidas projetivas, também conhecidas como medidas de Von Neumann. A idéia básica das medidas projetivas é baseada na seguinte notação: “Dado um conjunto exclusivo de possíveis estados em qual estado o sistema está?” Por exemplo, um átomo poderia estar em dois estados exclusivos – um estado de baixa energia denotado por g e um estado excitado denotado por e . Nós podemos usar uma medida projetiva para saber em qual estado o átomo está. As medidas também são definidas por projetores, que já vimos neste curso. Um conjunto de resultados de medidas mutuamente exclusivos corresponde a um conjunto de projetores ortogonais no espaço de estados do sistema. Um conjunto completo de projetores ortogonais são aqueles que ∑ Pi = I i Todo conjunto completo de projetores ortogonais especificam que haverá pelo menos uma medida válida. O número de projetores é determinado pela dimensão do espaço de Hilbert que descreve o sistema. Se a dimensão do espaço de Hilbert é d e existe m projetores, então m ≤d Por exemplo, considerando o qubit ψ = α 0 + β 1 , onde a dimensão do espaço de Hilbert é 2, os projetores correspondem aos possíveis resultados da medida 0 e 1 , P0 = 0 0 P1 = 1 1 Como outro exemplo, projetores correspondentes aos estados de baixa energia e excitado do átomo anterior poderiam ser escritos como, Pg = g g Pe = e e 38 Considere um sistema de dimensão n, e também considere um conjunto de projetores ortogonais { P1, P2, P3,..., Pn }. O sistema está preparado no estado ψ . A probabilidade de obter o i-ésimo resultado da medida é Pr(i ) = ψ Pi ψ O resultado também pode ser obtido pela regra de Born: Pr(i ) = ui ψ 2 Após a medida o sistema colapsa para um estado base que corresponde ao resultado que foi obtido pela medida. Formalmente, o estado após a medida ψ ' é definido como: Pi ψ ψ' = ψ Pi ψ Para fixar todos esses conceitos, veremos um exemplo passo a passo. Exemplo 1: Dado o sistema no seguinte estado 2 ψ = 19 onde os vetores {u 1 u1 + 2 19 u2 + , u2 , u 3 , u 4 , u 5 1 19 u3 + 2 19 u4 + 6 u 19 5 } são um conjunto ortonormal e completo. a) Descreva o conjunto de projetores correspondentes a todas as possíveis medidas. Os possíveis resultados das medidas são: projetores correspondentes a cada resultado são: P1 = u1 u1 P2 = u2 u2 P3 = u3 u3 P4 = u 4 u4 P5 = u5 u5 u1 , u2 , u3 , u4 , u5 . Os 39 b) Determine a probabilidade de obter cada resultado. Primeiro calcularemos a probabilidade de obter o estado u1 utilizando a regra de Born: 2 Pr(1) = u1 ψ 2 2 1 2 6 = u1 u1 + u2 + u3 + u4 + u5 19 19 19 19 19 2 2 2 6 u1 u1 + u1 u2 + u1 u 3 + u1 u4 + u u 19 1 5 19 19 19 19 = 2 1 2 2 2 6 (1) + (0) + (0) + (0) + 19 (0) 19 19 19 19 = 2 = 2 1 2 2 19 = 4 19 Pr(2) = u2 ψ 2 = u2 2 2 1 2 6 u + u + u + u + u 1 2 3 4 5 19 19 19 19 19 2 2 2 6 (0) + (1) + (0) + (0) + 19 (0) 19 19 19 19 = 2 = 2 1 2 2 19 = 4 19 Agora calcularemos o restante das probabilidades usando os projetores. Continuaremos a partir do estado u3 . Pr(i ) = ψ Pi ψ Primeiro calculamos Pi ψ : ( P3 ψ = u3 u 3 ) 2 2 1 2 6 u1 + u2 + u3 + u4 + u5 19 19 19 19 19 40 2 2 1 2 6 = u3 u u + u 3 u2 + u3 u 3 + u3 u4 + u3 u5 19 3 1 19 19 19 19 1 = u 3 u3 u3 19 1 = u3 19 Com P3 ψ calculado podemos calcular Pr(3) = ψ P3 ψ 2 2 u1 + u2 + = 19 19 2 1 u1 u 3 + = . 19 19 1 19 u3 + 2 19 u4 + 1 6 u5 u 19 19 3 1 1 . u3 u3 19 19 1 u2 u 3 + 19 19 6 2 1 1 u4 u3 + + . . u u 19 19 5 3 19 19 2 2 1 1 1 1 (0) + (0) + (1) = . . . 19 19 19 19 19 19 6 2 1 1 (0) + . . + (0) 19 19 19 19 = 2 . 1 19 De forma similar, as probabilidades de u4 e u5 são obtidas. 4 19 6 Pr(5) = ψ P5 ψ = 19 Pr(4) = ψ P4 ψ = Implementação Física O maior problema da computação quântica está na implementação física de um computador quântico. Até o momento a maior parte dos resultados obtidos na computação quântica (i. e. os algoritmos) foram teóricos ou simulados em computadores clássicos. Simular uma computação quântica num computador clássico também é limitado, pois necessitaria de muita memória e poder de processamento disponível. 41 Os simuladores quânticos atuais que rodam localmente na máquina possuem, em geral, capacidade para simular 5 a 10 qubits. O simulador quântico mais poderoso criado até hoje usava computadores distribuídos na internet e mesmo assim só conseguia simular 31 bits quânticos. A princípio, um processador de informação quântica poderia ter um tamanho minúsculo, pois ele seria composto de partículas microscópicas, porém, os mecanismos para lidar com essas partículas podem ocupar um sala toda. Podemos pensar no estado atual da implementação dos computadores quânticos como os primeiros computadores construídos na década de 50, ou seja, enormes e com baixo poder de processamento. A cada dia surgem novas propostas de implementação física, mais nenhuma se destacou a ponto de ser empregada para construir um computador quântico completo. De tudo que foi dito até agora sobre implementação física podemos tirar uma conclusão: ainda não existem computadores quânticos, certo? Errado. Existe uma empresa no Canadá chamada D-Wave systems que construiu e apresentou o primeiro computador quântico com 16 qubits em Fevereiro de 2007. Em Novembro do mesmo ano a mesma empresa demonstrou seu novo computador quântico com 28 qubits e ainda prometeu um computador quântico com 512 qubits para o final de 2008. A tecnologia empregada é a supercondutividade. Alguns pesquisadores tais como Scott Aaronson (Institute for Quantum Computing at the University of Waterloo), Umesh Vazirani (Berkley) e Dave Bacon (Washington) fizeram críticas e levantaram pontos duvidosos sobre o computador quântico apresentado. O pesquisador DiVincenzo (2001) elencou as seguintes propriedades que um sistema quântico deve satisfazer para que possa haver computação quântica: 1) Deve ser escalável, isto é, capaz de ser estendido para um número suficiente de qubits, onde os qubits sejam bem definidos. 2) Possuir qubits que possam ser inicializados no estado 0 . 3) Possuir qubits com tempo de descoerência maior que o tempo de operação de uma porta lógica, para garantir que os estados quânticos fiquem coerentes com os cálculos. 4) Ter um conjunto de portas quânticas universais. 5) Um procedimento eficiente para medir o estado dos qubits. As principais tecnologias exploradas no meio acadêmico/cientifico são: • Ressonância magnética nuclear É um instrumento de medidas utilizado em Física, Química e outras áreas. É o instrumento mais utilizado para executar algoritmos quânticos, onde podemos destacar o experimento feito em 2001 utilizando 7 qubits para executar o algoritmo de Shor e fatorar o número 15. Basicamente é composto por um tubo de ensaio contendo as moléculas. Este tubo de ensaio é colocado no espectrômetro onde são emitidos campos de radio freqüência para controlar o estado dos spins dos núcleos das moléculas. 42 Figura 7. Esquema de um espectrômetro de Ressonância Magnética Nuclear. • Armadilha de íons Representa uma técnica mais promissora do que a RMN. Os dois estados do qubit são representados pelo estado fundamental g ≡ 0 e o estado excitado e ≡ 1 do íon. Os qubits são manipulados por pulsos de laser. Os átomos têm que ser isolados dos outros átomos ao redor, convertidos em íons (átomos com carga) e manipulados por meio de campos elétricos para executar suas tarefas. Armadilhas com a largura de um fio de cabelo têm capacidade de acomodar uma quantidade de íons suficiente para realizar cálculos úteis. O grande desafio é manipular milhões de átomos para construir o computador quântico. • Supercondutividade (usado no computador quântico da D-Wave system) São usados certos tipos de metais que, quando resfriados a uma temperatura de aproximadamente 0 graus Kelvin (-273°C), não representa resistência elétrica. Nessa temperatura os circuitos começam a comportar-se quanticamente. São estruturas grandes (alguns micrômetros) comparados com estruturas atômicas, ou seja, é uma estrutura grande que apresenta os efeitos quânticos só presente em estruturas microscópicas. Por ser uma estrutura grande fica mais fácil construí-las e manipulá-las. Os supercondutores também criam uma proteção contra os ruídos externos que causam a descoerência. 43 Figura 8. Processador Orion de 16 qubits criado pela D-Wave usando supercondutividade. É utilizado o Nióbio como metal supercondutor. Cada array verde representa um qubit. • Pontos quânticos É uma estrutura de semicondutor artificialmente fabricada, com tamanho de aproximadamente 10–5 cm e que contem aproximadamente 103 ~ 109 átomos e aproximadamente o mesmo número de elétrons. Há duas formas de usar os elétrons aprisionados no semicondutor: 1) Ponto quântico duplo (Double Quantum Dot): usa dois pontos quânticos adjacentes. Se o elétron residente em um ponto quântico ele representa o estado 0 e quando ele reside no outro ponto quântico ele representa o estado 1 . 2) Carga do ponto quântico (Charge Quantum Dot): o elétron ocupa o mesmo ponto quântico e os dois estados do spin ↓ e ↑ representam os estados 0 e 1 . 44 CAPÍTULO 4: ALGORITMOS QUÂTICOS Algoritmo de Deutsch: exemplo de paralelismo Como primeiro algoritmo, veremos o algoritmo de Deutsch. Esse algoritmo não possui aplicação real, mas serve para exemplificar o paralelismo quântico e a superposição dos estados do qubit. Paralelismo é uma técnica que permite a execução de mais de uma operação simultaneamente. Na computação clássica, esta técnica é implementada por meio de vários circuitos diferentes, ou seja, para realizar duas operações simultaneamente são necessários dois circuitos. Na computação quântica não são necessários dois circuitos, pois utilizando um qubit em estado de superposição, é possível realizar a computação nos estados do qubit simultaneamente, utilizando apenas uma porta quântica. { } O problema é definido como: dada uma função f (x ) : 0,1 → {0,1} definida por um operador linear, determinar se ela é constante ou balanceada. No problema de Deutsch não nos preocupamos com o que operação a função realiza, apenas estamos interessados em saber se ela é constante ou balanceada. A função f ( x ) é balanceada se, f (0) = 0 e f (1) = 1 ou f (0) = 1 e f (1) = 0 ou f (0) = 0 e f (1) = 0 ou seja, se f (0) ≠ f (1) . A função f ( x ) é constante se, f (0) = 1 e f (1) = 1 ou seja, se f (0) = f (1) . A solução para esse problema é a seguinte: se f (0) ⊕ f (1) = 1 , ou seja, f (0) ≠ f (1) (linhas amarelas na tabela abaixo), então a função é balanceada. Se f (0) ⊕ f (1) = 0 (linhas azuis na tabela abaixo), ou seja, f (0) = f (1) , ela é constante. Note o símbolo ⊕ representa a operação XOR. Vamos relembrar a tabela verdade da operação XOR. f (0) f (1) f (0) ⊕ f (1) 0 0 1 1 0 1 0 1 0 1 1 0 A solução pode ser obtida pelas seguintes etapas: 1. x = f (a ) onde a = {0, 1} 45 2. y = f (b ) onde b = {0, 1} 3. z = x ⊕ y Em um computador clássico precisamos de dois passos para encontrar o resultado da função f (x): o primeiro para encontrar, por exemplo, f (0) , e o segundo para encontrar, por exemplo, f (1). Note que poderíamos ter escolhido no primeiro caso f (1) e no segundo caso f (0). For fim, comparamos os resultados das duas aplicações para verificar se a função é constante ou balanceada. Em um computador quântico também teremos que avaliar a função duas vezes, porém, será feita em um único passo, usando para isso a superposição de estados na entrada e processamento paralelo. A figura 1 abaixo mostra o circuito utilizado para implementar o algoritmo de Deutsch. Figura 1. Circuito quântico que implementa o algoritmo de Deutsch. Esse algoritmo realiza as etapas 1 e 2 da solução apresentada anteriormente em uma única operação. A seguir, veremos os passos de ψ1 até ψ4 para resolver o problema de Deutsch. ψ1 Os qubits x e y são iniciados como: x= 0 y= 1 ψ2 Aplicando a porta H em ambos os registradores de entrada. Nosso estado se torna: 0 +1 Ψ = 2 0 −1 2 ψ3 A operação Uf é definida por: x y ⊕ f (x ) . 46 Note que ambos qubits x e y estão em superposição. É nesse momento que o processamento paralelo é realizado, ou seja, os valores de x = {0, 1} serão aplicados junto com y = {0, 1}. Após algumas manipulações algébricas, que serão vistas passo a passo no exemplo seguinte, se o resultado em x = 0 , a função f (x) é constante. Se o resultado em x = 1 , a função f (x) é balanceada. Para f (0) ≠ f (1) , ou seja, a função é balanceada, teremos como resultado: 0 −1 Ψ = ± 2 0 −1 2 Para f (0) = f (1) , ou seja, a função é constante, teremos como resultado: 0 +1 Ψ = ± 2 0 −1 2 o sinal ± pode ser ignorado. ψ4 O qubit x é acionado pela porta H novamente. Lembre-se que ele está em superposição. Lembre-se também que, quando um qubit está em superposição com iguais probabilidades e é aplicada uma porta H, ele retorna para seu estado base 0 ou 1 . O resultado de x pode ser: 0 +1 2 →H → 0 0 −1 2 →H → 1 Portanto, nessa etapa, se f (0) ≠ f (1) temos: 0 −1 Ψ =±1 2 0 −1 Ψ =±0 2 Se f (0) = f (1) temos: 47 Veja que a aplicação de H no qubit x traz de volta o qubit 0 ou o qubit 1 . Nesse momento podemos descartar o qubit y, pois já obtemos o resultado necessário em x. Com isso podemos ver que com apenas uma aplicação da operação Uf encontramos o resultado. Essas idéias se fixarão melhor por meio do exemplo a seguir. Após os qubits passarem pela etapa 1 do circuito anterior, o estado ψ2 Exemplo 1: será: ψ2 0 +1 = 2 0 −1 2 . O estado ψ3 após a aplicação da operação Uf será: 0 +1 = 2 ψ3 0 ⊕ f (x ) − 1 ⊕ f (x ) 2 Calculando algebricamente teremos: 1 2 (0 0 ⊕ f (0) − 0 1 ⊕ f (0) + 1 0 ⊕ f (1) − 1 1 ⊕ f (1) ) Supondo que f ( 0 ) = 0 e f ( 1 ) = 1, isto é, a função é balanceada, temos: 1 2 (0 0⊕ 0 − 0 1⊕ 0 + 1 0⊕1 − 1 1⊕ 1 ) A partir da tabela verdade da operação XOR, temos: 1 2 ( 00 − 01 + 11 − 10 ) 01 − 10 + 11 ) Reordenando os fatores temos: 1 2 ( 00 − Vemos que esse estado acima é o mesmo que: 0 −1 2 0 −1 2 Por fim, no estado ψ4 após a aplicação da porta H no qubit x e descartando o qubit y, temos: 48 1 O algoritmo termina mostrando que, se o qubit x = 1 a função é balanceada. Agora, supondo que f ( 0 ) = 0 e f ( 1 ) = 0, isto é, a função é constante, obtemos: 1 0 0⊕ 0 − 0 1⊕ 0 + 1 0⊕ 0 − 1 1⊕ 0 2 ( ) A partir da tabela verdade da operação XOR, temos: 1 2 ( 00 − + 10 − 11 01 ) Vemos que esse estado acima é o mesmo que: 0 +1 2 0 −1 2 Por fim, no estado ψ4 após a aplicação da porta H no qubit x e descartando o qubit y, temos: 0 O algoritmo termina mostrando que, se o qubit x = 0 a função é constante. Transformada de Fourier Quântica (Quantum Fourier Transform) A Transformada de Fourier (TF) é uma ferramenta matemática utilizada em diversos campos da ciência, como por exemplo, processamento digital de imagens e sinais. A Transformada Discreta de Fourier (DFT) é a versão da TF para dados discretos, como por exemplo, imagens digitais. A DFT é dada pela seguinte equação: yk = 1 N −1 N j =0 ∑ x je 2πijk /N onde é o número de dados do vetor de entrada, xj é o vetor de entrada e yk é o vetor de números complexos da saída. O custo computacional desta transformada é de N 2 . Existem algoritmos conhecidos como Fast Fourier Transform (FFT) que realizam a mesma transformada com custo de N log2 N , ou seja, bem mais eficiente que a DFT. Vamos falar da Quantum Fourier Transform (QFT), que é a mesma transformada da DFT com a vantagem de possuir um custo computacional de n2, considerando = 2n. Esta enorme vantagem computacional vem das características vistas no algoritmo anterior, que é o paralelismo quântico e a superposição de estados. 49 Na literatura encontramos a QFT denotada de duas formas. Ambas possuem o mesmo significado, mudando apenas a notação. Na primeira, o operador U é dado pela própria fórmula. Na segunda forma, o operador U é dado pela representação matricial. Aqui veremos as duas formas e um exemplo de cada uma. A QFT é definida como segue. Dado um vetor de estado j em superposição: 2n −1 j = ∑ αx x x =0 o operador unitário UF que define a QFT é: UF j = 1 N −1 N k =0 ∑ e 2πijk /N k e a sua transformação inversa QFT † : U F† k = 1 N −1 N j =0 ∑ e−2πijk /N j Com um pouco de álgebra a QFT pode ser escrita como na forma conhecida como representação de produto: U F j1 ... jn ( 0 +e → 2π i 0. jn 1 )( 0 + e 2π i 0. jn −1 jn 1 ) ( 0 +e 2π i 0. j1 j2 ... jn 1 ) 2n /2 onde o estado j está descrito na representação binária j = j1 2n −1 + j2 2n −2 + ... + jn 20 . A notação 0.j0 j1.. jn é a fração binária dada por: 0.j 0 = j0 2 0.j1 j 0 = j1 2 2 0.j2 j1 j0 = + j0 j2 + 23 2 j1 22 + j0 2 e assim sucessivamente. A representação de produto torna mais fácil a construção de um circuito quântico para computar essa transformada. A figura 2 demonstra um circuito quântico eficiente para o cálculo da QFT. 50 Figura 2. Circuito eficiente para cálculo da transformada de Fourier Quântica, derivado da representação de produto. 0 1 A porta Rk representa a transformação Rk ≡ . 2π i / 2k e 0 Observando a porta Rk e analisando a saída do circuito acima podemos concluir que cada porta controlada Rk adiciona um bit na fase do coeficiente do estado j1 . O mesmo procedimento é feito para os demais estados jn . Veremos, no exemplo a seguir, como esse procedimento é feito. Exemplo 2: Neste exemplo vamos computar a QFT de um estado de três qubits x = x 2x 1x 0 . O circuito para essa transformação é mostrado na figura a seguir. Figura 3. Circuito para implementar a QFT para três qubits. O primeiro passo é aplicar a porta H no qubit x 2 . Note que −1 = e iπ (lembre-se da matriz que representa a porta H ): H x2 = 1 2 x 2y ∑ (−1) y = y 1 2 ∑ e2πi x 2y /2 y = y 1 0 +e ( 2 2 πi (0.x 2 ) 1 ) Prosseguimos aplicando a porta controlada R2. Note que o bit de controle para esta porta é o qubit x 1 . Como 1 = e 0 = e 2πi 0 e x 1 pode ser 0 ou 1 , nós podemos escrever a ação da porta R2 no estado 1 como R2 1 = e x 2 após aplicada a porta R2 fica: πix1 /2 1 =e 2 πix1 /4 1 . Assim, o estado 51 x1 ⊗ 1 ( 0 +e 2 2 πi (0.x2 x1 ) 1 ) Utilizando a mesma idéia anterior para a porta R3, temos: x 0 ⊗ x1 ⊗ 1 ( 0 +e 2 2 πi (0.x 2x1x 0 ) 1 ) Chegamos ao qubit x 1 . Primeiro é aplicada a porta H e depois a porta R2, temos x1 = 1 ( 0 +e 2 2 πi (0.x1x 0 ) 1 ) Até aqui, nosso estado é: x0 ⊗ 1 ( 0 +e 2 2 πi (0.x1x 0 ) 1 ) ⊗ 12 ( 0 +e 2 πi (0.x 2x1x 0 ) 1 ) Por fim, chegamos ao qubit x 0 no qual é aplicada apenas a porta H: x0 = 1 ( 0 +e 2 2πi (0.x 0 ) 1 ) Assim, chegamos ao estado final: 1 ( 0 +e 2 2 πi (0.x 0 ) 1 ) ⊗ 12 ( 0 +e 2 πi (0.x1x 0 ) 1 ) ⊗ 12 ( 0 +e 2 πi (0.x2x1x 0 ) 1 ) Observação: Para este caso, onde utilizamos 3 qubits de entrada, as portas R2 e R3 podem ser substituídas pelas portas S e T consecutivamente. Como dissemos no início dessa sessão, existe outra forma para denotar a QFT, que é a forma matricial. O mesmo operador UF pode ser representado na forma matricial: 1 1 1 w w2 1 2 w4 1 1 w 3 w6 2n 1 w ⋮ ⋮ ⋮ n n 1 w 2 −1 w 2(2 −1) ⋯ ⋯ ⋯ ⋯ ⋱ ⋯ 2n −1 w 2(2n −1) w 3(2n −1) w ⋮ (2n −1)(2n −1) w 1 52 n onde w =e 2 πi /2 . Veremos, no exemplo a seguir, como usar a representação matricial. Exemplo 3: Calculando a QFT de 2 qubits (n = 2). Dado o estado: 1 Ψ = 00 + 1 2 11 2 encontrar, Ψ ' =U F Ψ A representação matricial é: 1 1 1 1 πi /4 e 2πi /4 e 3πi/4 1 1 e 2 πi /4 e 4 πi /4 e 6πi /4 4 1 e 1 e 3πi /4 e 6πi/4 e 9πi /4 Assim, o estado Ψ ' é: 1 1 1 1 πi /4 e 2πi/4 e 3πi /4 1 1 e Ψ' = 2 πi /4 e 4πi/4 e 6πi/4 4 1 e 1 e 3πi/4 e 6πi /4 e 9πi/4 1 = 4 2 2 1 1 3πi /4 +0+0+ e 2 2 1 1 6πi/4 e +0+0+ 2 2 1 1 9πi/4 e +0+0+ 2 2 1 +0+0+ 1 1 2 0 0 1 2 53 1 = 4 2 2 1 −1 + i +0+0+ 2 2 1 −i +0+0+ 2 2 1 1+1 +0+0+ 2 2 1 +0+0+ 1 2 8 2 −1 + i 4 = 1−i 8 2 +1+i 4 = 2 8 00 + 2 −1 + i 1−i 2 +1+i 01 + 10 + 11 4 4 8 Algoritmo da fatoração de Shor Primeiro, veremos qual é o problema da fatoração para entendermos quais os motivos que levaram o algoritmo da fatoração de Shor ser o mais famoso no mundo da computação quântica. O problema de fatoração em números primos é dado por: p ∗q = N onde p e q são números primos e é o número a ser fatorado. Matematicamente, pode haver mais do que dois fatores para um número , porém, o algoritmo de Shor procura apenas dois fatores. O grande desafio da fatoração em números primos é quando é muito grande, ficando muito difícil obter p e q. O algoritmo de Shor é o algoritmo mais conhecido na computação quântica. Shor foi o primeiro a demonstrar o potencial de um computador quântico. Este algoritmo ganhou a atenção de muitas pessoas, pois a fatoração em números primos é usado no sistema de criptografia de dados RSA (Ronald Rivest, Adi Shamir e Leonard Adleman). O sistema de criptografia RSA baseia-se no fato de que é difícil para um computador clássico fatorar um número grande em seus fatores primos. Se pudermos encontrar estes fatores, podemos descriptografar a mensagem. Por esse motivo, o algoritmo de Shor chamou tanta atenção. Esse algoritmo foi publicado em 1994 pelo pesquisador Peter Shor. Antes de mostrar como o algoritmo funciona, é necessário introduzir outros dois algoritmos que serão utilizados no algoritmo de Shor. 54 Busca de ordem Dados os números positivos x e , que não possuem fatores comuns e x < . A ordem de x é o menor inteiro positivo r tal que: x r =1( mod N ) Essa equação significa que x r mod N = 1 , onde mod significa o resto da divisão entre x r e . A figura 4 mostra um circuito quântico para implementar a busca de ordem. Figura 4. Circuito quântico para o algoritmo da busca de ordem. Exemplo 4: Dados = 55 e escolhendo x = 13, temos: 131 mod 55 = 13 132 mod 55 = 4 133 mod 55 = 52 ⋮ 1320 mod 55 = 1 Assim, a ordem de x = 13 e = 55 é r = 20. Portanto, 1320 mod 55 = 1 1340 mod 55 = 1 1360 mod 55 = 1 ⋮ Algoritmo de frações contínuas Outro algoritmo utilizado no algoritmo de Shor é o algoritmo de frações contínuas. A idéia desse algoritmo é descrever números reais apenas em termos de números inteiros, por meio da expressão: a , a ,..., a ≡ a + M 0 0 1 1 a1 + 1 ... + 1 aM 55 onde a0, a1, ..., aM são inteiros positivos. Veremos no exemplo como realizar essa operação. Exemplo 5: Suponha que se queira decompor o número 31 . 13 1. Separar o número em uma parte inteira e uma fracionária: 31 5 =2 + 13 13 2. Inverte-se a parte fracionária 31 1 =2 + 13 13 5 13 , resultando em: 5 3. Repete-se o procedimento para a fração 31 =2 + 13 1 2+ 3 5 4. Repete-se o procedimento para a fração 31 =2 + 13 =2 + 2+ 1 5 3 5 3 1 2+ 1 1 1+ 1 =2 + 2 3 2+ 1 1+ 1 3 2 5. Aqui o processo termina, pois 3 1 = 1+ 2 2 1 pode ser escrito como “1” no numerador e não há a necessidade de 2 31 inverter. Portanto, a representação final de em frações contínuas é: 13 ou seja, 56 31 = 2+ 13 1 1 2+ 1+ 1 1+ 1 2 Que dá a seguinte lista de 5 elementos 2, 2,1,1, 2 , ou seja, 5 passos para decompor a fração. Para o algoritmo a seguir é conveniente representar os qubits em forma decimal: 000 = 0 001 = 1 010 = 2 011 = 3 ⋯ 111 = 7 Agora estamos prontos para entrar no algoritmo de fatoração de Shor. Para encontrarmos os fatores p e q de é simples, pois basta calcular: m.d.c.(xr/2 + 1, ) e m.d.c.(xr/2 – 1, ) onde r é a ordem de x e . O grande problema é encontrar a ordem, pois não existe um algoritmo eficiente para isso, ou seja, temos que fazer da mesma forma que fizemos no exemplo da busca de ordem. Utilizando a computação quântica, podemos tirar proveito do paralelismo quântico, já visto no algoritmo de Deutsch, para encontrar a ordem r. Encontrando a ordem r podemos calcular o m.d.c.(xr/2 + 1, ) e o m.d.c.(xr/2 – 1, ) em um computador clássico para encontrar os fatores. Portanto, pode-se ver que apenas a busca de ordem, que exige o maior esforço computacional, é feita no computador quântico, e os outros cálculos são feitos em um computador clássico. A seguir veremos as etapas para implementar o algoritmo de Shor. 1. Se é divisível por 2, retorne f = 2. 2. Para a ≥ 1 e b ≥ 2, se = ab , então retorne f = a (isto pode ser feito classicamente) 3. Escolha, aleatoriamente, um inteiro x onde 1 < x < . Verificamos se x e são co-primos, isto é, m.d.c.(x, ) = 1. Se eles não são co-primos, isto é, se m.d.c.(x, ) > 1, então retorne f = m.d.c.(x, ). Exemplo: dado = 15 e x = 3, encontramos: m.d.c (3, 15) = 3. 4. Neste passo o computador quântico entra em ação. Aplicamos o algoritmo de busca de ordem para encontrar a ordem r. Antes de começar precisamos definir o tamanho dos registradores de entrada. O registrador 1 (R1) precisa ter t qubits de tamanho, onde 2 ≤ t. Isto é necessário para minimizar a possibilidade de erros na saída. O registrador 2 (R2) precisa de L qubits, onde L é o número de qubits necessários para armazenar . 57 4.1. Inicializamos o registrador 1, que é de tamanho t, em 0 registrador 2, que é de tamanho L, em 1 ⊗L ⊗t . A notação x produto tensorial de x consigo mesmo y vezes. Ex.: 0 ⊗3 . Inicialize o ⊗y significa o = 000 . 4.2. Criamos uma superposição no registrador 1: 2t −1 1 Ψ = ∑ 2t 4.3. Aplicamos a operação U R2 = x Ψ = 1 2t R1 1 r1 = 0 R1 mod N no registrador 2: 2t −1 ∑ R1 x R1 mod N r2 = 0 4.4. Medimos o registrador 2. Como o registrador está emaranhado com o registrador 1, ao fazermos a medida, o registrador 1 conterá um subconjunto dos valores correspondentes ao valor observado no registrador 2. Se, por exemplo, observarmos o valor 16 no registrador 2, o resultado do registrador 1 será um subconjunto dos valores que satisfazem a função x R1 mod N = 16 quando o resultado é 16. 4.5. Aplicamos a QFT † no registrador 1 e então medimos ele. Ψ . O tamanho da lista 2t (número de passos necessários para decompor a fração) será a ordem r. 5. Com o resultado r, primeiro testamos se r é par e se x r /2 ≠ 1(mod N ) , então 4.6. Aplicamos o algoritmo de frações contínuas em calculamos f = m.d.c.(xr/2 + 1, ) e f = m.d.c.(xr/2 – 1, ). Se o resultado for diferente de 1 ou , então retorne f como os fatores. Caso contrário, o algoritmo falha, e é necessário escolher outro x para começar novamente. Para fixarmos bem esse algoritmo, veremos dois exemplos. Exemplo 6: Fatorando = 15 1. não é par, continua 2. ≠ ab, continua 3. Escolhemos, por exemplo, x = 7. O m.d.c (7, 15) = 1, continua 4. Escolhemos t = 11 qubits para o registrador 1 e L = 4 para o registrador 2. 4.1 Inicializamos o registrador 1 com zeros e o registrador 2 com uns. Combinando os estados temos: 58 Ψ = 000000000001111 R1 R2 4.2 Criar uma superposição no registrador 1. Note que o registrador 2 permanece inalterado: Ψ = 4.3 Aplicando x R1 1 ( 0 + 1 + 2 .... + 2047 ) 15 2048 mod15 temos: R1 0 1 2 3 4 5 6 7 8 9 ... 2047 R2 1 7 4 13 1 7 4 13 1 7 ... 13 4.4 Medindo o registrador 2, randomicamente obtemos 4. Lembre-se que os dois registradores estão emaranhados e, quando fazemos uma medida, acabamos com a superposição. Portanto, o registrador 2 tem o valor 4 e o registrador 1 passou a ter um subconjunto de valores cujo resultado de x R1 R1 2 6 10 ... R2 4 4 4 ... mod15 resultou em 4. Veja que 72 mod 15 = 4, 76 mod 15 = 4, e assim sucessivamente. O estado agora está: Ψ = 1 ( 000000000100100 + 000000001100100 + 000000010100100 …) 512 Os dígitos em negrito representam o registrador 2 (valor decimal 4). 4.5 Aplicando a QFT † no registrador 1, obtemos 0, 512, 1024 e 1536 com 1 probabilidade de . Observamos, por exemplo, 1536. 4 1536 4.6 Aplicando o algoritmo de frações continuas em , obtemos 4. 2048 r 5. Então, r = 4. Como r é par e satisfaz ≠ −1 mod 15 , tiramos o m.d.c. (72 – 1, 15) = 3 2 2 e o m.d.c de (7 + 1, 15) = 5. Testando 3 x 5 = 15 = . Portanto, os fatores de 15 são 5 e 3. Vejamos outro exemplo. 59 Exemplo 7: Fatorando = 55 1. não é par, continua 2. ≠ ab, continua 3. Escolhemos, por exemplo, x = 13. O m.d.c (13, 55) = 1, continua 4. Escolhemos t = 13 qubits para o registrador 1 e L = 6 para o registrador 2. Inicializamos o registrador 1 com zeros e o registrador 2 com uns. Combinando os estados temos: Ψ = 0000000000000111111 R1 R2 Criar uma superposição no registrador 1. Note que o registrador 2 permanece inalterado: Ψ = Aplicando x R1 1 ( 0 + 1 + 2 .... + 8191 ) 63 8192 mod 55 temos: R1 0 1 2 3 4 5 6 7 8 9 ... 8191 R2 1 13 4 52 16 43 9 7 36 28 ... 2 Medindo o registrador 2, randomicamente obtemos 28. Lembre-se que os dois registrador estão emaranhados, e quando fazemos uma medida acabamos com a superposição, portanto, o registrador 2 tem o valor 4 e o registrador um passou a ter um subconjunto de valores cujo resultado de x R1 mod 55 resultou em 28. R1 9 29 49 ... 8189 R2 28 28 28 ... 28 Veja que 139 mod 55 = 28, 1329 mod 55 = 28, e assim sucessivamente. Por simplificação, trocamos a representação binária, utilizada no exemplo anterior, para a representação decimal. O estado agora está: Ψ = 1 ( 9 28 + 29 28 + 49 28 + …+ 8189 28 410 ) Aplicando a QFT† no registrador 1, obtemos 4915 com probabilidade de 4,4 %. 4915 Aplicando o algoritmo de frações continuas em , obtemos 20. 8192 60 r ≠ −1 mod 55 , tiramos o 2 m.d.c. (1310 – 1, 55) = 5 e o m.d.c de (1310 + 1, 55) = 11. Testando 5 x 11 = 55 = . Portanto, os fatores de 55 são 5 e 11. 5. Então, r = 20. Como r é par e satisfaz Não podemos nos esquecer de que tudo na computação quântica é probabilístico, portanto, esses algoritmos poderiam falhar para um determinado x escolhido. Um fator que ajuda a aumentar a possibilidade de acerto do algoritmo é o tamanho t do qubit de entrada. O custo computacional desse algoritmo, de acordo com Shor (1996), é de O((log n)2 (log log n) (log log log n)), enquanto o melhor algoritmo clássico para a fatoração (umber Field Sieve) é de O(exp(c(log n)1/3(log log n)2/3)), onde n é um inteiro a ser fatorado e c é uma constante. Os gráficos a seguir mostram a vantagem computacional do algoritmo de Shor. O valores escolhido foram: n = {0 ... 1011} e a constante c = 1.52 (Pomerance, 1996). Figura 5. Custo computacional do algoritmo clássico para c = 1.52 Figura 6. Custo computacional do algoritmo de Shor. 61 REFERÊCIAS Referência básica ALTENKIRCH e GRATTAGE, J. A Functional quantum programming language. Disponível em: <http://arxiv.org/PS_cache/quant-ph/pdf/0409/0409065v5.pdf>. Acesso em: 05 out. 2008. BENETI, G.; CASATI, G.; STRINI, G. Principles of quantum computation and information. Volume I: basic concepts. New Jersey: World Scientific Publishing Company, 2004. BULNES, J. J. D. Emaranhamento e separabilidade de estados em computação quântica por ressonância magnética nuclear. Rio de Janeiro: Centro Brasileiro de Pesquisas Físicas, 2005. D-WAVE. Quantum computing at D-Wave: an introduction to Orion. Disponível em: <http://www.dwavesys.com/>. Acesso em: 10 set. 2007. JOZSA, R. Quantum algorithms and the Fourier transform. Disponível em: <http://qso.lanl.gov/qc/proceedings/josza.ps>. Acesso em: 01 jul. 2007. MCMAHON, D. Quantum computing explained. Hoboken: John Wiley & Sons, 2008. NIELSEN, M. A.; CHUANG, I. L. Quantum computation and Quantum information. Cambridge: Cambridge University Press, 2000. PERRY, R. T. The temple of quantum <http://www.toqc.com/>. Acesso em: 20 out. 2006. computation. Disponível em: POMERANCE, C. "A Tale of Two Sieves." ot. Amer. Math. Soc. 43, 1473-1485, 1996. Disponível em: <http://www.ams.org/notices/199612/pomerance.pdf>. Acesso em: 05 out. 2008. Referência complementar BELLAC, M. L. A short introduction to quantum information and quantum computation. Cambridge: Cambridge University Press, 2006. CHEN, G.; CHURCH, D. A.; et. al. Quantum computing devices: principles, designs and analysis. Boca Raton: CRC Press, 2007. IMRE, S.; BALÁZS, F. Quantum Computing and Communications: an engineering approach. Chichester: John Wiley & Sons, 2005. KAYE, P.; LAFLAMME, R.; MOSCA, M. An Introduction to Quantum Computing. New York: Oxford University Press, 2007. MERMIN, N. D. Quantum computer science: an introduction. Cambridge: Cambridge University Press, 2007. 62 PORTUGAL, R. et. al. Uma introdução à computação quântica. São Carlos: Sociedade Brasileira de Matemática Aplicada e Computacional, 2004. PRESKILL, J. Lecture otes for Physics 229: quantum information and computation. California Institute of Technology, 1998. Disponível em: <http://theory.caltech.edu/~preskill/ph229/#lecture>. Acesso em: 09 ago. 2007. STENHOLM, S.; SUOMINEN, K.; Quantum approach to informatics. New Jersey: John Wiley & Sons Ltd, 2005.