Anda di halaman 1dari 87

Algoritmo de Shor e sua aplicacao `a fatoracao de n umeros inteiros

Adriana Xavier Freitas


Fevereiro 2010
Algoritmo de Shor e sua aplicacao `a fatoracao
de n umeros inteiros
Adriana Xavier Freitas
Orientador: Prof. Marcelo de Oliveira Terra Cunha
Disserta cao apresentada `a UNIVERSIDADE
FEDERAL DE MINAS GERAIS, como requisito
parcial para a obten cao do grau de mestre em
matematica.
Fevereiro de 2010
Aos meus pais e irmas.
Agradecimentos
A Deus por tudo que aconteceu em minha vida, permitindo que eu con-
seguisse realizar o meu sonho de estudar na UFMG e fazer mestrado com
bolsa.
Aos meus pais por todo amor que me dedicaram e pela compreens ao da
minha ausencia em suas vidas.
As minhas irmas que eu muito amo, em especial a Ayessa, razao do meu
viver.
As minhas colegas de rep ublica Neila e Adriana por terem tido paciencia
em me ouvir dizer in umeras vezes nesses ultimos meses: sera que vou entrar
no doutorado? Em especial a Adriana por sempre me salvar na vespera das
provas daquelas d uvidas cruciais e pelo companheirismo desses 5 anos.
Ao Helvecio meu amor querido que sempre ameniza as saudades que sinto
da minha famlia, me compreende nas vesperas das provas e por todas as
guras desse texto.
Ao Marcelo pela orienta cao nesses ultimos 3 anos em especial pela sua
paciencia e generosidade de ler o meu texto cheio de erros de portugues e por
ter ajudado a torna-lo algo digno de chamar de disserta cao.
Aos professores que passaram pela minha vida, tantos que e impossvel
citar seus nomes. Mas, nao posso me esquecer do Bernardo, sem ele hoje
nao estaria aqui. Foi ele que desde o segundo perodo da gradua cao me
incentivou a fazer mestrado, sempre que eu estava prestes a desistir por
causa das diculdades conversava com ele e tinha animo para continuar.
Sem d uvidas sem ele e a minha famlia eu nao estaria aqui.
A todos os amigos da gradua cao que hoje sao para mim mais que amigos,
ja fazem parte da minha famlia; se ha um nome desse perodo que nao posso
esquecer e o da Silviane, minha amiga e companheira para toda hora.
Aos amigos que z durante o mestrado que sao muito especiais.
A Clelia e a Cla udia. Nao posso esquecer do pessoal da Olimpada Mi-
i
neira: Seme, Fabio, Mario Jorge e todos os monitores que por a passaram.
Saudades de todos. Aos integrantes da OBMEP, que sao muitos, por isso
nem me atrevo a citar nomes.
Aos funcionarios do Departamento de Matematica, em especial ao Vald-
ney e a Andrea que sempre nos socorrem com as burocracias.
Ao CNPQ por ter me tornado um rica bolsista de mestrado e pelo incen-
tivo `a pesquisa.
Nao poderia esquecer do Lula por um unico motivo: ele apoiou a cria cao
da OBMEP.
ii
Resumo
O algoritmo de Shor e um algoritmo quantico que encontra com alta pro-
babilidade a ordem de um elemento x Z

N
. Uma de suas aplica coes e a
constru cao de um algoritmo que encontra fatores de N. Nos captulos iniciais
abordaremos ferramentas necessarias para o entendimento do algoritmo de
Shor, tais como: aritmetica modular, algoritmos, fra coes contnuas, conceitos
introdutorios de computa cao quantica e transformada quantica de Fourier.
Nos captulos seguintes apresentamos o algoritmo de Shor e sua aplica cao `a
fatora cao de n umeros inteiros.
iii
Abstract
Shors algorithm is a quantum algorithm that nds with high probability the
order of an element x Z

N
. One of its applications is the construction of
an algorithm that nds the factors of N. In the initial chapters we approach
necessary tools for the comprehension of Shors algorithm such as: modular
arithmetic, algorithms, continued fractions, basic concepts of quantum com-
puting and Fourier quantum transform. In the following chapters we present
Shors algorithm an its application in factorization.
iv
Sumario
Agradecimentos i
Resumo iii
Abstract iv
Introducao 1
1 Nocoes Basicas 3
1.1 Aritmetica Modular . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Fra coes Contnuas . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5

Algebra linear . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.5.1 Produto tensorial . . . . . . . . . . . . . . . . . . . . . 25
2 Um breve relato quantico 28
2.1 Comentarios sobre mecanica quantica . . . . . . . . . . . . . . 28
2.2 Computa cao quantica . . . . . . . . . . . . . . . . . . . . . . . 30
2.3 Portas Logicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4 Circuitos Quanticos . . . . . . . . . . . . . . . . . . . . . . . . 34
3 Transformada de Fourier Quantica 37
3.1 Complexidade da Transformada Quantica de Fourier . . . . . 44
v
4 Algoritmo de Shor 46
4.1 Algoritmo de Shor para uma ordem igual a uma potencia de 2 48
4.2 Caso Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5 Fatoracao de um N umero e sua Ordem 63
A Algoritmo quantico para calcular x
j
y mod N 73
Referencias Bibliogracas 77
vi
Introducao
Desde muito tempo existe a necessidade de algumas pessoas de se comu-
nicarem sem que outras pessoas quem sabendo a respeito do que elas estao
falando.
`
As vezes, essa comunica cao tinha que ser feita por escrito. Disso
surgiu a demanda por uma maneira de ocultar uma mensagem atraves de
smbolos de forma que apenas o destinatario conseguisse ler. A esse processo
deu-se o nome de criptograa.
Existem varios modos de se ocultar uma mensage. Um bem simples
e atribuir a cada letra do alfabeto um n umero e no momento de escrever
a mensagem substitu-la pelo seu n umero correspondente. Esse metodo e
ineciente por varios motivos, um deles e a necessidade de uma maneira
de enviar para o destinatario qual o codigo que se esta usando, e caso ele
pare em maos erradas essa pessoa sabera como decodicar as mensagens.
Outro problema de usar esse metodo e dado pela frequencia que cada letra
ocorre quando estamos escrevendo um texto. Nesse paragrafo, se voce olhar,
a letra a ocorre 124 vezes enquanto a z aparece 4 vezes, apenas as 4 vezes
dessa frase. Existem estudos sobre a frequencia com que cada letra aparece
em cada lngua utilizada e com eles e possvel descobrir qual e a mensagem
codicada. Esses metodos de descobrir qual e a mensagem atraves de um
padrao observado sao chamados de ataques frequencistas. Nesse exemplo,
a chave para descobrir qual e a mensagem e a tabela com o valor de cada
letra, que tem de car oculta. A esse tipo de criptograa no qual apenas o
destinatario e o remetente podem saber os codigos de codicar denominamos
criptograa de chave privada.
A fraqueza do metodo da substitui cao vem da repeti cao do uso da mesma
tabela. Uma solu cao natural e trocar essa tabela apos algumas utiliza coes.
Uma unica utiliza cao da tabela torna seguro esse metodo. Mas, isso gera
um problema na distribui cao das chaves. Uma interessante solu cao para o
problema da distribui cao de chaves e a chamada criptograa de chave
1
p ublica. Nela todos podem saber como codicar uma mensagem, porem
apenas o destinatario sabera como decodica-la
Um dos metodos de chave p ublica mais conhecido e utilizado e a cripto-
graa RSA. Este codigo foi inventado em 1978 por R. L. Rivest, A. Shamir
e L. Adleman, que na epoca trabalhavam no Massachussets Institute of Te-
chnology (MIT). As letras RSA correspondem `as iniciais dos sobrenomes
dos criadores. Este metodo e fantastico porque utiliza ideias basicas da ma-
tematica para fazer algo surpreendente. A seguran ca do metodo e devida ao
fato de que nao se conhece ainda um algoritmo rapido para fatorar n umeros
compostos grandes em um computador convencional.
O desenvolvimento da computa cao quantica, um modelo baseado na mecanica
quantica, possibilitou um grande avan co na computa cao teorica. Ele possi-
bilitou a descoberta de alguns algoritmos rapidos para resolver problemas
para os quais ate o presente momento acredita-se que nao exista nenhum
analogo classico. Um desses algoritmos e o algoritmo de Shor, que data de
1994. Com ele e um computador quantico tem-se um algoritmo eciente para
fatora cao de inteiros. Ate o presente momento os computadores quanticos
construdos realizam tarefas modestas, por exemplo, o algoritmo para fa-
tora cao implementado nele fatora n umeros pequenos como o 15, veja [13].
Caso esses modelos se desenvolvam de modo a trabalharem com n umeros tao
grandes quanto os computadores classicos atuais trabalham, a criptograa
RSA se tornara completamente obsoleta, provocando um caos nos sistemas
criptogracos.
O assunto desse trabalho e o algoritmo de Shor. Mas, antes de apresenta-
lo sera necessario que o leitor adquira conhecimentos sobre teoria dos n umeros
basica, algoritmos, mecanica e computa cao quantica. Isso sera feito nos
captulos 1 e 2. Se o leitor ja for familiarizado com um desses assuntos sugiro
que pule o respectivo captulo, pois acredito que se nao o zer achara o texto
tedioso. Esse sentimento nao pode existir, pois as ideias por tras do algoritmo
sao lindas e brilhantes.
2
Captulo 1
Nocoes Basicas
Neste captulo aprenderemos alguns resultados que serao uteis posterior-
mente. Eles serao introduzidos de forma bem basica para que mesmo quem
nunca tenha tido contato com o assunto consiga acompanhar.
1.1 Aritmetica Modular
Nos n umeros inteiros ja aprendemos a somar e a multiplicar, por exem-
plo 2 + 2 = 4 ou 2 3 = 6. Vamos olhar para os n umeros inteiros de uma
forma diferente. Se pegarmos um n umero a Z e divid-lo por 2 temos
duas possibilidades para o resto, 0 se o n umero for par, e 1 se ele for mpar.
Vamos denir o conjunto Z
2
para ser formado pelos restos que temos quando
dividimos um n umero por 2, portanto Z
2
=0, 1, onde o smbolo - acima
do 0 e para indicar que nao e apenas o n umero 0, mas sim o conjunto de
todos os pares. Logo 0 e o conjunto dos elementos que deixam resto 0. Ana-
logamente, 1 e o conjunto dos n umeros que deixam resto 1. Observe que
em 0 os n umeros ..., -4,-2,0,2,4, ... representam o mesmo elemento de Z
2
.
Como podemos ter varios representantes para um mesmo conjunto denire-
mos que usaremos sempre o menor natural. Agora que ja conhecemos o Z
2
,
podemos denir o Z
n
. Este sera formado por todos os restos possveis na
3
divisao por n, Z
n
= 0, 1, 2, . . . , n 1
1
, onde o smbolo - em cima de cada
elemento e para lembrar que esses elementos representam v arios outros e nao
apenas exerce o papel que ele tem em Z. Em Z
n
um n umero b pertence ao
conjunto a, isto e, b = a, se b a = nq, para algum q Z.
Nesse novo conjunto, o ideal seria se consegussemos fazer algumas opera-
coes aritmeticas nele. Se somarmos dois n umeros pares teremos como resul-
tado um par, se forem dois mpares o resultado sera um par, se for um par
com um mpar o resultado sera um mpar. Escrevendo a frase acima na
linguagem matematica que estamos introduzindo teremos:
0 + 0 = 0,
1 + 1 = 0,
1 + 0 = 1,
0 + 1 = 1.
Em Z
n
deniremos que a + b = a + b, onde a + b e o mesmo que somar
a e b como elementos de Z e depois dividir por n e calcular o resto. Para
fazer isso sempre temos que mostrar que essa opera cao est a bem denida,
isto e, qualquer que sejam os representantes escolhidos para efetuar a soma
de dois conjuntos, o resultado sempre sera o mesmo conjunto. Observe:
mesmo conjunto, mas nao necessariamente mesmo representante. Isto e facil
de vericar. Digamos que em Z
n
temos dois conjuntos, representados por a
e b, respectivamente. Digamos ainda que a = a

e b = b

. Queremos vericar
que a + b = a

+ b

. Mas, a = a

e equivalente a dizer que a a

e m ultiplo
de n; e o mesmo vale para b b

. Somando dois m ultiplos de n temos um


m ultiplo de n, logo
(a a

) + (b b

) = (a + b) (a

+ b

)
1
Se o leitor ja tiver tido contato com aritmetica modular antes deve lembrar que os ele-
mentos de Z
n
sao classes de equivalencia. Nesse trabalho optamos por evitar esse conceito.
Nosso intuito era apenas que o leitor que nunca tinha visto esse assunto pudesse acompa-
nhar os c alculos que serao feitos nos captulos 4 e 5. Mas, se o leitor tiver curiosidade em
ver essa outra abordagem basta consultar [2].
4
e m ultiplo de n. Portanto, a + b = a

+ b

, como queramos mostrar.


Vamos passar `a multiplica cao. A forma natural para multiplicar os ele-
mentos a e b de Z
n
deveria ser,
a

b = ab.
Como no caso da soma, temos que vericar se esta formula da um resultado
que e independente da escolha de representantes para os conjuntos. Digamos
que a = a

e que b = b

. Queremos mostrar que ab = a

. Como a = a

,
temos que aa

e um m ultiplo de n, ou seja, a = a

+rn, para algum inteiro


r. De maneira analoga, b = b

+ sn, para algum inteiro s. Multiplicando,


ab = (a

+ rn)(b

+ sn) = a

+ (a

s + rb

+ srn)n.
Logo aba

e um m ultiplo de n. Portanto, ab = a

, que e o que queramos


provar. Dessa forma, sabemos como somar e multiplicar elementos de Z
n
.
Dada uma opera cao () em um conjunto A, se existe um elemento e tal
que e b = b = b e para todo b A, chamaremos e de elemento neutro. Um
elemento b A tem inverso se existe um elemento c tal que c b = e = b c.
Considerando o conjunto dos Z inteiros com a opera cao soma sabemos
que o 0 e o elemento neutro e que para todo elemento a existe um elemento
inverso, a. Vamos vericar que em Z
n
, 0 e o elemento neutro da soma.
Dado a Z
n
temos a + 0 = a = 0 + a. Alem disso, para todo elemento a
existira a, tal que a+a = a a = 0 = a+a. Conclumos que qualquer
elemento de Z
n
tem inverso com a opera cao soma. A diferen ca e denida da
mesma forma que a soma: a b = a b. A opera cao diferen ca em Z
n
entre
dois elementos a e b pode ser vista como a soma entre os elementos a e b.
Na multiplica cao em Z o elemento neutro e o 1 e os unicos elementos
que tem inverso sao o 1 e 1. Em Z
n
o elemento 1 e o elemento neutro
da multiplica cao, pois 1 a = a = a 1, para todo a Z
n
. Mas, com esta
opera cao nao e todo elemento de Z
n
que possui inverso. Vamos ver o que
5
acontece em Z
4
, com o elemento 2,
2 0 = 0
2 1 = 2
2 2 = 4 = 0
2 3 = 6 = 2,
temos que este elemento nao tem inverso multiplicativo. Agora iremos ana-
lisar o elemento 2 Z
5
,
2 0 = 0
2 1 = 2
2 2 = 4
2 3 = 6 = 1
2 4 = 8 = 3,
conclumos que este elemento possui inverso, o qual e o 3. Com isso podemos
perceber que em Z
n
podem existir elementos alem do 1 e 1 que possuem
inverso. Se um elemento a possui inverso dizemos que ele e inversvel. O
teorema abaixo nos da um criterio para determinar se um elemento de Z
n
e
inversvel.
Teorema 1 [1] Um elemento a em Z
n
e inversvel se, e somente se,
mdc(a, n) = 1.
Os elementos inversveis de Z
n
formam o conjunto denido por,
Z

n
= a Z
n
tal que mdc(n, a) = 1.
Denicao 1 A fun cao (n) conhecida como fun cao de Euler e dada por:
: N N
n #Z

n
,
onde o smbolo #A simboliza a quantidade de elementos do conjunto A.
6
Propriedades de :
1) Se p e primo, (p) = p 1.
2) (p

) = p
1
(p 1), para p primo.
3) Se m e n sao inteiros positivos tais que mdc(m, n) = 1, entao, (n m) =
(n) (m).
Para demonstra coes veja [1].
Por ultimo, apresentaremos a nota cao de congruencia modular no con-
junto Z
n
. Dizemos que a b mod n se a = b, caso contrario, denotaremos
a , b mod n. Suponha que a b mod n e c d mod n, se somarmos essas
duas expressoes obtemos: a + c b + d mod n, se tivessemos multiplicado
teramos a c b d mod n. Introduzimos essa nota cao, pois ela e muito
util para realizarmos opera coes aritmeticas em Z
n
.
Teorema 2 Teorema de Euler[1] - Se mdc(x, n) = 1 entao, x
(n)
1 mod n.
1.2 Grupos
Um conjunto G com uma opera cao () e um grupo, se () possui as
seguintes propriedades:
1) Fechado: dados a e b G se a b = c entao c G.
2) Elemento neutro: existe um elemento e G tal que para todo a G
temos a e = e a = a.
3) Associatividade: dados a, b, c G temos que a (b c) = (a b) c.
4) Elemento inverso: dado um elemento a G qualquer, existe um ele-
mento a

G tal que a a

= a

a = e.
Um grupo pode possuir innitos elementos, caso a quantidade de elemen-
tos seja nita, dizemos que G e um grupo nito. No ultimo caso chamamos
a quantidade de elementos de G de sua ordem. Seja G um grupo com a
opera cao (), dado a G denotamos a a a . . . a
. .
k vezes
= a
k
. O menor inteiro
k tal que a
k
= e e a ordem de a.
Teorema 3 O conjunto Z

n
e um grupo com a operacao produto.
7
DEMONSTRAC

AO: Para Z

n
ser grupo vericaremos as propriedades acima:
1) (Fechado) Dados a, b Z

n
, sabemos que o mdc(a, n) = 1 e mdc(b, n) =
1, logo o mdc(a b, n) = 1. Portanto, a b Z

n
.
2) (Elemento neutro) O elemento 1 Z

n
e dado qualquer elemento a Z

n
temos que a 1 = 1 a = a. Logo, 1 e o elemento neutro.
3) (Associatividade) Dados a, b, c Z

n
, temos que (a b) c = (a b) c =
a (b c) = a (b c).
4) (Elemento inverso) Dado a Z

n
sabemos que mdc(a, n) = 1 e pelo
teorema 1 sabemos que a e inversvel. Portanto, existe a

tal que a a

= 1 =
a

a.
Denicao 2 Seja G um grupo com a operacao (), falamos que G e um
grupo cclico se existe a G tal que g G g = a
n
para algum n N. Neste
caso, dizemos que a e um gerador para G.
Teorema 4 A ordem de Z

N
e (N).
DEMONSTRAC

AO: Segue direto da deni cao de (N).
1.3 Algoritmo
A etimologia da palavra algoritmo vem da forma latinizada do arabe
Al-Khowarazmi, o homem de Khowarazm. Essa e a maneira como era co-
nhecido o matematico arabe Ben Musa que viveu no seculo IX. Foi atraves
do seu livro Al-jabr wal muqabalah que os algarismos indo-arabicos che-
garam ao ocidente. Mas, atualmente o signicado da palavra algoritmo e
outro. Um algoritmo e simplesmente um metodo pratico para resolver um
problema. Como uma receita de bolo que se voce seguir passo a passo conse-
guira fazer o bolo. Quando formos descreve-lo temos que deixar claro qual e
a sua entrada e qual e a sua sada. A entrada e como se fosse os ingredientes
na receita e a sada e como se fosse o bolo pronto. Alem disso, temos o modo
de fazer.

E neste momento que iremos dizer como os ingredientes dever ao
ser misturados para termos o produto nal.
8
Se tivermos um candidato a algoritmo temos de vericar duas coisas: se
ele implementa a tarefa desejada e se faz isso em um tempo nito.
Antes de prosseguirmos com a discussao sobre os algoritmos, apresentare-
mos um teorema que justica podermos sempre dividir dois n umeros inteiros
positivos.
Teorema 5 Teorema da divisao[1] Sejam a e b n umeros inteiros positivos.
Existem n umeros inteiros q e r tais que
a = b q + r e 0 r < b.
Alem disso, os valores de q e r satisfazendo as relacoes acima sao unicos.
Iremos apresentar o algoritmo de Euclides que calcula o maximo divisor
de dois n umeros inteiros positivos:
Entrada: n umeros inteiros positivos distintos a e b
Sada: mdc(a, b)
Etapa 1: Comece fazendo c
1
= a, d
1
= b e i = 1
Etapa 2: utilize o algoritmo da divisao para dividir c
i
por d
i
e retornar
r
i
.
Etapa 3: Se r
i
= 0 retorne d
i
, caso contrario faca c
i+1
= d
i
, d
i+1
= r
i
,
acrescente 1 ao contador i e volte a etapa 2.
Vamos fazer a leitura do algoritmo. Ele usa as variaveis i, c
i
, d
i
e r
i
. Ao
nal da execu cao retornara o mdc(a, b). Para encontrar esse valor ele tera
que fazer a Etapa 2 e 3 varias vezes, chamamos isso de um la co. Na Etapa
1 atribumos a c
1
e d
1
os valores de a e b, respectivamente e a i o valor 1.
Na Etapa 2 usamos o algoritmo da divisao para encontrar r
1
, isto e, escrever
a = bq
1
+ r
1
. Se na Etapa 2 o valor encontrado para r
1
for 0, na Etapa 3 o
algoritmo retornara o mdc(a, b), se nao for, ele atribuira valores para c
2
e d
2
,
acrescentara 1 ao contador i e retornara a Etapa 2. Esse procedimento sera
repetido ate encontrarmos o mdc(a, b).
Temos de vericar se o algoritmo acima para e realmente realiza a tarefa
a qual se propoe.
9
Vericando se termina em um n umero nito de passos:
Sabemos que a sequencia de restos r
1
, r
2
, , r
n
, , obedece `as seguintes
desigualdades b > r
1
> r
2
> > r
n
> 0. Com isso, vericamos que
existem no maximo b restos possveis. Como b e um n umero xo, conclumos
que o algoritmo para.
Vericando se a sada e o mdc(a, b):
Lema 1 [1] Sejam a e b n umeros inteiros positivos. Suponhamos que existam
inteiros g e s tais que a = b g + s. Ent ao, mdc(a, b) = mdc(b, s) .
Usaremos o lema para mostrar que o ultimo resto nao-nulo na sequencia
de divisoes e o mdc(a, b). Suponha que o algoritmo para depois de n la cos.
Temos:
a = b q
1
+ r
1
b = r
1
q
2
+ r
2
.
.
.
r
n3
= r
n2
q
n1
+ r
n1
r
n2
= r
n1
q
n
+ r
n
e r
n
= 0
Da ultima linha temos que r
n1
divide r
n2
. Logo, mdc(r
n1
, r
n2
) =
r
n1
. Agora aplicando o lema `a pen ultima linha temos
mdc(r
n3
, r
n2
) = mdc(r
n1
, r
n2
) = r
n1
.
Aplicando o lema `as linhas anteriores ate chegarmos `a primeira temos que
mdc(a, b) = r
n1
. Desse modo, o algoritmo retorna o mdc(a, b).
Poderamos nos perguntar se apenas as informa coes: o algoritmo realiza a
tarefa e o faz em tempo nito nao seriam sucientes para carmos satisfeitos
com ele e implementa-lo em um computador. Nao, pois este tempo nito
poderia ser dez anos. Imagine se o algoritmo de Euclides levasse dez anos
para calcular mdc(272828281, 3242), na pratica ele nao seria interessante.
Veremos mais adiante que isso nao ocorre.
10
Estamos acostumados com a representa cao dos n umeros naturais na base
10. Por exemplo, 523 = 5 10
2
+2 10
1
+3 10
0
. Porem, podemos representa-lo
em outras bases. Como a base 2 (ou binaria). Nesta base diremos que um
n umero tem um comprimento de L bits se ele assim for escrito: a
L1
2
L1
+
a
L2
2
L2
. . . + a
0
2
0
que e representado por a
L1
a
L2
. . . a
0
. Note que a
i
assume apenas os valores 0 ou 1.
Quando analisamos um algoritmo e importante vericar quantas vezes
cada parte esta sendo executada.
`
As vezes, estuda-se a quantidade de memoria
necessaria. Neste trabalho nosso foco sera apenas no tempo de execu cao,
deixaremos de lado qualquer outro fator que inuencie no desempenho do
algoritmo. Ao fazermos o estudo do tempo, utilizamos uma fun cao de custo
f que dependera apenas do tamanho da entrada do algoritmo. Nesta se cao, a
entrada sera um n umero inteiro positivo e o seu tamanho sera L, a quantidade
de bits.
No momento de fazer a analise temos como analisar sob tres pontos de
vista diferentes: melhor caso, caso medio e pior caso. O melhor caso
corresponde ao menor tempo de execu cao sobre todas as entradas de tamanho
n. O pior corresponde ao maior tempo de execu cao sobre todas entradas de
tamanho n. O caso medio corresponde `a media do tempo de execu cao sobre
todas as entradas de tamanho n. Nesta se cao, por seguran ca nossas analises
serao feitas sempre levando em considera cao o pior caso.
Para valores pequenos da entrada n nao precisamos nos preocupar com a
eciencia do algoritmo, pois todos tem custo pequeno, mesmo os inecientes.
O problema e quando n come ca a car muito grande. Para resolver isso
estudamos o que acontece com o algoritmo para valores grandes de n, isto e,
estuda-se o comportamento assintotico da fun cao custo.
Denicao 3 Uma fun cao f(n) positiva domina assintoticamente outra fun cao
g(n) positiva se existem duas constantes positivas c e m tais que se m n
temos que g(n) c f(n). Neste caso, denotamos que g(n) e O(f(n)), que
se le g(n) e de ordem O(f(n)).
11
Propriedades:
1. f(n) e O(f(n)).
2. O(c f(n)) e O(f(n)) se c e uma constante positiva.
3. Se f domina assintoticamente g entao f(n)+g(n) e de ordem O(f(n)).
4. Se F domina assintoticamente f, e Gdomina assintoticamente g, f(n)
g(n) e de ordem O(F(n) G(n)).
Se f e a fun cao custo para um algoritmo A, entao O(f) e considerada a com-
plexidade assintotica ou o comportamento assintotico do algoritmo A.
Diz-se que um algoritmo no qual a fun cao f de custo e dominada por um
polinomio em n tem complexidade polinomial, caso contrario, diz-se que
a sua complexidade e exponencial. Observe que ha um abuso de linguagem
na deni cao de complexidade exponencial, pois a fun cao n
logn
nao e limitada
por nenhum polinomio, logo seu crescimento e considerado exponencial. Mas,
na matematica essa fun cao nao representa uma exponencial.
Denicao 4 Um problema e considerado f acil, trat avel ou sol uvel com-
putacionalmente se existir um algoritmo com complexidade polinomial que
o resolva. Um problema e considerado difcil, intrat avel ou n ao-sol uvel
computacionalmente se o melhor algoritmo existente tiver complexidade ex-
ponencial.
Se um problema e sol uvel e porque existe um algoritmo com complexidade
polinomial que o resolve. Falamos que esse algoritmo e eciente.
Determinar com exatidao o valor de f(n) e uma tarefa difcil, mas de-
terminar a sua complexidade assintotica e mais facil. A partir de agora
estaremos sempre preocupados com a complexidade assintotica da fun cao,
nao nos preocuparemos com o seu valor exato.
Infelizmente nao existe um conjunto completo de regras para analisar
algoritmos. Mas, existem alguns princpios que norteiam essa tarefa. Sao
eles:
12
1- se o tempo de execu cao do comando nao varia com o tamanho da
entrada ele e O(1), por exemplo: comando de leitura, escrita e atribui cao;
2- o tempo de execu cao de uma sequencia de comandos e o do comando
de maior tempo de execu cao;
3- o tempo para executar um la co e o tempo de executar o seu corpo vezes
quantas itera coes sao feitas;
Agora que sabemos que para um algoritmo ser implementado ele tem de
ser eciente, analisaremos o algoritmo de Euclides sob esse ponto de vista.
Suponha que a e b estao escritos em binarios e o maior comprimento deles
e L, isto e, o n umero possui L-bits. A Etapa 1 tem um custo O(1), pois e um
comando de atribui cao. O custo da Etapa 2 e O(L
2
), pois ela implementa
o algoritmo da divisao que tem esse custo computacional. A Etapa 3 e
constituda de um comando condicional que e O(1) e um de atribui cao que
e O(1), logo pelo princpio 2 o custo dessa etapa e O(1). O custo de cada
itera cao do la co e maxO(L
2
), O(1) = O(L
2
). Para determinarmos o custo
total do algoritmo basta sabermos qual a maior quantidade de vezes que
o la co sera implementado. Temos que os restos r
i
da sequencia de divisao
do algoritmo tem tamanho menor ou igual que L-bits. Vamos vericar que
r
i
2
r
i+2
, temos dois casos a considerar:
1)
r
i
2
r
i+1
, neste caso e claro, pois r
i+1
r
i+2
.
2) r
i+1
>
r
i
2
, neste caso, temos que r
i
= q
i+1
r
i+1
+ r
i+2
com q
i+1
> 0,
logo r
i+2
r
i
r
i+1

r
i
2
.
O pior caso que podera acontecer e a, b e r
1
terem L-bits e r
i+2
=
r
i
2
.
Se isso ocorrer, teremos que o la co sera iterado 2 L vezes que e O(L),
portanto o custo da Etapa 2 e 3 e O(L
3
), e o custo total do algoritmo e
maxO(L
3
), O(1) = O(L
3
). Conclumos que o algoritmo de Euclides e
eciente, pois ele e O(L
3
).
Quando analisamos se o algoritmo parava, a justicativa foi que como
os restos sempre diminuem de uma etapa para a outra e na primeira etapa
r
1
e menor que b conclumos que ele ira parar. Com esse argumento nao e
possvel concluir que o algoritmo de Euclides e eciente. Ja que o pior caso
13
e o resto diminuir de uma unidade em cada etapa. Desse modo, o pior caso
e o la co ser iterado b vezes, e b ter L-bits. Com isso teramos uma fun cao
custo O(L
2
2
L
), portanto de complexidade exponencial.
Apresentaremos um algoritmo que determina se um dado n umero natural
N pode ser escrito como a
b
, onde a e b N. Alem disso, a 1 e b 2. Se
este fato ocorre b L, onde L e a quantidade de bits de N. Para ver isto
temos dois casos: o primeiro e N = 1 que e trivial; o segundo e N ,= 1, logo
a 2. Portanto,
N = a
b
log
2
N = b log
2
a
L > b log
2
a,
onde L = log
2
N + 1. Mas, log
2
a 1. Desse modo, b L.
Algoritmo
Entrada: N;
Etapa 1: fa ca i = 2;
Etapa 2: fa ca x =
log
2
N
i
. Calcule os dois inteiros u
1
e u
2
mais proximos
de 2
x
.
Etapa 3: fa ca u
i
1
e u
i
2
e verique se um dos resultados e N. Se for retorne
os valores de i e u
j
tais que u
i
j
= N, para j = 1, 2. Senao, fa ca i = i + 1 e
retorne a Etapa 2.
Para calcular x =
log
2
N
i
, primeiro e necessario calcular log
2
N e depois
aplicar o algoritmo da divisao. Na determina cao desse custo precisamos
saber qual complexidade e maior: do algoritmo da divisao ou do log
2
N? O
algoritmo da divisao sabemos que e O(L
2
). Uma maneira de calcular log
2
N
e utilizar a igualdade abaixo e a serie de Taylor da fun cao log na vizinhan ca
do 1,
log
2
N = L (L log
2
N)
= L log
2
2
L
N
= L
1
ln2
_

j=1
(1)
j1
(
2
L
N
1)
j
j
_
.
14
Como esse calculo sera feito em um computador nao utilizaremos a serie
toda, apenas os n primeiros termos, note que n e xo. Entao, para obtermos
log
2
N precisamos calcular (
2
L
N
1)
j
e sua respectiva divisao por j. Mas, esse
calculo em cada etapa sera repetido no maximo n vezes, como n e xo temos
que esse custo e O(L
2
). Logo a etapa 2 e O(L
2
).
Na etapa 3 para fazer u
i
1
ou u
i
2
e O(L
3
). A multiplica cao e O(L
2
) e i b,
logo serao feitas no maximo L multiplica coes. Como as etapas 2 e 3 podem
ser repetidas no maximo L 2 vezes o custo do algoritmo e O(L
4
).
1.4 Fracoes Contnuas
O intuito das fra coes contnuas e expressar os n umeros racionais por ex-
pressoes do tipo:
a
1
+
1
a
2
+
1
a
3
+
1
...+
1
am
(1.1)
em que a
1
, . . . , a
m
sao n umeros inteiros. Mas, nesse texto assumiremos que
a
1
, . . . , a
m
sao n umeros naturais.
`
As vezes, representaremos a expressao (1.1)
como [a
1
, a
2
, . . . , a
m1
, a
m
].
Veremos como o algoritmo de Euclides apresentado na se cao 1.3 ajudara
a encontrar a expressao (1.1) para um dado n umero racional
a
b
. Suponha
que nosso objetivo seja encontrar o mdc(69, 15). Pelo algoritmo de Euclides,
temos:
69 = 4.15 + 9
15 = 1.9 + 6
9 = 1.6 + 3
6 = 2.3 + 0.
Logo, mdc(69, 15) = 3, visto que 3 e o ultimo resto nao-nulo nesta sequencia
de divisoes. Uma consequencia destas igualdades e podermos expressar
69
15
15
como:
69
15
= 4 +
9
15
= 4 +
1
15
9
= 4 +
1
1 +
6
9
= 4 +
1
1 +
1
9
6
= 4 +
1
1 +
1
1+
3
6
= 4 +
1
1 +
1
1+
1
6
3
= 4 +
1
1 +
1
1+
1
2
. (1.2)
A expressao (1.2) recebe o nome de fra cao contnua do n umero
69
15
e tambem
pode ser representada por [4, 1, 1, 2]. Note que esses n umeros sao os quoci-
entes da sequencia de divisoes do algoritmo de Euclides.
Para obtermos a expressao (1.1) basta determinarmos os valores dos a
i

s
.
Pelo exemplo acima vimos que esses n umeros sao os quocientes que apare-
cem no algoritmo de Euclides. Logo, para encontra-los, basta fazermos uma
pequena modica cao no algoritmo, mandar ele guardar os valores dos q
i

s
.
Essa opera cao e O(1). Portanto, essa tarefa adicional nao aumenta a com-
plexidade do algoritmo. Assim, temos um algoritmo O(L
3
) para encontrar
a fra cao contnua de um n umero racional, onde L e a quantidade de bits do
maxa, b.
Teorema 6 Todo n umero racional possui uma unica representa cao sob a
forma de fracao contnua.
DEMONSTRAC

AO: Este fato e facilmente visto, se lembrarmos que o al-
goritmo de Euclides garante que cada linha do calculo do maximo divisor
comum existe e e escrita de modo unico.
Se p e q pertencem aos naturais, sabemos que
p
q
= [a
1
, a
2
, . . . , a
m
]. Con-
sideremos as seguintes fra coes:
c
1
=
a
1
1
, c
2
= a
1
+
1
a
2
, c
3
= a
1
+
1
a
2
+
1
a
3
, . . . , c
m
= a
1
+
1
a
2
+
1
a
3
+
1
...+
1
am
,
obtidas pelas expansoes das seguintes fra coes contnuas:
16
[a
1
], [a
1
, a
2
], [a
1
, a
2
, a
3
], . . . , [a
1
, . . . , a
m
].
Estas fra coes sao chamadas de primeiro, segundo, terceiro, ..., m-esimo con-
vergentes, respectivamente, da fra cao contnua [a
1
, a
2
, . . . , a
m
]. Note que o
m-esimo convergente e igual `a propria fra cao contnua.
Teorema 7 Seja c
i
=
p
i
q
i
o i-esimo convergente da fracao contnua [a
1
, a
2
, . . . , a
m
].
Entao o numerador p
i
e o denominador q
i
de c
i
satisfazem as seguintes
relacoes:
p
i
= a
i
p
i1
+ p
i2
(1.3)
q
i
= a
i
q
i1
+ q
i2
, (1.4)
para i = 3, 4, . . . , m; onde:
p
1
= a
1
, p
2
= a
2
a
1
+ 1, q
1
= 1, q
2
= a
2
.
DEMONSTRAC

AO: Esse resultado sera provado por indu cao. Para isso,
demonstraremos que essas rela coes sao satisfeitas para i = 3.
c
3
= a
1
+
1
a
2
+
1
a
3
= a
1
+
1
a
2
a
3
+1
a
3
= a
1
+
a
3
a
2
a
3
+ 1
=
a
1
a
2
a
3
+ a
1
+ a
3
a
2
a
3
+ 1
=
a
3
(a
1
a
2
+ 1) +a
1
a
3
a
2
+ 1
.
Por hipotese temos: p
1
= a
1
, p
2
= a
2
a
1
+1, q
1
= 1, q
2
= a
2
. Logo, a equa cao
acima torna-se:
c
3
=
a
3
p
2
+ p
1
a
3
q
2
+ q
1
=
p
3
q
3
.
Assumiremos que as equa coes (1.3) e (1.4) sao validas para todo j i.
Isto e,
c
i
= [a
1
, . . . , a
i
] =
p
i
q
i
=
a
i
p
i1
+ p
i2
a
i
q
i1
+ q
i2
, (1.5)
17
e mostraremos que isto implica a validade do teorema para i +1. Tomemos o
seguinte convergente c
i
= [a
1
, . . . , a
i
], escrevendo a sua expressao em fra coes
contnuas,
c
i
= a
1
+
1
a
2
+
1
a
3
+
.
.
.+
1
a
i1
+
1
a
i
, (1.6)
o proximo convergente e dado por:
c
i+1
= a
1
+
1
a
2
+
1
a
3
+
.
.
.+
1
a
i1
+
1
a
i
+
1
a
i+1
. (1.7)
Das equa coes (1.6) e (1.7), percebemos que c
i+1
e obtido da expressao de
c
i
, pela substitui cao de a
i
por a
i
+
1
a
i+1
.
Como estamos supondo por indu cao que (1.3) e (1.4) sao validas para
todo j i. Logo,
p
i1
q
i1
=
a
i1
p
i2
+ p
i3
a
i1
q
i2
+ q
i3
,
os n umeros p
i1
e q
i1
dependem apenas dos n umeros a
i1
e dos n umeros
p
i2
, q
i2
, p
i3
, q
i3
os quais dependem dos precedentes a

s, p

s e q

s. Deste
modo p
i2
, q
i2
, p
i1
e q
i1
sao independentes de a
i
. Logo, quando substi-
tuirmos a
i
por a
i
+
1
a
i+1
, os n umeros p
i
, p
i1
, q
i
e q
i1
nao serao afetados.
Podemos utilizar (1.5) para calcular c
i+1
, bastando fazer a seguinte troca, a
i
por a
i
+
1
a
i+1
c
i+1
=
_
a
i
+
1
a
i+1
_
p
i1
+ p
i2
_
a
i
+
1
a
i+1
_
q
i1
+ q
i2
=
(a
i+1
a
i
+ 1)p
i1
+ a
i+1
p
i2
(a
i+1
a
i
+ 1)q
i1
+ a
i+1
q
i2
=
a
i+1
(a
i
p
i1
+ p
i2
) + p
i1
a
i+1
(a
i
q
i1
+ q
i2
) + q
i1
=
a
i+1
p
i
+ p
i1
a
i+1
q
i
+ q
i1
=
p
i+1
q
i+1
.
18
Portanto, nossa demonstra cao por indu cao esta concluda.
Deniremos p
0
= 1, p
1
= 0, q
0
= 0, q
1
= 1. Com isso, as equa coes
p
i
= a
i
p
i1
+ p
i2
(1.8)
q
i
= a
i
q
i1
+ q
i2
(1.9)
tornam-se verdadeiras para i 1
Teorema 8 A relacao
p
i
q
i1
p
i1
q
i
= (1)
i
, (1.10)
se verica para todo i 0, onde p
i
e q
i
sao, respectivamente, o numerador e
o denominador do i-esimo convergente.
DEMONSTRAC

AO: Provaremos esse resultado usando o princpio de indu cao.
Primeiro vericaremos para o caso i = 0
p
0
q
1
p
1
q
0
= 1 = (1)
0
.
Assumiremos que esse resultado e valido para i, isto e, p
i
q
i1
p
i1
q
i
= (1)
i
e vamos mostrar que isso implica o resultado para i +1. Do teorema 7 temos
que: p
i+1
= a
i+1
p
i
+ p
i1
e q
i+1
= a
i+1
q
i
+ q
i1
. Com isso,
p
i+1
q
i
p
i
q
i+1
= (a
i+1
p
i
+ p
i1
)q
i
p
i
(a
i+1
q
i
+ q
i1
)
= a
i+1
p
i
q
i
+ p
i1
q
i
a
i+1
p
i
q
i
p
i
q
i1
= (1)(p
i
q
i1
p
i1
q
i
),
pela hipotese de indu cao, temos:
p
i+1
q
i
p
i
q
i+1
= (1)(1)
i
= (1)
i+1
.
O que prova o resultado.
Corolario 1 Para todo convergente c
i
=
p
i
q
i
temos que mdc(p
i
, q
i
) = 1.
19
DEMONSTRAC

AO: Pelo teorema 8 temos que p
i
q
i1
p
i1
q
i
= (1)
i
. Se
existir um d tal que d seja um divisor de p
i
e q
i
, temos que d tambem e um
divisor de 1 ou 1. Portanto, o mdc(p
i
, q
i
) = 1.
Sabemos que qualquer n umero racional pode ser escrito na forma:
= [a
1
, a
2
, . . . , a
i1
, a
i
] =
a
i
p
i1
+ p
i2
a
i
q
i1
+ q
i2
.
Fazendo a diferen ca

p
i1
q
i1
=
q
i1
p
i1
q
i1
=
a
i
p
i1
+ p
i2
a
i
q
i1
+ q
i2

p
i1
q
i1
=
(p
i1
q
i2
p
i2
q
i1
)
q
i1
(a
i
q
i1
+ q
i2
)
e aplicando o teorema 8, obtemos a expressao:
q
i1
p
i1
q
i1
=
(1)
i
q
i1
(a
i
q
i1
+ q
i2
)
. (1.11)
Pela equa cao (1.11), observamos que q
i
p
i
e q
i+1
p
i+1
possuem sinais
opostos. Este fato sera utilizado na demonstra cao do lema seguinte.
Lema 2 Seja um n umero racional e
pn
qn
os convergentes da expansao de
em fracao contnua. Se
a
b
for um racional com b > 0 tal que:
[b a[ < [q
n
p
n
[,
para algum n 0, entao b q
n+1
.
DEMONSTRAC

AO: A prova do teorema sera feita por contradi cao. Supo-
nha [b a[ < [q
n
p
n
[ e b < q
n+1
.
Analisaremos o seguinte sistema linear em x e y:
_
p
n
x + p
n+1
y = a
q
n
x + q
n+1
y = b.
Pelo teorema 8 temos que o determinante deste sistema e 1 ou 1, logo esse
sistema possui uma unica solu cao. Alem disso, essa solu cao pertence aos
n umeros inteiros.
20
Mostraremos que x e y sao diferentes de zero. Pois, se x = 0, entao
b = yq
n+1
, portanto, y > 0 e b q
n+1
, que nos da uma contradi cao com
b < q
n+1
. Se y = 0, entao a = xp
n
, b = xq
n
e
[b a[ = [xq
n
xp
n
[ = [x[[q
n
p
n
[.
Como x Z, temos que [x[ 1. Portanto, [b a[ [q
n
p
n
[, o que
novamente nos leva a uma contradi cao.
Nosso proximo objetivo e mostrar que x e y possuem sinais opostos. Se
y < 0, sabemos que xq
n
= b yq
n+1
, como b > 0, temos x > 0. Se y > 0,
entao b < yq
n+1
, pois b < q
n+1
. Portanto, xq
n
e negativo. Mostrando que
x < 0.
De (1.11) sabemos que q
n
p
n
e q
n+1
p
n+1
possuem sinais opostos e,
logo, x(q
n
p
n
) e y(q
n+1
p
n+1
) possuem o mesmo sinal.
Do sistema acima obtemos ba = x(q
n
p
n
) +y(q
n+1
p
n+1
). Como
os dois termos do lado direito da equa cao possuem o mesmo sinal, temos:
[b a[ = [x(q
n
p
n
) + y(q
n+1
p
n+1
)[
= [x(q
n
p
n
)[ +[y(q
n+1
p
n+1
)[
> [x(q
n
p
n
)[ [q
n
p
n
[,
as equa coes acima nos dao uma contradi cao, o que prova o teorema.
Teorema 9 Seja um n umero racional. Se existir um racional
a
b
, com
b 1 tal que


a
b

<
1
2b
2
,
entao
a
b
e um dos convergentes da expansao de em fracao contnua.
DEMONSTRAC

AO: Podemos supor mdc(a, b) = 1 sem perda de genera-
lidade. Provaremos esse resultado por contradi cao. Suponhamos que exista
um racional
a
b
que satisfaz as hipoteses do teorema e que
a
b
nao seja um con-
vergente da fra cao contnua de . Seja n o inteiro tal que q
n
b q
n+1
.
Para este inteiro a desigualdade [b a[ < [q
n
p
n
[ e impossvel pelo lema
2. Logo,
21
[q
n
p
n
[ [b a[ <
1
2b


p
n
q
n

<
1
2bq
n
.
Utilizando o fato de que
a
b
,=
pn
qn
e que bp
n
aq
n
e um n umero inteiro nao-nulo,
obtemos:
1
bq
n

[bp
n
aq
n
[
bq
n
=

p
n
q
n

a
b


a
b


p
n
q
n

<
1
2b
2
+
1
2bq
n
.
Logo,
1
2bq
n
<
1
2b
2
.
Com isto conclumos que b < q
n
, o que e uma contradi cao.
1.5

Algebra linear
Esta se cao sera dedicada a apresentar alguns fatos de algebra linear
em uma nota cao diferente da que matematicos estao acostumados. Essa
nova maneira de ver a algebra linear facilita muito os calculos na mecanica
quantica. Neste texto, por conven cao, um espa co vetorial sera sempre com-
plexo, de dimensao nita e com produto interno.
`
As vezes, o denotaremos
por H
n
, onde n e a dimensao do espa co vetorial. Assumiremos que H
n
sera
sempre dado com uma base ortonormal.
Um vetor em um espa co complexo sera descrito como [), (le-se ket psi).
O elemento 0 sera usado para denotar a origem, pois o vetor [0) sera utilizado
em todo o texto como o primeiro vetor de uma base ortonormal do espa co.
Por exemplo, a base (1, 0), (0, 1) de C
2
pode ser vista nessa nova linguagem
como: [v
0
) , [v
1
), onde [v
0
) = (1, 0) e [v
1
) = (0, 1). O vetor = (a, b) sera
reescrito como [) = a [v
0
)+b [v
1
). Essa nota cao facilita muito quando formos
22
fazer computa cao quantica. Caso o leitor nao tenha conseguido domina-la,
nao tem problema. Basta pensar no vetor [) com a representa cao que ele
esteja familiarizado.
Denicao 5 Consideremos o seguinte conjunto,
H

n
= t : H
n
C[t e linear.
Em H

n
podemos denir as seguintes operacoes: para t, m H

n
e C,
(t + m)(h) = t(h) + m(h), (t)(h) = t(h).
Com estas operacoes H

n
e um espaco vetorial. Chamamos H

n
de espaco dual
de H
n
. Os elementos de H

n
sao chamados funcionais lineares.
Em [4] o leitor pode encontrar uma demonstra cao do seguinte fato, a di-
mensao de H
n
e H

n
e a mesma.
Denicao 6 Seja L = f
1
, , f
n
uma base para H

n
e S = e
1
, , e
n

uma base para H


n
. Se f
i
(e
j
) =
_
0, se i ,= j
1 se i = j
, dizemos que L e a base de
H

n
dual a base S de H
n
, ou simplesmente L e a base dual, se car claro qual
e a base de H
n
que esta sendo considerada.
O produto interno (., .) e uma fun cao de H
n
H
n
C que satisfaz as
seguintes propriedades:
1-(., .) e linear na segunda entrada, ([v) ,

i
[w
i
)) =

i
([v) , [w
i
));
2-([v) , [w)) = ([w) , [v))

; onde e para denotar a conju cao complexa.


3-([v) , [v)) 0, com a igualdade valendo se, e somente se, [v) = 0.
Em H
n
usaremos o seguinte produto interno ((v
1
, . . . , v
n
), (z
1
, . . . , z
n
)) =

i
v

i
z
i
. No produto interno se mantivermos xo o elemento da primeira
entrada, isto e, ([v) , .) teremos um funcional linear l
v
dado por,
l
v
: H
n
C
[w) ([v) , [w)).
23
Dada uma base ortonormal [h
1
) , [h
2
) , . . . , [h
n
), para H
n
, utilizando o pro-
duto interno deniremos os seguintes funcionais lineares:
H = ([h
1
) , .), ([h
2
) , .), . . . , ([h
n
) , .).

E facil ver que esse conjunto e linearmente independente, e como a dimensao


de H

n
e n, temos que H e uma base para H

n
. Mais ainda, a base esco-
lhida para H
n
e ortonormal logo, H coincide com a base dual. Como H
n
e H

n
possuem a mesma dimensao eles sao isomorfos. Um dos isomors-
mos existente e L : [h
i
) ([h
i
) , .), conhecido como isomorsmo canonico.
Portanto, [v) =

n
i=1

i
[h
i
) atraves de L e mapeado no seguinte elemento

n
i=1

i
([h
i
) , .) de H

n
. Esse elemento e conhecido como o dual do vetor
[v) e denotado por v[ . Com essa nova nota cao H = h
1
[ , h
2
[ , . . . , h
n
[ e
v[ =

n
i=1

i
h
i
[. Desse modo, podemos denotar o produto escalar de [v) e
[w) por v [ w).
Nosso proximo objetivo e encontrar uma representa cao matricial para
v [ w) . Sejam [v) =

i
v
i
[i) e [w) =

i
w
i
[i) representa coes de [v) e [w)
em uma base ortonormal [i) . Logo, como ([i) , [j)) =
ij
= i [ j) , temos:
v [ w) = (

i
v
i
[i) ,

i
w
i
[i)) =

ij
v

i
w
j

ij
=

i
v

i
w
i
=
_
v

1
. . . v

n
_

_
w
1
.
.
.
w
n
_

_
.
Assim, podemos representar o dual v[ como o vetor linha cujas entradas sao
os complexos conjugados das entradas correspondentes de [v). Se quisessemos
calcular o produto interno de a = (0, i) e b = (1, 0) C
2
com a base canonica,
bastaria fazer a [ b) =
_
0 i
_

_
1
0
_
, que produz como resultado 0.
Observe que i [ j) = 0 sempre que [i) e [j) forem vetores ortogonais. Logo se
o espa co vetorial V e considerado com uma base ortonormal [v
1
) , . . . , [v
m
),
os vetores [) e [) V serao dados por [) =

i
[v
i
) e [) =

i
[v
i
).
Fazendo o produto interno temos, [ ) =

i,j

j
v
i
[ v
j
) =

i
.
Isso ilustra um dos benefcios dessa nota cao.
24
Seja V um espa co vetorial com base ortonormal [v
1
) , . . . , [v
m
). Nesse
espa co temos o operador linear identidade, que satisfaz:
I =

i
[v
i
) v
i
[ , (1.12)
(para uma demonstra cao desse fato veja [3]). Por exemplo, a matriz identi-
dade de C
2
, com a base ortonormal [0) , [1) sera expressa por I = [0) 0[ +
[1) 1[ .
Seja W um subespa co de dimensao l de um espa co vetorial V com di-
mensao v e considere [1) , . . . , [l) uma base ortonormal para W. Denimos
um projetor sobre W, como sendo o seguinte operador linear:
P =
l

i=1
[i) i[ .
Denicao 7 Sejam V um espaco vetorial e U : V V uma transforma cao
linear, U sera chamada de transforma cao linear unitaria se
[U [v) [ = [ [v) [, [v) V.
Esta deni cao e equivalente a vericar se a matriz que representa U satisfaz:
U

U = I, onde U

= [U
t
]

, com t indicando a transposi cao matricial e


indicando a conjuga cao complexa. Nesse texto, nao faremos distin cao entre
a transforma cao linear U e a matriz que a representa, a menos que seja
explicitada uma men cao ao contrario.
1.5.1 Produto tensorial
No proximo captulo precisaremos da deni cao de produto tensorial, pois
sera atraves dessa opera cao que descreveremos um sistema composto por mais
de um subsistema. Esse assunto sera tratado de uma forma bem simplicada.
O produto tensorial de dois vetores
[) =
_

2
.
.
.

m
_

_
e [) =
_

2
.
.
.

n
_

_
, (1.13)
25
denotado por [) [), e um outro vetor [) denido por:
[) = [) [) =
_

2
.
.
.

2
.
.
.

n
.
.
.

2
.
.
.

n
_

_
, (1.14)
onde
i

j
e o produto de n umeros complexos. Tambem denotaremos [)[)
por [) . Podemos estender a deni cao de produto tensorial de vetores para
matrizes. Seja A uma matriz mxn, e B uma matriz pxq.
AB =
_

_
A
11
B A
12
B . . . A
1n
B
A
21
B A
22
B . . . A
2n
B
.
.
.
.
.
.
.
.
.
.
.
.
A
m1
B A
m2
B . . . A
mn
B
_

_
mpxnq
. (1.15)
Sejam V e W espa cos vetoriais de dimensoes m e n respectivamente,
com as seguintes bases [v
1
) , . . . , [v
m
) e [w
1
) , . . . , [w
n
). O espa co vetorial
V W e gerado por combina coes lineares dos seguintes elementos [v
i
)[w
j
) ,
chamaremos [v
i
) [w
i
) de base produto para V W.
O produto tensorial satisfaz as seguintes propriedades, para z C, [v) , [v
1
) , [v
2
)
C
m
e [w) , [w
1
) , [w
2
) C
n
:
1. z([v) [w)) = (z [v)) [w) = [v) (z [w)).
2. ([v
1
) +[v
2
)) [w) = [v
1
) [w) +[v
2
) [w) .
26
3. [v) ([w
1
) +[w
2
)) = [v) [w
1
) +[v) [w
2
).
Sejam A e B transforma coes lineares agindo respectivamente nos seguin-
tes espa cos vetoriais V e W. O operador linear denido por A B agira
no espa co V W da seguinte maneira: A B([v) [w)) = A[v) B[w) ,
estendido por linearidade. O produto escalar em V W e denido na base
produto como, v
i
w
j
[ v
k
w
l
) = v
i
[ v
k
) w
j
[ w
l
) . Para maiores detalhes veja
[3].
27
Captulo 2
Um breve relato quantico
Neste captulo sao apresentados conhecimentos basicos necessarios sobre
mecanica e computa cao quantica para a compreensao da parte quantica do
algoritmo de Shor.
2.1 Comentarios sobre mecanica quantica
Por muito tempo a fsica Newtoniana descreveu bem os fenomenos fsicos
observaveis. Mas, a partir do primeiro quarto do seculo XIX alguns resulta-
dos discordavam do previsto pela teoria existente. Na tentativa de explicar es-
sas discordancias nasceu a mecanica quantica. Grosseiramente falando, essa
teoria explica os fenomenos fsicos na escala atomica. Normalmente atribui-se
`a mecanica quantica apenas tais fenomenos, porque existe uma teoria con-
sistente para descrever os fenomenos do dia-a-dia: a mecanica classica. Na
maioria dos casos, a mecanica classica pode ser obtida da mecanica quantica.
Porem, como a mecanica quantica nao e muito intuitiva, nos fenomenos que
a classica explica e prefervel trabalhar com esta teoria.
A mecanica quantica torna-se mais palpavel quando descrevemos seus
fenomenos atraves de uma linguagem matematica. Toda teoria possui seus
pilares, os da mecanica quantica sao os seguintes postulados:
28
Postulado 1 A qualquer sistema fsico isolado existe associado um espaco
vetorial complexo com produto interno, conhecido como espaco de estados do
sistema. O sistema e completamente descrito pelo seu vetor de estado, um
vetor unitario no espaco de estados.
Postulado 2 A evolu cao de um sistema quantico fechado e descrita por uma
transforma cao linear unitaria. Ou seja, o estado [) de um sistema em um
tempo t
1
esta relacionado ao estado [

) do sistema em t
2
por um operador
linear unitario U que depende somente de t
1
e t
2
:
[

) = U [) .
Postulado 3 O espaco de estados de um sistema fsico composto e o produto
tensorial dos espacos de estados dos sistemas individuais. Se os sistemas
forem numerados de 1 ate n, e o sistema i for preparado no estado [
i
),
decorre que o estado do sistema composto sera [
1
) [
2
) . . . [
n
).
Postulado 4 Seja [) o estado do sistema, onde [) V . Sejam V
i
sub-
espacos vetoriais de V tais que V = V
i
. Uma medicao com possveis res-
postas i, aplicada ao sistema e descrita pelos seus projetores ortogonais P
i
,
nos respectivos subespacos V
i
. A probabilidade de obter o resultado i e dada
por p(i) = [ P
i
[) . Apos a medicao o sistema passa a ser descrito pelo
estado [
i
) =
P
i
|
|P
i
||
.
O postulado 1 descreve a arena para a mecanica quantica, nos ensinando
como um sistema deve ser descrito. O postulado 2 nos diz que a evolu cao
de um sistema e feita atraves de transforma coes lineares unitarias. Com isso
se soubermos em um tempo t
1
o estado de um sistema, poderemos descobrir
qual era o seu estado em um tempo t
0
anterior. O postulado 3 nos diz como
descrever um sistema composto por mais de um subsistema. O postulado 4
permite extrair informa coes sobre o sistema que estamos trabalhando.
Vamos explorar um pouco o postulado 4, pois ele sera muito utilizado
nesse trabalho. Suponha que temos um sistema descrito por [) = a [0) +
29
b [1), onde o espa co de estados esta sendo considerado com a seguinte base
[0) , [1) ortonormal (conhecida como base computacional, a motiva cao para
esse nome sera dada mais adiante nesse texto). Faremos uma medi cao nesse
sistema, ela tera dois possveis resultados, denidos pelos projetores P
0
=
[0) 0[ e P
1
= [1) 1[. A probabilidade de obter o resultado 0 na medi cao e:
p(0) = [ P
0
[) = [a[
2
. Analogamente, a probabilidade de obter o resultado
1 e p(1) = [b[
2
. O estado do sistema apos a medi cao em cada caso sera:
P
0
[)
[a[
=
a [0)
[a[
P
1
[)
[b[
=
b [1)
[b[
.
Note que apos a medi cao nao temos mais informa cao sobre o resultado que
nao foi obtido na medi cao. Perdemos toda a informa cao a respeito dele. Esse
e um dos motivos porque e tao complexo trabalhar com fenomenos quanticos.
Pois, para termos informa coes a seu respeito temos que fazer medi coes, porem
quando medimos perdemos informa coes potenciais.
2.2 Computacao quantica
Atualmente, o computador se tornou algo extremamente importante em
nossa vida. Ele esta presente em todos os lugares. O computador que temos
em casa e um objeto fsico, o qual pode ter as suas a coes traduzidas em
linguagem matematica. Na computa cao atual o bit e o conceito fundamental,
e assume apenas os estados 0 ou 1.
Na computa cao quantica temos o analogo ao bit na computa cao classica,
ele sera chamado de bit quantico ou q-bit.
Denicao 8 Seja H
2
com a base ortonormal [0) , [1). Um q-bit ou bit
quantico [) e um vetor unitario em H
2
, isto e,
[) =
0
[0) +
1
[1) ,
com
0
,
1
C e [
0
[
2
+ [
1
[
2
= 1. Chamamos o coeciente complexo
j
de
amplitude do estado [j) , para j = 0, 1.
30
Na computa cao classica o bit esta no estado 0 ou 1 e podemos descobrir
facilmente em qual estado ele se encontra. Mas, o q-bit encontra-se como
uma combina cao linear dos estados [0) e [1). Se quisermos determinar os
valores de e do q-bit [) nao conseguiremos. Pelo postulado 4, quando
examinamos um q-bit na tentativa de encontrar os valores de
0
e
1
temos
acesso apenas ao estado [0) com probabilidade [
0
[
2
e ao estado [1) com
probabilidade [
1
[
2
. Com isso, quando medimos um q-bit perdemos algumas
informa coes que ele armazena. Pois, apos a medi cao o q-bit estara em um
dos estados [0) ou [1). Uma maneira de tentar obter
0
e
1
seria fazer varias
copias de [) e med-las. Com isso teramos um valor aproximado para
0
e
1
. Mas, o processo de copiar um estado quantico nao e permitido pelo
teorema da nao-clonagem que sera apresentado na se cao 2.3. O q-bit pode
existir em um estado contnuo entre [0) e [1), ate que ele seja observado. Por
exemplo, um q-bit pode estar no estado
1

3
[0)+
_
2
3
[1) , quando zermos uma
medi cao com os projetores M
0
= [0) 0[ e M
1
= [1) 1[ teremos probabilidade
1
3
de encontrar 0 e
2
3
de encontrar 1.
Agora falaremos um pouco sobre sistemas que sao descritos por mais
de um q-bit. Se tivermos dois bits classicos os possveis estados seriam
00, 01, 10 ou 11. Um sistema com um par de q-bits e descrito como um
vetor unitario [) H
4
, onde H
4
e considerado com a base ortonormal
B
4
= [00) , [01) , [10) , [11). Desse modo,
[) =
00
[00) +
01
[01) +
10
[10) +
11
[11) ,
onde [
00
[
2
+ [
01
[
2
+ [
10
[
2
+ [
11
[
2
= 1. Cada
ij
, com i, j 0, 1 e
chamado de amplitude do estado [ij). Podemos representar o estado [00)
pelo seu n umero correspondente na base binaria, isto e, [0). Fazendo isso
para os outros vetores da base temos que B
4
passa a ser [0) , [1) , [2) , [3) e
[) pode ser reescrito como
0
[0) +
1
[1) +
2
[2) +
3
[3).
Enunciaremos como descrever um sistema com n q-bits.
Denicao 9 Seja [) o estado de um sistema com n q-bits, [) e um vetor
unitario em H
2
n com uma base ortonormal B
2
n = [x) ; x 0, 1
n
, o
31
signicado de x 0, 1
n
e que x e uma sequencia de n algarismos, onde
esses algarismos sao 0 ou 1. Desse modo,
[) =

x{0,1}
n

x
[x) , (2.1)
onde

x{0,1}
n
[
x
[
2
= 1, (2.2)
a
x
e conhecido como amplitude do estado da base [x) .
Se trocarmos x pelo seu valor numerico na base binaria as expressoes (2.1) e
(2.2) tornam-se:
[) =
2
n
1

x=0

x
[x) e
2
n
1

x=0
[
x
[
2
= 1.
Daqui para frente, os espa cos vetorias serao sempre de dimensao 2
n
.
2.3 Portas Logicas
Na computa cao classica as portas logicas sao fun coes binarias com entra-
das binarias, isto e, f : 0, 1
n
0, 1
m
. Nesta computa cao existem apenas
duas portas logicas reversveis operando sobre um bit: a porta identidade e
a nega cao. Na computa cao quantica as portas logicas de um q-bit sao trans-
forma coes lineares unitarias em H
2
. A necessidade de ser uma transforma cao
linear unitaria e devido ao postulado 2.
Uma porta logica que sera de muito interesse nesse trabalho e a porta
Hadamard,
H =
1

2
_
1 1
1 1
_
.
Essa porta transforma [0) em
1

2
([0) +[1)) e [1) em
1

2
([0) [1)).
Analogamente, as portas logicas que atuam em n q-bits sao transforma coes
lineares unitarias de C
2
n
em C
2
n
. Uma porta logica quantica de 2 q-bits e o
N

AO-controlado ou porta CNOT. Essa porta e um operador de C


4
em C
4
.
32
Ela tem dois q-bits de entrada, conhecidos como q-bit de controle e q-bit
alvo. Descreveremos a a cao da porta CNOT na base computacional do se-
guinte modo: se o q-bit de controle estiver no estado [0) nada acontece com
o q-bit alvo. Se o q-bit de controle for o estado [1), o q-bit alvo troca de
estado, onde o q-bit de controle e o primeiro q-bit. Em smbolos:
[00) [00) , [01) [01) , [10) [11) , [11) [10) .
Tambem podemos descrever a porta CNOT da seguinte maneira: [A)[B)
[A) [B + A mod 2) . A matriz unitaria que representa essa porta e:
U
CN
=
_

_
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
_

_
.
Pelo fato de que todas as portas logicas da computa cao qu antica serem
transforma coes lineares unitarias essa computa cao e reversvel, ao contrario
da computa cao classica que e usualmente irreversvel [3].
Agora responderemos porque nao e possvel copiar qualquer q-bit desco-
nhecido. Suponha que temos uma maquina que realiza tal opera cao. Seja
A o compartimento da maquina que armazena o q-bit desconhecido [) que
desejamos copiar e B o compartimento que ira armazenar a copia de [), o
estado inicial do compartimento B sera [t). O estado inicial da maquina e:
[) [t) .
A evolu cao do sistema sera dada por uma matriz unitaria U,
[) [t)
U
U([) [t)) = [) [) .
Suponha que sejam feitas copias de dois estados, [) e [). Teremos:
U([) [t)) = [) [) (2.3)
U([) [t)) = [) [) . (2.4)
33
De (2.3) e (2.4) segue que,
(U([) [t)), U([) [t))) = ([) [) , [) [))
(U([) [t)), U([) [t))) = ([) , [))
2
. (2.5)
Por hipotese, U e unitaria obedecendo: (U [a) , U [b)) = ([a) , [b)) logo, (2.5)
torna-se:
([) [t) , [) [t)) = ([) , [))
2
)
[ ) = ( [ ))
2
.
Porem, a equa cao y = y
2
possui apenas duas solu coes, y = 0 ou y = 1.
Logo, so temos duas possibilidades [) = [) ou [) e [) serem ortogonais.
Portanto, conseguimos copiar [) apenas se [t) e m ultiplo ou ortogonal a [).
Esse resultado e conhecido como teorema da nao clonagem, visto que nao
e sempre que conseguimos copiar um q-bit [14].
2.4 Circuitos Quanticos
Os circuitos quanticos sao compostos por portas logicas e os. Os
os nao sao necessariamente os objetos fsicos a que estamos acostumados,
eles apenas representam o transporte do q-bit atraves do circuito. O o
pode representar um foton se movendo de um local para outro no espa co.
O circuito deve ser lido da esquerda para a direita. O circuito (2.6) e o da
porta CNOT
[A) [A)
[B)
_
[A+ B mod 2)
(2.6)
Se o q-bit de controle for um estado da base computacional a porta CNOT
pode ser utilizada para copia-lo para o q-bit alvo, desde que o q-bit alvo esteja
no estado [0). Observe o circuito (2.7)
[c) [c)
[0)
_
[c)
.
(2.7)
34
Um exemplo de um circuito maior e o (2.8), a tarefa dele e trocar o estado
da primeira linha com o da segunda, e por isto e chamado de swap,

. (2.8)
Vericaremos se o circuito (2.8) realiza a tarefa prometida. Suponha que o
estado [a) [b) seja um produto tensorial de estados da base computacional
temos:
[a) [b) [a) [a + b mod 2)
[a + (a + b) mod 2) [a + b mod 2)
[b) [a + b + b mod 2) = [b) [a) = [ba) .
Apresentaremos uma opera cao que sera muito util nos pr oximos captulos.
Se tivermos uma porta logica U atuando em n-q-bits, deniremos a porta
U-controlada como uma opera cao que envolvera n + 1 q-bits. O primeiro e
o q-bit de controle, os n restantes sao os alvos, isto e, sao os q-bits nos quais
a porta U atua. Se o q-bit de controle for o 0 a porta U nao sera aplicada
aos q-bit alvo, se for 1 a porta sera aplicada. O circuito (2.9) representa um
circuito quantico para a porta U-controlada,

U
.
(2.9)
Observe que a porta U-controlada e apenas uma porta CNOT generalizada
para muitos q-bits.
Considere o seguinte circuito,
[0)
H

(2.10)
o smbolo

e para indicar que nesse estagio do circuito sera feita uma


medi cao na base computacional. Analisaremos as a coes realizadas no circuito
35
(2.10): iniciado no estado [0), apos a atua cao da porta Hadamard o estado
passara a ser descrito por
1

2
([0) + [1)). No nal sera feita uma medi cao na
base computacional, com o seguinte conjunto de projetores [0) 0[ e [1) 1[.
Pelo postulado 4, temos probabilidade
1
2
de apos a medi cao o sistema ir para
o estado [0), e probabilidade
1
2
de apos a medi cao o sistema ir para o estado
[1).
36
Captulo 3
Transformada de Fourier
Quantica
A transformada de Fourier discreta (TFD) e uma transforma cao linear
de C
N
em C
N
que leva o vetor (x
0
, ..., x
N1
) em (y
0
, .., y
N1
), onde os y
k
sao
dados por:
y
k
=
1

N1
j=0
x
j
e
2ijk
N
. (3.1)
Vamos fazer alguns casos particulares para TFD:
para N = 2, teremos [
1

2
(x
0
+ x
1
, x
0
+ x
1
e
i
)];
para N = 3, teremos [
1

3
(x
0
+x
1
+x
2
, x
0
+x
1
e
2i
3
+x
2
e
4i
3
, x
0
+x
1
e
4i
3
+
x
2
e
8i
3
)];
Como a TFD e um operador linear, podemos representa-lo em uma base
de C
N
, por uma matriz de transforma cao. Faremos essa opera cao para a
base canonica tendo, assim, a seguinte matriz:
1

N
_
_
_
_
_
_
_
_
_
1 1 1 1
1
2
. . .
N1
1
2

4
. . .
N2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
N1

N2

_
_
_
_
_
_
_
_
_
,
onde = e
2i
N
.
37
Sabemos da algebra linear que um operador e unitario se, e somente se,
a matriz que o representa possui seus vetores linhas ou colunas unitarios e
ortogonais. Utilizaremos esse fato para provar que a TFD e unitaria. O vetor
que esta na j-esima coluna e
1

N
_
1, e
2ij1
N
, ..., e
2ij(N1)
N
_
, fazendo o produto
escalar com o que esta na l-esima coluna, obtemos
1
N

N1
k=0
e
2ik(lj)
N
. (3.2)
Temos dois casos:
1) l = j,
1
N

N1
k=0
1 = 1, isto e, o vetor coluna tem norma 1.
2)l ,= j,
1
N

N1
k=0
e
2ik(lj)
N
. (3.3)
A expressao acima e a soma dos termos de uma progressao geometrica (p.
g.) que possui como primeiro termo e razao, respectivamente,
1
N
e e
2i(lj)
N
.
Usando a formula para a soma dos termos de uma p.g. nita temos que (3.3)
e igual a:
1
N

1
N

e
2i(lj)
N

N
1e
2i(lj)
N
. Sabemos que,
e
2i(lj)N
N
= e
2i(lj)
= cos(2(l j) + isen(2(l j))) = 1 + 0i = 1.
Portanto, a expressao (3.3) e nula. Logo, os vetores de colunas diferentes sao
ortogonais. Conclumos que a TFD e unitaria.
Podemos reescrever a TFD na nota cao utilizada pela mecanica quantica,
apresentada na se cao 1.5. O vetor (x
0
, x
1
, ..., x
N1
) C
N
com uma base
ortonormal passa a ser escrito como

N1
j=0
x
j
[j). Aplicando uma TFD a
este vetor obteremos

N1
k=0
y
k
[k), onde os y
k
sao dados pela expressao (3.1).
A TFD agindo em um espa co complexo de dimensao nita com a nota cao
da mecanica quantica e o que chamamos de transformada quantica de
Fourier (TQF). Observe que a TQF e unitaria, logo podemos implementa-
la em um computador quantico.
Em nota cao binaria o n umero j = j
1
j
2
...j
n
= j
1
2
n1
+j
2
2
n2
+... +j
n
2
0
,
com j
k
= 0 ou 1. Vamos introduzir uma nota cao para as fra coes binarias.
38
Representaremos
j
1
2
+
j
2
4
+ ... +
jm
2
m
por 0.j
1
j
2
...j
m
, com j
k
= 0 ou 1. Tendo
em vista que nosso intuito e fazer computa cao, analisaremos a TQF para
N = 2
n
, ou seja, para uma base [0) , ..., [2
n
1),
[j)
1
2
n
2

2
n
1
k=0
e
2ijk
2
n
[k) .
Escrevendo o n umero k em sua representa cao binaria temos:
1
2
n
2

1
k
1
=0
...

1
kn=0
e
2ij(
P
n
l=1
k
l
2
l
)
[k
1
...k
n
) .
Podemos utilizar a nota cao padrao de produto tensorial para reescrever
a expressao acima:
1
2
n
2

1
k
1
=0
...

1
kn=0

n
l=1
e
2ijk
l
2
l
[k
l
) =
1
2
n
2

n
l=1
[

1
k
l
=0
e
2ijk
l
2
l
[k
l
)] =
1
2
n
2

n
l=1
[[0) + e
2ij2
l
[1)].
Escrevendo por extenso a expressao acima temos:
([0) + e
2i0.jn
[1))([0) + e
2i0.j
n1
jn
[1))...([0) + e
2i0.j
1
j
2
...jn
[1))
2
n
2
. (3.4)
Podemos implementar a transformada de Fourier quantica para qualquer
valor de N, mas quando N = 2
n
e mais facil construir o circuito. O circuito
da gura 3.1 e a implementa cao da TQF para o caso N = 2
n
, sua constru cao
e facilitada pela expressao (3.4).
Figura 3.1: Circuito para implementar a transformada de Fourier.
39
O circuito e constitudo de portas Hadamard e R
k
controlada. A a cao da
porta R
k
e representada pela seguinte matriz:
_
1 0
0 e
2i
2
k
_
.
Vericaremos se o circuito acima implementa a TQF: iniciaremos com
o estado [j) = [j
1
j
2
...j
n
). Aplicando a porta Hadamard ao primeiro q-bit
temos:
1

2
([0) + e
2i0.j
1
[1)) [j
2
j
3
...j
n
) .
Note que se j
1
= 0, e
2i0.j
1
= 1. No outro caso, e
2i0.j
1
= 1. Em seguida
aplicaremos a porta R
2
controlada pelo q-bit j
2
ao primeiro q-bit do estado
acima obtendo:
1

2
([0) + e
2i0.j
1
j
2
[1)) [j
2
j
3
...j
n
) .
Observe que ao primeiro q-bit ainda sera aplicada a seguinte sequencia de
portas controladas: R
3
, R
4
, ..., R
n
. Cada porta R
k
controlada multiplica
o q-bit [1) por e
2i
2
k
se j
k
= 1. Caso contrario, essa porta nao fara nada.
Podemos reescrever a a cao da porta R
k
controlada como sendo multiplicar
[1) por e
2i0.
..
0...0
k1
j
k
. Apos aplicar a sequencia de portas teremos o seguinte
estado:
1

2
([0) + e
2i0.j
1
j
2
...jn
[1)) [j
2
j
3
...j
n
) .
Agora analisaremos o segundo q-bit do circuito. Apos ele passar pela porta
Hadamard teremos:
1
2
2
2
([0) + e
2i0.j
1
j
2
...jn
[1))([0) + e
2i0.j
2
[1)) [j
3
...j
n
) .
Em seguida ele sofrera a a cao das portas R
k
controlada, com k variando de
2 ate n 1. Ao nal teremos o estado:
1
2
2
2
([0) + e
2i0.j
1
j
2
...jn
[1))([0) + e
2i0.j
2
j
3
...jn
[1)) [j
3
...j
n
) .
Continuando desta forma, chegaremos ao estado:
40
1
2
n
2
([0) + e
2i0.j
1
j
2
...jn
[1))([0) + e
2i0.j
2
j
3
...jn
[1))...([0) + e
2i0.jn
[1)).
Se o circuito implementasse a TQF, ao nal ele teria de retornar o estado
da expressao (3.4). O estado acima se parece com da expressao a menos
da ordem dos fatores. Para corrigir esse detalhe basta acrescentar algumas
portas swap (isto e, portas de troca) ao circuito, como no ilustrado na gura
3.2, para o caso quando n e impar,
Figura 3.2: Circuito da transformada de Fourier para n mpar.
Vamos fazer um exemplo da TQF e do seu circuito para o caso n = 3.
Logo, a TQF e um operador linear de C
8
em C
8
, e a matriz que o representa
na base [000), [001), [010), [011) , [100), [101) , [110) , [111) e:
1

8
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 1 1 1 1 1 1 1
1
2

7
1
2

6
1
2

6
1
3

6

4

5
1
4
1
4
1
4
1
4
1
5

4

6

3
1
6

2
1
6

2
1
7

_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
,
onde = e
2i
8
.
Aplicando a TQF as coordenadas do vetor [000) temos:
41
1

8
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 1 1 1 1 1 1 1
1
2

7
1
2

6
1
2

6
1
3

6

4

5
1
4
1
4
1
4
1
4
1
5

4

6

3
1
6

2
1
6

2
1
7

_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_

_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1
0
0
0
0
0
0
0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1

8
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1
1
1
1
1
1
1
1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
.
Escrevendo o vetor resultante acima em termos da base temos:
1

8
([000) +[001) +[010) +[011) +[100) +[110) +[101) +[111)) . (3.5)
O circuito abaixo e o que implementa a TQF em C
8
:
H R
2
R
3

H R
2

H

Agora, vamos calcular a TQF em [000) atraves do circuito:
[0)
H R
2
R
3

[0)
H R
2
[0)
H

[
1
) [
2
) [
3
) [
4
) [
5
) [
6
)
.
Temos a seguinte sequencia de estados:
[
1
) =
1

2
([0) +[1)) [00)
[
2
) = [
3
) = [
1
) , isto acontece porque o q-bit de contole das portas controladas e 0
[
4
) =
1
2
([0) +[1))([0) +[1)) [0)
[
5
) = [
4
)
[
6
) =
1

8
([0) +[1))([0) +[1))([0) +[1))
=
1

8
([000) +[001) +[010) +[011) +[100) +[110) +[101) +[111)).
42
Observe que ja temos o resultado da equa cao (3.5), neste caso, a porta de
troca atuara como a identidade.
Sabemos que a TQF e um isomorsmo linear, logo possui uma inversa,
a TQF

(transformada quantica de Fourier inversa). Vamos escrever qual e


a matriz da TQF

em uma base ortonormal. Como a TQF e unitaria, a


matriz da TQF

e igual a da TQF transposta e conjugada, como pode ser


vista abaixo,
_
_
_
_
_
_
_
_
_
1 1 1 1
1
2
. . .
N1
1
2

4
. . .
N2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
N1

N2

_
_
_
_
_
_
_
_
_
,
onde = e
2i
N
.
Logo a TQF

e uma transforma cao linear de C


N
em C
N
, que age nos
vetores escritos em uma base ortonormal da seguinte maneira:
N1

k=0
a
k
[k)
N1

j=0
b
j
[j) (3.6)
onde os b
j
=
1

N1
j=0
a
j
e
2ijk
N
. Essa transforma cao sera de grande im-
portancia quando formos discutir o algoritmo de Shor.
Para construir o circuito da TQF

devemos lembrar que ele tem que


desfazer a a cao da TQF. Logo, a primeira porta desse circuito tem que ser
a inversa da ultima porta que operou no circuito da TQF, isto e, a inversa
da porta swap, que e ela mesma. O mesmo ocorre para as portas seguintes
que sao swap. A proxima porta e a inversa da Hadamard, que tambem e a
propria. Em seguida teremos a inversa da R
2
controlada, que sera denotada
por R

2
. Procedendo desta forma temos o circuito da gura 3.3.
43
Figura 3.3: Circuito para implementar a transformada de Fourier inversa
3.1 Complexidade da Transformada Quantica
de Fourier
Na computa cao classica vimos alguns princpios que norteavam a conta-
gem da complexidade de um algoritmo. A ideia principal era contar como
os loops aumentavam com o tamanho da entrada. Na computa cao quantica
e mais conveniente relacionar a complexidade do algoritmo a quantidade de
portas do circuito que o implementa.
Denicao 10 A complexidade de um algoritmo quantico e o n umero de por-
tas de um e dois q-bits que o circuito possui.
Como a complexidade da TQF inuenciara na complexidade do algoritmo
de Shor, faremos sua analise. A complexidade da TQF

e da TQF sao iguais,


por isso, faremos somente a analise para a ultima. A complexidade da TQF
e dada pela quantidade de portas necessarias no circuito 3.1. Como vimos,
se o circuito age em n q-bits, na primeira linha temos n portas, na segunda
n1 portas, prosseguindo desta forma, diminuindo uma porta a cada vez que
passamos da linha j para a linha j+1, ate chegarmos a n-esima linha que tem
uma unica porta. Somando as portas temos n+(n1)+(n2)+. . .+2+1 =
n(n+1)
2
. Alem dessas portas, existem as portas swap, que sao no maximo
n
2
.
Cada porta swap e constituda de 3 portas CNOT. Logo, a quantidade de
portas sao:
n(n+1)
2
+ 3
n
2
que e O(n
2
). Portanto, a TQF e eciente.
44
Voce deve estar se perguntando porque e dada tanta import ancia a TQF.

E porque o melhor algoritmo classico que implementa a TFD e o da trans-


formada de Fourier rapida que e O(n2
n
) (para maiores detalhes veja [10]).
45
Captulo 4
Algoritmo de Shor
Neste captulo sera apresentado um algoritmo para encontrar a ordem
r de um n umero x Z

N
, conhecido como algoritmo de Shor. Daqui para
frente usaremos x para denotar os elementos de Z

N
, ou Z cando a distin cao
no contexto; so e bom lembrar que se x Z

N
estaremos sempre trabalhando
com o resto que se deixa na divisao por N. O algoritmo de Shor e importante
porque se soubermos calcular a ordem de x Z

N
conseguiremos fatorar N,
(este fato sera demonstrado no captulo 5). Antes de apresentar o algoritmo,
conheceremos um de seus constituintes, a transforma cao linear U : C
N

C
N
, denida em uma base ortonormal por:
U [k) = [xk mod N) . (4.1)
`
As vezes, denotaremos U por x. A transforma cao linear U sera uma das
portas quando implementarmos o algoritmo, logo temos que mostrar que ela
e uma transforma cao unitaria. Antes, iremos ver um lema que sera util para
essa demonstra cao.
Lema 3 Seja B um isomorsmo linear de C
m
C
m
. Se a acao de B em
uma base ortonormal for uma permutacao da mesma, entao B e unitaria.
DEMONSTRAC

AO: Seja [0) , . . . , [m1) uma base ortonormal para C
m
.
B[i) = [(i)) ,
46
onde (i) e uma permuta cao de i.
Pela algebra linear sabemos que um operador linear A e unitario se, e
somente se, [A[v) [ = 1, [v) tal que [ [v) [ = 1, para demonstra cao deste
fato veja [7].
Seja [s) um vetor unitario de C
m
, entao [s) =

m1
i=0

i
[i) e [ [s) [
2
=

m1
i=0

i
= 1. Calculando a norma de B[s), temos:
[B[s)[
2
= s[ B

B[s) =

ij

j
i[ B

B[j)
=

ij

j
(i) [ (j)) =

ij

ij
=
m1

i=0

i
= 1.
Portanto, B e unitaria.
Como x Z

N
existe y Z

N
tal que xy 1 mod N. Deniremos o
operador linear A : C
N
C
N
em uma base ortonormal, pela seguinte a cao:
A[k) = [yk mod N) .
Vericaremos que A e o operador inverso de U,
U(A[k)) = U [yk mod N) = [xyk mod N) = [k) = A(U [k)).
Desse modo, U e um isomorsmo de C
N
.
Seja [0) , . . . , [N 1) uma base ortonormal de C
N
. Veremos que os
vetores [xy
i
mod N), com y
i
0, . . . , N 1 sao uma permuta cao do
conjunto [y
i
mod N). Para vericar este fato, basta que xy
i
, xy
k
mod N
se i ,= k. Suponha que existam y
i
e y
j
tais que,
xy
i
xy
j
mod N.
Como x Z

N
, temos:
yxy
i
yxy
k
mod N
y
i
y
k
mod N.
47
Absurdo, pois o conjunto 0, . . . , N 1 e formado por elementos distintos.
Portanto, a a cao de U e apenas uma permuta cao da base inicial. Logo, pelo
lema 3, U e unitaria.
Para a constru cao do algoritmo e necessario sabermos implementar as
portas U
2
j
este problema sera resolvido no apendice. Daqui para frente
assumiremos que sabemos construir tais portas.
4.1 Algoritmo de Shor para uma ordem igual
a uma potencia de 2
Por simplicidade, primeiro descreveremos o algoritmo no caso mais facil,
para r = 2
s
, isto e, quando r pode ser expresso com exatamente s + 1 bits.
Nas proximas se coes sera apresentado o caso geral.
No circuito da gura 4.1, t = log
2
N
2
+1. O primeiro registrador possui
t q-bits todos no estado [0) e o segundo registrador e dado por

0...0
..
L1
1
_
= [1),
onde L = log
2
N + 1.
O circuito da gura 4.1 implementa o algoritmo. Vamos escrever quais
sao os estados apresentados neste circuito. O estado inicial e:
Figura 4.1: Circuito da busca de ordem.
48
[
0
) = [0...00)
. .
t
[1) .
Em seguida aplicamos as portas Hadamard aos t primeiros q-bits, produzindo
o estado:
[
1
) =
1

2
t
2
t
1

j=0
[j) [1) .
Aplicando a sequencia de portas x
2
j
controladas a [
1
), temos:
[
2
) =
1

2
t
2
t
1

j=0
[j)

x
j
_
. (4.2)
O estado acima possui na sua soma todas as potencias de x que vao de 0
ate 2
t
1. Nao e difcil notar que na soma acima estao presentes os termos,
[0) [1) , [r) [1) , [2r) [1) , ...,

_
2
t
r
1
_
r
_
[1) .
Observe que este resultado acontece porque a potencia modular de um n umero
e uma fun cao periodica de perodo r. Todos os estados da equa cao (4.2) estao
calculados, mas nao conseguimos acessa-los. Pois, para sabermos qual e o
estado temos que fazer uma medi cao. Porem, todos os estados sao equi-
provaveis com probabilidade igual a
1
2
t
. No momento, estamos no estagio
do algoritmo quantico em que temos a resposta, mas ainda nao zemos a
pergunta certa a ele. Utilizando o fato que x
j
e periodica vamos rearranjar
o estado [
2
) para facilitar os calculos,
[
2
) =
1
2
t
2
r1

b=0
_
_
_
2
t
r
1

a=0
[ar + b)
_
_
_

x
b
_
.
Na medi cao no segundo registrador, qualquer um dos estados [x
0
) , [x
1
) , ... [x
r1
)
pode ser obtido com igual probabilidade. Suponha que obtemos o resultado

x
b
1
_
. Neste caso o estado seguinte passa a ser:
[
3
) =
_
r
2
t
_
_
_
2
t
r
1

a=0
[ar + b
1
)
_
_
_

x
b
1
_
.
49
Note que se tivessemos obtido x
b
2
onde b
2
,= b
1
o estado do termo entre
parenteses teria o mesmo formato, isto e, [ar + b
2
), ele continuaria carregando
a informa cao que queremos r. Porem, ainda temos algumas informa coes que
atrapalham a nossa descoberta, como por exemplo, o valor de a que e uma
variavel e nao uma constante. Mas, esses problemas serao solucionados com
a aplica cao da TFQ

ao primeiro registrador, fazendo essa opera cao obtemos:


[
4
) =
_
r
2
t
_
_
_
2
t
r
1

a=0
1
2
t
2
2
t
1

k=0
e
2i(ar+b
1
)j
2
t
[j)
_
_
_

x
b
1
_
=
1

r
_
_
_
2
t
1

j=0
_

_
1
2
t
r
2
t
r
1

a=0
e
2ija
2
t
r
_

_
e
2ijb
1
2
t
[j)
_
_
_

x
b
1
_
.
Utilizando o fato de que o termo entre colchetes e a soma de uma p.g., como
na expressao (3.2) ele e diferente de zero se, e somente se, j =
k2
t
r
com
k = 0, 1..., r 1. Se j assume tais valores, a expressao entre colchetes e igual
a 1. E, o estado acima pode ser escrito como:
[
4
) =
1

r
_
r1

k=0
e
2i
k
r
b
1

k2
t
r
_
_

x
b
1
_
. (4.3)
Agora e so fazer uma medi cao na base computacional. Se o resultado for
[0), quando k = 0, nada poderemos dizer. Mas, se o resultado e

k2
t
r
_
, para
algum k > 0, dividimos por 2
t
, e temos duas possibilidades: mdc(k, r) = 1 ou
mdc(k, r) ,= 1. No primeiro caso, selecionamos o denominador e fazemos x
r

1 mod N, com isso temos a ordem desejada. No segundo, o denominador


sera um d que e um fator de r, quando zermos x
d
, 1 mod N, nesse caso o
algoritmo falha.
Vamos voltar um pouco ao estado [
2
) e analisar a medi cao feita no
segundo registrador. Se o resultado fosse x
b
, tal que b ,= b
1
teramos que o
estado [
4
) no circuito da gura 4.1 seria:
[
4
) =
1

r
_
r1

k=0
e
2i
k
r
b

k2
t
r
_
_

x
b
_
.
50
Observe que quando zermos uma medi cao no estado [
4
) no primeiro regis-
trador cada

k2
t
r
_
continua tendo probabilidade
1
r
de ser encontrado e teremos
os mesmos resultados independente do valor de b obtido. Quando zemos a
medi cao no segundo registrador nao utilizamos seu resultado diretamente.

E
como se tivessemos feito a medi cao e nao olhado o resultado. O fato de nao
sabermos qual foi o resultado nessa passagem nao interferiu no resultado da
medi cao posterior do primeiro registrador. Logo, esse passo da medi cao no
segundo registrador pode ser omitido. Sendo isto que iremos fazer no caso
geral, na se cao 4.2.
4.2 Caso Geral
O caso geral e mais complicado que o anterior nao so pela complexidade
das equa coes, mas tambem pelo metodo de extrair r da resposta retornada
pelo algoritmo, como cara claro mais na frente. O circuito da gura 4.2
implementa o algoritmo para o caso geral, nele o valor de t e log
2
N
2
+1 e
L = log
2
N + 1. O primeiro registrador possui t q-bits todos no estado [0)
e o segundo registrador e dado por

0...0
..
L1
1
_
= [1). A sequencia de estados
no circuito da gura 4.2 e,
[
0
) = [0) [1)
[
1
) =
1
2
t
2
2
t
1

j=0
[j) [1)
[
2
) =
1
2
t
2
2
t
1

j=0
[j)

x
j
_
[
3
) =
1
2
t
2
t
1

j,k
e
2ikj
2
t
[k)

x
j
_
[
4
) = [c) [
c
) ,
51
Figura 4.2: Circuito da busca de ordem no caso geral.
onde [c) [0) , [1) , . . . , [2
t1
) e [
c
) vem da decomposi cao de [
3
) com
respeito `a base computacional do primeiro registrador. O estado do primeiro
registrador apos a medi cao e o estado [c).
Para encontrarmos r com alta probabilidade, temos que fazer
c
2
t
, porem
2
t
> r. Precisamos encontrar uma maneira de obtermos r de
c
2
t
. Feliz-
mente, isto nao e difcil. O algoritmo de fra coes contnuas apresentado na
se cao 1.4 resolvera este problema. Para vermos isto, iremos calcular qual
a probabilidade de obtermos um resultado [c) apos a medi cao no primeiro
registrador. Come caremos calculando a probabilidade P(c, x
k
) de obtermos
um estado [c)

x
k
_
se zermos uma medi cao nos dois registradores na base
computacional. Essa probabilidade e dada por:
P(c, x
k
) =

1
q

j:x
j
x
k
e
2ijc
q

2
,
em que a soma e feita sobre todos os j tais que x
j
x
k
mod N, e q = 2
t
. A
ordem de x e r, logo j pode ser escrito como j = br + k e o somatorio pode
52
ser calculado da seguinte maneira:

1
q
q
r

b=0
e
2ic(br+k)
q

2
,
em que e o resto da divisao de q por r. Como o termo e
2ick
q
esta em todos
os termos do somatorio podemos fatora-lo. Alem disso, seu modulo e 1, logo
a expressao acima torna-se:

1
q
q
r

b=0
e
2ibrc
q

2
, (4.4)
Podemos utilizar o algoritmo da divisao de Euclides para dividirmos rc por
q, isto e, rc = fq +resto. Certamente o leitor esta familiarizado com o resto
como um elemento do conjunto 0, 1, . . . , q 1. Mas, nao precisa ser sempre
assim. Por exemplo, quando dividimos 29 por 6 podemos ter, 29 = 4.6 + 5
ou 29 = 5.6 1. Daqui para frente nesta se cao toda vez que tivermos l e m
e utilizarmos o algoritmo da divisao para escrever l = m n + p, se p >
m
2
iremos reescrever essa divisao como l = (n+1)m+p

, em que
m
2
< p

< 0. E
denotaremos p

por p

m
, lembrando que [p

m
[
m
2
. Logo, rc = fq+rc
q
,
em que [rc
q
[
q
2
. Pelo fato de e
2ifq
q
= e
2if
= 1 a expressao (4.4) e
igual `a:

1
q
q
r

b=0
e
2ib{rc}q
q

2
.
Sabemos que,
P(c, x
k
) =

1
q
_
_
1 +
q
r

b=1
e
2ib{rc}q
q
_
_

1
q
q
r

b=1
e
2ib{rc}q
q

1
q

2
. (4.5)
Analisaremos a seguinte expressao,

1
q
q
r

b=1
e
2ib{rc}q
q

, (4.6)
53
que e apenas o somatorio de uma p.g., logo (4.6) torna-se:

1
q
_
e
2i{rc}q
q
e
2i(+1){rc}q
q
1 e
2i{rc}q
q
_

1
q
e
2i{rc}q
q
_
1 e
2i{rc}q
q
_
1 e
2i{rc}q
q

1
q
_
1 e
2i{rc}q
q
1 e
2i{rc}q
q
_

,
nas equa coes acima =
q
r
, essa substitui cao foi feita apena para facilitar
a escrita.
Lema 4 Se [; ], entao

1 e
i


2||

.
DEMONSTRAC

AO: [1e
i
[ = [1cosisen[ =
_
(1 cos)
2
+ sen
2

_
1
2
=
[2(1 cos)]
1
2
. Da trigonometria sabemos que: 1 cos = 2sen
2
2
. Entao:
[1 e
i
[ = 2

sen

.
Vamos vericar qual das seguintes fun coes e a maior 2

sen

ou
2||

para
.
Como cada fun cao e par basta analisar no intervalo [0; ]. As duas fun coes
coincidem nos extremos e 2

sen

tem concavidade para baixo neste inter-


valo, logo [1 e
i
[ e a maior fun cao no intervalo em questao. O graco da
gura 4.3 ilustra a diferen ca das duas fun coes.
Pela demonstra cao do lema 4 temos que [1e
i
[ = 2

sen

, mas [senx[
[x[, entao:

1
1 e
2i{rc}q
q

=
1
2

1
sen
_
{rc}q
q
_

(4.7)

1
2{rc}q
q
. (4.8)
54
Figura 4.3: Ilustra cao da prova do Lema 4
Fa camos uma analise da expressao:

1 e
2i{rc}q
q

,
lembrando que =
q
r
e supondo [rc
q
[
r
2
temos que,

2rc
q
q
q
r

.
Pelo lema 4, conclumos que,

1 e
2i(q){rc}q
qr


4rc
q
q
q
r
. (4.9)
Pelas equa coes (4.8) e (4.9), chegamos `a:

1
q
q
r

b=1
e
2ib{rc}q
q

1
q
_
4{rc}q(q)
qr
2{rc}q
q
_
=
2(q )
qr
. (4.10)
Entao

1
q
q
r

b=1
e
2ib{rc}q
q

1
q

2
q
q
r

1
q

.
55
Pelo fato de t = log
2
N
2
+1 temos que N
2
< q 2N
2
. Portanto, r < N <
N
2
< q 2N
2
, para N grande obtemos,

2
q
q
r

1
q


1
r
.
Com esses calculos conclumos que:

1
q
_
_
1 +
q
r

b=1
e
2ib{rc}q
q
_
_

1
r
.
Portanto, se [rc
q
[
r
2
, temos
P(c, x
k
)
1

2
r
2
. (4.11)
Pela deni cao de rc
q
, sabemos que existe um d tal que, rc
q
= rcdq.
Alem disso, [rc
q
[
r
2
. Entao
r
2
rc dq
r
2
,
dividindo a equa cao por rq e rearranjando os termos temos,

c
q

d
r


1
2q
, (4.12)
como r < N e N
2
< q 2N
2
chegamos `a

c
q

d
r


1
2r
2
.
Portanto, pelo teorema 9,
d
r
e um dos convergentes de
c
q
=
c
2
t
. Lembre-
se que os convergentes retornados pelo algoritmo de fra coes contnuas sao
tais que mdc(p
i
, q
i
) = 1. Portanto, o algoritmo ira encontrar
d
r
apenas se
mdc(d, r) = 1. Caso contrario, o algoritmo ira retornar
d

, em que r

[r, nesse
caso o algoritmo falha. No caso em que mdc(d, r) = 1, usando o algoritmo de
fra coes contnuas podemos calcular os convergentes de
c
2
t
. Estamos interes-
sados nos convergentes
c
2
t
que tenham denominador menor que N. Quando
encontrarmos esses convergentes basta selecionarmos os denominadores a
i
menores do que N e calcularmos x
a
i
mod N e ver qual desses n umeros
deixa resto 1 na divisao por N.
56
Ate o momento temos que, se [rc
q
[
r
2
, P(c, x
k
)
1

2
r
2
, mas o que
queremos e a probabilidade de encontrarmos [c). Como existem r valores
para x
k
mod N, temos que P(c)
1

2
r
. Visto que o algoritmo `as vezes falha,
tentaremos encontrar uma cota inferior para a probabilidade dele retornar
a resposta correta, isto e, r. Denotaremos essa probabilidade por P(r). O
lema abaixo nos auxiliara a encontrar uma cota inferior para P(r).
Lema 5 No conjunto 0, 1, 2, . . . , q 1 existem r elementos distintos satis-
fazendo [rc
q
[
r
2
.
DEMONSTRAC

AO: Como (r 1)q < (q 1)r existem r m ultiplos de q
no intervalo 0, 1, . . . , (q 1)r, eles podem ser escritos como iq para i =
0, 1, . . . , r 1. Usaremos o algoritmo da divisao de Euclides para divid-los
por r, isto e,
iq = c
i
r +iq
r
, (4.13)
lembre-se que [iq[
r

r
2
. A equa cao (4.13) determina r m ultiplos de r,
sendo eles c
i
r. Utilizaremos o algoritmo da divisao de Euclides para divid-
los por q, c
i
r = iq +c
i
r
q
. Comparando esta equa cao com a equa cao (4.13)
conclumos que [c
i
r
q
[ = [iq
r
[
r
2
. Portanto, temos r m ultiplos de r no
conjunto 0, 1, . . . , (q 1)r tais que [rc
i

q
[
r
2
. Com isto, conclumos
que existem r valores distintos de c
i
no conjunto 0, 1, . . . , q 1 tais que
[rc
i

q
[
r
2
.
Da demonstra cao do lema 5 segue que como todos os valores de i em
0, 1, . . . , r 1 sao assumidos, na desigualdade (4.12) d assumira todos os
valores de 0, 1, . . . , r 1. Portanto, existem r valores de c em 0, 1, . . . , q
1 tais que [rc
q
[
r
2
e desses r c

s existem (r) deles que quando fazemos


rc = dq +rc
q
, mdc(r, d) = 1.
A probabilidade de encontrarmos r e dada por,
P(r) =
q1

c=0
P(r[c).P(c).
Como queremos uma cota inferior iremos fazer a soma acima apenas para os
c

s que satisfazem as duas condi coes seguintes simultaneamente [rc


i

q
[
r
2
57
e mdc(r, d) = 1. Sabemos que se c satisfaz [rc
i

q
[
r
2
, P(c)
1

2
r
. Existem
(r) valores de c que satisfaz simultaneamente [rc
i

q
[
r
2
e mdc(r, d) = 1,
se encontramos um c que satisfaz essas duas condi coes, obtemos r. Logo,
P(r)
q

c:|{rc
i
}q|
r
2
e mdc(r,d)=1
P(r[c).P(c)

c:|{rc
i
}q|
r
2
mdc(r,d)=1
1

2
r
=
(r)

2
r
.
Mas,
(r)
r

a
log log r
, onde a e uma constante, para demonstra cao deste fato
veja [5]. Temos que
a
log log r
>
a
log log N
. Portanto,
P(r)
a

2
log log N
. (4.14)
Como o leitor percebeu o algoritmo de Shor e um algoritmo probabilstico.
Nem sempre ele retorna a resposta desejada, existe apenas uma probabili-
dade da resposta ser a correta. Esse tipo de algoritmo e diferente do tipo
apresentado no captulo 1. La, o algoritmo era um metodo pratico para
resolver uma tarefa e ele sempre realizava o trabalho pretendido. Quando
isso acontece dizemos que o algoritmo e determinstico. Voce deve estar com
a impressao que os algoritmos determinsticos sao melhores que os proba-
bilsticos, visto que eles sempre retornam a resposta correta. Mas, essa nao
e bem a verdade. Pois, `as vezes, existem algoritmos determinsticos para
realizar uma determinada tarefa, porem eles nao sao ecientes. Por exemplo,
o algoritmo para fatorar n umeros. Existem algoritmos determinsticos para
fatorar n umeros inteiros, entretanto eles nao sao ecientes. Este e um caso
que se existir um probabilstico eciente ja seria muito bom. No proximo
captulo veremos um algoritmo probabilstico para a fatora cao de n umeros
inteiros. Com rela cao a eciencia dos algoritmos probabilsticos diremos que
ele e eciente se a probabilidade de sucesso for limitada inferiormente por
uma fun cao que e inversa de um polinomio. Portanto, pela equa cao (4.14) o
algoritmo de Shor e eciente.
58
Analisaremos a complexidade do algoritmo de Shor. O circuito da gura
4.2 e constitudo de t portas Hadamard, mas t 2L+1, portanto essa etapa
e O(L). As portas x
2
j
sao de complexidade menor ou igual a O(L
3
), pois a
complexidade dessas portas e determinada pelo algoritmo de exponencia cao
modular, que pelo apendice e O(L
3
). A transformada quantica de Fourier
inversa, pelo captulo 3, e O(L
2
). Alem disso, temos o algoritmo de fra coes
contnuas que e O(L
3
). Com isso, temos que a complexidade do algoritmo e
O(L
3
), o que nos diz que esse algoritmo e eciente, desde que utilizado em
um computador quantico.
4.3 Exemplo
Faremos um exemplo para que possamos acompanhar mais facilmente o
que esta acontecendo em cada passagem. Suponha que o nosso desao seja
encontrar a ordem do elemento 2 em Z

21
. Como t = log
2
21
2
+1 o seu valor
sera 9. Portanto a quantidade de q-bits do primeiro registrador sera 9, todos
inicializados no estado [0). O estado do segundo registrador e [1) = [00001).
A porta U : C
2
5
C
2
5
e descrita por U([y)) = [2y mod 21). O circuito da
gura 4.4 implementa a busca de ordem para este caso.
Descreveremos quais sao os estados [
i
), 0 i 4 no circuito da gura
4.4.
[
0
) = [00 . . . 0)
. .
9
[1)
[
1
) =
1

512
511

j=0
[j) [1) .
59
Figura 4.4: Exemplo do circuito da busca de ordem.
Apos a atua cao das portas controladas temos:
[
2
) =
1

512

511
j=0
[j) [2
j
mod 21) =
1

512
_
_
_
_
_
_
_
_
_
[0) [1) + [1) [2) +[2) [4) +[3) [8) +[4) [16) +[5) [11) +
[6) [1) + [7) [2) +[8) [4) +[9) [8) +[10) [16) +[11) [11) +
[12) [1) +[13) [2) +[14) [4) +[15) [8) +[16) [16) +[17) [11) +
...
[510) [1) +[511) [2)
_
_
_
_
_
_
_
_
_
.
Os termos do segundo registrador de cada coluna podem ser agrupados.
Deste modo, podemos reescrever os estados acima como:
=
1

512
_
_
_
_
_
_
_
_
_
_
_
_
([0) +[6) +[12) +[18) +[24) + . . . +[510)) [1) +
([1) +[7) +[13) +[19) +[25) + . . . +[511)) [2) +
([2) +[8) +[14) +[20) +[26) + . . . +[506)) [4) +
([3) +[9) +[15) +[21) +[27) + . . . +[507)) [8) +
([4) +[10) +[16) +[22) +[28) + . . . +[508)) [16) +
([5) +[11) +[17) +[23) +[29) + . . . +[509)) [11)
_
_
_
_
_
_
_
_
_
_
_
_
.
Ao fazermos uma medi cao no segundo q-bit, temos probabilidade
1
6
de
encontrar quaisquer um dos seguintes estados: [1) , [2) , [4) , [8) , [16) , [11) .
60
Suponha que o resultado da medi cao seja [2) . Logo,
[
3
) =
1

86
([1)+[7)+[13)+[19)+[25)+. . .+[511)) [2) =
1

86
85

a=0
[6a + 1) [2) .
O estado [
3
) foi renormalizado. Iremos aplicar a transformada de Fourier
inversa ao primeiro estado, obtendo:
[
4
) =
1

512
1

86
511

j=0
__
85

a=0
e
2ij(6a+1)
512
_
[j)
_
[2)
[
4
) =
1

512
1

86
511

j=0
__
85

a=0
e
2i6ja
512
_
e
2ij
512
[j)
_
[2) .
Agora, analisaremos a probabilidade de encontrar um dado estado [j) .
P(j) =
1
512 86

85

a=0
e
2i6ja
512

2
=
1
512 86

1 e
2ij686
512
1 e
2i6j
512

2
=
1
512 86
1 cos
863j
128
1 cos
3j
128
.
Pelo graco da gura 4.5, podemos perceber que os maximos globais da
fun cao encontram-se em torno dos seguintes valores
512k
6
, com 0 k 5.
Os quais, possuem o valor de r que estamos procurando no denominador
da fra cao. A primeira coisa a se fazer e uma medi cao na base canonica.
Suponha que o algoritmo retorne j = 85, dividindo o resultado por 512,
temos
85
512
. Ainda nao temos 6 no denominador, mas o algoritmo de fra c oes
contnuas apresentado em 1.4 resolvera nosso problema, pois ele computa
os convergentes de
85
512
, estamos interessados nos convergentes que possuem
o denominador menor que 21. Fazendo os calculos para encontrar a fra cao
contnua de
85
512
, temos:
85
512
=
1
512
85
=
1
6 +
2
85
=
1
6 +
1
42+
1
2
61
Figura 4.5: Graco da probabilidade de encontrar um estado j.
Logo, os convergentes sao:
1
6
,
42
253
e
85
512
. O de nosso interesse e
1
6
. Selecionando
o denominador e calculando 2
6
1 mod 21, encontramos o valor de r.
Portanto, o algoritmo retornou o resultado procurado. Mas, nem sempre
e assim. Se o algoritmo tivesse retornado j = 0, isso nao nos acrescentaria
nada. Caso, o resultado encontrado fosse j = 171, teramos
171
512
. Aplicando
o algoritmo de fra coes contnuas, encontramos os convergentes
1
2
,
1
3
e
171
512
.
Calculando 2
2
4 mod 21 e 2
3
8 mod 21, infelizmente, nao encontramos
a ordem do 2, e sim 2 e 3 que sao fatores da ordem, esse e o caso no qual
o algoritmo falha. Se o resultado retornado for j = 256 teremos
256
512
=
1
2
.
Novamente o algoritmo falha pois, o valor retornado e um fator da ordem.
62
Captulo 5
Fatora cao de um N umero e sua
Ordem
O intuito deste captulo e mostrar que se conseguirmos resolver eciente-
mente em um computador o problema de encontrar a ordem de um elemento
x Z

N
automaticamente conseguiremos fatorar o n umero N.
Se um n umero a e m ultiplo de b podemos escrever a = b q ou equivalen-
temente expressar esse fato como b[a, que se le b divide a. Caso contrario,
falamos que b nao divide a.
Apresentaremos alguns teoremas que, junto com o algoritmo da busca
de ordem, nos possibilitarao construir um algoritmo quantico eciente para
fatorar um n umero inteiro positivo N.
Teorema 10 Seja N um n umero composto com L bits, e x uma solu cao da
congruencia x
2
1 mod N no intervalo 1 < x < N 1. Entao, um
desses n umeros mdc(x 1, N) e mdc(x + 1, N) e um fator nao-trivial de N
que pode ser calculado com O(L
3
) operacoes.
DEMONSTRAC

AO: x
2
1 mod N N[(x
2
1), entao N[(x+1)(x1).
Logo, N tem um fator em comum com (x + 1) ou (x 1). Como 1 < x <
N 1 esse fator e diferente de N. O algoritmo de Euclides apresentado no
captulo 1 nos permite calcular tal fator, obtendo um fator nao-trivial de N,
usando O(L
3
) opera coes.
63
Teorema 11 Seja r a ordem de x em Z

N
, se existir um tal que x

1
mod N entao r[.
DEMONSTRAC

AO: Suponha que r nao seja um fator de . Pelo teorema
de Euclides = rq + r
1
, onde r
1
, q sao unicos e r > r
1
. Entao,
x

= x
rq+r
1
= x
rq
x
r
1
x
r
1
mod N.
Mas, x

1 x
r
1
mod N. Absurdo, pois encontramos r
1
< r tal que
x
r
1
1 mod N.
Corolario 2 Se x Z

n
, entao a ordem r de x divide (n).
DEMONSTRAC

AO: Segue do lema acima e do teorema 2.
Neste captulo algumas vezes iremos nos referir `a ordem r de um elemento
x Z

N
, por ord
N
x.
Denicao 11 Se ord
N
x = (N) dizemos que x e uma raiz primitiva modulo
N.
Proposicao 1 Se p e um n umero primo e a Z e uma raiz primitiva modulo
p, entao a ou a + p e uma raiz primitiva modulo p
2
.
DEMONSTRAC

AO: a + p a mod p, portanto ord
p
a = ord
p
(a + p) =
(p) = p 1. Sabemos que a
ord
p
2
a
1 mod p
2
, entao a
ord
p
2
a
1 mod p,
pelo teorema 11
p 1[ord
p
2a. (5.1)
Pelo teorema de Euler a
(p
2
)
1 mod p
2
, logo
ord
p
2a[(p
2
) = p(p 1). (5.2)
Por (5.1) e (5.2) ord
p
2a = p1 ou ord
p
2a = p(p1) = (p
2
). Analogamente,
ord
p
2(a + p) = p 1 ou ord
p
2(a + p) = p(p 1) = (p
2
).
Com isso, so nos resta mostrar que ord
p
2a ,= p1 ou ord
p
2(a+p) ,= p1.
Suponha que ord
p
2a = p 1. Portanto, a
p1
1 mod p
2
. Com isso,
64
(a + p)
p1
= a
p1
+
_
p 1
1
_
a
p2
p +
_
p 1
2
_
a
p3
p
2
+ . . .
1 pa
p2
mod p
2
.
Devido ao fato que p
2
nao divide pa
p2
, temos que (a + p)
p1
,1 mod p
2
.
Portanto, ord
p
2(a + p) = (p
2
).
Teorema 12 Se p e um n umero primo mpar e a e uma raiz primitiva
modulo p
2
, entao a e uma raiz primitiva modulo p
k
k N.
DEMONSTRAC

AO: Sabemos que a
p1
1 mod p e a
p1
, 1 mod p
2
, pois
a e raiz primitiva. Disso, segue que a
p1
= 1 + b
1
p, onde p nao divide b
1
.
Mostraremos por indu cao que a
p
k1
(p1)
= 1+b
k
p
k
e p nao divide b
k
, k 1.
Para k = 1 ja sabemos ser verdade. Suponhamos que a
p
k1
(p1)
= 1 + b
k
p
k
seja verdade. Entao,
a
p
k
(p1)
=
_
a
p
k1
(p1)
_
p
= (1 +b
k
p
k
)
p
= 1 +
_
p
1
_
b
k
p
k
+
_
p
2
_
b
2
k
p
2k
+ . . .
= 1 +p
k+1
(b
k
+ pt),
para algum t N. Logo, b
k+1
= b
k
+pt, p nao divide b
k+1
, pois por hipotese
p nao divide b
k
.
Usando o princpio de indu cao provaremos que a e raiz primitiva modulo
p
k
, k 2. Para k = 2 e verdadeiro por hipotese. Suponha que a seja raiz
primitiva modulo p
k
.
a
ord
p
k+1
a
1 mod p
k+1
(5.3)
a
ord
p
k+1
a
1 mod p
k
. (5.4)
Logo: (p
k
) = ord
p
ka[ord
p
k+1a. Mas, pelo teorema de Euler temos que
ord
p
k+1a[(p
k+1
) = p
k
(p 1). Assim, chegamos `a:
p
k1
(p 1)[ord
p
k+1a[p
k
(p 1).
65
Portanto, ord
p
k+1a = p
k1
(p 1) ou ord
p
k+1a = p
k
(p 1) = (p
k+1
). Porem,
a
p
k1
(p1)
= 1+b
k
p
k
, sendo que p nao divide b
k
. Entao ord
p
k+1a = (p
k+1
).
Corolario 3 Seja p um n umero primo mpar e um inteiro positivo. Re-
sulta que Z

p
e cclico.
DEMONSTRAC

AO: Sabemos que a ordem de Z

p
como grupo e (p

). Pela
proposi cao 1 e pelo teorema 12 existe a Z

p
tal que a
(p

)
1 mod p

.
Portanto, a e um gerador de Z

p
, sendo Z

p
um grupo cclico.
Lema 6 Seja p um n umero primo mpar. Seja 2
d
a maior potencia de 2 que
divide (p

). Temos que, com probabilidade exatamente igual a


1
2
, 2
d
dividir a
a ordem de um elemento x de Z

p
escolhido uniformemente.
DEMONSTRAC

AO: Temos que (p

) = p
1
(p 1) e par, pois p e mpar,
logo d 1. Existe um gerador g para Z

p
, tal que qualquer elemento pode
ser escrito como g
k
( mod p

) para 1 k (p

). Seja r a ordem de g
k
mod p

, existem dois possveis casos: k e par ou k e mpar.


1) Se k e mpar g
kr
1( mod p

), deduzimos que (p

)[kr, pois (p

) e a
ordem de g em Z

p
. Assim 2
d
[r, se k e mpar.
2) Se k e par
g
k(p

)/2

_
g
(p

)
_
k/2
1
k/2
1( mod p

)
(g
k
)
(p

)/2
1 mod p

,
como r e a ordem de g
k
, temos:
r[
(p

)
2
2
d
nao divide r.
Assim Z

p
pode ser escrito como a uniao de dois conjuntos disjuntos e de
mesmo tamanho.
A =
_
g
k
tal que k e mpar = g
k
tal que 2
d
[r
_
e
B =
_
g
k
tal que k e par = g
k
tal que 2
d
nao divide r
_
66
Assim com probabilidade
1
2
, 2
d
[r quando r e escolhido uniformemente em
Z

p
.
O proximo teorema e importante porque ele fala sobre a existencia de
solu cao para um sistema de equa coes modulares.
Teorema 13 Teorema Chines do Resto. [2] Sejam m e n inteiros po-
sitivos, primos entre si. O sistema
x a(mod m)
x b(mod n)
sempre tem uma unica solu cao em Z
mn
.
Corolario 4 Sejam m
1
, . . . , m
j
n umeros naturais, dois a dois primos entre
si. O sistema:
x a
1
mod m
1
x a
2
mod m
2
.
.
.
x a
j
mod m
j
,
sempre tem uma unica solu cao em Z
m
1
...m
j
.
Teorema 14 Seja N N

mpar, composto e p
1

1
. . . p
m
m
a sua fatoracao.
Seja x um n umero de Z

N
escolhido aleatoriamente e uniformemente, sendo
r a ordem de x. Ent ao, P(r e par e x
r
2
, 1 mod N) 1
1
2
m1
.
DEMONSTRAC

AO: Vamos mostrar que P(r e mpar ou x
r/2
1 mod N)
1
2
m1
. Para cada conjunto de x
j
Z

p
j

j
escolhido de maneira aleatoria, uni-
forme e com os j dois a dois distintos o corolario 4 nos da um unico x Z

N
aleatorio. Podemos ao inves de escolher o elemento x, escolher os elementos
x
j
em Z

j
j
e trabalhar com o x associado `a cole cao x
j
. Lembre-se que x
satisfaz x x
j
mod p

j
j
. Seja r
j
a ordem de x
j
em Z

p
j

j
. Seja 2
d
j
a maior
potencia de 2 que divide r
j
e 2
d
a maior potencia de 2 que divide r, em que
67
r e a ordem de x em Z

N
. Mostraremos que para se ter r mpar ou x
r/2
1
e necessario que d
j
tome o mesmo valor para todos os valores de j. Sabe-
mos que x
r
x
r
j
mod p

j
j
, mas x
r
1 mod N, entao, x
r
1 mod p

j
j
.
Logo, x
r
j
1 mod p

j
j
. Com isso, temos que r
j
[r j. Se r e mpar, como
r
j
[r, conclumos que r
j
e mpar. Portanto, d
j
= 0, j = 1, ..., m. Se r e
par e x
r/2
1 mod N, temos que x
r/2
1 mod p

j
j
, como x
r/2
x
r/2
j
mod p
j
, logo x
r/2
j
1 mod p
j
. Portanto, r
j
nao divide
r
2
. Pelo fato que
r
j
[r conclumos que d
j
= d j. No caso de r ser mpar temos que r
j
tem que
ser mpar j = 1, ..., m. Mas, pelo lema 6, a probabilidade deste evento e
1
2
m
. No caso de r ser par e x
r/2
1 mod N todos os d
j
tem que ser iguais,
alem disso, todos os r
j
tem que ser par. A probabilidade de todos r
j
serem
par e
1
2
m
. Logo,
P(r ser par e x
r/2
1 mod N) <
1
2
m
.
Portanto, P(r ser mpar ou x
r/2
1 mod N)
1
2
m1
.
Pela demonstra cao do teorema 14 sabemos que para a ordem r de um
dado x Z

N
ser par e x
r
2
1 mod N todos os d
j
tem que ser iguais.
Logo, em todo Z

N
existem x tais que a ordem satisfaz r e par e x
r
2
, 1
mod N. Para isto basta escolhermos alguns x
j
tais que r
j
seja mpar e outros
tais que r
j
seja par.
Os passos abaixo nos dao um algoritmo probabilstico eciente para en-
contrar um fator de N, esse algoritmo e uma aplica cao do algoritmo de Shor:
Etapa 1: Se N e par, retorne o fator 2, caso contrario fa ca a Etapa 2.
Etapa 2- Use o algoritmo apresentado na se cao 1.3 para determinar se
N = a
b
para inteiros a 1 e b 2 e se for o caso retorne o fator a, caso
contrario passe a Etapa 3.
Etapa 3- Escolha uniformemente x no intervalo de 1 a N1. Se mdc(x, N) >
1, retorne-o, caso contrario fa ca a etapa 4.
Etapa 4- Use o algoritmo de Shor para encontrar a ordemr de x mod N.
Etapa 5- Se r for par e x
r
2
, 1 mod N, calcule mdc(x
r
2
1, N) e
mdc(x
r
2
+1, N). Verique qual deles e um fator nao trivial e retorne-o. Caso
contrario o algoritmo falha.
68
Analisaremos a complexidade desse algoritmo. A etapa 1 e O(1), pois e
um comando de leitura. O algoritmo vai ler o ultimo dgito e ver se ele e 0
ou 1. A etapa 2 pela se cao 1.3 e O(L
4
). As etapas 3 e 4 pelas se coes 1.3,
4.2, respectivamente sao O(L
3
). A etapa 5, realiza 3 comandos, o primeiro e
de leitura, sendo O(1). O segundo e calcular uma exponencial modular que
e O(L
3
) e por ultimo calcular o maximo divisor comum que e O(L
3
). Nesse
caso a complexidade desse loop e a do comando de maior complexidade sendo
O(L
3
). A complexidade do algoritmo e o da etapa de maior complexidade,
portanto, O(L
4
).
O algoritmo acima e eciente, todas as suas etapas podem ser rodadas
em um computador classico, exceto a etapa 4 que e o algoritmo de Shor,
pois essa etapa e um algoritmo quantico. No momento, `as vezes, nao damos
a esse algoritmo o status que ele merece porque os computadores quanticos
existentes sao de pequeno porte. Mas, com a evolu cao dos computadores
quanticos quando eles forem capazes de trabalhar com o mesmo tamanho de
n umeros que os computadores classicos atuais trabalham poderemos ver a
sua importancia real e ele deixara de ser apenas um algoritmo teorico.
A etapa 4 encontra com alta probabilidade a ordem de um elemento
x Z

N
escolhido uniformemente. Na Etapa 5, o teorema 14 garante que r e
par e x
r
2
, 1 mod N com probabilidade maior que
1
2
. Se isso acontece,
o teorema 10 garante que temos um fator nao-trivial de N. Se r nao satisfaz
as hipoteses do teorema 14 o algoritmo falha. Mas, se isso ocorrer temos
a possibilidade de rodar o algoritmo novamente, quantas vezes precisarmos
ate que ele encontre um x na Etapa 3 que satisfa ca o teorema 14. Pelo
comentario apos o teorema 14 sabemos que sempre existe x que satisfaz a
etapa 5.
Faremos um exemplo para ver como funciona. Usaremos o algoritmo para
fatorar o 21. O primeiro passo e ver se 21 e par, para isso basta escrever 21
na base 2 e olharmos se o ultimo dgito e 0. Ja sabemos que 21 nao e par.
Entao, passaremos `a proxima etapa, utilizaremos o algoritmo da se cao 1.3
para vericar se 21 e da forma a
b
. Sabemos que isso nao acontece. Logo,
69
iremos para a etapa 3, escolher um x aleatorio em [1; 20]. Suponha que o
x escolhido seja o 2. Calculando mdc(2, 21) = 1, passaremos ao algoritmo
de Shor, para encontrar a ordem de 2. Pela se cao 4.3, sabemos que r e 6.
Neste caso, r e par e 2
r
2
= 2
3
8 , 1 mod 21. Portanto, o r encontrado
satisfaz as hipoteses da etapa 5. Calculando mdc(2
3
1, 21) =mdc(7, 21) = 7
e mdc(2
3
+ 1, 21) = 3. Aqui os dois resultados sao fatores de 21. Isso, nao
ocorre sempre, mas basta obtermos um dos fatores.
O exemplo para fatorar 21 pode ter parecido sem muitos atrativos, pois
basta sabermos a tabuada para fatora-lo. Por isso, faremos um outro exem-
plo, menos trivial. Iremos fatorar 1927, voce ainda pode estar achando que
encontrar os fatores primos desse n umero e uma tarefa facil, portanto nao
precisaramos de um algoritmo quantico. Nao escolhemos n umeros maiores,
pois as contas a mao come cam a tornar-se impraticaveis. Utilizando o al-
goritmo para encontrar fatores, primeiro vericaremos se 1927 e par, como
a resposta e nao, faremos a etapa 2, determinar se existem a 1 e b 2
tais que 1927 = a
b
, novamente a resposta e nao. O proximo passo e esco-
lher x [1, N 1], digamos que a escolha foi 4. Como mdc(1927, 4) = 1,
temos que fazer a proxima etapa, que e a parte quantica do algoritmo. O
circuito da gura 5.1 descreve os passos para descobrirmos a ordem do ele-
mento 4 Z

1927
. A quantidade de q-bits no primeiro registrador iniciados no
estado [0) e t = log
2
1927
2
+ 1 = 22 e a quantidade de q-bits do segundo
registrador e L = log
2
1927 + 1 = 11.
Os estados descritos no circuito da gura 5.1 sao:
[
0
) = [0 . . . 0)
. .
22
[1) ,
[
1
) =
1
2
11
2
22
1

j=0
[j) [1) ,
[
2
) =
1
2
11
2
22
1

j=0
[j)

4
j
_
,
70
Figura 5.1: Circuito para calcular a ordem do elemento 4.
aplicando a transformada de Fourier inversa temos,
1
2
22

k,j
e
2ijk
2
22
[k)

4
j
_
.
Ao realizarmos a medi cao no primeiro registrador, suponha que obtemos
k = 18236. Fazendo
18236
4194304
e aplicando o algoritmo de fra coes contnuas,
obtemos,
18236
4194304
=
1
230 +
4024
18236
.
Deveramos continuar e calcular todos os convergentes, pois na pratica e isto
que o computador faria. Depois ele iria selecionar os denominadores para
testar se algum deles e a ordem. Nao calcularemos todos os convergentes,
pois sera um trabalho in util ja que 4
230
1 mod 1927. Passando `a etapa
5, temos que vericar qual e a solu cao de 4
115
y mod 1927. Calculando
temos, 4
115
1270 mod 1927, portanto 4
115
, 1 mod 1927. Agora e
so encontrar mdc(1270 + 1, 1927) = 1 e mdc(1270 1, 1927) = 47. Logo,
encontramos um fator de 1927 para obter outro basta dividir 1927 por 47
obtendo 41. Neste caso, como 1927 = 41 47, 41 e 47 sao primos temos a
fatora cao de 1927.
O algoritmo apresentado para encontrar um fator de N pode ser modi-
71
cado para retornar a fatora cao completa de N. Neste trabalho nao sera feito
isto, porque a curiosidade que nos moveu para estudar o algoritmo de Shor
foi ver que sempre e possvel encontrar um fator de um n umero natural com-
posto N. Pois, na criptograa RSA N e o produto de dois n umeros primos,
basta encontrarmos um fator de N para conseguirmos fatora-lo completa-
mente. Fatorando N conseguimos quebrar o protocolo de seguran ca deste
metodo criptograco. Caso o leitor tenha cado curioso para descobrir como
e feita a criptograa RSA basta ver [2].
72
Apendice A
Algoritmo quantico para
calcular x
j
y mod N
No captulo 4 quando apresentamos o algoritmo da busca de ordem, vimos
que era necessario calcular x
j
y mod N para 0 j 2
t
1. No momento
nosso objetivo e apresentar um algoritmo que realiza essas opera coes e cal-
cular o seu custo computacional. A a cao da porta x
j
pode ser vista como:
[j) [y) [j)

x
j
y mod N
_
= [j)

x
(jt2
t1
+...+j
1
2
0
)
y mod N
_
= [j)

x
jt2
t1
. . . x
j
1
2
0
y mod N
_
.
O algoritmo pode ser descrito como:
Etapa 1: calcular x
2
mod N a partir de x mod N, depois obter x
4
mod N, ate x
2
t1
mod N.
Etapa 2: calcular z =
_
x
jt2
t1
mod N
_
. . . (x
j
1
2
0
mod N).
Etapa 3: fazer z y mod N.
A Etapa 1 faz t 1 opera coes de quadramento, como t 2L + 1, e cada
opera cao de elevar ao quadrado custa O(L
2
), essa etapa e O(L
3
). Na Etapa
2 temos t 1 multiplica coes modulares custando O(L
2
), logo essa etapa e
O(L
3
). A Etapa 3 possui apenas uma multiplica cao que custa O(L
2
). O custo
do algoritmo e o da etapa mais cara, sendo O(L
3
).
73
Alem do algoritmo ser eciente, temos que ter uma maneira de imple-
menta-lo em um computador quantico. Essa preocupa cao deve-se ao fato
que no computador quantico todas as opera coes sao reversveis, enquanto na
computa cao classica existem opera coes irreversveis. Como veremos isso nao
sera um problema, a solu cao vira do seguinte fato: todo algoritmo classico
possui um circuito classico que o implementa e e possvel constru-lo utili-
zando apenas portas NOT e AND.
A NOT e uma porta de um bit, sua a cao e negar a entrada, podemos
descreve-la como:
0 1
1 0.
Claramente a porta NOT e reversvel. Na computa cao quantica a matriz X =
_
0 1
1 0
_
atuando nos vetores da base de C
2
produz a a cao da porta NOT
classica. Como X e unitaria ela pode ser implementada em um computador
quantico. A porta X e conhecida como o NOT quantico.
A porta AND possui dois bits de entrada e um de sada. Sua a cao e dada
por:
00 0
01 0
10 0
11 1.
Essa porta e irreversvel pois se a sada e 0, nao sabemos se a entada e 00,
01, 10. Temos que ter uma maneira de implementar a a cao da porta AND de
uma forma reversvel. Esse problema sera solucionado com a porta Tooli,
que pode ser pensada como uma CNOT, usando dois bits de controle no
lugar de um. O circuito (A.1) e o da porta Tooli.
[a) [a)
[b) [b)
[c)
_
[a b + c mod 2)
.
(A.1)
74
Essa porta realiza a seguinte tarefa: o valor do bit inferior e invertido se a
e b valem 1. Caso contrario, nada acontece. Sua a cao nos estados da base
computacional e dada por:
000 000 001 001
010 010 011 011
100 100 101 101
110 111 111 110
.
Se c = 0 temos:
000 000 010 010
100 100 110 111
.
Observe que o q-bit [c) retorna os valores da tabela verdade da porta AND.
Porem existem os dois primeiros q-bits, nao podemos apag a-los porque sao
eles que garantem a reversibilidade. Eles serao considerados o lixo da com-
puta cao. Se existe um circuito classico que calcula uma fun cao f(x). Agora
podemos implementa-lo em um computador quantico, basta substituir as
portas AND pela porta Tooli com c = 0. O unico problema e que nessas
mudan cas na entrada teremos alguns q-bits extras chamados de q-bits au-
xiliares e na sada teremos o lixo. Os q-bits auxiliares podemos supor que
eles estao no estado predenido [0) . E sempre que necessario usamos a porta
NOT para mudar seu estado. Descreveremos a a cao do circuito como:
(x, 0) (f(x), g(x)),
onde g(x) e o lixo no nal da computa cao. Se o lixo depender de x pode
ser que quando zermos uma medi cao para descobrir qual o valor de f(x)
ele interra. Por isso, precisamos que ele esteja em um estado bem denido.
Mostraremos que e possvel deixar o lixo no estado [0). Para isso, aumen-
taremos um registro no circuito. A quantidade de q-bits nesse registro e a
mesma necessaria para armazenar f(x). Esses q-bits no incio estarao todos
no estado [0), denotaremos esse registro extra por 0.
Assim, a entrada no circuito passa a ser descrita por (x, 0, 0), a necessi-
dade desse espa co extra sera explicado posteriormente. Apos a atua cao das
75
portas que calcula f, o estado do circuito sera descrito por (f(x), g(x), 0). O
proximo passo e usar portas CNOTs para copiar o conte udo de f(x) para o
registro 0. Note que essa opera cao e feita q-bit a q-bit. Se for necessario n
q-bits para armezenar o valor de f(x), tambem sera preciso n portas CNOTs.
No nal teremos (f(x), g(x), f(x)).
O proximo estagio e passar esse estado pelo circuito que calcula f(x)
invertido. Apos essa opera cao teremos (x, 0, f(x)). O ultimo registro nao e
afetado, pois no calculo de f(x) ele nao foi utilizado. Essa tecnica usada no
nal para inverter o circuito e conhecida como decomputa cao. Com essas
modica coes a sada da computa cao esta em um estado bem denido.
Analisaremos o custo de um circuito irreversvel implementado em com-
puta cao reversvel. Teremos a mesma quantidade de portas do circuito ori-
ginal multiplicado por 2 por causa da decomputa cao, adicionado das portas
CNOT e NOT, as quais possuem uma quantidade linear ao n umero de q-
bits do circuito. Portanto, esse processo nao aumenta a complexidade do
algoritmo.
76
Referencias Bibliogracas
[1] Avritzer, D.; Bueno, H. P.; Faria, M. C.; Fernandes, A. M. V.; Ferreira,
M. C. C.; Soares, E. F. Fundamentos de

Algebra. UFMG, 2005.
[2] Coutinho, S. C. N umeros Inteiros e Criptograa RSA. IMPA, 2003.
[3] Nielsen, M. A. e Chuang, I. L. Computa cao Quantica e Informa cao
Quantica. Artmed Editora S. A., 2005.
[4] Bueno, P. H.

Algebra Linear Um segundo Curso. SBM, 2006.
[5] Brochero, F. B.; Moreira, C. G. T. A.; Saldanha, N. C.; Tengan, E.
Teoria dos N umeros. www.icmc.usp.br/etengan/livro.pdf, visitado em
20/04/2010.
[6] Santos, J. P. O. Introdu cao `a Teoria dos N umeros. IMPA, 2005.
[7] Lang, S. Linear Algebra. Addison-Wesley, 1968.
[8] Shor, W. P. Polynomial-time Algorithms for Prime Factorization and Dis-
crete Logarithms on a Quantum Computer. arxiv:quant-ph/9508027v2 25
jan 1996.
[9] Portugal, R.; Lavor, C. C.; Carvalho, L. M.; Maculan, N. Uma Introdu cao
`a Computa cao Quantica. Sociedade Brasileira de Matem atica Aplicada e
Computacional, 2004.
[10] Press, W. H. Numerical Recipes in Fortran. Press Syndicate of the Uni-
versity of Cambridge, 1994.
77
[11] Ziviani, N. Projetos de Algoritmos e Estrutura de Dados. Campinas,
1986.
[12] Ekert, A.; Josza R. Quantum Computation and Shors Factoring Algo-
rithm. Rev. Mod. Phys., Vol. 68 N umero 3, Julho 1996.
[13] Vandersypen, L. M. K. et al Experimental Realization of Shors Quan-
tum Factoring Algorithm Using Nuclear Magnetic Resonance. Nature Vol
414, 20/27 December 2001, 883-887.
[14] Wootters, W. K.; Zurek, W. H. A Single Quantum Cannot Be Cloned.
Nature Vol 299, 1985, 802-803.
78

Anda mungkin juga menyukai