- DC

Propaganda
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.
Download