• Nenhum resultado encontrado

UMA NOVA DEMONSTRAÇÃO DA COMPLEXIDADE DO ALGORITMO DE GROVER

N/A
N/A
Protected

Academic year: 2021

Share "UMA NOVA DEMONSTRAÇÃO DA COMPLEXIDADE DO ALGORITMO DE GROVER"

Copied!
10
0
0

Texto

(1)

A pesquisa Operacional e os Recursos Renováveis 4 a 7 de novembro de 2003, Natal-RN

UMA NOVA DEMONSTRAÇÃO DA COMPLEXIDADE

DO ALGORITMO DE GROVER

Carlile Lavor

Universidade do Estado do Rio de Janeiro (IME-UERJ)

Rua São Francisco Xavier 524, 6o 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, 6o 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. Dentre os algoritmos quânticos, o algoritmo de Grover é o que tem um impacto mais

importante na área de Pesquisa Operacional. Originalmente, ele foi utilizado para resolver o seguinte problema: tem-se uma lista não ordenada com N elementos e deseja-se localizar um elemento específico. O melhor algoritmo clássico resolve este problema em O(N) passos.

Surpreendentemente, o algoritmo de Grover resolve o problema em O(

N

) passos. Isso é

obtido devido às propriedades da Mecânica Quântica. Neste artigo, apresentamos os conceitos necessários para a compreensão do algoritmo de Grover e damos uma nova demonstração de sua complexidade.

Palavras-chave: Algoritmos Quânticos, Busca Quântica, Algoritmo de Grover.

Abstract. Grover’s algorithm is the most important quantum algorithm that can be applied in

the field of Operations Research. Originally, it was used to solve the following problem: suppose we have an unstructured database with N elements and we wish to search for a particular one. The best classical algorithm solves this problem requiring O(N) steps. Remarkably, using the properties of Quantum Mechanics, Grover’s algorithm requires only

O(

N

) steps. In this paper, we give the concepts necessary to understand the algorithm and

present a new demonstration of its complexity.

(2)

1 Introdução

O algoritmo de Grover [3, 4, 6] foi aplicado, inicialmente, em um problema de busca: tem-se uma lista não ordenada com N elementos e deseja-se localizar um elemento específico. O melhor algoritmo clássico resolve este problema em O(N) passos, enquanto que o algoritmo de

Grover requer, apenas, O(

N

) passos. Este resultado é obtido usando as propriedades da

Mecânica Quântica.

Neste artigo, apresentamos uma nova demonstração da complexidade do algoritmo de Grover, baseada na sua interpretação geométrica.

O texto está organizado da seguinte forma. Na seção 2, damos a interpretação física de um qubit. Na seção 3, descrevemos o algoritmo, e, na seção 4, apresentamos uma interpretação geométrica. Na seção 5, demonstramos sua complexidade e finalizamos com a seção 6.

2 O bit quântico (qubit)

Um qubit |ψ〉 é uma combinação linear

|ψ〉 = α|0〉 + β|1〉, (1)

onde α e β são números complexos e os vetores |0〉 e |1〉 são representados por

|0〉 =

0

1

e |1〉 =

1

0

.

A interpretação física do vetor |ψ〉, em (1), é que ele está simultaneamente nos estados |0〉 e |1〉. Isso faz com que, a princípio, a quantidade de informação que pode ser armazenada no estado |ψ〉 seja infinita. Entretanto, essa informação está no nível quântico. Para torná-la acessível no nível clássico, precisamos fazer uma medida. A mecânica quântica diz que o processo de

medida altera o estado de um qubit, fazendo-o assumir o estado |0〉, com probabilidade |α|2, ou

o estado |1〉, com probabilidade |β|2 [8]. Isso significa que os valores α e β não podem ser

conhecidos através de uma medida. Com apenas duas possibilidades, |0〉 ou |1〉, temos então que |α|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].

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

Cm×n e B

Cp×q , como

(A ⊗ B)ij = (A)ijB,

onde i = 1, ..., m e j = 1, ..., n. Usaremos também a notação |v〉|w〉 ou |vw〉 para o produto tensorial |v〉 ⊗ |w〉.

(3)

Com o produto tensorial, podemos então generalizar o que vimos para o caso de um

qubit. Um estado qualquer |ψ〉 com n qubits é uma superposição de N = 2n estados da base

computacional {|0〉, ..., |N − 1〉}, dada por |ψ〉 =

− = 1 0 N i αi|i〉, onde

− = 1 0 N ii|2 = 1.

Note que a base computacional está representada em notação decimal.

3 O algoritmo de Grover

Originalmente, o algoritmo de Grover foi aplicado em um problema de busca [3, 4, 6]: tem-se uma lista não ordenada com N elementos e deseja-se localizar um elemento específico. O melhor algoritmo clássico para resolver este problema tem complexidade O(N). Entretanto, usando as propriedades da mecânica quântica, o algoritmo de Grover resolve o problema em

O(

N

) passos.

Sem perda de generalidade, vamos supor que a busca será realizada sobre a lista {0, 1,

..., N − 1}, onde N = 2n para algum número natural n, e que a função f : {0, 1, ..., N − 1} → {0,

1}, definida por f(i) = 0 0 1, 0, se i i se i i =    (2)

será utilizada para o reconhecimento do elemento procurado i0.

O algoritmo de Grover utiliza 2 registradores quânticos: o primeiro, com n qubits, inicializado no estado |0...0〉, e o segundo, com 1 qubit, inicializado no estado |1〉. Antes da execução do algoritmo, o primeiro registrador é modificado, formando uma superposição de todos os estados da base computacional {|0〉, ..., |N − 1〉}. Isso pode ser obtido aplicando o operador de Hadamard H em cada qubit do primeiro registrador. O operador H é dado por

H = 2 1 1 1 1 1      .

É fácil ver que

H|0〉 =

2 1

(|0〉 + |1〉).

Isto é, aplicando o operador H sobre o estado |0〉, obtemos uma superposição dos estados |0〉 e |1〉, em que a probabilidade de se obter um dos estados, ao se fazer uma medida do estado H|0〉, é a mesma: 50%. Aplicando o operador H em cada qubit de um registrador com 2 qubits, temos:

(4)

= 2 1 (|0〉 + |1〉) ⊗ 2 1 (|0〉 + |1〉) =

2

1

(|00〉 + |01〉 + |10〉 + |11〉). Em notação decimal, H⊗2|00〉 =

2

1

(|0〉 + |1〉 + |2〉 + |3〉).

Generalizando para estados com n qubits, obtemos (N = 2n):

Hn(|0...0〉) = (H|0〉)n = ( 2 1 (|0〉 + |1〉))⊗n = N 1

− = 1 0 N i |i〉.

Esse estado será denotado por |ψ〉. Aplicando então o operador H em cada qubit do primeiro registrador, obtemos uma superposição de todos os estados da base computacional.

Para completar a inicialização do algoritmo, o operador H também é aplicado sobre o estado inicial do segundo registrador, resultando em

H|1〉 =

2

1 (|0〉 − |1〉).

Esse estado será denotado por |−〉.

No algoritmo de Grover, a função f, em (2), utilizada para a identificação do elemento

procurado, é representada por um operador unitário Uf , definido por

Uf (|i〉|j〉) = |i〉|j⊕f(i)〉, (3)

onde |i〉 é o estado de n qubits do primeiro registrador, |j〉 é o estado de 1 qubit do segundo

registrador e ⊕ é a soma modulo 2.

No primeiro passo do algoritmo, o operador Uf é aplicado sobre o estado (|ψ〉|−〉),

resultante da inicialização: Uf (|ψ〉|−〉) = Uf (( N 1

− = 1 0 N i |i〉)|−〉) = N 1

− = 1 0 N i Uf (|i〉|−〉) = N 1

− = 1 0 N i 2 1 (Uf(|i〉|0〉) − Uf (|i〉|1〉)) = N 1

− = 1 0 N i 2 1

(5)

= N 1

− = 1 0 N i 2 1

(|i〉(| f(i)〉 − |1⊕ f(i)〉)) = N 1 (

− ≠ = 1 , 0 0 N i i i 2 1 (|i〉(|0〉 − |1〉)) − 2 1 (|i0〉(|0〉 − |1〉))). = N 1

− = 1 0 N i ((−1)f(i)|i〉|−〉) = (

− = 1 0 N i N 1 (−1)f(i)|i〉)|−〉.

Note que o estado do segundo registrador não se altera e o estado do primeiro registrador torna-se uma superposição de todos os estados da batorna-se computacional onde a amplitude do elemento procurado foi alterada de (

N

1 ) para (−

N

1

). O novo estado do primeiro registrador será denotado por |ψ1〉.

Após a aplicação do operador Uf , algo notável ocorreu. Além da função f ter sido

avaliada simultaneamente em todos os elementos da lista onde está sendo feita a busca (paralelismo quântico [8]), o estado associado ao elemento procurado foi identificado como sendo o único com amplitude negativa. Entretanto, essa informação só está disponível quanticamente. Não vai adiantar fazer uma medida agora, pois a probabilidade de obtermos o elemento procurado é |− N 1 |2 =

N

1

.

O estado resultante do primeiro registrador, ao final do primeiro passo do algoritmo, é |ψ1〉 =

− = 1 0 N i ( N 1 (−1)f(i)|i〉),

que pode ser reescrito como

1〉 = |ψ〉 − N 2 |i0〉, (4) onde |ψ〉 = N 1

− = 1 0 N i |i〉 (5) e i0 é o elemento procurado.

O próximo passo será aumentar a probabilidade do elemento procurado ser obtido, após uma medida. Para isso, aplicaremos o operador (2|ψ〉〈ψ| − I) (I é o operador identidade) sobre o

(6)

G〉 = (2|ψ〉〈ψ| − I)|ψ1〉 = (2|ψ〉〈ψ| − I)(|ψ〉 − N 2 |i0〉) = (2〈ψ|ψ〉)|ψ〉 − ( N 4 〈ψ|i0〉)|ψ〉 − |ψ〉 + N 2 |i0〉. (6) De (5), 〈ψ|i0〉 = N 1

− = 1 0 N i 〈i|i0〉 = N 1 . (7) Substituindo (7) em (6), temos: |ψG〉 = (

N

N

4

)|ψ〉 + N 2 |i0〉. (8) Esse é o estado do primeiro registrador, ao final do segundo passo do algoritmo. O estado do segundo registrador permanece inalterado (|−〉).

De (5) e (8), obtemos a amplitude do estado |i0〉, ao final do segundo passo do

algoritmo: (

N

N

4

)( N 1 ) + N 2 = N N N 4 3 − .

Por exemplo, para N = 4, a probabilidade de obtermos o elemento procurado, após uma medida, passa de 25% (final do primeiro passo) para 100%. No entanto, para valores grandes de N, a

probabilidade ainda é pequena. A idéia é, então, repetir a aplicação dos operadores Uf e

(2|ψ〉〈ψ| − I) (a composição desses dois operadores é chamada de operador de Grover G). O número de vezes que o operador G deve ser aplicado será obtido com base na interpretação geométrica do algoritmo (note que todos os estados e amplitudes considerados no algoritmo estão em Rn).

4 Interpretação geométrica

A seguir, daremos uma interpretação geométrica para os dois operadores que formam o operador de Grover G.

Seja |i〉, um estado qualquer da base computacional {|0〉, ..., |N − 1〉}. Da definição de

Uf , em (3), Uf (|i〉|−〉) = 2 1 (Uf (|i〉(|0〉 − |1〉))) = 2 1 (Uf (|i〉|0〉) − Uf (|i〉|1〉)) = 2 1 (|i〉|f(i)〉 − |i〉|1 f(i)〉).

(7)

Da mesma forma que fizemos no cálculo de Uf(|ψ〉|−〉), Uf(|i〉|−〉) = (−1)f(i)|i〉|−〉. Ou seja, se i i0, então Uf(|i〉|−〉) = |i〉|−〉, e, se i = i0, então Uf (|i〉|−〉) = − |i0〉|−〉.

Aplicando Uf sobre um vetor qualquer gerado pelos elementos da base computacional {|0〉, ...,

|N − 1〉}, temos (omitimos o segundo registrador):

Uf((

− ≠ = 1 , 0 0 N i i i αi|i〉) + α 0 i |i0〉) = (

− ≠ = 1 , 0 0 N i i i αiUf|i〉) + α 0 i Uf |i0〉 = (

− ≠ = 1 , 0 0 N i i i αi|i〉) − α 0 i |i0〉.

Da expressão acima, podemos concluir que a aplicação do operador Uf sobre um vetor

qualquer gerado pelos elementos da base computacional {|0〉, ..., |N − 1〉}, resulta numa reflexão

desse vetor em relação ao subespaço ortogonal à |i0〉, gerado por todos os outros elementos da

base computacional.

Vejamos agora, a interpretação geométrica do operador (2|ψ〉〈ψ| − I). Aplicando esse operador sobre um vetor unitário |a〉 qualquer, gerado pelos elementos da base computacional {|0〉, ..., |N − 1〉}, obtemos:

|b〉 = (2|ψ〉〈ψ| − I)|a〉 = 2〈ψ|a〉|ψ〉 − |a〉. (9) O ângulo β entre |ψ〉 e |b〉 é dado por

cosβ = 〈ψ|b〉

= 2〈ψ|a〉〈ψ|ψ〉 − 〈ψ|a〉 = 〈ψ|a〉,

que é o co-seno do ângulo α entre |ψ〉 e |a〉. Como α, β ∈ [0, π], α = β. Usando este fato e a expressão em (9), podemos concluir que a aplicação do operador (2|ψ〉〈ψ| − I) sobre um vetor unitário |a〉 resulta em um vetor do subespaço gerado por |ψ〉 e |a〉, que é uma reflexão do vetor |a〉 em relação ao vetor |ψ〉.

Com essas duas interpretações geométricas, podemos finalmente determinar o número de vezes que o operador de Grover deve ser aplicado.

(8)

5 Complexidade do algoritmo de Grover

Da expressão (7), vemos que o ângulo entre os vetores |ψ〉 e |i0〉 é menor do que 90º.

Seja θ, o ângulo entre os vetores |ψ〉 e G|ψ〉. De (7) e (8), cosθ = 〈ψ|G|ψ〉 =

N

N

4

〈ψ|ψ〉 + N 2 〈ψ|i0〉 =

N

N

4

+ N 2 ( N 1 ) = 1 −

N

2

, (10) e, de (4) e (7), 〈ψ|ψ1〉 = 〈ψ|ψ〉 − N 2 〈ψ|i0〉 = 1 − N 2 ( N 1 ) = 1 −

N

2

.

Portanto, o ângulo entre os vetores |ψ〉 e |ψ1〉 também é θ. A diferença é que as rotações, a

partir de |ψ〉, são em sentidos opostos ((4) e (8)). Note que as rotações são realizadas no subespaço gerado por |ψ〉 e |i0〉 (este subespaço será denotado por V0).

Do exposto acima e de (8), concluímos que, após uma aplicação do operador G sobre

|ψ〉, o ângulo γ entre |i0〉 e |ψ〉 diminui de θ radianos. Mostraremos que esse resultado vale para

cada aplicação de G.

Sejam |σ〉, um vetor unitário de V0 tal que o ângulo entre |i0〉 e |σ〉 seja γ − α11 é

então o ângulo entre |σ〉 e |ψ〉); |σ1〉, o estado do primeiro registrador após a aplicação do

operador Uf sobre |σ〉|−〉; e α2, o ângulo entre |ψ〉 e |σ1〉 (ver figura abaixo). Note que, pelo

(9)

O vetor G|σ〉 também está em V0, pois

G|σ〉 = (2|ψ〉〈ψ| − I) Uf|σ〉 = (2|ψ〉〈ψ| − I) |σ1〉 = 2〈ψ|σ1〉|ψ〉 − |σ1〉 = 2cosα2|ψ〉 − |σ1〉.

Como |σ1〉 está em V0, o mesmo acontece para G|σ〉 (omitimos o estado do segundo registrador

|−〉). Calculemos o ângulo entre |σ〉 e G|σ〉:

〈σ|G|σ〉 = 2cosα2〈σ|ψ〉 − 〈σ|σ1

= 2cosα2cosα1 − cos(α1 + α2)

= cos(α2 − α1).

G|σ〉 é o resultado da aplicação do operador (2|ψ〉〈ψ| − I) sobre o vetor |σ1〉. Portanto, como

vimos na seção anterior, G|σ〉 é a reflexão de |σ1〉 em relação ao vetor |ψ〉. Por sua vez, isso

implica que o ângulo entre |ψ〉 e |σ1〉 seja igual ao ângulo entre |ψ〉 e G|σ〉. Como o ângulo entre

1〉 e |σ1〉 é α1, e, o ângulo entre |ψ1〉 e |ψ〉 é θ, então,

α2 = α1 + θ ⇒ α2 − α1 = θ.

Conclusão: o ângulo entre os vetores |σ〉 e G|σ〉 também é θ. O fato de G ser um operador

unitário garante que o ângulo entre |i0〉 e G|σ〉 é menor do que o ângulo entre |i0〉 e |σ〉 (veja a

figura acima e compare os ângulos entre |σ〉 e |ψ〉 e entre G|σ〉 e G|ψ〉).

Resta a pergunta: quantas aplicações k do operador G serão necessárias para que o ângulo entre |i0〉 e Gk|ψ〉 seja nulo? Isto é, qual é o valor de k tal que

0 = arccos(〈ψ|i0〉) − kθ ? Usando (7) e (10), 0 = arccos( N 1 ) − k(arccos(

N

N

2

)) ⇒ k = arccos( N 1 ) / arccos(

N

N

2

). Calculando o limite, temos:

∞ → N

lim

N k =

4

π

. Ou seja, k = O( N ). 6 Considerações finais

Neste trabalho, apresentamos uma nova demonstração da complexidade do algoritmo de Grover, baseada na sua interpretação geométrica.

(10)

Apesar de ser uma área ainda pouco explorada, os algoritmos quânticos já têm 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 and J. Barhen, Solving a class of continuous global optimization problems using quantum algorithms, Phys. Lett. A, 296 (2002), 9-14.

[10] P. Shor, Algorithms for Quantum Computation: Discrete logarithms and factoring, SIAM

Referências

Documentos relacionados