Você está na página 1de 10

Aplicao do Algoritmo de Grover para Problemas

NP-Completos
Luis Antonio Kowada
1
, Celina M. H. de Figueiredo
2
, Renato Portugal
3
, Carlile Lavor
4
1
Universidade Federal Fluminense (IM-UFF)
Rua Mrio Santos Braga S/N, 24020-140, Niteri - RJ, Brasil
2
Universidade Federal do Rio de Janeiro (COPPE-UFRJ)
CP 68511, 21941-972, Rio de Janeiro - RJ, Brasil
3
Laboratrio Nacional de Computao Cientca (LNCC)
rua Getlio Vargas 333, 25651-075, Petrpolis - RJ, Brasil
4
Universidade Estadual de Campinas (IMECC-UNICAMP)
CP 6065, 13081-970, Campinas - SP, Brasil
kowada@ufrj.br,celina@cos.ufrj.br,portugal@lncc.br,clavor@ime.unicamp.br
Abstract. Although Grover Algorithm has been analyzed in great details, there
are problems regarding its utility and implementation. In this paper, we show
how Grover algorithm can be used to solve an NP-complete problem with qua-
dratic speed-up over the classical algorithm.
Resumo. O algoritmo de Grover tem sido bastante analisado e discutido, mas
restam algumas dvidas quanto a sua utilidade e implementao. Neste texto,
mostramos, em detalhes, como o algoritmo de Grover pode ser usado para re-
solver um problema NP-completo com ganho quadrtico em relao aos algo-
ritmos clssicos.
1. Introduo
Os dois algoritmos qunticos mais famosos so: algoritmo para fatorao de
Shor [Shor 1994] e o algoritmo para busca de Grover [Grover 1997]. No caso do al-
goritmo de Grover, so comuns alguns questionamentos [Ambainis 2004]. Um destes se
refere sua utilidade: " til um algoritmo de busca em uma lista no-ordenada, com N
elementos com custo computacional O(

N)? No mais fcil trabalhar classicamente


com estruturas de dados especiais, como rvores vermelho-preto [Cormen et al. 2001], e
realizar a mesma operao com custo da ordem de O(log N)?". E principalmente en-
tre os que esto se iniciando na rea, comum a seguinte indagao: "em uma lista
no-ordenada, com N elementos, como possvel encontrar um elemento com O(

N)
operaes? No necessrio pelo menos N comparaes? Ser que o orculo possvel
de ser implementado?". Estas questes sero discutidas, atravs de um exemplo concreto.
O algoritmo de Grover foi desenvolvido inicialmente para a busca em uma lista
no-ordenada [Grover 1997], mas segundo a opinio de diversos autores, o seu uso mais
eciente no ser desta forma, mesmo porque o hardware para isso necessita de (N)
chaves qunticas [Ambainis 2004, Nielsen and Chuang 2000]. A aplicao mais vivel
seria um ganho quadrtico sobre a complexidade de diversas operaes computacionais.
Mas para quais aplicaes se obtm este ganho? E como fazer isto?
Neste texto, mostrado como o algoritmo de Grover pode ser implementado em
termos de operadores unitrios elementares para um problema NP-completo especco.
2. Problema de busca
De um modo geral, todo procedimento computacional pode ser visto como um
conjunto de operaes aplicadas sobre uma seqncia de bits retornando outra seqncia
de bits, conforme modelado por Alan Turing em 1936 [Turing 1936]. Na prtica, tanto
a entrada quanto a sada possuem um tamanho limitado. Suponha que haja no mximo
n bits de entrada e m bits de sada. Neste caso, este procedimento computacional pode
ser descrito por uma funo f : {0, 1}
n
{0, 1}
m
, sendo que o clculo de f possui um
custo associado ao nmero de operaes necessrias para retornar o resultado para cada
entrada possvel.
Um problema bastante importante em Computao o seguinte: "Dada uma fun-
o f conforme a descrio acima e um valor k, como encontrar uma possvel entrada x
tal que f(x) = k?". Se a funo considerada bijetora, o problema consiste em avaliar a
funo inversa f
1
(k). Mas no caso geral, podem haver vrias solues possveis, sendo
que qualquer uma delas vlida.
Para se ter uma idia da importncia deste problema, denominado aqui problema
de busca, os problemas NP-completos podem ser reduzidos a este. Por exemplo, o pro-
blema de deciso 3-Satisfabilidade, mais conhecido como 3-Sat, consiste em, dados um
conjunto U de variveis lgicas e uma coleo C de clusulas disjuntivas sobre U, cada
uma contendo exatamente 3 literais, saber se h uma combinao de valores para as va-
riveis em U, que satisfaa todas as clusulas em C [Garey and Johnson 1979]. fcil
construir um procedimento que receba como entrada os valores das variveis e retorne 1
caso todas as clsulas sejam verdadeiras, e 0 caso contrrio. Supondo que haja n vari-
veis lgicas, este procedimento pode ser visto como uma funo f
3sat
: {0, 1}
n
{0, 1}.
A avaliao de f para cada entrada particular simples, basta substituir os valores das
variveis nas clusulas correspondentes. O custo da avaliao de f
3sat
proporcional ao
nmero de clusulas. O nmero mximo possvel de clusulas diferentes com 3 literais
distintos para n variveis
C
n,3
=
n(n 1)(n 2)
6
(n
3
). (1)
O problema 3-sat pode ser reduzido a descobrir um valor x tal que f
3sat
(x) = 1.
Outro campo de aplicao para problemas de busca a criptograa, mais precisa-
mente a criptoanlise. A criptograa consiste basicamente em codicar uma mensagem
X(chamado de texto claro) utilizando uma outra informao k, chamada de chave cripto-
grca, resultando em texto codicado Y . Para cada valor de k, h uma correspondncia
de 1-para-1 entre cada mensagem e sua possvel codicao, ou seja, a funo f
k
(X) = Y
bijetora. Tanto o clculo de f quanto da sua inversa computacionalmente eciente,
desde que seja conhecido o valor de k. Um problema fundamental da criptoanlise con-
siste em, dada a funo e o valor codicado Y , encontrar k ou X. H outras variaes
como a criptograa de chave pblica, na qual a chave de codicao distinta da chave
de decodicao, ou codicao usando funes de espalhamento (hash function), que
no possuem inversa. No vamos aprofundar nisto, pois foge do escopo deste trabalho.
Mais informaes podem ser encontradas, por exemplo, em [Stinson 2002, Terada 2000].
Caso no seja conhecida nenhuma estrutura ou propriedade interna da funo
como, por exemplo, distribuio das solues ou quais so as entradas com mais chance
de terem sido escolhidas, a nica forma de resolver o problema de busca percorrendo
todo o domnio da funo e comparando os resultados. No caso da criptoanlise, este
procedimento conhecido como ataque de fora bruta.
No caso do problema 3-Sat com n variveis, h O(2
n
) entradas possveis e custo
de avaliao de cada entrada O(n
3
), conforme visto antes. Logo, o procedimento
de busca trivial possui complexidade O(2
n
n
3
). Para este problema em particular,
existe um procedimento clssico probabilstico que resolve o problema com complexi-
dade (1, 33
n
) [Riege and Rothe 2006]. Mas para muitos problemas o melhor procedi-
mento clssico a busca exaustiva.
3. Mtodo de Grover para busca
3.1. Descrio do algoritmo
O algoritmo de Grover foi projetado para encontrar um elemento dentro de uma
lista no-ordenada. A seguir, mostrado como ele pode ser implementado para encontrar
um elemento do domnio de uma funo, dada uma possvel imagem da mesma.
Suponha que se tenha um problema de busca denido por uma funo
f : {0, 1}
n
{0, 1}
m
(2)
e um valor k.
O procedimento geral do algoritmo de Grover mostrado no Algoritmo 3.1. O
smbolo x signica o inteiro mais prximo de x. O valor que aparece aps o smbolo
|, indica o nmero de bits que formam este ket. O operador U
g
ser descrito adiante.
Algoritmo 3.1 Algoritmo de Grover
1) Preparao do estado inicial: |
e
= |0
n
|k
m
|1
1
2) |
1
: Superposio de todos os estados da base computacional, no primeiro registra-
dor, necessrios para representar o domnio de f e aplicao de Hadamard no ltimo
registrador sobre o estado |
e
.
3) para j 1 at
_

N
_
faa
4) Aplicao do Orculo: |
2j
= U
g
|
(2j1)

5) Inverso sobre a mdia: |


2j+1
= (2|
1

1
| I)|
2j

6) m para
7) Observe o estado do primeiro registrador
Apartir de f, pode-se construir umprocedimento reversvel U
f
: |x|k |x|k
f(x), representando o operador XOR aplicado bit-a-bit.
Quando a dimenso do domnio de f potncia de 2, a superposio de todas
as entradas possveis de f, passo 2 do Algoritmo 3.1, pode ser feita atravs do uso
de portas Hadamard em cada linha do 1
o
registrador, conforme mostrado na seo 2.3
de [Portugal et al. 2004]. Caso no seja potncia de 2, deve-se utilizar a Transformada de
Fourier Quntica como descrito em [Lomont 2004].
A Proposio 1 indica a quantidade de iteraes necessrias para maximizar a
probabilidade de sucesso.
Proposio 1. [Nielsen and Chuang 2000, eq.6.17] Dada uma lista L com N elementos,
dos quais t
N
2
satisfazem a condio de busca do orculo, um limite superior para
a quantidade estimada de execues do orculo para obter um elemento marcado, sem
nenhuma medio intermediria, menor ou igual a
_

4
_
N
t
_
.
Como habitualmente no conhecido o nmero de solues t, so necessrias
O(

N) iteraes, a menos que se use uma variao do algoritmo de Grover, que se


encontra em [Boyer et al. 1998].
3.2. Aplicao do algoritmo de Grover para problemas de busca
O operador U
f
possui a mesma ordem de complexidade do procedimento irrever-
svel clssico que calcula f [Bennett 1973].
Na formulao original do algoritmo de Grover [Grover 1997], como tambm
mostrado em [Portugal et al. 2004], utilizada uma funo (chamada aqui de g(x, k),
para no confundir com f anteriormente denida) que indica se x soluo do problema
ou no. No caso da busca em uma lista, indica se k pertence lista ou no. Em relao ao
problema de busca anteriormente denido, esta funo pode ser descrita como:
g(x, k) =
_
1, se f(x) = k
0, se f(x) = k.
(3)
A partir desta funo, denido um operador unitrio
U
g
: |x|k| (1)
g(x,k)
|x|k|, (4)
denominado de orculo de Grover.
O operador U
g
pode ser construdo a partir do operador U
f
, de acordo com a
Figura 1. Cada linha representa um conjunto de q-bits. A linha superior (1
o
registrador)
formada por n = log N q-bits, sendo N o tamanho do domnio de f. Este registrador
utilizado para armazenar os valores de entrada. A linha intermediria (2
o
registrador) o
conjunto de q-bits que armazena a sada de f, e a linha inferior formada por um nico
q-bit auxiliar. possvel construir o operador (e todo o circuito de Grover) sem este q-bit
auxiliar, mas sua presena facilita a compreenso do operador (e do circuito de Grover).
Se a entrada for um estado projetado, a porta Z controlada pelo 2
o
registrador inverte a
amplitude do estado, caso o valor do 2
o
registrador seja igual a |0 na sada inferior do
operador U
f
. A porta Z controlada pode ser implementada atravs de uma porta Toffoli
generalizada com o q-bit alvo no estado
|0|1

2
. So omitidos outros q-bits auxiliares cujos
valores de sada so iguais aos de entrada.
Z
U
f
U
f
Figura 1. Circuito que implementa U
g
a partir de U
f
.
3.3. Aplicao do algoritmo de Grover ao problema das Equaes Binrias
Quadrticas
Nesta seo mostrado o funcionamento do algoritmo de Grover aplicado a um
problema concreto, no caso ao problema das Equaes Binrias Quadrticas (EBQ).
Seja a funo:
f(x) = x
2
mod , com 0 x , (5)
na qual e so nmeros inteiros.
Dados f, e um valor , o problema das Equaes Binrias Quadrticas consiste
em encontrar um valor x {0, . . . , }, tal que f(x) = .
Mesmo que seja conhecida a fatorao de , este problema NP-completo, con-
forme pode ser visto em [Garey and Johnson 1979, Manders and Adleman 1978].
Para implementar o operador que calcula f para vrias entradas em superposio,
deve-se utilizar apenas portas reversveis. Um possvel operador U
f
associado ao pro-
blema U
f
: |x| |x|(x
2
mod ). Este operador facilmente implementvel
usando um operador multiplicao modular que possui complexidade O(n
log 3
), sendo
que n = log , usando o algoritmo Karatsuba reversvel modular [Kowada et al. 2006].
No se pode utilizar o algoritmo de multiplicao modular, descrito por Vedral, Barenco
e Ekert [Vedral et al. 1996], pois este operador permite superposio de estados em ape-
nas um dos operandos. Tambm no se pode utilizar os procedimentos de exponenciao
modular projetados para o algoritmo de fatorao de Shor [Shor 1994], que permitem a
superposio de estados apenas para o valor expoente.
Na Figura 2, mostrado o circuito MULT-MOD:(N, a, b, 0) (N, a, b, ab mod N),
desenvolvido pelos autores, que permite a multiplicao modular com os dois operandos
podendo estar em superposio a partir da multiplicao e diviso convencional, cujos
circuitos podem ser encontrados em [Kowada 2006] ou [Nascimento et al. 2006].
Na Figura 3 mostrado como implementar o operador U
f
: |x| |x| (x
2
mod ) a partir do circuito de multiplicao modular reversvel, mostrado na Figura 2.
O operador U
g
construdo de acordo com a Figura 1, com o segundo registrador
inicialmente no estado |37. possvel projetar o operador U
f
de outras formas, como,
por exemplo, U
f
: |x| |x|(x
2
) mod . Em qualquer uma destas formas
de implementar U
f
, aps uma aplicao da mesma, o segundo registrador ter o valor
zero para os estados da base computacional (e apenas para estes) que forem soluo do
problema. Em ambas as formas de implementao de U
f
, o circuito projetado para a
busca de um valor
1
no precisa ser modicado para a pesquisa de um novo valor
2
. O
b b
b b
a a
a a
ab mod
ab mod

0
0
0
0
n
n
n
n
n
2n 2n
2n
M
U
L
T
M
U
L
T
D
I
V
D
I
V
M
U
L
T
-
M
O
D
Figura 2. MULT-MOD. Circuito para a multiplicao modular reversvel a partir
dos circuitos reversveis da multiplicao e diviso.
0 0
0 0
x x
(x
2
mod )
M
U
L
T
-
M
O
D
M
U
L
T
-
M
O
D
Figura 3. Circuito que implementa U
f
: |x| |x| (x
2
mod ) a partir
da multiplicao modular. Cada registrador formado por n bits. A porta C-
NOT central representa a aplicao de n C-NOTs distintas onde cada bit do 3
o
registrador controla um respectivo bit do 4
o
registrador.
que difere o estado inicial do sistema que, em vez de ser |
e
= |0|
1
|1, passa a ser
|
e
= |0|
2
|1.
A complexidade de portas de U
f
O(n
log 3
), denida pela ordem de complexidade
da multiplicao modular. O operador U
g
possui mesma ordem de complexidade de U
f
.
Tomando, por exemplo, f(x) = x
2
mod 63 com = 15 e = 37. Isto signica,
que se deseja saber se existe x [0, 15], tal que f(x) = 37.
Considerando que as nicas entradas vlidas so as menores do que , o nmero
de aplicaes necessrias de U
g
no Algoritmo 3.1 para resolver a funo do problema
tratado

. No exemplo considerado, a quantidade de entradas igual a 16, logo


so necessrias 3 iteraes do algoritmo.
Pela Tabela 1, pode-se vericar que o nico elemento do domnio de f que satisfaz
a condio de busca x = 10.
Tabela 1. tabela com as imagens de f(x) = x
2
mod 63 para x < 16.
x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
f(x) 0 1 4 9 16 25 36 49 1 18 37 58 18 43 7 36
Como todas as entradas da funo f so menores do que 16 e as sadas possveis
so menores do que 64, os trs registradores principais tero 4, 6 e 1 q-bits, respectiva-
mente.
Na Figura 4 possvel visualizar o circuito do algoritmo Grover para o exem-
plo dado. Para maiores detalhes sobre o circuito referente ao operador Inverso sobre a
Mdia, veja [Portugal et al. 2004].
iI iI iI iI iI iI X X X X X X
{
{
Orculo U
g
Inverso sobre a mdia
|0
4
|1
|37
6

|
e

|
1

|
2

|
3

|
4

|
5

|
6

H H H
H H H
H H H
H H H
H H H
H H H
H H H
H H H
H
H
H
H
H
U
f
U
f
U
f
U
f
U
f
U
f
U
f
U
f
U
f
U
f
U
f
Figura 4. Circuito que implementa o algoritmo Grover a partir de U
f
. No lugar da
U
f
deve entrar o circuito da Figura 3. O valor da entrada j se refere ao exemplo
em concreto (k = 37).
O estado inicial
|
e
= |0
4
|37
6
|1
1
(6)
Fazendo a superposio de todos os estados da base computacional no primeiro e
terceiro registradores (passo 2 do Algoritmo 3.1), tem-se que:
|
1
= H
4
|0
4
|37
6
H|1
1
=
1
4
15

x=0
|x
4
|37
6
|. (7)
Aplicando o operador U
g
, o estado do sistema passa a ser:
|
2
=
1
4
(|0
4
|37
6
| + |1
4
|37
6
| + |2
4
|37
6
| + |3
4
|37
6
|+
|4
4
|37
6
| + |5
4
|37
6
| + |6
4
|37
6
| + |7
4
|37
6
|+
|8
4
|37
6
| + |9
4
|37
6
| |10
4
|37
6
| + |11
4
|37
6
|+
|12
4
|37
6
| + |13
4
|37
6
| + |14
4
|37
6
| + |15
4
|37
6
|).
(8)
Apenas o estado |10
4
|37
6
| tem a amplitude invertida, pois f(10) = 37.
Aparentemente, o segundo registrador no tem seu estado alterado aps aplicao
de U
g
, mas, na realidade, h uma mudana durante a aplicao de U
g
e, em seguida,
restitudo o valor original. Como U
g
= (U

f
I
1
)(I
n
C
n
Z)(U
f
I
1
), ento,
U
g
|x|k| = (U

f
I
1
)(I
n
C
n
Z)|x|k f(x)|, (9)
sendo que C
n
Z a porta Z controlada negativamente e I
n
o operador identidade aplica-
dos em n q-bits. Isto implica em que, aps a execuo de U
f
, o segundo registrador passa
a guardar k f(x) para cada valor de x. Aplicando em seguida a porta Z controlada, a
amplitude dos estados, nos quais o valor no segundo registrador igual a zero, invertida.
No exemplo considerado, isto acontece apenas com o estado |10|0|, que passa a ser
|10|0|, j que 37 f(10) = 0. Aplicando U
f
de forma reversa (ltimo operador de
U
g
), o valor no segundo registrador passa a ser novamente 37 para todas as entradas. O
sinal da amplitude permanece negativo para o estado cujo valor no primeiro registrador
10 e positivo para os demais estados.
O estado |
2
pode ser reescrito como:
|
2
=
1
4
15

x=0
|x
4
|37
6
|
2
4
|10
4
|37
6
| = |
1

2
4
|10
4
|37
6
|. (10)
Calculando
2
|
1
, tem-se:

2
|
1
=
1
16
(16 2) =
7
8
. (11)
Aplicando a inverso sobre a mdia, o estado global passa a ser:
|
3
= (2|
1

1
| I)|
2

= (2
1
|
2
|
1
|
2
=
14
8
|
1
|
2

=
7
4
|
1
|
1
+
1
2
|10
4
|37
6
|
=
3
16

15
x=0
|x
4
|37
6
| +
1
2
|10
4
|37
6
|
=
1
4
(
3
4

15
x=0,x=10
|x
4
|37
6
| +
11
4
|10
4
|37
6
|).
(12)
A amplitude do estado procurado passa de
1
16
para
11
16
, depois da primeira rodada
do algoritmo de Grover. Com isso, a chance deste elemento ser lido |
3
|10, 37, |
2
=
(
11
16
)
2

= 47, 26%.
Na segunda rodada, faz-se novamente a inverso do elemento procurado no algo-
ritmo de Grover, obtendo-se
|
4
=
1
4
_
3
4
15

x=0,x=10
|x
4
|37
6
|
11
4
|10
4
|37
6
|
_
. (13)
Como
4
|
1
=
1
4
(
3
16
15
11
16
) =
34
64
=
17
32
, invertendo o estado anterior sobre a
mdia, tem-se:
|
5
= (2|
1

1
| I)|
4

= (2
1
|
4
|
1
|
4
=
17
16
|
1
|
4

=
5
64

15
x=0,x=10
|x
4
|37
6
| +
61
64
|10
4
|37
6
|).
(14)
A chance de medio do elemento procurado depois desta rodada , aproximada-
mente, 90,8%.
Depois da terceira rodada do algoritmo de Grover, o produto escalar
6
|
1
=
7
128
e a amplitude do estado procurado passa para
251
256
. Com isso, a probabilidade deste
elemento ser lido de aproximadamente 96%.
No adianta aplicar outras rodadas, pois a amplitude da projeo do estado |
8
=
U
g
|
7
sobre o estado |
1
negativa (
13
256
), assim, a amplitude do estado procurado
comea a diminuir caso sejam aplicadas mais iteraes do algoritmo.
4. Concluso
Neste artigo, proposto um circuito completo para resolver um problema NP-
completo a partir de operadores unitrios bsicos, usando o algoritmo de Grover. O
problema considerado das Equaes Binrias Quadrticas, mas as idias servem para
a resoluo de outros problemas. Alm do circuito, mostrado passo-a-passo a evoluo
do estado do sistema durante a execuo do algoritmo para um exemplo em particular,
esclarecendo dvidas quanto ao funcionamento do algoritmo de Grover e de sua imple-
mentao para obter ganho quadrtico em relao aos procedimentos clssicos.
Agradecimentos
Os autores agradecem s agncias de fomento FAPESP, FAPERJ e CNPq pelo
auxlio prestado e tambm agradecem aos revisores pela leitura cuidadosa deste traba-
lho. Em particular, atravs de um revisor, tomamos conhecimento de uma dissertao de
mestrado [Oliveira 2007], cujo tema relacionado com o presente trabalho.
Referncias
Ambainis, A. (2004). Quantum search algorithms. ACM SIGACT News, 35(2):2235.
Bennett, C. H. (1973). The logical reversibility of computation. IBM J. Res. Develop.,
17:525532.
Boyer, M., Brassard, G., Hyer, P., and Tapp, A. (1998). Tight bounds on quantum
searching. Fortschritte Der Physik.
Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. (2001). Introduction to
Algorithms. MIT Press, 2nd edition.
Garey, M. R. and Johnson, D. S. (1979). Computers and Intractability: A Guide to the
Theory of NP-Completeness. Freeman.
Grover, L. K. (1997). Quantum mechanics helps in searching for a needle in a haystack.
Physical Review Letters, 79:325329.
Kowada, L. A. B., Portugal, R., and de Figueiredo, C. M. H. (2006). Reversible Karat-
subas algorithm. Journal of Universal Computer Science, 12(5):499511.
Kowada, L. A. B. (2006). Construo de Algoritmos Reversveis e Qunticos. PhD thesis,
COPPE-Universidade Federal do Rio de Janeiro.
Lomont, C. (2004). A quantum fourier transform algorithm. www.arxiv.org. quant-
ph/0404060.
Manders, K. L. and Adleman, L. (1978). NP-Complete decision problems for binary
quadratics. Journal of Computer and System Sciences, 16:168184.
Nascimento, A. L., Kowada, L. A. B., and de Oliveira, W. R. (2006). Uma unidade lgica
e aritmtica reversvel. In anais do WECIQ 2006, pages 149160, Pelotas-RS.
Nielsen, M. A. and Chuang, I. L. (2000). Quantum Computation and Quantum Informa-
tion. Cambridge Press, Cambrigde - UK.
Oliveira, D. S. (2007). Comparador quntico de seqncias binrias: Circuitos e aplica-
es. Masters thesis, Universidade Federal do Cear.
Portugal, R., Lavor, C., Carvalho, L. M., and Maculan, N. (2004). Uma Introduo
Computao Quntica, volume 8 of Notas em Matemtica Aplicada. SBMAC.
Riege, T. and Rothe, J. (2006). Improving deterministic and randomized exponential-
time algorithms for the satisability, the colorability, and the domatic number problem.
Journal of Universal Computer Science, 12(6):725745.
Shor, P. (1994). Algorithms of quantum computation: discrete logarithm and factoring. In
Proceedings of 35th Annual Symposium on Foundations of Computer Science, pages
124134.
Stinson, D. R. (2002). Cryptography: Theory and Practice, chapter 6. CRC Press Com-
pany, 2nd edition.
Terada, R. (2000). Segurana de Dados. ed. Blcher.
Turing, A. M. (1936). On computable numbers, with an application to Entscheidungs
problem. In Proc. Lond. Math. Soc. 2, volume 42, page 230.
Vedral, V., Barenco, A., and Ekert, A. (1996). Quantum networks for elementary arith-
metic operations. Physical Review A, 54(1):147153.

Você também pode gostar