Algoritmo quântico para equações linearescollier/CursosGrad/QC/Julio_Zynger_Algoritmo... · C...
Transcript of Algoritmo quântico para equações linearescollier/CursosGrad/QC/Julio_Zynger_Algoritmo... · C...
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
INSTITUTO DE MATEMÁTICA
JÚLIO ZYNGER
Algoritmo quântico para equações
lineares
Prof. Severino Collier Coutinho, D.Sc.
Orientador
Rio de Janeiro, Março de 2015
Algoritmo quântico para equações lineares
Júlio Zynger
Projeto Final de Curso submetido ao Departamento de Ciência da Computação do
Instituto de Matemática da Universidade Federal do Rio de Janeiro como parte dos
requisitos necessários para obtenção do grau de Bacharel em Informática.
Apresentado por:
Júlio Zynger
Aprovado por:
Prof. Severino Collier Coutinho, D.Sc.
Prof. Luis Menasché Schechter, D.Sc.
Prof. Franklin de Lima Marquezino, D.Sc.
RIO DE JANEIRO, RJ - BRASIL
Março de 2015
Agradecimentos
Aos meus pais, herois de minha formação e inspiração diária, que tanto bata-
lharam para que alcançasse este momento e sempre dispostos a esforços para criar
oportunidades e abrir portas para meu caminhar intelectual. Assim também, agra-
deço a meus irmãos, avós, primos, tios e familiares, que sempre zeram entender
que o futuro é feito a partir da constante dedicação no presente!
Meus agradecimentos aos amigos, em especial aqueles com os quais dividi a sala
de aula desde o ensino fundamental, médio e aos que me acompanharam durante
a graduação, irmãos na amizade que zeram parte da minha formação e que vão
continuar presentes em minha vida com certeza.
Ao professor e grande mestre Collier, singular no método de ensino, e que me
permitiu enxergar mais longe no caminho acadêmico, desde o primeiro semestre na
Universidade, assim como ao longo do curso me inspirando no estudo da Compu-
tação. Agradeço a todos os professores por me proporcionar o conhecimento, não
apenas racional, e pelo tanto que se dedicaram a mim, não somente por terem me
ensinado, mas por terem me feito aprender.
À Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES) pelo
incentivo à educação através da bolsa de intercâmbio aos Estados Unidos pelo pro-
grama Ciência Sem Fronteiras.
A todos que direta ou indiretamente zeram parte de minha formação, o meu
muito obrigado.
חי ישראל Mע
i
RESUMO
Algoritmo quântico para equações lineares
Júlio Zynger
Março/2015
Orientador: Severino Collier Coutinho, D.Sc.
Algoritmos quânticos têm sido apresentados como o futuro do processamento de
informação. O aumento de eciência por vezes exponencial atrai a atenção para o
desenvolvimento de rotinas presentes em diversos campos da ciência. Neste artigo,
revisitamos um algoritmo quântico que aproxima a solução de um sistema linear
do tipo Ax = b, comparando-o com suas contra-partes clássicas e apresentando os
resultados experimentais obtidos mais recentemente.
ii
ABSTRACT
Algoritmo quântico para equações lineares
Júlio Zynger
Março/2015
Advisor: Severino Collier Coutinho, D.Sc.
Quantum algorithms have been presented as the future of information processing.
The increased eciency sometimes exponential attracts attention to the development
of routines present in many elds of science. In this article, we revisit a quantum
algorithm that approximates the solution of a linear system of type Ax = b, comparing
it with its classical counterparts and presenting the experimental results obtained
more recently.
iii
Lista de Figuras
Figura 2.1: Representação da porta lógica quântica CNOT. . . . . . . . . . . . 21
Figura 2.2: Representação da porta lógica quântica de Fredkin. . . . . . . . . . 22
Figura 2.3: Exemplos de portas quânticas comuns em circuitos. . . . . . . . . . 24
Figura 2.4: Representação de qubits através da polarização de fótons, em que
V e H representam a polarização vertical e horizontal, respecti-
vamente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Figura 3.1: Exemplo de ajuste de curva, com pontos gerados por uma fun-
ção Seno, aproximada por curvas polinomiais (vermelho, verde,
laranja e azul representam primeiro, segundo, terceiro e quarto
graus, respectivamente) [1] . . . . . . . . . . . . . . . . . . . . . . . . 36
Figura 3.2: Circuito para resolução de sistemas lineares, adaptado de [2], em
que REC representa a rotina de cálculo do recíproco dos autova-
lores λj da matriz A. . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Figura 3.3: Etapa inicial de transformação dos registradores C e B. . . . . . . 42
Figura 3.4: Aplicação da simulação hamiltoniana controlada. . . . . . . . . . . 44
Figura 3.5: Circuito implementando cada passo iterativo do método de New-
ton, adaptado de [2]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Figura 4.1: Resultados obtidos, adaptado de [3]. . . . . . . . . . . . . . . . . . . 54
Figura 4.2: Resultados obtidos, adaptado de [4]. . . . . . . . . . . . . . . . . . . 55
iv
Figura 4.3: Resultados obtidos, adaptado de [5]. . . . . . . . . . . . . . . . . . . 56
Figura 5.1: Circuito quântico para resolução do sistema Ax = b com A2×2 e
precisão m na etapa de rotação. De cima para baixo temos o
qubit auxiliar, três qubits para o registrador C e um qubit que
armazena ∣b⟩ . Adaptado de [2]. . . . . . . . . . . . . . . . . . . . . . 59
Figura A.1: Circuito quântico que implementa a transformada de Fourier quân-
tica, omitindo portas SWAP para reversão de ordem de qubits e
fatores de normalização ao nal, adaptado de [6]. . . . . . . . . . . 69
Figura B.1: Circuito quântico que implementa o teste SWAP. . . . . . . . . . . 71
Figura D.1: Os grácos exibem as bacias de atração das funções x2 − 2x e
x3 − 3x [7]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Figura D.2: Bacias de atração de x5 − 1, em que as zonas mais escuras re-
presentam regiões em que são necessárias mais iterações para a
convergência de aproximações. . . . . . . . . . . . . . . . . . . . . . 78
v
Sumário
Agradecimentos i
Resumo ii
Abstract iii
Lista de Figuras iv
1 Introdução 1
2 Conceitos 3
2.1 Álgebra Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Independência Linear e Bases . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Operadores Lineares e Matrizes . . . . . . . . . . . . . . . . . . . 5
2.1.2.1 Matrizes esparsas . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 Produto hermitiano e tensor . . . . . . . . . . . . . . . . . . . . . 6
2.1.4 Autovalores e autovetores . . . . . . . . . . . . . . . . . . . . . . 8
2.1.4.1 Número de condição . . . . . . . . . . . . . . . . . . . . 9
2.1.5 Matrizes de Pauli . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.6 Adjuntos e operadores Hermitianos . . . . . . . . . . . . . . . . 10
vi
2.1.6.1 Todo operador Hermitiano é Diagonalizável . . . . . . 11
2.1.6.2 Funções de operadores . . . . . . . . . . . . . . . . . . 12
2.1.7 Espaço de Hilbert . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.8 Mecânica Quântica: evolução de Schrödinger . . . . . . . . . . . 14
2.1.9 Mecânica Quântica: medições projetivas . . . . . . . . . . . . . 15
2.1.9.1 Observáveis . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.10 Mecânica Quântica: emaranhamento . . . . . . . . . . . . . . . . 16
2.2 Computação Quântica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 Bits quânticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2 Portas Lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2.1 Reversibilidade . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.2.2 A porta CNOT . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.2.3 A porta de Fredkin . . . . . . . . . . . . . . . . . . . . 22
2.2.3 Circuitos Quânticos . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.4 Paralelismo Quântico . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.5 Transformada de Fourier Quântica . . . . . . . . . . . . . . . . . 26
2.2.6 Computação Quântica com Ótica Linear . . . . . . . . . . . . . 27
3 O algoritmo de Harrow, Hassidim e LLoyd 30
3.1 Caso clássico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.1 Eliminação de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.2 Método do Gradiente Conjugado . . . . . . . . . . . . . . . . . . 32
3.2 Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
vii
3.3 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.1 Estados estáveis de processos estocásticos . . . . . . . . . . . . . 35
3.3.2 Ajuste Quântico de Dados e Aprendizado de Máquina . . . . . 35
3.4 Preparação da entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.1 Simulação hamiltoniana . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.2 Codicando b em ∣b⟩ . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5 O algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.1 Registradores C e B . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5.1.1 Balanceamento de Hadamard . . . . . . . . . . . . . . 42
3.5.1.2 Evolução hamiltoniana . . . . . . . . . . . . . . . . . . 42
3.5.1.3 Transformada de Fourier . . . . . . . . . . . . . . . . . 44
3.5.1.4 Simplicação do estado . . . . . . . . . . . . . . . . . . 45
3.5.2 Inversão de autovalores . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.3 Rotação controlada . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.5.4 Computação reversa . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5.5 Medição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4 Resultados e trabalhos relacionados 52
4.1 Comparação de eciência: Clássico × Quântico . . . . . . . . . . . . . . 52
4.2 Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2.1 Barz et. al [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.2.2 Pan et. al [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2.3 Cai et. al [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
viii
5 Implementação 57
6 Trabalhos Futuros 61
Referências 63
A Transformada de Fourier Quântica 67
B Teste SWAP 71
C Amplicação de Amplitude 73
D Método de Newton 76
D.1 Convergência Quadrática . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
D.2 Funções Complexas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
E Implementação Scilab para A2×2 80
F Resultado da execução Scilab para A2×2 88
ix
Capítulo 1
Introdução
Sistemas de equações lineares são de importância ímpar em vários campos da
ciência, desde ciências naturais, engenharia e medicina até as ciências sociais, e a
resolução de tais sistemas é a base para muitas tecnologias modernas como previsão
do tempo e tomograas computadorizadas. O problema da resolução remonta a
épocas muito antigas, mas algoritmos de obtenção de valores para as variáveis em
sistemas de qualquer dimensão começaram a se desenvolver a partir do século XIX.
Hoje, os sistemas lineares envolvem petabytes de dados e, dessa forma, o número
de variáveis necessárias para modelá-los é extremamente grande, dicultando sua
resolução, e assim, cando limitados até mesmo quando são usados os melhores
supercomputadores modernos.
A capacidade de obter uma melhor eciência na execução de certas tarefas tem
atraído grande atenção e interesse no desenvolvimento de algoritmos quânticos, que
se beneciam do princípio de superposição de estados da mecânica quântica para
alcançar aumentos de velocidade até mesmo exponenciais, quando comparados com
suas contra-partes clássicas. Exemplos notáveis incluem algoritmos de simulação de
sistemas físicos quânticos e o algoritmo de fatoração de Shor.
Recentemente, Harrow, Hassidim e Lloyd [8] propuseram um algoritmo quântico
para a resolução de sistemas lineares, que como demonstraram, é exponencialmente
mais rápido do que um computador clássico na tarefa de obter valores médios e
2
propriedades da solução.
Neste trabalho, além de apresentarmos tal algoritmo, descrevendo também as ba-
ses teóricas da álgebra linear e mecânica quântica requeridas para seu entendimento,
analisaremos sua eciência e complexidade e destacaremos alguns experimentos fí-
sicos realizados que comprovam seu funcionamento.
Capítulo 2
Conceitos
Para garantirmos um melhor entendimento do conteúdo deste trabalho, apresen-
taremos aqui os conceitos básicos sobre o campo de estudo referido na execução do
algoritmo a ser apresentado a seguir. Porém, assim como os conceitos de computação
quântica requerem um conhecimento prévio da mecânica quântica, esta por sua vez
pressupõe um estudo de álgebra linear elementar. Uma vez com este conhecimento-
fundação, consideramos que o leitor leigo seja capaz de trabalhar sobre problemas
simples da área sem conhecimento prévio da matéria.
A primeira seção do capítulo introduz algumas denições e notações utilizadas
em álgebra linear, e apresenta alguns conceitos de mecânica quântica necessários
para o entendimento do algoritmo de resolução de sistemas lineares. A seção sub-
sequente apresenta conceitos de computação quântica, e estabelece paralelos com
o que já é conhecido dos métodos clássicos, iniciando-se por noções básicas sobre
os bits quânticos e levando ao entendimento mais complexo dos circuitos quânticos,
tratando ainda do caso especial conhecido como a transformada de Fourier em seu
viés quântico.
2.1. ÁLGEBRA LINEAR 4
2.1 Álgebra Linear
A álgebra linear é um ramo da matemática surgido do estudo das equações line-
ares (algébricas e diferenciais) que se utiliza de conceitos e estruturas fundamentais
da matemática como vetores, espaços vetoriais, transformações lineares e matrizes.
O uso de tais estruturas em áreas como relatividade geral, estatística, e mecânica
quântica deu a importância à álgebra linear nos dias de hoje, e é possivel notar sua
presença em vários campos do conhecimento moderno e suas aplicações no dia-dia,
passando desde as técnicas de otimização de sistemas da programação linear ao pro-
cessamento de imagens e cálculos físicos e matemáticos que possibilitam a inovação
em vários campos tecnológicos.
Os espaços vetoriais são os objetos básicos do estudo da álgebra linear, sendo
o espaço de todas as n-uplas de números complexos, conhecido por Cn, o mais
interessante para nosso estudo. Cada elemento deste espaço vetorial é chamado
vetor, comumente representado por uma matriz-coluna, e admite as operações de
adição e multiplicação por um escalar complexo.
Uma vez que a mecânica quântica é nossa principal motivação para o estudo
da álgebra linear, utilizaremos as notações da mesma para os conceitos algébricos
apresentados. A notação padrão para um vetor ca então representada por
∣ψ⟩ (2.1)
onde ψ é o rótulo do vetor (qualquer rótulo é válido, embora seja comum utilizar ψ
e φ), e a notação ∣.⟩ é usada para indicar que o objeto é um vetor.
2.1.1 Independência Linear e Bases
Um conjunto gerador de um espaço vetorial é um conjunto de vetores ∣v1⟩ , ..., ∣vn⟩
de forma que qualquer vetor ∣v⟩ no espaço vetorial pode ser escrito como a combi-
nação linear dos vetores naquele conjunto; isto é,
∣v⟩ =∑i
ai ∣vi⟩ , (2.2)
2.1. ÁLGEBRA LINEAR 5
em que a1,⋯, an ∈ C. Um espaço vetorial pode ter muitos conjuntos geradores
diferentes.
Denição: Independência Linear
Um conjunto de vetores não-nulos ∣v1⟩ ,⋯, ∣vn⟩ é linearmente dependente se existe
um conjunto de números complexos a1,⋯, an com pelo menos um ai ≠ 0 tais que
a1 ∣v1⟩ + a2 ∣v2⟩ +⋯ + an ∣vn⟩ = 0. (2.3)
Dizemos que um conjunto de vetores é linearmente independente se não for line-
armente dependente.
Denição: Base
A base de um espaço vetorial V é denida como um subconjunto v1,⋯, vn dos
vetores de V que são linearmente independentes e que geram V .
Dois conjuntos de vetores linearmente independentes que geram V contêm o
mesmo número de elementos. Cada um destes conjuntos é uma base de V.
Além disso, pode ser demonstrado que todo espaço vetorial nitamente gerado
admite uma base. O número de elementos na base do espaço V é a dimensão de V.
2.1.2 Operadores Lineares e Matrizes
Uma transformação linear é uma aplicação entre dois espaços vetoriais V → W
que preserva as operações de adição e multiplicação por escalar. No caso em que
V = W , a transformação é chamada de operador linear (ou endomorsmo de V ),
sendo linear em cada entrada de seu domínio. Assim, se A é um operador linear,
então
A(∑i
ai ∣vi⟩) =∑i
aiA ∣vi⟩ . (2.4)
Todos os operadores lineares podem ser representados na forma matricial: uma
matriz A com dimensão m×n e entradas Aij representa um operador linear que leva
2.1. ÁLGEBRA LINEAR 6
vetores do espaço vetorial Cn no espaço vetorial Cm, sob a multiplicação da matriz
A por um vetor de Cn. Da mesma forma, um operador linear A ∶ V →W pode ser
representado por uma matriz de forma que, se ∣v1⟩ ,⋯, ∣vm⟩ for uma base de V e
∣w1⟩ ,⋯, ∣wn⟩ for uma base de W , temos números complexos A1j a Anj (1 ≤ j ≤m)
tais que
A ∣vj⟩ =n
∑i=1Aij ∣wi⟩ . (2.5)
2.1.2.1 Matrizes esparsas
Deniremos aqui o que chamamos de matriz esparsa, conceito este que será
uma das hipóteses do algoritmo apresentado no capítulo 3. Uma matriz esparsa é
aquela cuja maioria dos elementos vale zero - a fração de elementos com valor nulo
é chamada esparsidade.
Por exemplo, a matriz⎛⎜⎜⎜⎜⎜⎜⎜⎜⎝
0 8 0 0
5 0 0 0
0 0 3 0
0 0 0 6
⎞⎟⎟⎟⎟⎟⎟⎟⎟⎠
(2.6)
tem dimensão 4 × 4 apesar de apresentar somente 4 elementos diferentes de zero.
Armazenar e manipular matrizes esparsas em um computador pode ser feito
de forma mais eciente do que uma matriz genérica, quando utilizamos algoritmos
especializados que se beneciam da estrutura vazia da matriz.
2.1.3 Produto hermitiano e tensor
O produto hermitiano é uma função de dois vetores de determinado espaço ve-
torial cuja imagem é um escalar complexo. A notação usual do produto interno
dos vetores u e v é por ⟨u, v⟩ mas, levando em consideração a notação da mecânica
quântica para vetores ∣u⟩ e ∣v⟩ , o produto hermitiano será representado por ⟨u∣v⟩
em que ⟨u∣ é o vetor dual de ∣u⟩ , isto é, seu transposto-conjugado.
Matematicamente, se ∣u⟩ = ∑i ui ∣i⟩ e ∣v⟩ = ∑j vj ∣j⟩ , então:
2.1. ÁLGEBRA LINEAR 7
⟨v∣u⟩ =∑i
viui = [v1 ⋯ vn]
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎣
u1
⋮
un
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎦
, (2.7)
em que a representa o conjugado do número complexo a.
Dois vetores ∣u⟩ e ∣v⟩ são ortogonais se seu produto interno vale zero. Além
disso, podemos denir a norma de um vetor ∣v⟩ por
∥ ∣v⟩∥ =√
⟨v∣v⟩. (2.8)
Diremos que um vetor é unitário (também chamado de vetor normalizado) se
sua norma vale 1.
Assim como o produto hermitiano toma dois vetores para formar um escalar
complexo, o produto tensorial será aplicado a dois espaços vetoriais para formar um
terceiro espaço vetorial.
Suponha que V e W sejam dois espaços vetoriais de dimensões m e n, respec-
tivamente. O produto tensorial representado por V ⊗W é um espaço vetorial de
dimensão mn, cujos elementos são combinações lineares de expressões da forma
∣v⟩ ⊗ ∣w⟩ , em que ∣v⟩ ∈ V e ∣w⟩ ∈ W . Estas expressões satisfazem as seguintes
condições:
(∣v1⟩ + ∣v2⟩)⊗ ∣w⟩ = ∣v1⟩ ⊗ ∣w⟩ + ∣v2⟩ ⊗ ∣w⟩ ;
∣v⟩ ⊗ (∣w1⟩ + ∣w2⟩) = ∣v⟩ ⊗ ∣w1⟩ + ∣v⟩ ⊗ ∣w2⟩ ;
c ∣v⟩ ⊗ ∣w⟩ = ∣v⟩ ⊗ c ∣w⟩ = c(∣v⟩ ⊗ ∣w⟩).
Por exemplo, se o espaço vetorial V tem como base os vetores ∣0⟩e ∣1⟩ , então
∣0⟩ ⊗ ∣0⟩ + ∣1⟩ ⊗ ∣1⟩ é um dos elementos de V ⊗ V .
Utilizaremos a notação ∣vw⟩ para o produto tensor ∣v⟩ ⊗ ∣w⟩ , assim como ∣ψ⟩⊗k
para representar o produto tensorial de ∣ψ⟩ consigo mesmo k vezes; por exemplo,
∣ψ⟩⊗3 = ∣ψ⟩ ⊗ ∣ψ⟩ ⊗ ∣ψ⟩ .
2.1. ÁLGEBRA LINEAR 8
É muito mais fácil visualizar o produto tensorial através da representação ma-
tricial conhecida como produto de Kronecker. Para isso, supondo as transformações
lineares T ∶ V1 → W1 e S ∶ V2 → W2, em que V1, V2,W1 e W2 são espaços vetoriais,
e T ⊗ S ∶ V1 ⊗ V2 → W1 ⊗W2 é denido por T ⊗ S(v1 ⊗ v2) = Tv1 ⊗ Sv2 em que
v1 ∈ V1 e v2 ∈ V2, escolheremos bases para V1, V2,W1 eW2 e assim seremos capazes de
representar S e T como as matrizes Am×n e Bp×q, respectivamente. Assim, teremos
A⊗B =
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎣
a11B ⋯ a1nB
⋮ ⋮ ⋮
am1B ⋯ amnB
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎦
. (2.9)
Notamos no exemplo
⎡⎢⎢⎢⎢⎢⎣
1 2
3 4
⎤⎥⎥⎥⎥⎥⎦m×n
⊗⎡⎢⎢⎢⎢⎢⎣
0 5
6 7
⎤⎥⎥⎥⎥⎥⎦p×q
=
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
0 5 0 10
6 7 12 14
0 15 0 20
18 21 24 28
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦mp×nq
(2.10)
que as dimensões da primeira e da segunda matrizes são (m,n) = 2 × 2 e (p, q) =
2 × 2, respectivamente, e as dimensões da matriz resultante do produto tensorial é
(m × p, n × q) = 4 × 4.
2.1.4 Autovalores e autovetores
Suponhamos um operador linear A de um espaço vetorial V . Um autovetor deste
operador é um vetor ∣v⟩ ∈ V tal que
A ∣v⟩ = v ∣v⟩ , (2.11)
em que v é um número complexo conhecido como o autovalor de A correspondente
ao autovetor ∣v⟩ . É comum utilizar a notação v tanto como rótulo do autovetor e
também para representar o autovalor com o qual se relaciona.
A determinação dos autovalores de um operador A pode ser dada como solução
da equação característica c(λ) = 0, em que c(λ) é a chamada função característica
c(λ) = det ∣A − λI ∣.
2.1. ÁLGEBRA LINEAR 9
Deniremos também a representação diagonal de um operador A como A =
∑i λi ∣i⟩ ⟨i∣ , em que os vetores ∣i⟩ formam um conjunto ortonormal de autovetores de
A, sendo λi os autovalores correspondentes. Um operador é, portanto, diagonalizável
se possui representação diagonal.
2.1.4.1 Número de condição
Na análise numérica, o número de condição de uma função mede quanto a saída
de tal função pode variar a partir de uma pequena diferença na entrada. Em outras
palavras, o número de condição mede quão sensível à entrada é certa função e assim,
também, a possíveis erros que serão reetidos em sua saída.
O número de condição pode ou não ser nito, e é comumente dado pela razão
entre o maior e o menor valor singular (denidos, por sua vez, como as raízes-
quadradas dos autovalores não-negativos da matriz adjunta) do operador analisado.
No caso dos operadores mais utilizados na mecânica quântica, e mais especi-
camente, do operador utilizado no desenvolvimento do algoritmo tema deste artigo,
um operador hermitiano (ver seção 2.1.6), o número de condição será dado por
κ(A) =RRRRRRRRRRR
λmax(A)λmin(A)
RRRRRRRRRRR(2.12)
em que λmax(A) e λmin(A) são, respectivamente, o maior e o menor (em módulo)
autovalores de A.
2.1.5 Matrizes de Pauli
Quatro matrizes extremamente importantes no estudo da física e da matemática,
e com várias aplicações no campo da mecânica quântica são as chamadas matrizes
de Pauli. São matrizes complexas de dimensão 2×2 e usualmente são indicadas pela
notação σi como se segue:
σ0 = I =⎛⎜⎝
1 0
0 1
⎞⎟⎠
σ1 = σx =X =⎛⎜⎝
0 1
1 0
⎞⎟⎠
2.1. ÁLGEBRA LINEAR 10
σ2 = σy = Y =⎛⎜⎝
0 −i
i 0
⎞⎟⎠
σ3 = σz = Z =⎛⎜⎝
1 0
0 −1
⎞⎟⎠
As matrizes foram nomeadas em homenagem ao sico Wolfgang Pauli, e na
mecânica quântica, são vistas na equação de Pauli, que leva em conta a interação
do spin de uma partícula com um campo eletromagnético externo [9].
2.1.6 Adjuntos e operadores Hermitianos
Supondo A como operador linear em um espaço vetorial V , existirá em V um
operador linear único A, conhecido como adjunto ou conjugado hermitiano de A,
para o qual
⟨Ax∣y⟩ = ⟨x∣Ay⟩, (2.13)
para todo x, y ∈ V .
Podemos representar o adjunto, mais simplesmente, através da igualdade A =
(A∗)T .
Obs.: Como observamos anteriormente, ∣v⟩ = ⟨v∣ , e assim, (A ∣v⟩) = ⟨v∣A.
Um operador cujo adjunto é igual a si mesmo é chamado de operador Hermitiano.
Deniremos os operadores normais como aqueles para os quais AA = AA.
Claramente, todo operador Hermitiano é também um operador normal.
A última denição importante, no que se refere aos operadores normais, é a classe
especial dos operadores unitários, que são aqueles para os quais vale a propriedade
UU = U U = I. Geometricamente, operadores unitários são importantes pois pre-
servam o produto interno entre vetores. Isto é, supondo ∣v⟩ e ∣w⟩ vetores, o produto
interno entre U ∣v⟩ e U ∣w⟩ tem o mesmo valor do produto interno entre ∣v⟩ e ∣w⟩ :
⟨U ∣v⟩∣U ∣w⟩⟩ = ⟨v∣U U ∣w⟩ = ⟨v∣ I ∣w⟩ = ⟨v∣w⟩. (2.14)
Obs.: Vale notar que as matrizes de Pauli apresentadas na seção 2.1.5 são her-
mitianas e unitárias e, conjuntamente, geram o espaço vetorial de todas as matrizes
hermitianas de dimensão 2 × 2.
2.1. ÁLGEBRA LINEAR 11
2.1.6.1 Todo operador Hermitiano é Diagonalizável
Para nossas aspirações na execução do algoritmo tema deste trabalho, o resultado
acima será de grande importância uma vez que a diagonalização do operador de
entrada do sistema linear representa uma etapa do processamento.
Antes, apresentamos os seguinte teoremas:
Teorema 1. Seja A uma matriz Hermitiana, isto é, A = A e λ um autovalor de
A. Então, λ é um número real, isto é, λ ∈ R.
Prova. Utilizando as notações acima de A, λ e sendo v o autovetor associado à λ,
temos que
λ⟨v∣v⟩ = ⟨λv∣v⟩. (2.15)
Pela denição de autovetor (λv = Av):
⟨λv∣v⟩ = ⟨Av∣v⟩. (2.16)
Usando as propriedades do produto interno e a hermiticidade de A:
⟨Av∣v⟩ = ⟨v∣Av⟩ = ⟨v∣Av⟩. (2.17)
Novamente pela denição de autovetor:
⟨v∣λv⟩ = λ⟨v∣v⟩. (2.18)
Uma vez que v ≠ 0, obtemos λ = λ. Mas, para isso, é necessário que λ ∈ R.
Teorema 2. Se A for uma matriz qualquer, existe uma matriz unitária U de forma
que U−1AU é triangular superior.
Prova. Como sabemos, A tem pelo menos um autovetor unitário v1. Deniremos a
matriz U1 unitária (através do processo de Gram-Schmidt) de forma
⎛⎜⎜⎜⎜⎝v1 ⋯ vn
⎞⎟⎟⎟⎟⎠
(2.19)
2.1. ÁLGEBRA LINEAR 12
onde as colunas de 2 a n podem ser escolhidas de qualquer forma. Se aplicarmos
U−11 AU1 a e1, teremos:
U−11 AU1e1 = U−1
1 Av1 = λ1U−11 v1 = λ1e1. (2.20)
Isto é, U−11 AU1 é da forma
⎛⎜⎜⎜⎜⎝
λ1 ∗ ∗
0 ∗ ∗
0 ∗ ∗
⎞⎟⎟⎟⎟⎠
(2.21)
(a matriz de dimensão 3× 3 foi escrita por conveniência, mas a prova funciona para
qualquer n).
Se seguirmos para o `sudeste' da matriz A, poderemos repetir o processo para a
matriz (n − 1) × (n − 1) obtida removendo-se a primeira linha e a primeira coluna
de A e assim sucessivamente até que tenhamos uma matriz triangular similar a A
através da concatenação multiplicativa das matrizes Ui geradas a cada passo. Assim,
a matriz U buscada pelo teorema será U = U1U2⋯Un, e por consequência, U−1AU
será triangular superior.
Finalmente seremos capazes de provar a diagonalização de uma matriz hermiti-
ana. Pelo teorema acima, sabemos que
U−1AU = T (2.22)
de forma que T é triangular superior e também hermitiana, pois
(U−1AU) = U A(U−1) = U−1AU. (2.23)
Ora, se T é triangular superior, então T é triangular inferior. E se T é hermiti-
ana, então T = T . Assim, T é uma matriz diagonal.
2.1.6.2 Funções de operadores
Funções de operadores (ou matrizes) são denidos através da expansão de Taylor
da função escalar correspondente. Por exemplo, como
ex = 1 + x + x2
2!+ x
3
3!+ x
4
4!+⋯ (2.24)
2.1. ÁLGEBRA LINEAR 13
então, escolhendo como argumento a matriz de Pauli σx, teremos
eσx = 1 + σx +σ2x
2!+ σ
3x
3!+ σ
4x
4!+⋯
= 1⎛⎝
1 + 1
2!+ 1
4!+⋯
⎞⎠+ σx
⎛⎝
1 + 1
3!+ 1
5!+⋯
⎞⎠
= 1 cosh 1 + σx senh 1. (2.25)
em que usamos que σ2x = 1, e 1 é a matriz identidade 2 × 2.
Funções de matrizes diagonais são ainda mais simples, uma vez que poderemos
aplicar a função a cada elemento da diagonal separadamente. Além disso, se a matriz
M = UDU−1 é diagonalizável, sendo D sua matriz diagonal, a expansão de Taylor
nos dará que f(M) = Uf(D)U−1 e aí poderemos aplicar a função f a cada elemento
de D.
2.1.7 Espaço de Hilbert
Um espaço de Hilbert H é um espaço vetorial onde está denida a operação do
produto hermitiano, associando a cada par de vetores um escalar complexo, assim
como também está denida a norma de cada vetor com respeito à distância induzida
pelo produto interno.
A denição do produto interno de vetores para um espaço de Hilbert deve satis-
fazer as propriedades:
⟨x∣y⟩ = ⟨y∣x⟩;
⟨ax1 + bx2∣y⟩ = a⟨x1∣y⟩ + b⟨x2∣y⟩ para a, b ∈ R;
⟨x∣x⟩ ≥ 0.
Deniremos a norma de um vetor como
∥x∥ =√
⟨x∣x⟩, (2.26)
e a distância d entre dois pontos x, y em H em termos da norma por
d(x, y) = ∥x − y∥ =√
⟨x − y∣x − y⟩. (2.27)
2.1. ÁLGEBRA LINEAR 14
A existência desta função d(x, y) nos leva à conclusão que o espaço vetorial H é
também um espaço métrico (sendo d sua métrica), e, portanto, valem as proprieda-
des:
d(x, y) = d(y, x);
d(x,x) = 0;
d(x, z) ≤ d(x, y) + d(y, z), a chamada desigualdade triangular.
A denição de espaços de Hilbert ainda considera que o espaço H deva ser
completo: toda sequência de Cauchy de elementos de H convergirá com respeito à
norma para um elemento deH. Como os espaços que consideramos nesta monograa
(à exceção da seção 2.1.8) têm dimensão nita, esta condição é automaticamente
satisfeita.
2.1.8 Mecânica Quântica: evolução de Schrödinger
A evolução de um sistema quântico fechado é descrita por uma transformação
unitária. Isto é, o estado ∣ψ⟩ to sistema no tempo t1 relaciona-se com o estado ∣ψ′⟩
do tempo t2 através de um operador unitário U que depende somente dos tempos
t1 e t2, em que ∣ψ′⟩ = U ∣ψ⟩ .
A denição acima descreve a relação entre dois estados em tempos discretos t1 e
t2. Se a estendermos para uma denição em tempo contínuo, obteremos a equação
de Schrödinger:
i~d ∣ψ⟩dt
=H ∣ψ⟩ (2.28)
em que ~ é a chamada constante de Planck (cujo valor, 6,62607 × 10−34 [10], é
obtido experimentalmente) e H é um operador hermitiano xo conhecido como
Hamiltoniano, especíco deste sistema fechado.
O Hamiltoniano é um operador que corresponde à energia total de um sistema,
isto é, à soma entre as energias cinéticas de todas as partículas do sistema assim
como a energia potencial das mesmas. Dessa forma, para diferentes sistemas físicos
2.1. ÁLGEBRA LINEAR 15
e com um número de partículas variável, o Hamiltoniano terá seu valor alterado.
A partir desta equação, se conhecermos o Hamiltoniano do sistema e o valor da
constante de Planck, seremos capazes de modelar o comportamento de um sistema
quântico completamente, desde que seu estado inicial também seja conhecido:
∣ψ(t)⟩ = e−iHt~ ∣ψ(0)⟩ (2.29)
em que e−iHt
~ representa a série de potências em H.
Para muitos sistemas, entretanto, é possível também escrever um Hamiltoniano
que varia de acordo com o tempo (ou seja, que não é constante) e assim, teríamos
um sistema não-fechado, ao contrário de nossa hipótese original. Ainda assim, tais
sistemas comportam-se satisfazendo a equação de Schrödinger, mesmo quando o
Hamiltoniano varia com o tempo.
2.1.9 Mecânica Quântica: medições projetivas
Medições quânticas são descritas por uma coleção de operadores de medição
Mm que atuam no espaço de estados sendo medido. Se um estado do sistema
quântico é ∣ψ⟩ , a probabilidade de que o resultadom ocorra é p(m) = ⟨ψ∣M mMm ∣ψ⟩ .
O conjunto de operadores Mm satisfaz a equação de completude ∑m p(m) = 1.
Denição: Medição projetiva
Seja M um operador hermitiano em um espaço de estados de um sistema sendo
observado. M terá decomposição espectral
M =∑m
mPm (2.30)
em que Pm é a projeção no autoespaço de M associado ao autovalor m. Após medir
o estado ∣ψ⟩ , a probabilidade de se obter o resultado m será p(m) = ⟨ψ∣Pm ∣ψ⟩ , como
visto acima.
Medições projetivas são interessantes pela possibilidade do cálculo de seus valo-
res médios e desvio padrão, após uma série de medições. Utilizaremos o conceito
estatístico de esperança para o cálculo da média:
2.1. ÁLGEBRA LINEAR 16
E(M) = ∑m
mp(m)
= ∑m
m ⟨ψ∣Pm ∣ψ⟩
= ⟨ψ∣ (∑m
mPm) ∣ψ⟩
= ⟨ψ∣M ∣ψ⟩ . (2.31)
2.1.9.1 Observáveis
As propriedades de um sistema que podem ser determinadas por uma sequên-
cia de operações físicas são os observáveis do sistema, como por exemplo posição,
momentos e energia.
Na mecânica quântica, a medição dos observáveis exibe propriedades contraintui-
tivas, no sentido que o processo afetará o sistema de uma forma não determinística
e irreversível, fazendo-o colapsar imediatamente a um de seus autoestados.
O valor médio de um observável M é comumente escrito como ⟨M⟩. Poderemos
então calcular o desvio padrão de M através do valor encontrado anteriormente:
[∆(M)]2 = ⟨(M − ⟨M⟩)2⟩ = ⟨M2⟩ − ⟨M⟩2. (2.32)
2.1.10 Mecânica Quântica: emaranhamento
O emaranhamento quântico (ou entralaçamento quântico) é o fenômeno que
ocorre quando pares ou grupos de partículas interagem de forma que o estado quân-
tico de cada uma não pode ser descrito independentemente, e ao invés disso, um
estado quântico deve ser dado para o sistema como um todo.
Nota-se que medições em observáveis de sistemas com partículas entrelaçadas
estão fortemente correlacionadas. Por exemplo, se um par de particulas entrelaçadas
é de tal forma que seu spin total é zero, e sabe-se que uma destas partículas tem spin
em sentido horário em certo eixo, então a outra partícula terá seu spin no sentido
anti-horário, quando medido no mesmo eixo.
2.2. COMPUTAÇÃO QUÂNTICA 17
Se considerarmos dois sistemas A e B, que não interagem entre si, em que ∣ψ⟩Aé o estado do primeiro sistema e ∣φ⟩B é o estado do segundo sistema, então o estado
do sistema composto será
∣ψ⟩A ⊗ ∣φ⟩B. (2.33)
Estados do sistema composto que podem ser representados desta forma são chama-
dos estados separáveis. Mas, uma vez xadas as bases ∣i⟩A e ∣j⟩B para os espaços
de Hilbert HA de A e HB de B, os estados do sistema composto serão escritos, de
forma mais geral, como
∣ψ⟩AB =∑i,j
ci,j ∣i⟩A ⊗ ∣j⟩B. (2.34)
O estado ∣ψ⟩AB será separável se existir cAi , cBj de forma que ci,j = cAi c
Bj , e será
inseparável caso contrário. Se um estado é inseparável, é chamado de estado ema-
ranhado.
Por exemplo, dados os vetores ∣0⟩A, ∣1⟩A base de HA e ∣0⟩B, ∣1⟩B base de HB,
um dos estados emaranhados do sistema composto HA ⊗HB é
1√2( ∣0⟩A ⊗ ∣1⟩B − ∣1⟩A ⊗ ∣0⟩B). (2.35)
2.2 Computação Quântica
Após apresentar esses vários conceitos teóricos da álgebra linear e da mecânica
quântica, nalmente seremos defrontados com suas aplicações no campo de estudo
em que estamos realmente interessados: a computação quântica.
Como dene a ACM [11], a computação, como um todo, é qualquer atividade
com objetivo de obter algum resultado através de um processo algorítmico, como
por exemplo, através do uso de computadores. Abrange o desenho e construção de
ferramentas para processamento, estruturação e manutenção da informação.
Assim como no caso clássico, a computação quântica é o ramo do conhecimento
que se foca na aplicação de algoritmos de base quântica para a transformação e
processamento da informação (quântica). Um computador tradicional utiliza-se de
longas cadeias de bits, que representam os numerais zero ou um (baseado na base
2.2. COMPUTAÇÃO QUÂNTICA 18
binária), enquanto um computador quântico pode se beneciar do uso de bits quân-
ticos, ou qubits, que podem estar em um estado de superposição entre zero e um,
possibilitando, através do que chamamos de paralelismo quântico, um vasto número
de cálculos simultâneos.
2.2.1 Bits quânticos
O que chamamos aqui de qubits é a unidade básica da informação quântica, o
análogo do bit clássico. Um qubit é qualquer sistema quântico de dois estados, como,
por exemplo, a polarização de um fóton (horizontal ou vertical) ou o spin de um
elétron (up ou down). Em um sistema clássico, o bit precisaria estar em um dos dois
estados, mas para um qubit é possível estar em uma superposição dos dois estados
simultaneamente.
Os dois estados em que um qubit pode ser mensurado são chamados estados base,
comumente representados como ∣0⟩ e ∣1⟩ . O estado de um qubit ∣ψ⟩ é, portanto,
uma superposição linear dos estados base; isto é,
∣ψ⟩ = α ∣0⟩ + β ∣1⟩ (2.36)
em que α e β são números complexos chamados de amplitudes, de forma que, ao
medir o valor de ∣ψ⟩ na base padrão, a probabilidade de se obter ∣0⟩ e ∣1⟩ será dada
por ∣α∣2 e ∣β∣2 respectivamente.
Notemos que, como os quadrados das amplitudes representam probabilidades,
teremos que α e β devem satisfazer a equação ∣α∣2 + ∣β∣2 = 1 pelo fato de que são os
únicos resultados possíveis de serem obtidos após uma medição de ∣ψ⟩ .
2.2.2 Portas Lógicas
Analogamente a um computador clássico, construído a partir de circuitos elétri-
cos, os e portas lógicas, o computador quântico será construído a partir de circuitos
quânticos baseados em portas lógicas quânticas, que manipulam a informação quân-
tica representada pelos qubits.
2.2. COMPUTAÇÃO QUÂNTICA 19
A porta lógica de um qubit mais simples a ser considerada é a análoga ao NOT
clássico, isto é, o inversor 0 → 1 e 1 → 0, que levará o estado α ∣0⟩ + β ∣1⟩ no estado
α ∣1⟩ + β ∣0⟩ , e que é representada
X =⎛⎜⎝
0 1
1 0
⎞⎟⎠
(2.37)
de forma que possamos representar matricialmente o estado α ∣0⟩ + β ∣1⟩ por
α ∣0⟩ + β ∣1⟩ =⎛⎜⎝
α
β
⎞⎟⎠
(2.38)
e assim aplicando a porta lógica
X⎛⎜⎝
α
β
⎞⎟⎠=⎛⎜⎝
β
α
⎞⎟⎠. (2.39)
Importante notar que nem todo tipo de matriz pode descrever as portas quân-
ticas. Como é necessário que o estado resultante da aplicação da porta quântica (e
consequentemente, da matriz que a representa) tenha amplitudes cujos quadrados
somam 1 (devido ao limite das probabilidades), as matrizes portas de um qubit
devem ser unitárias.
Além da porta NOT para um qubit de entrada, também existem outras portas
que terão aplicação em vários algoritmos quânticos, dentre elas a chamada ip que
mapeia ∣0⟩ → ∣0⟩ e altera o sinal de ∣1⟩ da forma ∣1⟩ → − ∣1⟩ . Além da ip, uma porta
muito importante é conhecida como porta de Hadamard, representada pela matriz
H = 1√2
⎛⎜⎝
1 1
1 −1
⎞⎟⎠
(2.40)
que mapeia ∣0⟩ → (∣0⟩ + ∣1⟩)/√
2 e ∣1⟩ → (∣0⟩ − ∣1⟩)/√
2, justamente na `metade do
caminho' entre ∣0⟩ e ∣1⟩ .
2.2.2.1 Reversibilidade
Em geral, em um computador clássico, portas lógicas diferentes da porta NOT
não são reversíveis. Assim, por exemplo, para uma porta AND, é impossível obter
os valores que foram usados na entrada dado o bit de saída:
2.2. COMPUTAÇÃO QUÂNTICA 20
A B A ∧B
0 0 0
0 1 0
1 0 0
1 1 1
No exemplo, se a saída obtida for o valor 0, não seremos capazes de dizer qual
das três combinações possíveis de entrada a produziu.
Ao contrário das portas clássicas, as portas lógicas quânticas são sempre reversí-
veis: dado que as portas quânticas são unitárias, de forma a manter o somatório de
probabilidades de encontrar cada estado-base após a medição como 100%, e todas as
matrizes unitárias são inversíveis, basta que sejamos capazes de construir a matriz
inversa da matriz que descreve a porta quântica para que tenhamos denido a porta
quântica inversa.
Além disso, notamos em contraste com os circuitos clássicos, que os circuitos
quânticos não permitem `loops', sendo portanto, acíclicos, e também não permitem
a união de os, seja para entrada ou na saída de alguma porta lógica, devido ao
caráter reversível das portas quânticas e à impossibilidade de clonagem de estados
quânticos, regras estas que são quebradas nos circuitos de união ou separação (o que
chamamos de FANIN e FANOUT).
2.2.2.2 A porta CNOT
Assim como as já apresentadas portas quânticas para um único qubit de entrada,
a porta lógica NOT-controlado (CNOT) recebe como entrada mais de um qubit:
especicamente, a porta recebe dois qubits, conhecidos como qubit de controle e
qubit alvo, respectivamente.
A linha no topo da imagem representa o qubit de controle, enquanto a linha
abaixo representa o qubit alvo. A ação da porta pode ser descrita da seguinte
forma: se valor do qubit de controle for 1, então o valor do qubit alvo é alternado;
2.2. COMPUTAÇÃO QUÂNTICA 21
Figura 2.1: Representação da porta lógica quântica CNOT.
caso contrário nada é feito:
∣00⟩ → ∣00⟩ ;
∣01⟩ → ∣01⟩ ;
∣10⟩ → ∣11⟩ ;
∣11⟩ → ∣10⟩ .
Podemos representá-la também por um operador matricial, que pode ser apli-
cado, através da multiplicação, nas entradas às quais se deseja
UCNOT =
⎛⎜⎜⎜⎜⎜⎜⎜⎜⎝
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
⎞⎟⎟⎟⎟⎟⎟⎟⎟⎠
,
em que, como podemos notar, o requisito da conservação de probabilidades é ex-
presso no fato de que UCNOT é uma matriz unitária.
Se denirmos ∣ψ⟩ = a ∣0⟩ + b ∣1⟩ , ou seja
∣ψ⟩ =⎡⎢⎢⎢⎢⎢⎣
a
b
⎤⎥⎥⎥⎥⎥⎦(2.41)
e aplicarmos UCNOT com qubit de controle ∣0⟩ , teremos
UCNOT ( ∣0⟩ ∣ψ⟩) =
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
a
b
0
0
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
=
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
a
b
0
0
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
= ∣0⟩ ∣ψ⟩ . (2.42)
Da mesma forma, se utilizarmos ∣1⟩ como qubit de controle, teremos
2.2. COMPUTAÇÃO QUÂNTICA 22
UCNOT ( ∣1⟩ ∣ψ⟩) =
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
0
0
a
b
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
=
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
0
0
0
a
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
+
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
0
0
b
0
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦= a ∣1⟩ ∣1⟩ + b ∣1⟩ ∣0⟩ = ∣1⟩(a ∣1⟩ + b ∣0⟩)
= ∣1⟩∣ψ⟩ , (2.43)
em que ∣ψ⟩ representa a troca das amplitudes das entradas de ∣ψ⟩ , ou seja, por
exemplo, se
∣x⟩ = a ∣0⟩ + b ∣1⟩ , (2.44)
então
∣x⟩ = b ∣0⟩ + a ∣1⟩ . (2.45)
2.2.2.3 A porta de Fredkin
Da mesma forma que a porta CNOT recebe como entrada dois qubits e toma o
qubit de controle para alternar o qubit alvo, a porta de Fredkin receberá três qubits
e baseado no valor do qubit de controle, trocará os valores dos outros dois qubits,
como mostra a gura.
Figura 2.2: Representação da porta lógica quântica de Fredkin.
A ação da porta pode ser representada pela tabela-verdade a seguir:
2.2. COMPUTAÇÃO QUÂNTICA 23
A B C A′ B′ C ′
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 0
0 1 1 0 1 1
1 0 0 1 0 0
1 0 1 1 1 0
1 1 0 1 0 1
1 1 1 1 1 1
Além disso, também podemos representar a porta de Fredkin através do operador
unitário UFredkin:
UFredkin =
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
. (2.46)
2.2.3 Circuitos Quânticos
Assim como na computação clássica, dispor portas lógicas quânticas em conjunto
forma um circuito quântico. Os os do circuito não correspondem necessariamente
a os físicos, mas podem representar a passagem do tempo ou a movimentação de
uma particula - como um fóton - de uma posição do espaço à outra.
Acima podemos ver operações bastante importantes e comuns no descrever de
circuitos lógicos quânticos: a porta U controlado e a porta de medição.
Supondo U como qualquer matriz unitária, deniremos a porta U controlado de
forma que exista um qubit de controle para ativar ou não a operação U sobre os
2.2. COMPUTAÇÃO QUÂNTICA 24
Figura 2.3: Exemplos de portas quânticas comuns em circuitos.
qubits alvo da porta. Isto é, digamos que a representação matricial de U seja
U =⎡⎢⎢⎢⎢⎢⎣
x00 x01
x10 x11
⎤⎥⎥⎥⎥⎥⎦,
então a porta U controlado operará em dois qubits mapeando os estados base de
forma
∣00⟩ → ∣00⟩ ;
∣01⟩ → ∣01⟩ ;
∣10⟩ → ∣1⟩U ∣0⟩ = ∣1⟩(x00 ∣0⟩ + x10 ∣1⟩);
∣11⟩ → ∣1⟩U ∣1⟩ = ∣1⟩(x01 ∣0⟩ + x11 ∣1⟩).
A segunda porta no exemplo representa a medição sobre um qubit, que o con-
verterá de um estado do tipo ∣ψ⟩ = α ∣0⟩ + β ∣1⟩ em um dos estados base com proba-
bilidades iguais ao quadrado das amplitudes do estado.
Circuitos quânticos são modelos úteis para processos quânticos, incluindo com-
putações, comunicação, entre outras aplicações.
2.2.4 Paralelismo Quântico
O grande benefício da utilização dos computadores quânticos é sua capacidade
de cálculo simultâneo de diferentes valores de uma certa função.
Como exemplica Semião [12], suponha uma função f(x) ∶ 0,1→ 0,1 rever-
sível de forma que armazenemos o valor de x conjuntamente com o valor de f(x)
no estado ∣x, y ⊕ f(x)⟩ de forma que o segundo qubit armazene ∣0⟩ , se y = f(x), e
2.2. COMPUTAÇÃO QUÂNTICA 25
∣1⟩ caso contrário; em que ⊕ representa o operador lógico ou-exclusivo (XOR), cuja
tabela verdade é
A B A⊕B
0 0 0
0 1 1
1 0 1
1 1 0
.
Denotaremos a transformação unitária correspondente à aplicação de f(x) por Uf .
Apliquemos, então, Uf no qubit (∣0⟩ + ∣1⟩)/√
2, obtendo
∣ψ⟩ = Uf∣0,0⟩ + ∣1,0⟩
√2
=∣0, f(0)⟩ + ∣1, f(1)⟩
√2
(2.47)
que é um estado que contém informação tanto sobre f(0) quanto sobre f(1), apesar
de termos aplicado o operador somente uma vez.
Como vimos, um único circuito quântico pôde calcular simultaneamente o valor
da função para múltiplos valores de x, consequência direta da superposição em que
se encontrava o estado de entrada do circuito.
É importante notar, contudo, que o paralelismo quântico não nos fornecerá todos
os valores que f(x) pode assumir, uma vez que será necessária a realização de uma
medição, que resultará imediatamente na obtenção de um dos dois estados ∣0, f(0)⟩
ou ∣1, f(1)⟩ . Podemos, porém, obter informações sobre as propriedades de f(x)
devido à interferência existente entre ambos os estados no instante em que ainda
estão emaranhados.
Enquanto o paralelismo quântico é o que nos capacita a cálculos muito mais
rápidos e algoritmos mais ecientes, é também devido ao fato de que só conseguimos
obter propriedades globais das funções de entrada, ao invés de seus valores, que o
desenvolvimento de aplicações realmente úteis para a computação quântica ainda
caminha a passos lentos.
2.2. COMPUTAÇÃO QUÂNTICA 26
2.2.5 Transformada de Fourier Quântica
A transformada de Fourier (TF) é uma das ferramentas mais úteis da matemática
na ciência e tecnologia modernas, sendo usada em vários campos de aplicação, entre
eles a redução de ruído de dados, exames de propriedades de cristais e produção
de hologramas. A transformada é especialmente útil quando temos algo com certa
periodicidade, uma vez que nos ajuda a extrair tal periodicidade da função para
analisar os dados limpos.
Deniremos aqui a chamada transformada de Fourier discreta, isto é, a TF que
atua sobre conjuntos de dados discretos. Supondo um vetor de números complexos
(x1,⋯, xn), a transformada gerará um vetor, também complexo, (y1,⋯, yn) de forma
que
yk =1√N
N−1∑j=0
xje2πijk/N . (2.48)
Como os qubits nada mais são do que vetores de números complexos, somos ca-
pazes de lhes aplicar a TF discreta: dado um qubit ∣ψ⟩ = ∑N−1j=0 αj ∣j⟩ , computaremos
sua transformada de Fourier quântica (TFQ) como
F ∣ψ⟩ =N−1∑k=0
⎛⎝
1√N
N−1∑j=0
αje2πijk/N⎞
⎠∣k⟩ . (2.49)
Por exemplo, se o estado tiver dois qubits ∣ψ⟩ = α00 ∣00⟩ + α01 ∣01⟩ + α10 ∣10⟩ +
α11 ∣11⟩ , então N = 4. Assim, βk = 12 ∑
3j=0αje
2πijk/4 e teremos:
β0 =1
2
3
∑j=0αj =
1
2(α00 + α01 + α10 + α11);
β1 =1
2
3
∑j=0αje
2πij/4 = 1
2(α00 + α01e
iπ/2 + α10eiπ + α11e
3iπ/2);
β2 =1
2
3
∑j=0αje
4πij/4 = 1
2(α00 + α01e
iπ + α10e2iπ + α11e
3iπ);
β3 =1
2
3
∑j=0αje
6πij/4 = 1
2(α00 + α01e
3iπ/2 + α10e3iπ + α11e
9iπ/2).
O circuito que implementa a TFQ envolve portas de rotação condicional Rθ e
portas swap, e sua implementação está descrita no Apêndice A.
2.2. COMPUTAÇÃO QUÂNTICA 27
Muitas das propriedades da TFQ seguem do fato de que é uma transformação
unitária. Dessa forma, teremos também que a inversa da transformada quântica
de Fourier é o adjunto hermitiano da matriz de Fourier, ou seja, F −1 = F . Como
há um sistema que implementa ecientemente a TFQ, o mesmo circuito pode ser
executado em reverso para realizar a TFQ inversa de forma eciente.
Muitos algoritmos quânticos aproveitam-se da aplicação da TFQ seguida de sua
inversa, como é o caso do algoritmo de resolução de sistemas lineares, foco deste
trabalho, uma vez que a TFQ pode ser usada para encontrar períodos e também
extrair autovalores de operadores unitários com alta precisão.
2.2.6 Computação Quântica com Ótica Linear
Uma das formas de implementação dos conceitos em computação quântica vistos
até aqui é a utilização de sistemas óticos, que envolve fótons como portadores de in-
formação, elementos da ótica linear para processar a informação quântica, incluindo
separadores de feixe, comutadores de fase e espelhos, e detectores de fótons para
realizar medições [13], [14].
Entre os sistemas óticos para processamento de informação quântica, a unidade
da luz, o fóton, é usado para representar um qubit, e superposições de estados quân-
ticos podem ser representados, transmitidos e detectados utilizando-os. Além disso,
as operações e portas lógicas quânticas serão implementadas através de elementos de
sistemas óticos, e sua concatenação formará os circuitos quânticos que implementam
os algoritmos desejados [15].
Em geral, os estados ∣0⟩ e ∣1⟩ são representados por fótons em diferentes modos
óticos, que podem ser por exemplo, as polarizações vertical e horizontal, diferentes
canais de frequência, ou até uma combinação destes dois casos. A notação que é
utilizada pelos físicos passa a levar em conta estes modos, por exemplo de forma
∣0⟩V ∣1⟩H , para representar um estado de dois qubits com o fóton 0 na polarização
vertical e o fóton 1 na polarização horizontal. A preparação de estados é feita,
de forma geral, utilizando fontes de fótons únicos (Single-photon generator, SPG,
no inglês), que são fontes de luz que a emitem como partículas separadas, diferen-
2.2. COMPUTAÇÃO QUÂNTICA 28
temente de fontes de luz incoerente como por exemplo lâmpadas incandescentes e
uorescentes.
Figura 2.4: Representação de qubits através da polarização de fótons, em que V e
H representam a polarização vertical e horizontal, respectivamente.
Os operadores quânticos, por sua vez, são implementados com elementos da
ótica linear. Um exemplo simples é dado pelos espelhos, cuja taxa de reexão é de
100%. Assim, dado um ângulo θ entre o feixe de fótons de entrada e o espelho,
sua utilização é o mesmo que aplicar uma rotação ao estado quântico representado
pelo feixe, sicamente alterando a frente de onda do mesmo, ou matematicamente,
aplicar um operador
R(θ) =⎡⎢⎢⎢⎢⎢⎣
cos θ − sen θ
sen θ cos θ
⎤⎥⎥⎥⎥⎥⎦. (2.50)
Na maioria dos casos, o ângulo θ = 45, mas isto pode variar dependendo do espelho
utilizado. De forma similar, os outros elementos óticos representarão operadores que
podem ser concatenados para simular a ação de portas lógicas quânticas, e estes,
por sua vez, unidos para realizar circuitos completos.
As operações realizadas pelos elementos óticos (separadores de feixe, comutado-
res de fase e espelhos, por exemplo) preservam as características da emissão de luz à
qual são aplicadas. Por exemplo, um feixe de luz coerente colocado como entrada em
um destes elementos produzirá um feixe também coerente como saída; assim como
uma superposição de estados quânticos de entrada produzirá uma superposição de
saída, [16].
Uma das limitações dos sistemas óticos é o fato de que os fótons dicilmente
2.2. COMPUTAÇÃO QUÂNTICA 29
interagem entre si, causando potencialmente um problema de escalabilidade dos
sistemas, uma vez que operações não-lineares cam difíceis de ser implementadas
e exigem um aumento da complexidade dos operadores, aumentando, portanto, o
número de elementos óticos requeridos para simulação de determinados circuitos
[17].
Capítulo 3
O algoritmo de Harrow, Hassidim e
LLoyd
Sistemas lineares estão presentes em todos os campos da ciência e engenharia nos
dias de hoje, e sua resolução, seja com objetivo de obter os valores das soluções ou
utilizá-las como parte de processos mais complexos, é um problema muito comum.
Com a evolução da tecnologia e o aumento da complexidade dos sistemas utilizados
hoje em dia, o tamanho da massa de dados comumente utilizada como entrada
para estes problemas vem crescendo muito rapidamente, de forma que mesmo os
computadores mais potentes levam bastante tempo para processar soluções.
O algoritmo apresentado a seguir foi desenvolvido em 2009 [8] e mostra como um
computador quântico é capaz de aproximar o valor de funções da solução de sistemas
lineares em tempo polilogarítmico, de forma a prover um aumento exponencial de
eciência sobre os melhores algoritmos clássicos conhecidos hoje. No artigo original,
os autores ainda demonstram que este algoritmo é quase a implementação ótima da
tarefa quântica (a demonstração estará omitida aqui).
3.1. CASO CLÁSSICO 31
3.1 Caso clássico
A resolução de sistemas lineares é um problema presente há muitos anos em
vários campos de aplicação, e várias técnicas de resolução e determinação de solu-
ções foram desenvolvidas. Aqui apresentaremos, sucintamente, duas destas técnicas
comumente utilizadas classicamente, isto é, executáveis por computadores clássicos,
para posterior comparação com o método quântico que é tema deste trabalho.
3.1.1 Eliminação de Gauss
O método de eliminação gaussiana (também chamado método do escalonamento)
é seguramente a mais conhecida ferramenta de resolução de sistemas lineares, e pode
ser usado em várias aplicações, como o cálculo do determinante, do posto e da inversa
de uma matriz quadrada.
Para executar o método de eliminação de linhas, uma sequência de operações
elementares será aplicada para modicar a matriz de coecientes do sistema, até
que a parte inferior esquerda da matriz esteja preenchida com a maior quantidade
de zeros possível. As operações elementares de linha podem ser de três tipos:
Troca de linhas,
Multiplicação de uma linha por um escalar diferente de zero,
Adição do múltiplo de uma linha à outra linha.
Dizemos que a matriz está escalonada quando todas as linhas não-nulas estão
acima de linhas compostas de zeros; o pivô de cada linha está numa coluna à direita
do pivô da linha anterior e todos os elementos abaixo de um pivô são nulos. Neste
caso, o valor das variáveis do sistema linear representado pela matriz de coecientes
poderá ser determinado caso o sistema não seja impossível.
O número de operações aritméticas necessárias para escalonar a matriz de co-
ecientes é uma forma de medir a eciência computacional do algoritmo. Para
resolver um sistema de n equações com n incógnitas, de forma a levar a matriz à
3.1. CASO CLÁSSICO 32
forma escalonada executando operações elementares de linhas e então resolvendo
os valores das incógnitas em ordem reversa, serão necessárias n(n − 1)/2 divisões,
(2n3 +3n2 −5n)/6 multiplicações e (2n3 +3n2 −5n)/6 subtrações, isto é, um total de
aproximadamente 2n3/3 operações [18]. O algoritmo de eliminação Gaussiana tem,
portanto, complexidade aritmética de O(n3).
3.1.2 Método do Gradiente Conjugado
O próximo algoritmo a ser apresentado aplica-se a casos especícos de sistemas
lineares, casos estes similares aos que serão tratados pelo algoritmo quântico apre-
sentado logo a seguir.
O método do gradiente conjugado resolve numericamente sistemas lineares cujas
matrizes são simétricas e denidas positivas, e é usado de forma iterativa como
método de otimização, sendo assim aplicável a sistemas esparsos com dimensão
grande demais para ser tratada por uma implementação direta.
Supondo que A seja uma matriz simétrica e positiva denida, diremos que dois
vetores u e v são conjugados (sobre A) se uTAv = 0, ou seja, se são ortogonais com
relação ao seu produto interno sobre A: ⟨u∣v⟩A = uTAv.
Para iniciar o algoritmo, escolheremos um valor x0 como tentativa de obter a
solução x∗ do sistema. É comum partir da escolha x0 = 0. Buscaremos, então, pela
aproximação da solução em cada iteração i através da minimização de xi, determinar
se nos aproximamos ou distanciamos do valor de x∗ de nossa tentativa.
As condições impostas a A garantem que
f(x) = 1
2xTAx − xT b, x ∈ Rn (3.1)
admita um único ponto de mínimo x∗. Assim, sempre que f(x) diminuir de uma
iteração para outra, saberemos que estamos mais próximos do valor de x∗.
De forma geral, para métodos iterativos de otimização, as iterações são denidas
pela equação
xk+1 = xk + αnpk. (3.2)
3.1. CASO CLÁSSICO 33
No caso do método do gradiente, P = pk ∶ ∀i ≠ k, i, k ∈ [1, n], ⟨pi∣pk⟩ = 0 é
um conjunto de vetores conjugados que formam uma base de Rn. Assim, podemos
expandir a solução x∗ de Ax = b para
x∗ =n
∑i=1αipi, (3.3)
vendo que
b = Ax∗ =n
∑i=1αiApi. (3.4)
Se denirmos o resíduo do k-ésimo passo rk por
rk = −∇f(xk) = b −Axk, (3.5)
a próxima direção de busca será construída através do resíduo atual e de todas as
direções de busca tentadas anteriormente, resultando na expressão
pk = rk −∑i<n
pTi ArkpTi Api
pi. (3.6)
Através da equação 3.2, poderemos calcular a localização do próximo valor ótimo,
em que os valores de αn serão obtidos por
αk =pTk b
pTkApk=pTk (rk−1 +Axk−1)
pTkApk=pTk rk−1
pTkApk. (3.7)
Note que pk e xk−1 são conjugados.
Dessa forma, escolhendo um valor ε pequeno, o algoritmo aproximará x∗ com
precisão ε e terminará se exigirmos que ∥rk∥2 < ε.
Para o método do gradiente conjugado, as operações dominantes durante uma
iteração são produtos matriz-vetor. Em geral, estas multiplicações exigem O(m)
operações, em que m é o número de entradas diferentes de zero na matriz. Se
considerarmos a suposição inicial dos problemas onde o gradiente conjugado será
aplicado, as matrizes de entrada são esparsas e assim m ∈ O(n). O número máximo
de iterações necessárias para atingir o limite ε com uma matriz de coecientes cujo
número de condição é κ, é
i ≤⎡⎢⎢⎢⎢⎢
1
2
√κ ln (2
ε)⎤⎥⎥⎥⎥⎥
(3.8)
e assim, concluímos que a complexidade de tempo para execução do algoritmo do
gradiente conjugado para resolução de sistemas lineares é O(m√κ) [19].
3.2. VISÃO GERAL 34
3.2 Visão Geral
Suponhamos que queremos resolver a equação Ax = b, em que A é uma matriz
N ×N inversível, e b é um vetor com N entradas. O algoritmo mapeará b no vetor
quântico ∣b⟩ e A em um operador quântico de forma que possamos encontrar uma
aproximação dos valores de x fazendo algo similar à inversão matricial que resolveria
o sistema no caso clássico: x = A−1b.
Para execução do algoritmo, também vamos supor que A é esparsa e Hermitiana.
Essas hipóteses poderão ser relaxadas, apesar disto tornar o algoritmo mais com-
plexo, como veremos a seguir. O aumento de eciência exponencial será alcançado
quando o número de condição de A for polilogarítmico em N e a precisão necessária
for da ordem de1
(log(n))k, em que k é um parâmetro de entrada.
O algorítmo mapeará as N entradas de b em log2N qubits para representar o
estado ∣b⟩ e então implementará a transformação eiAt ∣b⟩ através da técnica de es-
timativa de fase de forma que ∣b⟩ estará decomposto na base de autovetores de
A e teremos os autovalores λj correspondentes. Uma vez que tenhamos os auto-
valores emaranhados com seus autovetores correspondentes e o sistema estiver na
forma ∑j (βj ∣ψj⟩) ∣λj⟩ , aplicaremos uma transformação que nos levará ao estado
∑j λ−1j (βj ∣ψj⟩) ∣λj⟩ para então realizarmos medições de forma a obter ∣x⟩ = A−1 ∣b⟩ .
Teremos, então, construído ∣x⟩ como representação quântica do desejado vetor x.
Infelizmente, a leitura de todas as componentes de x demandaria a execução do
algoritmo N vezes. Contudo, se estivermos interessados somente em um valor médio
xTMx (onde M é um operador linear), poderemos mapear M para um operador
quântico e aplicar a medição correspondente a M em ∣x⟩ para obter uma estimativa
desta média, ou seja, obteremos ⟨x∣M ∣x⟩ . Uma grande variedade de propriedades
do vetor x pode ser extraída desta forma, incluindo a normalização, momentos e
pesos em diferentes partes do espaço de estados.
3.3. APLICAÇÕES 35
3.3 Aplicações
A resolução de sistemas lineares pode ser encontrada como problema presente em
várias áreas, desde casos em que a própria resolução é o problema, como também em
casos em que é somente um meio de chegar a um outro resultado. Apresentaremos
aqui aplicações simples em que o algoritmo quântico poderia ser aplicado de forma
que propriedades extraídas da solução do sistema (ao invés da solução em si) são
úteis na resolução de problemas maiores.
3.3.1 Estados estáveis de processos estocásticos
Consideraremos um processo estocástico xt = Axt−1+b, onde a i-ésima coordenada
do vetor xt representa a quantidade de itens do tipo i no tempo t. O estado estável
desta distribuição será dado por ∣x⟩ = (I − A)−1 ∣b⟩ , e deniremos xt = Axt−1 + b e
assim ∣x⟩ = (I − A)−1 ∣b⟩ . Para determinarmos se ∣x⟩ e ∣x⟩ são similares, utilizaremos
o teste SWAP entre eles, como é descrito no apêndice B.
Este método pode ser utilizado por alguém que busque determinar similaridades
entre imagens ou identicar relações entre bancos de dados.
3.3.2 Ajuste Quântico de Dados e Aprendizado de Máquina
Ajuste de dados é o processo de construção e ajuste de modelos a uma série
discreta de dados adquiridos seguido da análise da acurácia do tal ajuste. Enge-
nheiros e cientistas utilizam variadas técnicas de ajuste de dados (data tting, no
inglês), incluindo equações matemáticas e métodos não-paramétricos. Estes ajustes
poderão, por sua vez, ser utilizados como um auxílio para a visualização de dados,
inferência de valores da função estimada para previsão de dados (possibilitando as-
sim o aprendizado de máquina, por exemplo) e para sintetizar as relações entre duas
ou mais variáveis.
Tipicamente, um modelo teórico dependerá de um número de parâmetros e de-
nições das relações entre os dados que dependerão destes parâmetros. Ajustar uma
grande quantidade de dados experimentais a estas relações funcionais permite a ob-
3.3. APLICAÇÕES 36
Figura 3.1: Exemplo de ajuste de curva, com pontos gerados por uma função Seno,
aproximada por curvas polinomiais (vermelho, verde, laranja e azul representam
primeiro, segundo, terceiro e quarto graus, respectivamente) [1]
tenção de estimativas conáveis dos parâmetros. Se a quantidade de dados se torna
muito grande, o ajuste pode se tornar muito custoso, como é o caso de problemas de
física de alta energia com gigabytes de dados produzidos por segundo, como ocorre
no LHC (grande colisor de hádrons). A análise estrutural se inicia com uma ten-
tativa inicial e vai sendo melhorada através de iterações que testam variações dos
parâmetros do modelo. É, portanto, necessário que sejam estimados muitos mode-
los, e comparações entre eles sejam feitas de forma a determinar a aproximação mais
precisa.
O algoritmo apresentado em [20] descreve uma adaptação do algoritmo de reso-
lução de sistemas lineares em destaque neste trabalho para obter, de forma eciente
quanticamente, a qualidade de um ajuste de dados sem que seja necessário determi-
nar os parâmetros de tal ajuste. Assim, o método de comparação de ajustes de dados
pode ser exponencialmente acelerado quando comparado com os métodos clássicos
para conjuntos muito grandes de informação.
Por sua vez, o artigo [21] mostra que um classicador binário otimizado (a cha-
3.4. PREPARAÇÃO DA ENTRADA 37
mada máquina de vetores de suporte) pode ser implementada em um computador
quântico com aceleração exponencial no tamanho dos vetores e no número de da-
dos de treinamento (no caso do aprendizado de máquina supervisionado). Também
aqui, o algoritmo de sistemas lineares é utilizado para, de forma eciente, inverter
a matriz núcleo de dados de treinamento.
3.4 Preparação da entrada
Para adaptar o problema clássico Ax = b ao contexto quântico, normalizaremos
os vetores (de forma que ∥x∥ = ∥b∥ = 1) e aplicaremos uma transformação à matriz
A.
Com isso, a entrada de nosso algoritmo quântico será composta por três sub-
sistemas: um qubit auxiliar inicializado em ∣0⟩ que será usado para determinar o
sucesso do algoritmo, um registrador de n qubits de memória inicializado em ∣0⟩⊗n
e o estado de entrada ∣b⟩ .
3.4.1 Simulação hamiltoniana
Como vimos na seção 2.1.8, a evolução temporal de um estado quântico é descrita
pela equação de Schrödinger
i~ ddt
∣ψ(t)⟩ =H(t) ∣ψ(t)⟩ (3.9)
em que H(t) é o operador hermitiano atuando em n qubits (e, portanto, de di-
mensão 2n × 2n) chamado hamiltoniano. Como o hamiltoniano, em sua denição
matricial, é hermitiano, o estado nal da evolução ∣ψ(t)⟩ e o estado inicial ∣ψ(0)⟩
estão relacionados por uma transformação unitária (e, portanto, reversível) Ut,0:
∣ψ(t)⟩ = Ut,0 ∣ψ(0)⟩ . (3.10)
Aplicando a condição na equação de Schrödinger, temos:
i~ ddt
∣ψ(t)⟩ = i~ ddtUt,0 ∣ψ(0)⟩ =H(t)Ut,0 ∣ψ(0)⟩ . (3.11)
3.4. PREPARAÇÃO DA ENTRADA 38
Como ∣ψ(0)⟩ é um ket constante (representando o estado inicial do sistema, em
t = 0), e como a equação acima é verdadeira para qualquer ket em um espaço de
Hilbert, o operador de evolução sobre o tempo deve satisfazer
i~ ddtUt,0 =H(t)Ut,0. (3.12)
A equação acima é um caso de equação diferencial ordinária com coeciente
matricial, cuja resolução nos dará que
Ut,0 = e−iH(t−t0)/~ = e−iHt/~, (3.13)
se supusermos que o operadorH independe do tempo, como é o caso do Hamiltoniano
do algoritmo de resolução de sistemas lineares aqui apresentado. A solução pode ser
vericada se expandirmos a função exponencial como série de Taylor (como descrito
na seção 2.1.6.2) e diferenciarmos termo a termo com respeito ao tempo t.
Voltando ao contexto do algoritmo a ser exposto, a matriz de entrada A do sis-
tema linear é s-esparsa. Para sermos capazes de simular o Hamiltoniano do sistema,
decomporemos a matriz na forma A = ∑mj=1Aj, onde cada Aj é 1-esparso, isto é, tem
no máximo uma entrada diferente de zero por linha/coluna. Os Aj são chamados
Hamiltonianos locais, e só atuam em O(1) qubits cada [22].
Uma vez com os valores das simulações de cada Aj, é possivel simular, eciente-
mente, a matriz A através do operador e−iAt em tempo O(log(N)s2t) [23].
Poderemos também executar o algoritmo de resolução no caso em que A não é
hermitiana, relaxando a hipótese original. Neste caso, deniremos
C =⎡⎢⎢⎢⎢⎢⎣
0 A
A 0
⎤⎥⎥⎥⎥⎥⎦, (3.14)
que é, por sua vez, uma matriz hermitiana. Tendo obtido C, poderemos resolver a
equação
Cy =⎡⎢⎢⎢⎢⎢⎣
b
0
⎤⎥⎥⎥⎥⎥⎦(3.15)
3.5. O ALGORITMO 39
utilizando o algoritmo de resolução de sistemas lineares e, então, obteremos
y =⎡⎢⎢⎢⎢⎢⎣
0
x
⎤⎥⎥⎥⎥⎥⎦. (3.16)
3.4.2 Codicando b em ∣b⟩
Para produzir o estado de entrada ∣b⟩ , suporemos que existe um operador unitá-
rio B que produzirá o estado esperado, possivelmente com lixo em um registrador
auxiliar. A preparação deste operador pode fazer parte de um algoritmo externo
e mais complexo, assim como ser um procedimento como em [24], que descreve a
criação de uma superposição quântica de forma
∣ψ(pi)⟩ =∑i
√pi ∣i⟩ (3.17)
dada uma distribuição probabilística pi, e em que ∣i⟩ representa um dos vetores
de uma base ortonormal.
É importante notar que, uma vez que a preparação de ∣b⟩ através de B é uma
rotina externa ao algoritmo aqui apresentado, não temos outra forma de produzir
o estado esperado assim como também não é possível executar alguma vericação
sobre a estrutura de ∣b⟩ de forma a detectar e mitigar possíveis erros provenientes de
sua produção. Assim, todo e qualquer erro na produção de ∣b⟩ irá necessariamente
ser propagado em erros no estado nal ∣x⟩ obtido pelo algoritmo de resolução de
sistemas lineares descrito a seguir.
3.5 O algoritmo
Suponhamos que a equação Ax = b tenha sido dada, em que b tem N entradas, e
também que b foi mapeado em um estado quântico ∣b⟩ de log2N qubits e A em um
operador quântico, de modo que possamos nos beneciar do paralelismo quântico ao
avaliar a aplicação de uma certa função em superposição. O algoritmo apresentado a
seguir aplicará a transformação eiAt ∣b⟩ para, através da sub-rotina de estimativa de
fase, decompor o estado quântico ∣b⟩ no conjunto de autovetores de A e encontrar os
3.5. O ALGORITMO 40
autovalores λj associados. Para a inversão da matriz A, bastará que encontremos
o recíproco de cada um dos autovalores. Uma vez que estes autovalores estarão
emaranhados no estado quântico obtido, será necessário aplicar uma operação não-
linear de rotação, controlada por cada autovalor invertido, de forma a modicar
o qubit auxiliar para que possamos determinar o sucesso ou falha da execução do
algoritmo. A seguir, uma medição será feita neste qubit, na tentativa de obter
um resultado bem sucedido. Como o algoritmo é probabilístico, existe sempre a
possibilidade de retornar um estado que não corresponde a uma solução do sistema
dado. Dada a medição esperada, será possível extrair o estado ∣x⟩ = A−1 ∣b⟩ . A
execução do procedimento cresce poli-logarítmicamente com a dimensão N , como
será descrito nas seções a seguir.
O algoritmo produz uma representação mecânico-quântica do vetor buscado x.
Para obter todos os componentes deste vetor, seria necessário executar o algoritmo
N vezes, de forma a ler uma entrada por vez. Porém, quando se está interessado em
obter um valor médio xTMx dado por um operador linear qualquer M , que possa
ser mapeado em um operador quântico, pode-se obter tal estimativa ao realizar
⟨x∣M ∣x⟩ , e, neste caso, o ganho de complexidade em comparação aos algoritmos
clássicos será exponencial, permitindo o processamento de uma grande massa de
dados em um tempo de ordem logarítmica.
Apresentamos a seguir cada passo do algoritmo desenvolvido em [8]. Nas seções
seguintes, detalhamos a análise de complexidade do procedimento, e destacamos
alguns experimentos realizados sobre esta base teórica.
Na gura 3.2, podemos ver em mais detalhes cada etapa do algoritmo represen-
tadas num circuito quântico. Uma vez preparada a entrada do algoritmo, teremos
o estado inicial
∣ψ0⟩ = ∣0⟩ ⊗ ∣0l⟩ ⊗ ∣0m⟩ ⊗ ∣0t⟩⊗ ∣b⟩ , (3.18)
em que temos um qubit auxiliar, além de l, m e t qubits inicializados em ∣0⟩ nos
registradores L, M e C, respectivamente, e o estado de entrada ∣b⟩ inicializado no
registrador B.
3.5. O ALGORITMO 41
Figura 3.2: Circuito para resolução de sistemas lineares, adaptado de [2], em que
REC representa a rotina de cálculo do recíproco dos autovalores λj da matriz A.
O número de qubits que serão utilizados nos registradores L e M é inuenciado
por dois fatores. A precisão desejada para codicar binariamente os autovalores λj
de A e seus recíprocos1
λj. Assim, se a precisão buscada for O(2q), serão necessários
q qubits. Em segundo lugar, o número de qubits depende do número de condição κ
da matriz A, uma vez que o funcionamento do circuito de inversão de autovalores
requer que 2m seja maior do que todos os autovalores de A, isto é, m ≥ ⌈logλmax⌉
e que o registrador L tenha qubits sucientes para que o maior1
λmin
possa ser
codicado, ou seja, l ≥ ⌈logλmin⌉. Reunindo as duas condições, teremos que
m − l ≈ logλmax
λmin
≈ logκ. (3.19)
Para facilitar a descrição do circuito quântico, analisaremos separadamente a
evolução do estado ao longo das várias transformações requeridas pelo algoritmo.
Podemos notar que, inicialmente, os registradores C e B são transformados separa-
damente dos registradores L e M : faremos então a descrição isoladamente até que
seja necessário unir os estados.
3.5. O ALGORITMO 42
Figura 3.3: Etapa inicial de transformação dos registradores C e B.
3.5.1 Registradores C e B
3.5.1.1 Balanceamento de Hadamard
Partiremos do estado
∣η0⟩ = ∣0t⟩ ⊗ ∣b⟩ . (3.20)
A primeira porta a ser aplicada é a porta de Hadamard no registrador C, de forma
a balancear o estado para obtermos
∣η1⟩ =1
(√
2)t2t−1∑σ=0
∣σ⟩ ⊗ ∣b⟩ . (3.21)
O próximo passo é a aplicação da evolução hamiltoniana no registrador B controlada
pelo registrador C.
3.5.1.2 Evolução hamiltoniana
Como vimos, o operador de evolução sobre o tempo, que se utiliza do hamilto-
niano do sistema linear é dado por
U(t) = e−iAt. (3.22)
Introduziremos aqui os autovalores e autovetores do hamiltoniano H que devem
satisfazer
H ∣ψj⟩ = λj ∣ψj⟩ . (3.23)
Este conjunto de autovetores forma uma base ortonormal completa para um
espaço de Hilbert. Portanto, um estado ∣φ(t)⟩ , qualquer, pode ser expandido sobre
eles de acordo com uma combinação linear dos autovetores que formam a base de
3.5. O ALGORITMO 43
autovalores deste espaço, ou seja,
∣φ(t)⟩ =∑j
ϕj(t) ∣µj⟩ , (3.24)
em que ϕj(t) = ⟨µj ∣φ(t)⟩ representa a amplitude para obtenção do valor µj se for
feita uma medição do estado em que foi aplicado H no tempo t, [25], [26].
Vamos, para ns do algoritmo, supor hamiltonianos independentes do tempo e
desta forma, expandir o estado ∣b⟩ sobre a base de autovalores de A, obtendo
∣b⟩ =n
∑j=1βj ∣ψj⟩ , (3.25)
em que ∣ψj⟩ são os autovetores de A e βj é independente do tempo t. Poderemos,
então, escrever o estado ∣η1⟩ como
∣η1⟩ =1
(√
2)t2t−1∑σ=0
∣σ⟩ ⊗n
∑j=1βj ∣ψj⟩ , (3.26)
ou também
∣η1⟩ =1
(√
2)t2t−1∑σ=0
n
∑j=1βj ∣σ⟩ ∣ψj⟩ . (3.27)
3.5. O ALGORITMO 44
Figura 3.4: Aplicação da simulação hamiltoniana controlada.
Como A ∣ψj⟩ = λj ∣ψj⟩ , então, a exponenciação de A aplicado em ∣ψj⟩ resultará
em
eA ∣ψj⟩ =∞∑r=0
Ar
r!∣ψj⟩ =
∞∑r=0
λrjr!
∣ψj⟩ = eλj ∣ψj⟩ , (3.28)
como descrito na seção 2.1.6.2. Estendendo esta denição para o caso estudado,
basta substituirmos o expoente do operador pelo desejado:
e−iAt0
2t ∣b⟩ =n
∑j=1e−iλjt0
2t βj ∣ψj⟩ , (3.29)
em que vamos denir a fase t0 = 2π. Além disso, também precisaremos incluir a
exponenciação do valor da kt-ésima posição da expansão binária de σ nos casos em
que o valor de controle da porta lógica for não-nulo. Unindo todas essas denições,
quando aplicarmos a simulação hamiltoniana em ∣b⟩ , teremos
n
∑j=1e−i2πλj
2tσβj ∣ψj⟩ . (3.30)
Em suma, a aplicação da simulação hamiltoniana controlada pelo registrador C
transformará o estado ∣η1⟩ em
∣η2⟩ =1
(√
2)t2t−1∑σ=0
n
∑j=1βje
2πiλj
2tσ ∣σ⟩ ∣ψj⟩ , (3.31)
que novamente, pode ser reescrito como
∣η2⟩ =1
(√
2)tn
∑j=1βj
⎛⎝
2t−1∑σ=0
e2πiλj
2tσ ∣σ⟩
⎞⎠∣ψj⟩ . (3.32)
3.5.1.3 Transformada de Fourier
O último passo desta etapa é a aplicação da transformada de Fourier inversa
no registrador C, isto é, em ∣σ⟩ . Como vimos na seção 2.2.5, a aplicação da
3.5. O ALGORITMO 45
transformada de Fourier em um estado ∣φ⟩ = ∑µ−1j=0 αj ∣j⟩ , de µ entradas, tem o
seguinte comportamento:
F ∣φ⟩ =µ−1∑k=0
⎛⎝
1õ
µ−1∑j=0
αje2πijk/µ⎞
⎠∣k⟩ . (3.33)
Aplicando-o ao primeiro registro de ∣η2⟩ , obteremos
F ∣σ⟩ = 1
(√
2)t2t−1∑τ=0
e−2πiτ
2tσ ∣τ⟩ (3.34)
e assim,
∣η3⟩ =1
(√
2)t1
(√
2)tn
∑j=1βj
⎡⎢⎢⎢⎢⎣
2t−1∑σ=0
e2πiλj
2tσ(
2t−1∑τ=0
e−2πiτ
2tσ ∣τ⟩)
⎤⎥⎥⎥⎥⎦∣ψj⟩ , (3.35)
que pode ser reescrito como
∣η3⟩ = ( 1√2)2t n
∑j=1βj
2t−1∑τ=0
(2t−1∑σ=0
e2πiσ2t(λj−τ)) ∣τ⟩ ∣ψj⟩ . (3.36)
3.5.1.4 Simplicação do estado
Antes de seguir adiante com o circuito do algoritmo, vamos denir k = λj − τ .
Podemos notar que o termo
2t−1∑σ=0
e2πiσ2t(λj−τ) =
2t−1∑σ=0
e2πiσ2t
k (3.37)
pode ser reescrito como uma soma de progressão geométrica de razão e2πi2tk, de forma
2t−1∑σ=0
(e2πi2tk)
σ
= 1 + (e2πi2tk) + (e
2πi2tk)
2
+⋯ + (e2πi2tk)
2t−1
. (3.38)
Resolvendo esta soma, teremos que, se k ≠ 0, então
2t−1∑σ=0
(e2πi2tk)
σ
=1 − (e
2πi2tk)
2t−1
(e2πi2tk)
1 − e2πi2tk
= 1 − e2πik
1 − e2πi2tk, (3.39)
que se anula, uma vez que e2πik = 1 pela fórmula de Euler eix = cosx + i senx. Logo,
toda vez que λj ≠ τ o valor deste termo se anulará. Assim, poderemos simplicar a
expressão de ∣η3⟩ para mantermos somente os termos em que τ = λj e
2t−1∑σ=0
e2πiσ2t(λj−τ) =
2t−1∑σ=0
1 = 2t. (3.40)
3.5. O ALGORITMO 46
Agora que temos τ = λj, reescreveremos ∣η3⟩ como
∣η3⟩ = ( 1√2)2t
2tn
∑j=1βj ∣λj⟩ ∣ψj⟩ =
n
∑j=1βj ∣λj⟩ ∣ψj⟩ . (3.41)
Finalizada a etapa inicial dos registradores C e B, é importante notar que a
simulação hamiltoniana é um passo chave do algoritmo, pois é onde está o grande
benefício da utilização de operadores quânticos: o paralelismo quântico colocará o
segundo registro do estado em superposição quântica associada a todos os autova-
lores da matriz A. Além disso, devemos lembrar, que o valor λj obtido em ∣η3⟩
foi codicado por um número nito de qubits, e portanto, não é o valor exato do
autovalor de A, mas sim uma aproximação sob um certo grau de precisão baseado
nos fatores já descritos acima.
3.5.2 Inversão de autovalores
Até o momento, o estado global do sistema que obtemos após a aplicação das
portas nos registradores C e B é
∣ρ⟩ = ∣0⟩ ⊗ ∣0l⟩ ⊗ ∣0m⟩ ⊗ ∣η3⟩ (3.42)
= ∣0⟩ ⊗ ∣0l⟩ ⊗ ∣0m⟩ ⊗n
∑j=1βj ∣λj⟩ ∣ψj⟩ . (3.43)
Neste passo, estamos interessados em extrair os autovalores de A−1 para que possa-
mos calcular a inversão da matriz A pela inversão de seus autovalores. Através da
utilização do método de Newton, descrito no caso geral no apêndice D, calcularemos
a raiz da função
g(x) = 1
x− λ, (3.44)
em que λ é o autovalor cujo recíproco buscamos, uma vez que
g(x) = 0↔ x = 1
λ. (3.45)
A iteração de Newton para a função g será dada por
xi+1 = xi +g(xi)g′(xi)
= xi +1xi− λ1x2i
= 2xi − λx2i . (3.46)
3.5. O ALGORITMO 47
Para cada autovalor λj, em que λj > 1, utilizaremos uma aproximação inicial
x0 ≈ 2−p, de forma que 2p−1 < λj < 2p, ou seja, p é o expoente da potência de 2
imediatamente seguinte a λj. Vale notar que x0 não é exatamente igual a 2−p, uma
vez que sua representação binária é uma aproximação por truncamento em m bits
de precisão do valor real.
O circuito para a estimativa de x0 que aplica a transformação
∣0m⟩ ∣λj⟩ → ∣x0⟩ ∣λj⟩ , se λj > 1 ; (3.47)
∣0m⟩ ∣λj⟩ → ∣0m⟩ ∣λj⟩ , caso contrário (3.48)
está apresentado em [27].
Uma vez obtida a aproximação inicial xj0 para o método de Newton que calculará
o recíproco do autovalor λj, podemos executar as iterações
xi+1 = 2xi − λx2i (3.49)
usando um circuito quântico como o representado na gura 3.5. Este tipo de circuito
pode ser implementado através da concatenação de circuitos quânticos para adição
e multiplicação, como os que estão descritos na literatura [27].
Figura 3.5: Circuito implementando cada passo iterativo do método de Newton,
adaptado de [2].
O estado obtido após a inversão dos autovalores através da aplicação do método
de Newton será
∣υ0⟩ =n
∑j=1βj ∣ϑj⟩ ∣λj⟩ ∣ψj⟩ , (3.50)
em que ∣ϑj⟩ ≈ ∣1/λj⟩ , ou seja, poderíamos escrever
∣υ0⟩ ≈n
∑j=1βj ∣1/λj⟩ ∣λj⟩ ∣ψj⟩ . (3.51)
3.5. O ALGORITMO 48
3.5.3 Rotação controlada
Partindo do estado obtido da inversão de autovalores, adicionaremos um qubit
auxiliar e realizaremos a rotação Ry controlada pelo qubit ∣ϑj⟩ .
Antes, é importante denir a rotação. A matriz de rotação Ry é dada por
Ry =⎡⎢⎢⎢⎢⎢⎣
cos θ2 sen θ2
− sen θ2 cos θ2
⎤⎥⎥⎥⎥⎥⎦= e−i θ2σy , (3.52)
em que σy é a matriz Y de Pauli
σy =⎡⎢⎢⎢⎢⎢⎣
0 −i
i 0
⎤⎥⎥⎥⎥⎥⎦, (3.53)
que mapeia os estados de forma
σy ∣0⟩ → i ∣1⟩ (3.54)
σy ∣1⟩ → − i ∣0⟩ . (3.55)
Então, a aplicação de Ry(θ) terá o mesmo efeito que aplicar a operação
Ry(θ) = e−iθ2σy = cos
θ
21 − i sen
θ
2σy. (3.56)
Finalmente, voltando ao estado do sistema estudado, adicionando o qubit auxi-
liar, caremos com
∣υ1⟩ = ∣0⟩ ⊗n
∑j=1βj ∣ϑj⟩ ∣λj⟩ ∣ψj⟩ , (3.57)
e aplicando a rotação controlada, teremos
∣υ2⟩ =n
∑j=1
( cosϑj21 − i sen
ϑj2σy) ∣0⟩ ⊗ βj ∣ϑj⟩ ∣λj⟩ ∣ψj⟩
=n
∑j=1
( cosϑj2
∣0⟩ − i senϑj2⋅ i ∣1⟩)⊗ βj ∣ϑj⟩ ∣λj⟩ ∣ψj⟩
=n
∑j=1
( cosϑj2
∣0⟩ + senϑj2
∣1⟩)⊗ βj ∣ϑj⟩ ∣λj⟩ ∣ψj⟩
Como sabemos,
sen 2 (ϑj2) + cos2 (
ϑj2) = 1, (3.58)
3.5. O ALGORITMO 49
e então
cos(ϑj2) =
√1 − sen 2 (
ϑj2). (3.59)
Escolhendo a constante C tal que
C
λj= sen (
ϑj2) , (3.60)
podemos reescrever o estado como
∣υ2⟩ =n
∑j=1
(¿ÁÁÀ1 − C
2
λ2j∣0⟩ + C
λj∣1⟩)⊗ βj ∣ϑj⟩ ∣λj⟩ ∣ψj⟩ , (3.61)
em que 0 < C ≤ minjλj, ou seja C = O(1/κ). Unindo os termos do produto
tensorial, obteremos
∣υ2⟩ =n
∑j=1βj(
¿ÁÁÀ1 − C
2
λ2j∣0⟩ + C
λj∣1⟩) ∣ϑj⟩ ∣λj⟩ ∣ψj⟩ . (3.62)
Vale lembrar que, para valores deϑj2
pequenos, teremos sen (ϑj2) ≈
ϑj2, e nestes
casos, C ≈ϑjλj
2.
3.5.4 Computação reversa
Como vimos na seção 2.2.2.2, as portas quânticas unitárias são reversíveis. Por-
tanto, é simples desfazer as operações aplicadas nos passos anteriores: rotações de
ângulo θ, operadores hamiltonianos do tipo e−iAt e a transformada de Fourier serão
revertidas por rotações em −θ, operadores hamiltonianos em eiAt e pela transformada
de Fourier inversa (FT ), respectivamente.
O estado que tínhamos será então alterado de forma que o segundo e terceiro
registradores sejam desemaranhados ao estado 0⊗l e 0⊗m. Assim, terminaremos com
o estado
∣ν⟩ =n
∑j=1βj(
¿ÁÁÀ1 − C
2
λ2j∣0⟩ + C
λj∣1⟩) ∣0l⟩ ∣0m⟩ ∣ψj⟩ . (3.63)
Passando a levar em conta somente o primeiro e último registradores, podemos
escrever o estado ∣ν⟩ na forma
∣ν⟩ =n
∑j=1βj(
¿ÁÁÀ1 − C
2
λ2j∣0⟩ + C
λj∣1⟩) ∣ψj⟩
=n
∑j=1
¿ÁÁÀ1 − C
2
λ2j∣0⟩βj ∣ψj⟩ +
n
∑j=1
C
λj∣1⟩βj ∣ψj⟩ .
3.5. O ALGORITMO 50
Lembrando que ∣b⟩ = ∑nj=1 βj ∣ψj⟩ , vamos utilizar o fato que
A−1 ∣b⟩ = A−1n
∑j=1βj ∣ψj⟩
=n
∑j=1βjA
−1 ∣ψj⟩
=n
∑j=1βj
1
λj∣ψj⟩ ,
e que
A ∣ψj⟩ = λj ∣ψj⟩
∣ψj⟩ = λjA−1
²I
∣ψj⟩ ,
e assim, seguiremos a simplicação de ∣ν⟩ :
∣ν⟩ =n
∑j=1
√λ2j −C2
λj∣0⟩βj ∣ψj⟩ +
n
∑j=1CβjA
−1 ∣1⟩ ∣ψj⟩
=n
∑j=1
√λ2j −C2βjA
−1 ∣0⟩ ∣ψj⟩ +n
∑j=1CβjA
−1 ∣1⟩ ∣ψj⟩
=n
∑j=1
¿ÁÁÀλ2jA
−2
²I2=I
−C2A−2βj ∣0⟩ ∣ψj⟩ +CA−1 ∣1⟩ ∣b⟩
=n
∑j=1
√1 −C2A−2βj ∣0⟩ ∣ψj⟩ +CA−1 ∣1⟩ ∣b⟩
=√1 −C2A−2 ∣0⟩ ∣b⟩ +CA−1 ∣1⟩ ∣b⟩
= ∣0⟩(√1 −C2A−2 ∣b⟩) + ∣1⟩(CA−1 ∣b⟩).
3.5.5 Medição
Condicionaremos o sucesso da execução do algoritmo ao resultado obtido pela
medição do qubit auxiliar que introduzimos juntamente com os dados da entrada
do sistema. Como podemos ver pela descrição de nosso estado atual:
∣ν⟩ = ∣0⟩(√1 −C2A−2 ∣b⟩) + ∣1⟩(CA−1 ∣b⟩), (3.64)
quando a medição do qubit auxiliar resultar na projeção em ∣1⟩ , o estado do sistema
será então transformado em
∣1⟩aux.
n
∑j=1Cβjλ
−1j ∣ψj⟩ , (3.65)
3.5. O ALGORITMO 51
que é proporcional ao estado que buscamos calcular ∣x⟩ = ∑j βjλ−1j ∣ψj⟩ .
Seremos capazes de determinar a constante de normalização a partir da proba-
bilidade de obter ∣1⟩ no último passo. Como o estado nal do algoritmo pode ser
escrito comon
∑j=1
¿ÁÁÀ1 − C
2
λ2j∣0⟩βj ∣ψj⟩ +
n
∑j=1
C
λj∣1⟩βj ∣ψj⟩ , (3.66)
basta exponenciar à segunda potência a amplitude do caso de obtenção de ∣1⟩ ,
obtendo
p(obter ∣1⟩) =n
∑j=1
C2
λ2j× βj2, (3.67)
que é da ordem O(1/κ2) uma vez que C = O(1/κ).
Por outro lado, se a medição do qubit auxiliar for projetada em ∣0⟩ , o estado em
que o sistema colapsará será
∣0⟩aux.
∣b⟩ (3.68)
que é justamente o estado de entrada do algoritmo. Poderemos então utilizar esta
saída como entrada de uma nova iteração do circuito, e executá-lo até que a medição
bem sucedida seja obtida.
Finalmente, faremos uma medição M cujo valor médio (esperança) ⟨x∣M ∣x⟩
corresponde à propriedade de x que gostaríamos de avaliar.
Capítulo 4
Resultados e trabalhos relacionados
Apresentaremos nesta seção uma breve análise da complexidade do algoritmo
de resolução apresentado anteriormente. Além disso, vamos compará-lo com os
algoritmos mais utilizados classicamente, explicitando assim a melhora em eciência
existente nas execuções quânticas.
Serão expostas também referências a trabalhos relacionados no que se refere às
diversas implementações físicas já realizadas e seus resultados, assim como também
às nuances teóricas de cada implementação.
4.1 Comparação de eciência: Clássico × Quântico
A etapa de simulação quântica de e−iAt, em que supomos A s-esparsa, pode ser
feita em tempo linear em t e quadrático em s, [8], [6]. A sub-rotina de estimativa de
fase introduzirá um erro de ordem O(1/t) enquanto estima o autovalor λ, e que será
propagado em um erro relativo de O(1/λt) quando consideramos a inversão λ−1.
Como temos que λ ≥ 1/κ, onde κ é o número de condição da matriz A, se tomarmos
t = O(κ/ε), o erro aproximado ao nal do processo será da ordem O(ε).
Considerando agora a probabilidade de uma medição com sucesso do qubit au-
xiliar introduzido na fase de rotação do algoritmo, como C = O(1/κ) e λ ≤ 1, esta
probabilidade é de pelo menos Ω(1/κ2). Utilizaremos o algoritmo de amplicação
4.2. EXPERIMENTOS 53
de amplitude [28], descrito no apêndice C, para diminuir o número de tentativas de
obtenção do caso de sucesso e concluiremos que serão necessárias no máximo O(κ)
repetições.
Simplicando a análise, teremos então uma complexidade para este algoritmo de
ordem
O( log2 (N)s2t´¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¸¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¶
estimativa de fase
) com t = O(κ/ε)
O⎛⎝
log2 (N)s2´¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¸¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¶
estimativa de fase
evol. hamilt. em t©κ
ε
⎞⎠× O(κ)
²repetições
= O⎛⎝
log2 (N)s2κ2ε
⎞⎠. (4.1)
Como vimos nas seções 3.1.1 e 3.1.2, a análise de complexidade dos algoritmos
clássicos exige operações desde ordem O(N3) até O(m√κ) = O(Ns
√κ log (1/ε)) no
melhor caso [8]. Em comparação com o que foi obtido aqui, vemos que a dependência
do algoritmo quântico em N (dimensão da matriz de entrada) é exponencialmente
melhor, sendo a s e κ comparáveis, enquanto a dependência em ε é exponencial-
mente pior (o que faz sentido intuitivamente, levando em consideração a melhora
na dependência em N), [29].
Os autores em [8] demonstram ainda a impossibilidade de melhorar a eciência
do algoritmo quântico na dependência em ε, ao tentar obter uma dependência similar
ao caso clássico de tempo log (1/ε), [30].
4.2 Experimentos
Desde a publicação do artigo original, [8], alguns grupos de pesquisadores in-
vestiram esforços em executá-lo experimentalmente, para comprovar sua corretude
e sobretudo, sua eciência. Destacamos aqui três experimentos realizados quase
concomitantemente.
4.2. EXPERIMENTOS 54
4.2.1 Barz et. al [3]
A utilização de qubits codicados pela polarização fotônica, com ∣0⟩ e ∣1⟩ deno-
tando a polarização horizontal e vertical, respectivamente, e a aplicação de dois tipos
de portas CNOT adaptadas (o primeiro tipo representa a lógica da porta CNOT, e
o segundo tipo realiza a medição de forma destrutiva através da utilização de um
separador de raios dependente da polarização - ou polarisation-dependent beam split-
ter, PDBS, no inglês), em conjunto com operações locais unitárias, foram capazes
de implementar o circuito do algoritmo.
Nos experimentos relatados em [3], foram variados alguns parâmetros, dentre
eles a matriz de entrada A (mantendo ou alterando seus autovalores) e o estado ∣b⟩ ,
e feita a medição do qubit auxiliar para o estado esperado ∣1⟩ .
Foram obtidos valores de delidade de mais de 90% para os sistemas lineares
selecionados através das matrizes de entrada.
Figura 4.1: Resultados obtidos, adaptado de [3].
4.2. EXPERIMENTOS 55
4.2.2 Pan et. al [4]
Diferentemente do primeiro experimento, neste foram utilizados um núcleo de
carbono-13 e três núcleos de úor-19 em uma implementação de ressonância nuclear
magnética (a NMR, na sigla em inglês, utiliza o spin das moléculas como qubits)
para representar um sistema de quatro qubits. O sistema é preparado em um estado
pseudo-puro usando o método da transição seletiva por linha, descrito em [31] e [32].
O algoritmo de sistemas lineares é, então aplicado, ao estado preparado usando um
pulso de formato de rádio-frequência e o estado nal é medido para obter a solução
do sistema de equações.
No artigo, foram preparados três diferentes b e, enquanto os erros mensurados
estiveram em torno de 7%, a delidade experimental rondou 96%.
Figura 4.2: Resultados obtidos, adaptado de [4].
4.2.3 Cai et. al [5]
Assim como no primeiro experimento, aqui são preparados quatro fótons como
qubits de entrada para codicar os qubits lógicos baseados na polarização. A etapa
da estimativa de fase é implementada usando um PDBS para emular as portas
CNOT e a rotação utiliza-se de portas unitárias controladas. O qubit auxiliar é
medido para determinar o sucesso do algoritmo.
São selecionados três vetores de entrada para os experimentos: ∣b1⟩ = (∣H⟩ +
∣V ⟩)/√
2, ∣b2⟩ = (∣H⟩ − ∣V ⟩)/√
2 e ∣b3⟩ = ∣H⟩ , onde ∣H⟩ e ∣V ⟩ representam os estados
de polarização fotônica. O algoritmo é então aplicado para determinar o valor médio
4.2. EXPERIMENTOS 56
⟨x∣M ∣x⟩ onde M é um operador, sendo este no caso dos experimentos testado com
os valores dos operadores de Pauli. Os estados de saída são medidos com delidade
de 0.993, 0.825 e 0.836 para cada ∣bi⟩ respectivamente.
Figura 4.3: Resultados obtidos, adaptado de [5].
As diferenças em performance na aplicação do algoritmo para as entradas seleci-
onadas estão ligadas à conguração ótica inicial usada no experimento, por eventos
de decoerência dos fótons e a precisão da simulação das portas CNOT através do
PDBS. Ainda assim, a delidade obtida nos experimentos realizados ca em torno
dos 90%.
Capítulo 5
Implementação
Após a apresentação teórica do algoritmo e de práticas utilizando elementos
da física experimental, apresentaremos aqui uma implementação computacional do
mesmo, utilizando a plataforma gratuita para computação numérica Scilab. O ob-
jetivo deste capítulo é demonstrar o funcionamento do algoritmo, simulando um
computador quântico através da implementação clássica e utilizando um sistema
simplicado de forma a diminuir o número de portas lógicas necessárias para mode-
lar as etapas do circuito quântico.
O sistema linear que será resolvido será de forma Ax = b, em que A é uma matriz
2×2 hermitiana e com autovalores que possam ser representados como potências de
2, e b é um vetor 2 × 1 qualquer.
Para a execução que faremos, a entrada escolhida é
A =⎛⎜⎝
3 1
1 3
⎞⎟⎠
(5.1)
b =⎛⎜⎝
1
0
⎞⎟⎠, (5.2)
que formará então o sistema
⎛⎜⎝
3 1
1 3
⎞⎟⎠
⎛⎜⎝
x1
x2
⎞⎟⎠=⎛⎜⎝
1
0
⎞⎟⎠. (5.3)
58
Podemos notar que A é hermitiana, uma vez que A = A, seus autovalores são
λ1 = 2 = 21 e λ2 = 4 = 22 e sua diagonalização pode ser escrita como
A = S ⋅D ⋅ S−1 =⎛⎜⎝
−1 1
1 1
⎞⎟⎠⋅⎛⎜⎝
2 0
0 4
⎞⎟⎠⋅⎛⎜⎝
−12
12
12
12 .
⎞⎟⎠. (5.4)
Resolvendo classicamente o sistema, é fácil encontrar as entradas de x, que equivalem
a
x =⎛⎜⎝
x1
x2
⎞⎟⎠=⎛⎜⎝
38
−18
⎞⎟⎠. (5.5)
O circuito quântico implementado para resolver este tipo de sistema é uma sim-
plicação do circuito apresentado na gura 3.2, de forma que a etapa de inversão
de autovalores é substituída por portas SWAP. Como os autovalores da matriz de
entrada são potências de 2, e podem ser escritos facilmente através de sua repre-
sentação binária, a troca de posições binárias bastará para inverter os autovalores.
No caso do sistema proposto, em que o registrador C tem três qubits e utilizando a
matriz A escolhida anteriormente, teremos
∣λ1⟩ = ∣2⟩ = ∣010⟩CSWAPÐÐÐ→ ∣001⟩ = ∣4⟩ = ∣12 × 23⟩ ;
∣λ2⟩ = ∣4⟩ = ∣001⟩CSWAPÐÐÐ→ ∣010⟩ = ∣2⟩ = ∣14 × 23⟩ .
O circuito simplicado completo para resolver este sistema está representado na
gura 5.1.
O sistema é inicializado em ∣ψ0⟩ = ∣0000b⟩ em que
∣b⟩ = b1,1 ∣0⟩ + b2,1 ∣1⟩ , (5.6)
e a aplicação das portas lógicas quânticas é representada matematicamente pela
multiplicação dos operadores matriciais que representam cada transformação. A
aplicação das primeiras portas de Hadamard no registrador C, por exemplo, será
representada pela multiplicação
∣ψ1⟩ = (I2×2 ⊗H ⊗H ⊗H ⊗ I2×2) ⋅ ∣ψ0⟩ , (5.7)
em que
H = 1√2
⎛⎜⎝
1 1
1 −1
⎞⎟⎠. (5.8)
59
Figura 5.1: Circuito quântico para resolução do sistema Ax = b com A2×2 e precisão
m na etapa de rotação. De cima para baixo temos o qubit auxiliar, três qubits para
o registrador C e um qubit que armazena ∣b⟩ . Adaptado de [2].
Da mesma forma que na análise teórica do algoritmo, selecionamos t0 = 2π para
aplicação da simulação hamiltoniana, e teremos um parâmetro m que representa a
precisão das rotações Ry aplicadas ao qubit auxiliar do sistema.
A saída do algoritmo, cujo código está reproduzido no apêndice E, para o sistema
linear apresentado acima, tendo selecionado m = 2 como precisão das rotações, está
no apêndice F. O estado resultante da execução do algoritmo imediatamente antes
da medição bem sucedida é dado por
psi_9 = −0.125|00000> + −0.375|00001> + %i *0.375|00010 > + −%i *0.375|00011 > +
−0.125|00100> + 0.125|00101 > + −%i *0.375|00110 > + −%i *0.125|00111 > +
0.375|10000 > + 0.125|10001 > + −%i *0.125|10010 > + %i *0.125|10011 > +
−0.125|10100> + 0.125|10101 > + −%i *0.375|10110 > + −%i *0.125|10111 >
60
que como podemos ver, é uma combinação de estados quânticos cujas amplitudes
variam entre os valores −0.375, −0.125, 0.125 e 0.375 na dimensão real e complexa.
Ora, estes valores são proporcionais justamente aos valores das entradas de x que
calculamos classicamente em 5.5!
Capítulo 6
Trabalhos Futuros
A aplicação do solucionador quântico de equações pode ser estendida para uma
grande variedade de campos do conhecimento como, por exemplo, a resolução de
equações de Poisson na química quântica até aplicações práticas de modelagem,
como descrito na seção 3.3.
Um dos objetivos deste trabalho é justamente motivar experimentalistas com
capacidade de utilizar mais qubits do que o atual estado-da-arte em seus experi-
mentos, de forma a resolver sistemas de equações mais complexas e dessa forma, se
beneciar do aumento exponencial de eciência do método quântico.
A sequência deste trabalho envolve, portanto, a descrição e resolução de sistemas
lineares com número de condição mais alto com as chamadas matrizes mal condici-
onadas [33] e/ou a diminuição da dependência dos circuitos neste parâmetro, o que
permitirá o aumento da dimensão das matrizes em tais sistemas sem a preocupação
tão presente com a dimensão física dos registradores quânticos a serem construídos
para sua execução.
Além disso, seria interessante a investida na implementação demonstrativa de
sistemas de dimensão maior que 2×2, como também o relaxamento das hipóteses da
implementação apresentada no capítulo 5 para as matrizes de entrada do algoritmo.
Exemplos teóricos estão descritos para os casos até dimensão 8 × 8 em [2], e seria
interessante adaptar o código apresentado neste trabalho para dar um suporte mais
Referências
[1] A. Harrow, A. Hassidim, and S. Lloyd, Quantum algorithm for linear systems
of equations, Phys. Rev. Lett., vol. 103, oct 2009.
[2] R. Libo, Introductory quantum mechanics, pp. 450455, 1980.
[3] D. Newell, The 2010 codata recommended values of the fundamental physical
constants, 2011.
[4] T. C. S. I.-C. Association for Computing Machinery (ACM), Computing cur-
ricula 2005: The overview report, 2005.
[5] F. L. S. da Silva, Computação quântica: O algoritmo de Deutsch e o parale-
lismo quântico, Revista Physicae, 2002.
[6] C. Adami and N. J. Cerf, Quantum computation with linear optics, in Lecture
Notes in Computer Science, pp. 391401, Springer Science Business Media,
1999.
[7] E. Knill, R. Laamme, and G. J. Milburn, A scheme for ecient quantum
computation with linear optics, Nature, vol. 409, pp. 4652, jan 2001.
[8] M. Reck and A. Zeilinger, Experimental realization of any discrete unitary
operator, Phys. Rev. Lett., vol. 73, pp. 5861, jul 1994.
[9] P. Kok, K. Nemoto, T. C. Ralph, J. P. Dowling, and G. J. Milburn, Linear
optical quantum computing with photonic qubits, Reviews of Modern Physics,
vol. 79, pp. 135174, jan 2007.
REFERÊNCIAS 64
[10] G. D. Hutchinson and G. J. Milburn, Nonlinear quantum optical computing
via measurement, Journal of Modern Optics, vol. 51, pp. 12111222, may 2004.
[11] R. W. Farebrother, Linear least squares computations (statistics: A series of
textbooks and monographs), 1988.
[12] J. R. Shewchuk, An introduction to the conjugate gradient method without
the agonizing pain, 1994.
[13] Krishnavedala, This graph shows a series of points (generated by a sin function)
approximated by polinomial curves (red curve is linear, green is quadratic,
orange is cubic and blue is 4th degree), 2011.
[14] N. Wiebe, D. Braun, and S. Lloyd, Quantum data-tting, 2012.
[15] P. Rebentrost, M. Mohseni, and S. Lloyd, Quantum support vector machine
for big feature and big data classication, 2013.
[16] S. Lloyd, Universal quantum simulators, Science, New Series, Vol. 273, No.
5278, 1996.
[17] D. W. Berry, G. Ahokas, R. Cleve, and B. C. Sanders, Ecient quantum
algorithms for simulating sparse hamiltonians, Comm. Math. Phys., 2007.
[18] L. Grover and T. Rudolph, Creating superpositions that correspond to eci-
ently integrable probability distributions, 2008.
[19] Y. Cao, A. Daskin, S. Frankel, and S. Kais, Quantum circuit design for solving
linear systems of equations, 2011.
[20] Introductory quantum mechanics section V: Time de-
pendence. http://ocw.mit.edu/courses/chemistry/
5-73-introductory-quantum-mechanics-i-fall-2005/lecture-notes/
sec5.pdf, 2005. Accesso: 2014-10-01.
[21] Quantum theory of radiation interactions chapter 5: Time evo-
lution. http://ocw.mit.edu/courses/nuclear-engineering/
REFERÊNCIAS 65
22-51-quantum-theory-of-radiation-interactions-fall-2012/
lecture-notes/MIT22_51F12_Ch5.pdf, 2012. Acesso: 2014-10-01.
[22] N. Wiebe and M. Roetteler, Quantum arithmetic and numerical analysis using
repeat-until-success circuits, 2014.
[23] M. Nielsen and I. Chuang, Quantum computation and quantum information,
2010.
[24] G. Brassard, P. Hoyer, M. Mosca, and A. Tapp, Quantum amplitude ampli-
cation and estimation, Contemporary Mathematics Series Millenium Volume,
2002.
[25] V. Russo, Quantum algorithm for solving systems of linear equations, 2013.
[26] E. Farhi, J. Goldstone, S. Gutmann, and M. Sipser, A limit on the speed of
quantum computation in determining parity, Physical Review Letters.
[27] K. S. Barz, M. Ringbauer, Y. O. Lipp, B. Dakic, A. A. Guzik, and P. Walther,
Solving systems of linear equations on a quantum computer, 2013.
[28] J. Pan, Y. Cao, X. Yao, Z. Li, C. Ju, X. Peng, S. Kais, and J. Du, Experimental
realization of quantum algorithm for solving linear systems of equations, 2013.
[29] X. Peng, X. Zhu, X. Fang, M. Feng, K. Gao, X. Yang, and M. Liu, Preparation
of pseudo-pure states by line-selective pulses in nuclear magnetic resonance,
Chemical Physics Letters, vol. 340, pp. 509516, jun 2001.
[30] X. Peng, Z. Luo, W. Zheng, S. Kou, D. Suter, and J. Du, Experimental im-
plementation of adiabatic passage between dierent topological orders, Phys.
Rev. Lett., vol. 113, aug 2014.
[31] X. D. Cai, C. Weedbrook, Z. E. Su, and M. C. et al., Experimental quan-
tum computing to solve systems of linear equations, Physical Review Letters,
no. 230501, pp. 110115, 2013.
[32] A. M. Childs, Quantum algorithms: Equation solving by simulation, Nature
Physics, vol. 5, pp. 861861, dec 2009.
REFERÊNCIAS 66
[33] D. B. Trieu, Large-scale simulations of error prone quantum computation de-
vices, 2009.
[34] L. Grover, Quantum computers can search rapidly by using almost any trans-
formation, Phys. Rev. Lett., vol. 80, pp. 43294332, may 1998.
[35] E. Süli and D. F. Mayers, An Introduction to Numerical Analysis. Cambridge
University Press, 2003.
[36] T. Dence, Cubics, chaos and newton's method, The Mathematical Gazette,
vol. 81, pp. 403408, nov 1997.
[37] E. Weisstein, Newton's method.
Apêndice A
Transformada de Fourier Quântica
Neste apêndice, apresentaremos a transformada de Fourier quântica, que é o
ingrediente chave para muitos algoritmos quânticos interessantes, dentre eles os al-
goritmos de fatoração e resolução de sistemas lineares.
A transformada de Fourier quântica é um algoritmo eciente para realizar a
transformada de Fourier das amplitudes da mecânica quântica. Este algoritmo não é
mais rápido na tarefa de calcular estas mesmas transformadas do que sua contraparte
clássica, mas nos habilita a realizar o algoritmo de estimativa de fase, que aproxima
autovalores de operadores unitários. Isso, por sua vez, nos permite resolver uma
série de outros problemas interessantes, como por exemplo a contagem de soluções
de um problema de busca ou o problema do subgrupo oculto, problemas estes antes
pensados como intratáveis em computadores clássicos.
Na notação matemática usual, a transformada de Fourier discreta toma como
entrada um vetor de números complexos x0,⋯, xN−1 de tamanho xo N . Sua saída
são os dados transformados, um vetor de números complexos y0,⋯, yN−1, denido
por
yk =1√N
N−1∑j=0
xje2πijk/N . (A.1)
A transformada quântica é justamente a mesma transformação, embora a no-
tação utilizada seja um pouco diferente: a transformada de Fourier quântica sobre
uma base ortonormal ∣0⟩ ,⋯, ∣N − 1⟩ é um operador linear que atua da seguinte forma
68
nos estados da base:
∣j⟩ → 1√N
N−1∑k=0
e2πijk/N ∣k⟩ . (A.2)
De forma equivalente, a ação da transformada sobre um estado da base pode ser
descrita comoN−1∑j=0
xj ∣j⟩ →N−1∑k=0
yk ∣k⟩ (A.3)
em que as amplitudes yk são as transformadas de Fourier discretas das amplitudes
xj.
Suponhamos que N = 2n, em que n é um inteiro, e que a base ∣0⟩ ,⋯, ∣2n − 1⟩
é a base computacional para um computador quântico de n qubits. É conveniente
escrever o estado ∣j⟩ usando a representação binária j = j1j2j3⋯jn, ou, mais formal-
mente, j = j12n−1+j22n−2+⋯+jn20. Além disso, adotaremos a notação 0, jl⋯jm para
representar a fração binária jl/2 +⋯ + jm/2m−l+1.
Partindo destas denições, podemos reescrever a transformada quântica:
∣j⟩ → 1
2n/2
2n−1∑k=0
e2πijk/2n ∣k⟩
= 1
2n/2
1
∑k1=0
⋯1
∑kn=0
e2πij(∑nl=1 kl2
−l) ∣k1⋯kn⟩
= 1
2n/2
1
∑k1=0
⋯1
∑kn=0
n
⊗l=1e2πijkl2
−l ∣kl⟩
= 1
2n/2
n
⊗l=1
(1
∑kl=0
e2πijkl2−l ∣kl⟩)
= 1
2n/2
n
⊗l=1
( ∣0⟩ + e2πij2−l ∣1⟩)
=( ∣0⟩ + e2πi0,jn ∣1⟩)( ∣0⟩ + e2πi0,jn−1jn ∣1⟩)⋯( ∣0⟩ + e2πi0,j1j2⋯jn ∣1⟩)
2n/2. (A.4)
69
Esta representação torna fácil escrever um circuito eciente para a transformada
de Fourier quântica:
Figura A.1: Circuito quântico que implementa a transformada de Fourier quântica,
omitindo portas SWAP para reversão de ordem de qubits e fatores de normalização
ao nal, adaptado de [6].
Na gura, H representa a porta de Hadamard e Rk representa a transformação
unitária
Rk =⎡⎢⎢⎢⎢⎢⎣
1 0
0 e2πi/2k
⎤⎥⎥⎥⎥⎥⎦. (A.5)
Se aplicarmos o circuito ao estado ∣j1⋯jn⟩ seremos capazes de vericar a com-
putação da transformada: aplicando a porta de Hadamard ao primeiro bit produz
1
21/2 ( ∣0⟩ + e2πi0,j1 ∣1⟩) ∣j2⋯jn⟩ , (A.6)
e a aplicação das portas Rk em sequência multiplicará o estado por uma fase e2πi/2k
em ∣1⟩ para cada k. Obteremos assim, ao nal da aplicação de todas as Rk portas,
o estado1
21/2 ( ∣0⟩ + e2πi0,j1j2⋯jn ∣1⟩) ∣j2⋯jn⟩ . (A.7)
A seguir, executaremos um procedimento similar no segundo qubit: a aplicação da
porta de Hadamard nos dará
1
22/2 ( ∣0⟩ + e2πi0,j1j2⋯jn ∣1⟩)( ∣0⟩ + e2πi0,j2 ∣1⟩) ∣j3⋯jn⟩ , (A.8)
e a aplicação das portas Rk fará o estado tornar-se
1
22/2 ( ∣0⟩ + e2πi0,j1j2⋯jn ∣1⟩)( ∣0⟩ + e2πi0,j2⋯jn ∣1⟩) ∣j3⋯jn⟩ . (A.9)
70
Continuando a aplicação das portas em cada qubit, obteremos um estado nal
1
2n/2( ∣0⟩ + e2π0,j1j2⋯jn ∣1⟩)( ∣0⟩ + e2π0,j2⋯jn ∣1⟩)⋯( ∣0⟩ + e2π0,jn ∣1⟩). (A.10)
Ao m do processo, aplicaremos portas SWAP para reverter a ordem dos qubits e
assim obter o estado desejado como saída da transformada de Fourier
1
2n/2( ∣0⟩ + e2πi0,jn ∣1⟩)( ∣0⟩ + e2πi0,jn−1jn ∣1⟩)⋯( ∣0⟩ + e2πi0,j1j2⋯jn ∣1⟩). (A.11)
Devido ao fato de que todas as portas quânticas do circuito são unitárias, pode-
mos dizer que a operação linear da transformada de Fourier quântica é unitária, e
assim, pode ser revertida, como é o caso em vários algoritmos quânticos modernos.
Levando em consideração que os melhores algoritmos clássicos para o cálculo
da transformada de Fourier discreta em 2n elementos utilizam Θ(n2n) portas [34],
o algoritmo quântico utiliza exponencialmente menos operações: começamos com
uma porta de Hadamard e n−1 rotações condicionais no primeiro qubit, em seguida
teremos mais uma porta de Hadamard e n−2 rotações para o segundo qubit, e assim
seguiremos para um total de n+ (n− 1)+⋯+ 1 = n(n+ 1)/2 portas mais no máximo
n/2 portas SWAP ao m do processo, resultando em um algoritmo Θ(n2) para a
transformada de Fourier.
Apêndice B
Teste SWAP
São muitos os casos em que precisamos comparar dois conjuntos de dados, desde
a determinação de similaridade de imagens até o teste de identidade e autenticidade
de mensagens criptografadas por chaves públicas. Isto é simples no caso clássico,
em que podemos comparar cadeias de bits e vericar se correspondem. Por outro
lado, comparar estados quânticos é mais complicado. Para testar se dois estados
quânticos são o mesmo, será necesário comparar
∣ψ⟩ = ∣ψ′⟩ . (B.1)
Isto é feito com o seguinte circuito quântico, o chamado teste SWAP :
Figura B.1: Circuito quântico que implementa o teste SWAP.
O circuito contém uma porta de Fredkin, uma porta de Hadamard e um qubit
auxiliar que aqui denominamos a. O estado inicial é então
∣φ0⟩ = ∣a⟩ ∣ψ⟩ ∣ψ′⟩ (B.2)
72
em que inicializamos o qubit auxiliar para o estado simétrico
∣a⟩ = 1√2(∣0⟩ + ∣1⟩), (B.3)
e assim, podemos reescrever ∣φ0⟩ :
∣φ0⟩ =1√2(∣0⟩ + ∣1⟩) ∣ψ⟩ ∣ψ′⟩ = 1√
2( ∣0⟩ ∣ψ⟩ ∣ψ′⟩ + ∣1⟩ ∣ψ⟩ ∣ψ′⟩). (B.4)
Após a aplicação da porta de Fredkin, descrita na seção 2.2.2.3, obteremos
∣φ1⟩ =1√2( ∣0⟩ ∣ψ⟩ ∣ψ′⟩ + ∣1⟩ ∣ψ′⟩ ∣ψ⟩), (B.5)
em que, como podemos notar, os qubits do segundo termo foram trocados de posição:
daí o nome teste SWAP (em tradução livre: teste troca). Após a aplicação da porta
de Hadamard no primeiro qubit, vamos obter
∣φ2⟩ =1
2[( ∣0⟩ + ∣1⟩) ∣ψ⟩ ∣ψ′⟩ + ( ∣0⟩ − ∣1⟩) ∣ψ′⟩ ∣ψ⟩], (B.6)
que pode ser reescrito como
∣φ2⟩ =1
2[ ∣0⟩( ∣ψ⟩ ∣ψ′⟩ + ∣ψ′⟩ ∣ψ⟩) + ∣1⟩( ∣ψ⟩ ∣ψ′⟩ − ∣ψ′⟩ ∣ψ⟩)]. (B.7)
Agora é fácil ver que se os estados ∣ψ⟩ = ∣ψ′⟩ , então ∣φ2⟩ = ∣0⟩ ∣ψ⟩ ∣ψ⟩ , que colapsará
para ∣0⟩ quando feita a medição. Caso contrário, o resultado poderá ser medido
tanto para ∣0⟩ quanto para ∣1⟩ .
Como a probabilidade de se observar ∣0⟩ é de 100% no primeiro caso ou de 50%
no segundo caso, repetindo o experimento um número de vezes (usando novas cópias
de ∣ψ⟩ e ∣ψ′⟩), seremos capazes - com quase certeza - de distinguir se ∣ψ⟩ = ∣ψ′⟩ ou
∣ψ⟩ ≠ ∣ψ′⟩ .
Apêndice C
Amplicação de Amplitude
O algoritmo de amplicação de amplitude generaliza a ideia por trás do algoritmo
de busca de Grover [35], em que se busca por uma das entradas de um banco de N
dados em tempo O(√N). O algoritmo pode ser usado para obter um aumento de
velocidade quadrático sobre os melhores algoritmos clássicos.
Para a descrição do algoritmo, suporemos um espaço de Hilbert H de N dimen-
sões representando o espaço de estados de um sistema quântico com base ortonormal
B = ∣0⟩ ,⋯, ∣N − 1⟩, uma função oráculo χ ∶ Z→ 0,1 e uma base ortonormal ope-
racional Bop = ∣ω0⟩ ,⋯, ∣ωN−1⟩ em que um operador hermitiano P ∶ H → H a
descreve de forma
P = ∑χ(k)=1
∣ωk⟩ ⟨ωk∣ . (C.1)
Poderemos utilizar P para particionar o espaço H em dois subespaços mutual-
mente ortogonais H1 e H0, que denominaremos de subespaço bom e subespaço ruim
respectivamente:
⎧⎪⎪⎪⎪⎨⎪⎪⎪⎪⎩
H1 ∶= Imagem(P ), de geradores ∣ωk⟩ ∈ Bop ∣ χ(k) = 1,
H0 ∶= Núcleo(P ), de geradores ∣ωk⟩ ∈ Bop ∣ χ(k) = 0.(C.2)
Dado o estado normalizado ∣ψ⟩ ∈H, com componentes em ambos os subespaços
H1 e H0, poderemos decompô-lo unicamente em
∣ψ⟩ = sen (θ) ∣ψ1⟩ + cos(θ) ∣ψ0⟩ , (C.3)
74
em que θ = arcsen (∣P ∣ψ⟩∣) ∈ [0, π/2] e ∣ψ1⟩ e ∣ψ0⟩ são as projeções de ∣ψ⟩ nos
subespaços H1 e H0 respectivamente. Esta decomposição gera um subespaço de
duas dimensões Hψ com vetores base ∣ψ0⟩ e ∣ψ1⟩ . A probabilidade de encontrar o
sistema em um estado bom quando medido é sen 2(θ).
Deniremos o operador unitário Q(ψ,P ) = −SψSP em que
⎧⎪⎪⎪⎪⎨⎪⎪⎪⎪⎩
Sψ = I − 2 ∣ψ⟩ ⟨ψ∣ e
SP = I − 2P .
(C.4)
Como podemos notar, Sψ inverte a fase do estado inicial ∣ψ⟩ e SP inverte a fase dos
estados que pertencem ao subespaço bom. A ação deste operador em Hψ é dada por
Q ∣ψ0⟩ = −Sψ ∣ψ0⟩ = (2 cos2(θ) − 1) ∣ψ0⟩ + 2 sin(θ) cos(θ) ∣ψ1⟩ , (C.5)
Q ∣ψ1⟩ = Sψ ∣ψ1⟩ = −2 sin(θ) cos(θ) ∣ψ0⟩ + (1 − 2 sin2(θ)) ∣ψ1⟩ . (C.6)
Ou seja, no subespaço Hψ, o operador Q corresponde a uma rotação de ângulo 2θ:
Q =⎡⎢⎢⎢⎢⎢⎣
cos(2θ) sen (2θ)
− sen (2θ) cos(2θ)
⎤⎥⎥⎥⎥⎥⎦. (C.7)
Aplicando Q no estado ∣ψ⟩ por n vezes consecutivas, obteremos
Qn ∣ψ⟩ = cos((2n + 1)θ) ∣ψ0⟩ + sen ((2n + 1)θ) ∣ψ1⟩ , (C.8)
que representa rotações do estado entre os subespaços bom e ruim. Após n iterações,
a probabilidade de encontrar o sistema em um estado bom é sen 2((2n + 1)θ). Esta
probabilidade será maximizada se escolhermos o número de iterações, n, como
n = ⌊ π4θ
⌋ . (C.9)
Assumindo que temos um banco de dados com N entradas, a função χ para
reconhecer os G elementos que buscaremos, e que Bop = B para maior simplicidade,
inicializaremos o sistema quântico na superposição uniforme
∣ψ⟩ = 1√N
N−1∑k=0
∣k⟩ (C.10)
75
de todos os elementos do banco de dados. Neste caso, a interseção de componentes
do estado inicial com o subespaço bom (formado pelos elementos buscados) é
∣P ∣ψ⟩∣ = sen (θ) =√
G
N. (C.11)
Se ∣P ∣ψ⟩∣ ≪ 1, poderemos aproximar o número de iterações necessárias
n = ⌊ π4θ
⌋ ≈ ⌊ π
4 sin(θ)⌋ =
⎢⎢⎢⎢⎢⎣
π
4
√N
G
⎥⎥⎥⎥⎥⎦= O(
√N). (C.12)
Como cada aplicação de SP requer uma chamada à função oráculo, seremos capazes
de encontrar as entradas buscadas com somente O(√N) chamadas, obtendo assim
uma melhora de eciência quadrática sobre os melhores algoritmos clássicos.
Apêndice D
Método de Newton
Uma das formas de encontrar aproximações para as raízes (ou zeros) de funções
reais é a utilização do método de Newton (também conhecido como método de
Newton-Raphson).
Dada uma função f diferenciável, denida sobre os números reais, e sua derivada
f ′, escolheremos um palpite x0 para uma raiz x∗ da função f em que f ′ existe e
seja não-nula. Queremos encontrar um valor x1 em função de x0 que seja uma
aproximação melhor de x∗. Deniremos a equação da reta que passa por (x0, f(x0))
e é tangente à curva em (x0, f(x0)) por
y − f(x0) = f ′(x0)(x − x0). (D.1)
Podemos aplicar o novo palpite (x1,0) para obter a equação completa:
0 − f(x0) = f ′(x0)(x1 − x0), (D.2)
e portanto teremos
x1 = x0 −f(x0)f ′(x0)
. (D.3)
De modo geral, as iterações do método de Newton serão dadas por
xn+1 = xn −f(xn)f ′(xn)
, (D.4)
e poderemos repetir o cálculo das iterações para um n tão grande quanto necessário
para atingir a precisão da aproximação buscada [36].
D.1. CONVERGÊNCIA QUADRÁTICA 77
Em geral, o método de Newton tem convergência quadrática, como veremos
abaixo.
D.1 Convergência Quadrática
Para provar a convergência quadrática do método iterativo de Newton [37], re-
escreveremos a função f , cuja raiz queremos aproximar, através da expansão de
Taylor. Supondo que x∗ é a raiz buscada, a expansão de f(x∗) sobre xn será
f(x∗) = f(xn) + f ′(xn)(x∗ − xn) +R1, (D.5)
em que o resto R1 é um termo que depende de xn e será menor à medida que xn se
aproxima de x∗:
R1 =1
2!f ′′(ψn)(x∗ − xn)2, (D.6)
em que ψn ∈ [xn, x∗]. Reescreveremos a equação acima obtendo
0 = f(x∗) = f(xn) + f ′(xn)(x∗ − xn) +1
2f ′′(ψn)(x∗ − xn)2. (D.7)
Dividindo por f ′(xn) e rearrumando, teremos
f(xn)f ′(xn)
+ (x∗ − xn) =−f ′′(ψn)2f ′(xn)
(x∗ − xn)2. (D.8)
Utilizando a denição de xn+1 na equação D.4, obteremos
x∗ − xn+1 =−f ′′(ψn)2f ′(xn)
(x∗ − xn)2, (D.9)
e se denirmos εn = x∗ − xn, podemos escrever
εn+1 =−f ′′(ψn)2f ′(xn)
ε2n. (D.10)
Tirando o valor absoluto dos dois lados da equação, seremos capazes de ver que
a taxa de convergência é quadrática quando partimos da n-ésima iteração para a
(n + 1)-ésima:
∣εn+1∣ =∣f ′′(ψn)∣2∣f ′(xn)∣
ε2n. (D.11)
D.2. FUNÇÕES COMPLEXAS 78
D.2 Funções Complexas
Quando estamos interessados em aproximar raízes de funções complexas, o mé-
todo de Newton pode ser aplicado de forma similar. Cada um dos n zeros de uma
função do n-ésimo grau terá uma bacia de atração no plano complexo, isto é, uma
região do plano cujos pontos convergem para aquela raiz quando utilizados como
palpite inicial do método. Estes conjuntos de pontos podem ser mapeados como nas
imagens abaixo.
Figura D.1: Os grácos exibem as bacias de atração das funções x2−2x e x3−3x [7].
Figura D.2: Bacias de atração de x5 − 1, em que as zonas mais escuras representam
regiões em que são necessárias mais iterações para a convergência de aproximações.
Em alguns casos, existem regiões do plano complexo que não estão contidas em
D.2. FUNÇÕES COMPLEXAS 79
nenhuma das bacias de atração, signicando que suas iterações não convergem. Por
exemplo, buscar a raiz da função x2+1 partindo de um x0 ∈ R fará com que todas as
iterações seguintes aproximem valores no eixo real, e portanto, como as duas raízes
da função são complexas, não haverá convergência.
Apêndice E
Implementação Scilab para A2×2
function v=q(n)
i f n
v = [ 0 ; 1 ] ;
else
v = [ 1 ; 0 ] ;
end
endfunction
function H = hadamard (n)
// Create n− b i t hadamard matrix .
i f n==1
H = [ 1 1 ; 1 −1]/ sqrt (2 ) ;
else
H1 = hadamard (1) ;
H=1;
for i =1:n
H=kron (H,H1) ;
end
end
endfunction
function phi=dec2vec ( dec , n )
phi=zeros (2^n , 1 ) ;
phi ( dec+1)=1; // compensate f o r s c i l a b index ing wi th +1
81
endfunction
function phi = bin2vec ( bin )
dec=bin2dec ( bin ) ;
phi=dec2vec ( dec , length ( bin ) ) ;
endfunction
function s = vec2 s t ruc t ( phi )
s=s t r u c t ( ' bin ' , ' a lpha ' )
n=log2 ( s ize ( phi , 1 ) ) ;
in=find ( phi~=0) ; //nonzero
for i =1: length ( in )
dec = in ( i ) −1;
s ( i ) . bin = dec2bin ( dec , n ) ;
s ( i ) . alpha = phi ( in ( i ) ) ;
end
endfunction
function s t r = pre t ty ( s , b_dec )
i f argn (2 ) <2,b_dec=0; end
i f ~ i s s t r u c t ( s )
s=vec2 s t ruc t ( s ) ;
end
s t r = [ ] ;
for i =1: length ( s . bin )
i f ~b_dec
s t r =[ s t r + ' ' + string ( s . alpha ( i ) ) + ' | ' + s . bin ( i ) + '>
+' ] ;
else
s t r =[ s t r + ' ' + string ( s . alpha ( i ) ) + ' | ' + string ( bin2dec
( s . bin ( i ) ) ) + '> +' ] ;
end
end
82
s t r=part ( s t r , 1 : length ( s t r ) −1)
endfunction
function m = qf t (q )
// Create QFT matrix wi th q rows and c o l s
w=exp(2*%pi*%i/q ) ;
s = zeros ( q ) ;
row=0:q−1;
for r=1:q
m( r , : )=row *( r −1) ;
end
m = w.^m;
m = m/sqrt ( q ) ;
endfunction
function [ phi , obs ]=measure ( p s i )
p = (abs ( p s i ) ) . ^ 2 ;
[ sp , ip ]=gsort (p , "g" , " i " ) ;
sp=cumsum( sp ) ;
r = rand ( ) ;
i =1;
while r>sp ( i )
i=i +1;
end
obs=ip ( i ) ;
phi=zeros ( s ize ( p s i ) ) ;
phi ( obs )=1;
endfunction
83
function [ I ] = hamSim(A, denomin )
t0 = 2 * %pi
I = expm(%i * A * t0 / denomin )
endfunction
function [R] = Ry( theta )
R = [ cos ( theta /2) , sin ( theta /2) ;− sin ( theta /2) , cos ( theta /2) ]
endfunction
function S = SWAP()
S = [ 1 , 0 , 0 , 0 ; 0 , 0 , 1 , 0 ; 0 , 1 , 0 , 0 ; 0 , 0 , 0 , 1 ]
endfunction
function C = con t r o l l e d (U)
[ dim , i ] = s ize (U)
C = eye (2*dim , 2*dim)
i n i t i a l = dim +1
f i n a l = 2*dim
grp = i n i t i a l : f i n a l
C( grp , grp ) = U
endfunction
function HHL(A, b)
// A = [ 3 , 1 ; 1 , 3 ]
// b = [ 1 , 0 ] '
// x = [3/8 , −1/8]
m = 2 // cons tant t ha t can be determined based on the de s i r ed
accuracy o f the ga te R
quantumB = b (1 , 1 ) *q (0 ) + b (2 , 1 ) * q (1 )
psi_0 = bin2vec ( ' 0000 ' ) . * . quantumB
disp ( '======= HADAMARD =======' )
psi_1 = (eye ( 2 , 2 ) . * . hadamard (3 ) . * . eye ( 2 , 2 ) ) * psi_0
disp ( ' psi_1 = ' + pre t ty ( psi_1 ) )
84
disp ( '======= HAM−SIM =======' )
hamSim1 = eye ( 2 , 2 ) . * . eye ( 2 , 2 ) . * . eye ( 2 , 2 ) . * . c o n t r o l l e d (hamSim(
A, 8 ) )
psi_2 = hamSim1 * psi_1
cHamSim2 = eye ( 2 , 2 ) . * . c o n t r o l l e d (hamSim(A, 4 ) )
hamSim2 = eye ( 2 , 2 ) . * . cHamSim2 . * . eye ( 2 , 2 )
psi_2 = hamSim2 * psi_2
cHamSim3 = con t r o l l e d (eye ( 2 , 2 ) . * . eye ( 2 , 2 ) . * . hamSim(A, 2 ) )
hamSim3 = eye ( 2 , 2 ) . * . cHamSim3
psi_2 = hamSim3 * psi_2
disp ( ' psi_2 = ' + pre t ty ( psi_2 ) )
disp ( '======= INV−QFT =======' )
QFT = eye ( 2 , 2 ) . * . q f t (2^3) ' . * . eye ( 2 , 2 )
psi_3 = QFT * psi_2
disp ( ' psi_3 = ' + pre t ty ( psi_3 ) )
disp ( '======= SWAP =======' )
S = SWAP()
S = eye ( 2 , 2 ) . * . S . * . eye ( 2 , 2 ) . * . eye ( 2 , 2 )
psi_4 = S * psi_3
disp ( ' psi_4 = ' + pre t ty ( psi_4 ) )
disp ( '======= C−ROT =======' )
psi_5 = psi_4
rot1 = eye ( 4 , 4 )
opR1 = Ry(4*%pi / 2^(m−1) )
r0 = opR1 * q (0 )
r1 = opR1 * q (1 )
rot1 (2 , 2 ) = r0 (1 )
rot1 (4 , 2 ) = r0 (2 )
rot1 (2 , 4 ) = r1 (1 )
rot1 (4 , 4 ) = r1 (2 )
psi_5 = ( rot1 . * . eye ( 2 , 2 ) . * . eye ( 2 , 2 ) . * . eye ( 2 , 2 ) ) * psi_5
85
rot2 = eye ( 8 , 8 )
opR2 = Ry(2*%pi / 2^(m−1) )
r0 = opR2 * q (0 )
r1 = opR2 * q (1 )
rot2 (2 , 2 ) = r0 (1 )
rot2 (6 , 2 ) = r0 (2 )
rot2 (4 , 4 ) = r0 (1 )
rot2 (8 , 4 ) = r0 (2 )
rot2 (2 , 6 ) = r1 (1 )
rot2 (6 , 6 ) = r1 (2 )
rot2 (4 , 8 ) = r1 (1 )
rot2 (8 , 8 ) = r1 (2 )
psi_5 = ( rot2 . * . eye ( 2 , 2 ) . * . eye ( 2 , 2 ) ) * psi_5
rot3 = eye (16 ,16)
opR3 = Ry(%pi / 2^(m−1) )
r0 = opR3 * q (0 )
r1 = opR3 * q (1 )
rot3 (2 , 2 ) = r0 (1 )
rot3 (10 ,2 ) = r0 (2 )
rot3 (4 , 4 ) = r0 (1 )
rot3 (12 ,4 ) = r0 (2 )
rot3 (6 , 6 ) = r0 (1 )
rot3 (14 ,6 ) = r0 (2 )
rot3 (8 , 8 ) = r0 (1 )
rot3 (16 ,8 ) = r0 (2 )
rot3 (2 ,10 ) = r1 (1 )
rot3 (10 ,10) = r1 (2 )
rot3 (4 ,12 ) = r1 (1 )
rot3 (12 ,12) = r1 (2 )
rot3 (6 ,14 ) = r1 (1 )
rot3 (14 ,14) = r1 (2 )
rot3 (8 ,16 ) = r1 (1 )
rot3 (16 ,16) = r1 (2 )
psi_5 = ( rot3 . * . eye ( 2 , 2 ) ) * psi_5
disp ( ' psi_5 = ' + pre t ty ( psi_5 ) )
86
disp ( '======= SWAP =======' )
S = SWAP()
S = eye ( 2 , 2 ) . * . S . * . eye ( 2 , 2 ) . * . eye ( 2 , 2 )
psi_6 = S * psi_5
disp ( ' psi_6 = ' + pre t ty ( psi_6 ) )
disp ( '======= QFT =======' )
QFT = eye ( 2 , 2 ) . * . q f t (2^3) . * . eye ( 2 , 2 )
psi_7 = QFT * psi_6
disp ( ' psi_7 = ' + pre t ty ( psi_7 ) )
disp ( '======= INV−HAM−SIM =======' )
psi_8 = psi_7
inVCHamSim3 = con t r o l l e d (eye ( 2 , 2 ) . * . eye ( 2 , 2 ) . * . hamSim(A, −2) )
invHamSim3 = eye ( 2 , 2 ) . * . inVCHamSim3
psi_8 = invHamSim3 * psi_8
inVCHamSim2 = eye ( 2 , 2 ) . * . c o n t r o l l e d (hamSim(A, −4) )
invHamSim2 = eye ( 2 , 2 ) . * . inVCHamSim2 . * . eye ( 2 , 2 )
psi_8 = invHamSim2 * psi_8
invHamSim1 = eye ( 2 , 2 ) . * . eye ( 2 , 2 ) . * . eye ( 2 , 2 ) . * . c o n t r o l l e d (
hamSim(A, −8) )
psi_8 = invHamSim1 * psi_8
disp ( ' psi_8 = ' + pre t ty ( psi_8 ) )
disp ( '======= HADAMARD =======' )
hads = eye ( 2 , 2 ) . * . hadamard (3 ) . * . eye ( 2 , 2 )
psi_9 = hads * psi_8
disp ( ' psi_9 = ' + pre t ty ( psi_9 ) )
disp ( '======= CLEAN STATE =======' )
disp ( ' psi_9 = ' + pre t ty ( clean ( psi_9 ) ) )
disp ( '======= MEASURE =======' )
psi_10 = measure ( psi_9 )
87
// d i sp ( ' psi_10 = ' + p r e t t y ( psi_10 ) )
disp ( psi_10 )
s t r 10 = vec2 s t ruc t ( psi_10 )
printf ( " = |%s>" , s t r 10 . bin )
endfunction
Apêndice F
Resultado da execução Scilab para
A2×2
======= HADAMARD =======
psi_1 = 0.3535534|00000 > + 0.3535534|00010 > + 0.3535534|00100 > +
0.3535534|00110 > + 0.3535534|01000 > + 0.3535534|01010 > +
0.3535534|01100 > + 0.3535534|01110 >
======= HAM−SIM =======
psi_2 = 0.3535534|00000 > + −0.1767767+% i *0.1767767|00010 > +
−0.1767767−% i *0.1767767|00011 > + −0.1767767+% i *0.1767767|00100 > +
−0.1767767−% i *0.1767767|00101 > + 0.3535534−% i *5 .412D−17|00110> +
−1.082D−17+%i *1 .082D−17|00111> + 0.3535534−% i *1 .299D−16|01000> +
−%i *4 .330D−17|01001> + −0.1767767+% i *0.1767767|01010 > +
−0.1767767−% i *0.1767767|01011 > + −0.1767767+% i *0.1767767|01100 > +
−0.1767767−% i *0.1767767|01101 > + 0.3535534−% i *1 .840D−16|01110> +
−1.082D−17−%i *3 .247D−17|01111>
======= INV−QFT =======
psi_3 = 0.25+% i *0.25|00000 > + −0.25−% i *0.25|00001 > + −4.420D−17−%i
*1 .388D−17|00010> + −5.759D−18−%i *2 .706D−18|00011> + 0.5+% i
*0.25|00100 > + −3.362D−17+%i *0.25|00101 > + −1.205D−16−%i *9 .714D
89
−17|00110> + 3.587D−17−%i *1 .658D−17|00111> + −8.327D−17−%i *2 .264D
−16|01000> + 1.077D−17−%i *5 .097D−17|01001> + 2.339D−17−%i *3 .469D
−16|01010> + 7.515D−17+%i *2 .706D−18|01011> + 0.25−% i *0.5|01100 >
+ 0.25+% i *3 .508D−16|01101> + 9.971D−17+%i *2 .220D−16|01110> +
−2.857D−16−%i *1 .083D−16|01111>
======= SWAP =======
psi_4 = 0.25+% i *0.25|00000 > + −0.25−% i *0.25|00001 > + −4.420D−17−%i
*1 .388D−17|00010> + −5.759D−18−%i *2 .706D−18|00011> + −8.327D−17−%i
*2 .264D−16|00100> + 1.077D−17−%i *5 .097D−17|00101> + 2.339D−17−%i
*3 .469D−16|00110> + 7.515D−17+%i *2 .706D−18|00111> + 0.5+% i
*0.25|01000 > + −3.362D−17+%i *0.25|01001 > + −1.205D−16−%i *9 .714D
−17|01010> + 3.587D−17−%i *1 .658D−17|01011> + 0.25−% i *0.5|01100 >
+ 0.25+% i *3 .508D−16|01101> + 9.971D−17+%i *2 .220D−16|01110> +
−2.857D−16−%i *1 .083D−16|01111>
======= C−ROT =======
psi_5 = 0.25+% i *0.25|00000 > + −0.25−% i *0.25|00001 > + −3.126D−17−%i
*9 .813D−18|00010> + −4.073D−18−%i *1 .914D−18|00011> + −5.099D−33−%i
*1 .386D−32|00100> + 6.592D−34−%i *3 .121D−33|00101> + −1.654D−17+%i
*2 .453D−16|00110> + −5.314D−17−%i *1 .914D−18|00111> + −0.5−% i
*0.25|01000 > + 3.362D−17−%i *0.25|01001 > + 8.523D−17+%i *6 .869D
−17|01010> + −2.537D−17+%i *1 .173D−17|01011> + −4.592D−17+%i *9 .185D
−17|01100> + −4.592D−17−%i *6 .444D−32|01101> + 7.051D−17+%i *1 .570D
−16|01110> + −2.020D−16−%i *7 .659D−17|01111> + 3.126D−17+%i *9 .813D
−18|10010> + 4.073D−18+%i *1 .914D−18|10011> + 8.327D−17+%i *2 .264D
−16|10100> + −1.077D−17+%i *5 .097D−17|10101> + −1.654D−17+%i *2 .453D
−16|10110> + −5.314D−17−%i *1 .914D−18|10111> + −6.123D−17−%i *3 .062D
−17|11000> + 4.117D−33−%i *3 .062D−17|11001> + −8.523D−17−%i *6 .869D
−17|11010> + 2.537D−17−%i *1 .173D−17|11011> + 0.25−% i *0.5|11100 > +
0.25+% i *3 .508D−16|11101> + 7.051D−17+%i *1 .570D−16|11110> +
−2.020D−16−%i *7 .659D−17|11111>
======= SWAP =======
psi_6 = 0.25+% i *0.25|00000 > + −0.25−% i *0.25|00001 > + −3.126D−17−%i
90
*9 .813D−18|00010> + −4.073D−18−%i *1 . 914D−18|00011> + −0.5−% i
*0.25|00100 > + 3.362D−17−%i *0.25|00101 > + 8.523D−17+%i *6 .869D
−17|00110> + −2.537D−17+%i *1 .173D−17|00111> + −5.099D−33−%i *1 .386D
−32|01000> + 6.592D−34−%i *3 .121D−33|01001> + −1.654D−17+%i *2 .453D
−16|01010> + −5.314D−17−%i *1 .914D−18|01011> + −4.592D−17+%i *9 .185D
−17|01100> + −4.592D−17−%i *6 .444D−32|01101> + 7.051D−17+%i *1 .570D
−16|01110> + −2.020D−16−%i *7 .659D−17|01111> + 3.126D−17+%i *9 .813D
−18|10010> + 4.073D−18+%i *1 .914D−18|10011> + −6.123D−17−%i *3 .062D
−17|10100> + 4.117D−33−%i *3 .062D−17|10101> + −8.523D−17−%i *6 .869D
−17|10110> + 2.537D−17−%i *1 .173D−17|10111> + 8.327D−17+%i *2 .264D
−16|11000> + −1.077D−17+%i *5 .097D−17|11001> + −1.654D−17+%i *2 .453D
−16|11010> + −5.314D−17−%i *1 .914D−18|11011> + 0.25−% i *0.5|11100 >
+ 0.25+% i *3 .508D−16|11101> + 7.051D−17+%i *1 .570D−16|11110> +
−2.020D−16−%i *7 .659D−17|11111>
======= QFT =======
psi_7 = −0.0883883+% i *1 .851D−16|00000> + −0.0883883−% i
*0.1767767|00001 > + 0.1767767−% i *0.0883883|00010 > + −7.807D−17−%i
*0.0883883|00011 > + 0.2651650+% i *0.1767767|00100 > + −0.0883883+% i
*8 .792D−17|00101> + 1.342D−16+%i *0.2651650|00110 > + −0.1767767−% i
*0.0883883|00111 > + −0.0883883−% i *3 .018D−17|01000> + −0.0883883−% i
*0.1767767|01001 > + 0.1767767−% i *0.0883883|01010 > + 5.031D−17−%i
*0.0883883|01011 > + 0.2651650+% i *0.1767767|01100 > + −0.0883883−% i
*3 .240D−17|01101> + 2.289D−17+%i *0.2651650|01110 > + −0.1767767−% i
*0.0883883|01111 > + 0.0883883−% i *0.1767767|10000 > + 0.0883883+% i
*9 .999D−17|10001> + −0.1767767−% i *0.0883883|10010 > + 3.968D−17−%i
*0.0883883|10011 > + −0.0883883+% i *0.1767767|10100 > + −0.0883883+% i
*3 .334D−17|10101> + 0.1767767+% i *0.0883883|10110 > + 1.700D−17+%i
*0.0883883|10111 > + 0.0883883−% i *0.1767767|11000 > + 0.0883883+% i
*5 .216D−19|11001> + −0.1767767−% i *0.0883883|11010 > + −1.262D−17−%i
*0.0883883|11011 > + −0.0883883+% i *0.1767767|11100 > + −0.0883883+% i
*1 .149D−16|11101> + 0.1767767+% i *0.0883883|11110 > + 1.380D−16+%i
*0.0883883|11111 >
======= INV−HAM−SIM =======
psi_8 = −0.0883883+% i *1 .851D−16|00000> + −0.0883883−% i
91
*0.1767767|00001 > + −0.0883883−% i *1 .501D−16|00010> + −0.0883883+% i
*0.1767767|00011 > + 5.504D−17+%i *0.2651650|00100 > + −0.1767767−% i
*0.0883883|00101 > + 8.466D−17−%i *0.2651650|00110 > + −0.1767767+% i
*0.0883883|00111 > + −0.0883883−% i *7 .348D−17|01000> + −0.0883883−% i
*0.1767767|01001 > + −0.0883883+% i *3 .293D−17|01010> + −0.0883883+% i
*0.1767767|01011 > + −2.999D−16+%i *0.2651650|01100 > + −0.1767767−% i
*0.0883883|01101 > + 2.372D−16−%i *0.2651650|01110 > + −0.1767767+% i
*0.0883883|01111 > + 0.0883883−% i *0.1767767|10000 > + 0.0883883+% i
*9 .999D−17|10001> + 0.0883883+% i *0.1767767|10010 > + 0.0883883+% i
*2 .022D−16|10011> + 0.1767767+% i *0.0883883|10100 > + −1.887D−17+%i
*0.0883883|10101 > + 0.1767767−% i *0.0883883|10110 > + 6.813D−17−%i
*0.0883883|10111 > + 0.0883883−% i *0.1767767|11000 > + 0.0883883+% i
*4 .382D−17|11001> + 0.0883883+% i *0.1767767|11010 > + 0.0883883−% i
*9 .860D−17|11011> + 0.1767767+% i *0.0883883|11100 > + 5.883D−17+%i
*0.0883883|11101 > + 0.1767767−% i *0.0883883|11110 > + −1.764D−16−%i
*0.0883883|11111 >
======= HADAMARD =======
psi_9 = −0.125+% i *2 .776D−17|00000> + −0.375−% i *1 .353D−16|00001> +
−2.593D−16+%i *0.375|00010 > + 2.984D−16−%i *0.375|00011 > + −0.125−%
i *2 .776D−17|00100> + 0.125+% i *7 .980D−17|00101> + 1.448D−16−%i
*0.375|00110 > + −8.327D−17−%i *0.125|00111 > + 9.848D−17−%i *2 .776D
−17|01000> + 5.551D−17+%i *1 .214D−16|01001> + 3.009D−16+%i *9 .714D
−17|01010> + −3.400D−16+%i *4 .510D−17|01011> + −4.297D−17+%i *8 .327D
−17|01100> + −1.110D−16−%i *6 .592D−17|01101> + −5.111D−17+%i *2 .082D
−16|01110> + −%i *9 .368D−17|01111> + 0.375+% i *1 .665D−16|10000> +
0.125−% i *3 .469D−17|10001> + 2.359D−16−%i *0.125|10010 > + −9.723D
−17+%i *0.125|10011 > + −0.125+% i *2 .255D−16|10100> + 0.125+% i *2 .082
D−16|10101> + 2.012D−16−%i *0.375|10110 > + −2.011D−16−%i
*0.125|10111 > + −4.163D−17+%i *1 .978D−16|11000> + 6.886D−18+%i
*2 .047D−16|11001> + 1.318D−16+%i *1 .665D−16|11010> + −1.387D
−16|11011> + −1.249D−16−%i *3 .123D−17|11100> + −1.110D−16+%i *4 .857D
−17|11101> + 2.637D−16+%i *2 .047D−16|11110> + 9.012D−17−%i *1 .665D
−16|11111>
======= CLEAN STATE =======
92
psi_9 = −0.125|00000> + −0.375|00001> + %i *0.375|00010 > + −%i
*0.375|00011 > + −0.125|00100> + 0.125|00101 > + −%i *0.375|00110 > +
−%i *0.125|00111 > + 0.375|10000 > + 0.125|10001 > + −%i
*0.125|10010 > + %i *0.125|10011 > + −0.125|10100> + 0.125|10101 > +
−%i *0.375|10110 > + −%i *0.125|10111 >
======= MEASURE =======
0 . 0 . 0 . 0 . 0 . 0 . 1 . = |110>