UM ALGORITMO QUÂNTICO (BASEADO EM

Propaganda
A pesquisa Operacional e os Recursos Renováveis
4 a 7 de novembro de 2003, Natal-RN
UM ALGORITMO QUÂNTICO (BASEADO EM ENSEMBLES) DE
COMPLEXIDADE O(log 2 N) PARA UM PROBLEMA DE BUSCA
EM UMA LISTA COM N ELEMENTOS
Carlile Lavor
Universidade do Estado do Rio de Janeiro (IME-UERJ)
Rua São Francisco Xavier 524, 6º andar, bl. D
20550-900, Rio de Janeiro – RJ, Brasil
e-mail: [email protected]
Renato Portugal
Laboratório Nacional de Computação Científica - LNCC
Av. Getúlio Vargas 333, 25651-070, Petrópolis – RJ, Brasil
e-mail: [email protected]
Luiz M. Carvalho
Universidade do Estado do Rio de Janeiro (IME-UERJ)
Rua São Francisco Xavier 524, 6º andar, bl. D
20550-900, Rio de Janeiro – RJ, Brasil
e-mail: [email protected]
Nelson Maculan
Programa de Engenharia de Sistemas e Computação – COPPE
Universidade Federal do Rio de Janeiro - UFRJ
C. P. 68511, 21945-970, Rio de Janeiro – RJ, Brasil
e-mail: [email protected]
Resumo. Os algoritmos quânticos ainda não são muito conhecidos pela comunidade de
Pesquisa Operacional. Neste artigo, apresentamos o algoritmo de Brüschweiler para resolver o
mesmo problema em que foi aplicado o algoritmo de Grover: tem-se uma lista não ordenada
com N elementos e deseja-se localizar um elemento específico. O algoritmo de Grover tem um
ganho quadrático em relação ao melhor algoritmo clássico, enquanto que o algoritmo de
Brüschweiler tem um ganho exponencial sobre os dois. Além de apresentarmos um exemplo
mostrando claramente os passos do algoritmo de Brüschweiler, descrevemos matematicamente
suas operações para simplificar a compreensão de sua complexidade. Isso é feito usando apenas
os conceitos introduzidos no artigo.
Palavras-chave: Algoritmos Quânticos, Busca Quântica, Algoritmo de Brüschweiler.
Abstract. Quantum algorithms are not well known in the Operations Research community. In
this paper, we present Brüschweiler’s algorithm applied to solve the same problem addressed by
Grover’s algorithm: find a specific element in an unstructured database with N items. Grover’s
algorithm allows a quadratic speedup over the best classical algorithm, while Brüschweiler’s
algorithm allows an exponential speedup over both of them. We give a detailed example
explaining the steps of Brüschweiler’s algorithm and a mathematical description of its
operators. This is done using only the concepts given in the paper.
Keywords: Quantum Algorithms, Quantum Search, Brüschweiler’s Algorithm.
1
Introdução
Além dos algoritmos quânticos propostos por Grover [3, 4, 6] e Shor [10], uma nova
abordagem foi apresentada por Madi, Brüschweiler e Ernst: algoritmos baseados em ensembles
quânticos [1, 7]. A diferença fundamental entre eles é que estes algoritmos não manipulam
estados emaranhados [8], o que acontece com os algoritmos de Grover e Shor.
Utilizamos o algoritmo de Brüschweiler [1] para resolver o mesmo problema em que foi
aplicado o algoritmo de Grover: tem-se uma lista não ordenada com N elementos e deseja-se
localizar um elemento específico. O melhor algoritmo clássico resolve o problema em O(N)
passos, enquanto que o algoritmo de Grover requer O( N ) passos. O algoritmo de
Brüschweiler, aplicado a esse problema, tem complexidade O(log 2 N). Ou seja, tem-se um
ganho exponencial sobre o algoritmo clássico e o de Grover.
O algoritmo de Brüschweiler é descrito em duas revistas da área de física [1, 7]. Neste
artigo, descrevemos o algoritmo para a comunidade de Pesquisa Operacional, assim como
reformulamos a demonstração de sua complexidade.
O artigo está organizado da seguinte forma. Na seção 2, apresentamos as noções básicas
para a compreeensão do artigo. Na seção 3, o algoritmo de Brüschweiler é descrito juntamente
com sua complexidade. Na seção 4, o algoritmo é exemplificado com uma lista com 8
elementos. Finalmente, concluímos com a seção 5.
2
Conceitos Básicos
Em computação quântica, os valores 0 e 1 de um bit são substituídos pelos vetores |0⟩ e
|1⟩ de um qubit (quantum bit). Essa é a notação utilizada em mecânica quântica e é conhecida
por notação de Dirac [8]. A diferença entre um bit e um qubit é que um qubit |ψ⟩ pode também
ser uma combinação linear dos vetores |0⟩ e |1⟩,
|ψ⟩ = α|0⟩ + β|1⟩,
(1)
onde α e β são números complexos. Os vetores |0⟩ e |1⟩ são representados por
1 
0 
0 
1 
|0⟩ =   e |1⟩ =  
e formam uma base ortonormal do espaço vetorial C 2 . Essa base é chamada de base
computacional e o vetor |ψ⟩ é chamado de uma superposição dos vetores |0⟩ e |1⟩, com
amplitudes α e β (em mecânica quântica, vetor é também chamado de estado; usaremos os dois
termos com o mesmo significado).
Da mecânica quântica, sabe-se que |α| 2 e |β| 2 são as probabilidades do qubit |ψ⟩ estar
nos estados |0⟩ e |1⟩, respectivamente [8]. Portanto,
|α| 2 + |β| 2 = 1.
Calculando a norma de |ψ⟩, em (1), obtemos:
|| |ψ⟩ || = (|α| 2 + |β| 2 ) 1 / 2 = 1.
Ou seja, o estado de um qubit tem sempre norma 1. Como as mudanças de estado de um sistema
isolado em mecânica quântica são descritas por transformações lineares [8], as matrizes
associadas a essas transformações que preservam a norma são matrizes unitárias [8]. Um matriz
unitária U ∈ C 2×2 pode ser definida como sendo uma matriz tal que
2069
U + U = UU + = I,
onde U + é a matriz transposta conjugada de U e I é a matriz identidade.
Para tratar estados com mais de um qubit, usamos o produto tensorial [8]. Para os
nossos propósitos, definimos o produto tensorial A ⊗ B, entre as matrizes A ∈ C m×n e B ∈ C p×q ,
como
(A ⊗ B) ij = (A) ij B,
onde i = 1, ..., m e j = 1, ..., n. Note que a dimensão da matriz A ⊗ B é mp×nq e que o produto
tensorial não é comutativo. Por exemplo,
0 
1 
1 
0 
|0⟩ ⊗ |1⟩ =   ⊗   =  
0 
1  0
 
0 
e
0 
 
0 
1  0
.
|1⟩ ⊗ |0⟩ =   ⊗   =
1 
0 1 
 
0 
O produto tensorial possui as seguintes propriedades [8]:
1. z(|v⟩ ⊗ |w⟩) = (z|v⟩) ⊗ |w⟩ = |v⟩ ⊗ (z|w⟩),
2. (|v 1 ⟩ + |v 2 ⟩) ⊗ |w⟩ = (|v 1 ⟩ ⊗ |w⟩) + (|v 2 ⟩ ⊗ |w⟩),
3. |v⟩ ⊗ (|w 1 ⟩ + |w 2 ⟩) = (|v⟩ ⊗ |w 1 ⟩) + (|v⟩ ⊗ |w 2 ⟩),
onde z ∈ C; |v⟩, |v 1 ⟩, |v 2 ⟩ ∈ C m ; e |w⟩, |w 1 ⟩, |w 2 ⟩ ∈ C n . Usaremos também a notação |v⟩|w⟩ e
|vw⟩ para o produto tensorial |v⟩ ⊗ |w⟩.
Com o produto tensorial, representamos um estado |ψ⟩ de 2 qubits como uma
superposição dos estados |00⟩, |01⟩, |10⟩ e |11⟩:
|ψ⟩ = a|00⟩ + b|01⟩+ c|10⟩ + d|11⟩,
onde
|a| 2 + |b| 2 + |c| 2 + |d| 2 = 1.
Usando a notação decimal, podemos simplificar a representação dos estados
|00⟩, |01⟩, |10⟩ e |11⟩,
substituindo-os por
|0⟩, |1⟩, |2⟩ e |3⟩.
2070
De forma similar, pode-se representar um estado qualquer de n qubits. Neste caso, a base
computacional, em notação decimal, é o conjunto {|0⟩, ..., |N − 1⟩}, onde N = 2 n .
Para finalizar esta seção, apresentamos mais três definições. O dual de um vetor |ϕ⟩ ∈
C n , denotado por ⟨ϕ|, é o vetor transposto de |ϕ⟩ com os elementos substituídos pelos seus
conjugados. Ou seja,
⟨ϕ| = (|ϕ⟩) + .
Além do produto interno ⟨ϕ|ψ⟩ entre dois vetores |ϕ⟩, |ψ⟩ ∈ C n , definido por
⟨ϕ|ψ⟩ = (|ϕ⟩) + |ψ⟩,
usaremos também o produto externo |ϕ⟩⟨ψ|, definido por
|ϕ⟩⟨ψ| = |ϕ⟩(|ψ⟩) + .
Note que o produto externo também poderia ser definido como um produto tensorial:
|ϕ⟩⟨ψ| = |ϕ⟩ ⊗ ⟨ψ|.
(2)
Por exemplo,
1 
0 
0 1 
.
0 0 
|0⟩⟨1| = |0⟩ ⊗ ⟨1| =   ⊗ [0 1] = 
Destacamos mais uma propriedade que será útil mais adiante [8]:
(|ϕ⟩ ⊗ |ψ⟩) + = (|ϕ⟩) + ⊗ (|ψ⟩) + .
3
O Algoritmo de Brüschweiler
Em vez de usar vetores, uma outra maneira de descrever sistemas quânticos é através do
conceito de matriz densidade [8]. Ele é conveniente para descrever sistemas quânticos cujos
estados não são totalmente conhecidos.
Suponha que um sistema quântico esteja em um estado |ψ i ⟩ com probabilidade p i . O
conjunto {(p i , |ψ i ⟩) : i = 1, ..., n} é chamado de um ensemble de estados puros, ou
simplesmente, um ensemble. A matriz densidade ρ associada ao sistema é definida por
ρ=
n
∑
i =1
p i |ψ i ⟩⟨ψ i |.
Se um sistema está em um estado |ψ i ⟩, com probabilidade p i , o estado resultante, após a
aplicação de um operador unitário U, será o estado U|ψ i ⟩, com a mesma probabilidade. Em
termos de matriz densidade, a aplicação do operador U sobre o sistema resulta na matriz
densidade
UρU + .
2071
Um sistema quântico, cujo estado |ψ⟩ é conhecido, é dito estar em um estado puro. Neste caso, a
matriz densidade do sistema é simplesmente |ψ⟩⟨ψ|.
Consideremos, agora, o problema em que aplicaremos o algoritmo de Brüschweiler.
Vamos supor que a busca será realizada sobre a lista {0, 1, ..., N − 1}, onde N = 2 n para algum
número natural n, e que a função f : {0, 1, ..., N − 1} → {0, 1}, definida por
1, se i = i0
0, se i ≠ i0
f(i) = 
(3)
será utilizada para o reconhecimento do elemento procurado i 0 .
A essência do algoritmo é aplicar uma idéia já bem conhecida em computação: a busca
binária. O primeiro passo é dividir a lista em duas de mesmo tamanho,
r 1− = {0, ...,
N −2
}
2
e
r 1+ = {
N
, ..., N − 1},
2
e testar se o elemento procurado i 0 está em r 1− ou r 1+ .
Para “avaliar” a função f, o algoritmo de Brüschweiler utiliza um operador unitário U f ,
dependente de f, definido por
U f (|i⟩|0⟩) = |i⟩|f(i)⟩,
(4)
onde o primeiro registrador tem n qubits e o segundo tem 1 qubit.
O primeiro registrador é inicializado como um ensemble {(
1
, |i⟩) : i = 0, ...,
N /2
N −2
}. Ou seja, tem-se um ensemble formado pelos elementos de r 1− com a mesma
2
probabilidade para cada elemento. A matriz densidade associada é dada por
∑
i∈r1−
1
|i⟩⟨i|.
N /2
O segundo registrador é inicializado como um ensemble {1, |0⟩}. Portanto, a matriz densidade
associada aos dois registradores é dada por
ρ=(∑
i∈r1−
=
1
N /2
1
|i⟩⟨i|) ⊗ (|0⟩⟨0|))
N /2
∑
(|i⟩⟨i| ⊗ |0⟩⟨0|).
(5)
i∈r1−
Antes de aplicarmos o operador U f sobre a matriz densidade ρ, consideremos dois lemas.
2072
Lema 1. Sejam |a⟩ e |b⟩, estados da base computacional {|0⟩, ..., |N − 1⟩}. Então,
|a⟩|b⟩ ⊗ ⟨a|⟨b| = |a⟩⟨a| ⊗ |b⟩⟨b|.
Prova. Supondo que o valor 1 dos vetores |a⟩ e |b⟩ esteja nas posições j e k,
respectivamente, o valor 1 do vetor |a⟩|b⟩ estará na posição j × k. Fazendo o produto tensorial
entre |a⟩|b⟩ e ⟨a|⟨b|, obtemos uma matriz onde o valor 1 está na posição (j × k, j × k).
Consideremos, agora, o segundo termo da igualdade acima. Com a mesma hipótese sobre a
posição do valor 1 nos vetores |a⟩ e |b⟩, o valor 1 das matrizes |a⟩⟨a| e |b⟩⟨b| estará nas posições
(j, j) e (k, k), respectivamente. Fazendo então o produto tensorial entre |a⟩⟨a| e |b⟩⟨b|, obtemos
também uma matriz onde o valor 1 está na posição (j × k, j × k).
Lema 2. Considere um operador unitário U ∈ C n× n e um vetor |ψ⟩ ∈ C n . Então,
U(|ψ⟩ ⊗ ⟨ψ|)U + = (U|ψ⟩) ⊗ (⟨ψ|U + ).
Prova. Usando (2), temos:
U(|ψ⟩ ⊗ ⟨ψ|)U + = U(|ψ⟩⟨ψ|)U +
= (U|ψ⟩)(⟨ψ|U + )
= (U|ψ⟩)(U|ψ⟩) +
= (U|ψ⟩) ⊗ (U|ψ⟩) +
= (U|ψ⟩) ⊗ (⟨ψ|U + ).
Dos Lemas 1 e 2, obtemos o resultado da aplicação operador U f sobre a matriz
densidade ρ.
Teorema. A ação do operador U f , em (4), sobre a matriz densidade ρ, em (5), é dada
por
U f ρU +f =
1
N /2
∑
(|i⟩⟨i| ⊗ |f(i)⟩⟨f(i)|).
i∈r1−
Prova. Usando (5), temos:
U f ρU +f = U f (
=
1
N /2
1
N /2
∑
i∈r1−
∑
i∈r1−
(|i⟩⟨i| ⊗ |0⟩⟨0|))U +f
(U f (|i⟩⟨i| ⊗ |0⟩⟨0|)U +f ).
Do Lema 1,
1
N /2
∑
i∈r1−
(U f (|i⟩⟨i| ⊗ |0⟩⟨0|)U +f ) =
1
N /2
∑
i∈r1−
(U f (|i⟩|0⟩ ⊗ ⟨i|⟨0|)U +f ).
Do Lema 2,
2073
1
N /2
∑
i∈r1−
(U f (|i⟩|0⟩ ⊗ ⟨i|⟨0|)U +f ) =
1
N /2
=
1
N /2
=
=
=
1
N /2
∑
((U f (|i⟩|0⟩)) ⊗ ((⟨i|⟨0|)U +f ))
∑
((U f (|i⟩|0⟩)) ⊗ (U f (⟨i|⟨0|) + ) + )
∑
((U f (|i⟩|0⟩)) ⊗ (U f (|i⟩|0⟩)) + )
∑
(|i⟩|f(i)⟩ ⊗ (|i⟩|f(i)⟩) + )
∑
(|i⟩|f(i)⟩ ⊗ ⟨i|⟨f(i)|).
i∈r1−
i∈r1−
i∈r1−
1
N /2
i∈r1−
1
N /2
i∈r1−
Novamente, do Lema 1,
1
N /2
∑
(|i⟩|f(i)⟩ ⊗ ⟨i|⟨f(i)|) =
i∈r1−
1
N /2
∑
(|i⟩⟨i| ⊗ |f(i)⟩⟨f(i)|).
i∈r1−
Após a aplicação do operador U f , algo surpreendente aconteceu: a função f foi avaliada
simultaneamente em todos os elementos do conjunto r 1− . Isto é denominado paralelismo
quântico [8]. Note que o ensemble do segundo registrador é formado por todos os valores da
função f sobre os elementos do conjunto r 1− . Neste ponto, calcula-se a média f desses valores
de forma experimental [1, 7]. Para continuar nossa descrição matemática do algoritmo,
representaremos esse cálculo por
f =
1
N /2
∑
f(i),
i∈r1−
que pode ser obtido (experimentalmente) em O(log 2 N) passos [1, 7]. A média será diferente de
zero se, e somente se, o conjunto r 1− contiver o elemento procurado i 0 . Dessa maneira, podemos
descartar a metade dos elementos da lista. O próximo passo é então particionar o conjunto que
contém i 0 e aplicar novamente o operador U f . Supondo que N = 2 n , após a primeira partição,
a lista terá 2 n −1 elementos. Repetindo o processo, obtemos partições com 2 n −2 , 2 n −3 , ..., 2 1 e
2 0 elementos. Portanto, para reduzir a lista a apenas um elemento (i 0 ), são necessárias n =
log 2 N divisões. Ou seja, o número de aplicações do operador U f é O(log 2 N).
4
Exemplo
Para exemplificar, aplicaremos o algoritmo de Brüschweiler em uma lista com 8
elementos: {0, 1, 2, 3, 4, 5, 6, 7}. Vamos supor que o elemento procurado seja o número 4.
O primeiro passo do algoritmo é dividir a lista em duas de mesmo tamanho:
r 1− = {0, 1, 2, 3}
2074
e
r 1+ = {4, 5, 6, 7}.
O primeiro registrador é inicializado como o ensemble
1
1
1
1
, |0⟩), ( , |1⟩), ( , |2⟩), ( , |3⟩)},
4
4
4
4
{(
e o segundo registrador como o ensemble {1, |0⟩}. A matriz densidade associada aos dois
registradores é dada por
ρ=
1
((|0⟩⟨0| ⊗ |0⟩⟨0|) + (|1⟩⟨1| ⊗ |0⟩⟨0|) + (|2⟩⟨2| ⊗ |0⟩⟨0|) + (|3⟩⟨3| ⊗ |0⟩⟨0|)).
4
Aplicando U f sobre ρ, obtemos:
1
((|0⟩⟨0| ⊗ |f(0)⟩⟨f(0)|) + (|1⟩⟨1| ⊗ |f(1)⟩⟨f(1)|) +
4
U f ρU +f =
(|2⟩⟨2| ⊗ |f(2)⟩⟨f(2)|) + (|3⟩⟨3| ⊗ |f(3)⟩⟨f(3)|))
=
1
((|0⟩⟨0| ⊗ |0⟩⟨0|) + (|1⟩⟨1| ⊗ |0⟩⟨0|) +
4
(|2⟩⟨2| ⊗ |0⟩⟨0|) + (|3⟩⟨3| ⊗ |0⟩⟨0|)).
O ensemble associado ao segundo registrador é
{(
1
1
1
1
, |0⟩), ( , |0⟩), ( , |0⟩), ( , |0⟩)}.
4
4
4
4
Calculando a média , temos f = 0, o que significa que o elemento procurado está no conjunto
r 1+ = {4, 5, 6, 7}. As duas novas partições são:
r −2 = {4, 5}
e
r +2 = {6, 7}.
O primeiro registrador é reinicializado como o ensemble
{(
1
1
, |4⟩), ( , |5⟩)},
2
2
e o segundo registrador como o ensemble {1, |0⟩}. A matriz densidade associada aos dois
registradores é
ρ=
1
((|4⟩⟨4| ⊗ |0⟩⟨0|) + (|5⟩⟨5| ⊗ |0⟩⟨0|)).
2
Aplicando U f sobre ρ, obtemos:
2075
1
((|4⟩⟨4| ⊗ |f(4)⟩⟨f(4)|) + (|5⟩⟨5| ⊗ |f(5)⟩⟨f(5)|))
2
1
= ((|4⟩⟨4| ⊗ |1⟩⟨1|) + (|5⟩⟨5| ⊗ |0⟩⟨0|))
2
U f ρU +f =
O ensemble associado ao segundo registrador é
{(
Calculando a média , temos f =
1
1
, |1⟩), ( , |0⟩)}.
2
2
1
. O conjunto que contém o elemento procurado é então o
2
conjunto r
2076
O enfoque dado trata apenas da parte teórica. Entretanto, já existem resultados
experimentais que implementam o algoritmo usando técnicas de ressonâcia magnética nuclear
[1, 7].
Um deficiência dos algoritmos baseados em ensembles é que o custo de armazenamento
dos dados do problema é proporcional a quantidade desses dados [1, 7]. Por outro lado, os
algoritmos baseados em ensembles não apresentam o problema da descoerência [8], que é uma
das principais dificuldades na implementação dos algoritmos quânticos.
O desenvolvimento de algoritmos quânticos ainda é uma área muito recente e pouco
explorada. Entretanto, já existem aplicações em problemas de otimização [9] e em problemas
envolvendo grafos [2, 5]. Trabalhos neste sentido estão em andamento.
Referências
[1] R. Brüschweiler, Novel strategy for database searching in spin Liouville space by NMR
ensemble computing, Phys. Rev. Lett., 85 (2000), 4815-4818.
[2] C. Dürr, M. Mhalla, and Y. Lei, Quantum query complexity of graph connectivity, arXiv:
quant-ph/0303169, (2003).
[3] L.K. Grover, A fast quantum mechanical algorithm for database search, Proc. 28th Annual
ACM Symposium on the Theory of Computing (STOC), (1996), 212-219.
[4] L.K. Grover, Quantum Mechanics helps in searching for a needle in a haystack, Phys. Rev.
Lett., 79 (1997), 325-328.
[5] M. Heiligman, Quantum algorithms for lowest weight paths and spanning trees in complete
graphs, arXiv: quant-ph/0303131, (2003).
[6] C. Lavor, L.R.U. Manssur e R. Portugal, Grover’s Algorithm: Quantum Database Search,
arXiv: quant-ph/0301079, (2003).
[7] Z.L. Madi, R. Brüschweiler, and R.R. Ernst, One- and two-dimensional ensemble quantum
computing in spin Liouville space, J. Chem. Phys, 109 (1998), 10603-10611.
[8] M.A. Nielsen e I.L. Chuang, Quantum Computation and Quantum Information, Cambridge
University Press, Cambridge (2000).
[9] V. Protopopescu, C. D’Helon, and J. Barhen, Exponentially fast solution to the global
optimization problem using Brüschweiler’s ensemble search algorithm , arXiv: quantph/0301007, (2003).
[10] P. Shor, Algorithms for Quantum Computation: Discrete logarithms and factoring, SIAM
J. Comp., 26 (1997), 1484-1509.
2077
Download