Introdução à Computação Quântica: Fundamentação e Operadores Lógicos Quânticos

Cláudio Alves Monteiro
10 min readMay 20, 2020

--

Em 2019 houve um aumento significativo na atenção que a mídia vem dando a essa tecnologia, sobretudo com a declaração da Google ter atingido a supremacia quântica [1]. Neste artigo vamos ver os fundamentos da computação quântica, apoiados na mecânica quântica. Vamos também entender o que é um qubit (o bit quântico) e aprender a criar algoritmos com circuitos e operadores lógicos quânticos.

Processador de 16 qubits da IBM, fonte: https://www.flickr.com/photos/ibm_research_zurich/

Introdução

A computação quântica é desenvolvida desde os anos 60 com físicos como Richard Feynman, David Deutsh, Peter Shor e muitos outros, e vem ganhando ainda mais força na última década graças ao avanço da manipulação da matéria em nível subatômico [2], [3]. Esse computadores — ainda que ruidosos — já estão disponíveis para execução de algoritmos com o uso de linguagens de programação de alto nível [4]–[8].

“Nature isn’t classical, dammit, and if you want to make a simulation of nature, you’d better make it quantum mechanical” — Richard Feynman, 1982 (Nobel Prize in Physics 1965)

Alguns benefícios dos computadores quânticos são a velocidade de processamento e a capacidade multidimensional de armazenar grandes espaços vetoriais devido às propriedades da mecânica quântica [9]. Alguns algoritmos quânticos já foram desenvolvidos com o objetivo de resolver problemas de otimização [10]–[13], o que pode ser utilizado para criação de novos modelos de aprendizagem de máquina, por exemplo [14]. Nos próximos tópicos são apresentadas as propriedades básicas da mecânica quântica — para compreender a fundamentação dessa tecnologia — e em seguida veremos os blocos necessários para desenvolvimento de algoritmos quânticos: operadores lógicos quânticos e circuitos quânticos.

Mecânica Quântica e o Bit Quântico

Primeiro devemos compreender como funciona um processamento clássico de informação, esse que faz funcionar nossos computadores, smartphones e maioria dos demais eletrônicos. Aqui temos a unidade básica de informação como o bit, esse bit pode assumir valor 0 ou 1 que fisicamente corresponde a uma frequência de baixa (0) e alta voltagem (1). A sequência e combinação desses bits compõem informações cada vez mais complexas, o número 3 num processador de 8 bits é representado por 00000011 por exemplo.

No computador quântico, temos como unidade de informação o qubit, que fisicamente pode ser uma sub-partícula como o elétron, o núcleo de um átomo, um fóton e outros. Dessa forma essa partícula estará sujeita às leis da Mecânica Quântica e nesse universo nós encontramos comportamentos que apesar de não serem totalmente explicados, podem ser quantificados e podemos usufruir de sua natureza para processar informação [15].

No século XIX, havia um grande debate na Física sobre se a luz era uma partícula ou onda. Em 1801, Thomas Young executou o experimento da fenda dupla, que consiste em passar dois feixes de partículas por duas aberturas (ver imagem abaixo) e observar como que o feixe será projetado numa tela do outro lado. Caso fosse observado apenas dois feixes do outro lado seria evidência para o comportamento de partícula, mas Young viu vários feixes paralelos na folha o que indicava que os feixes de luz interferiram um no outro, apontando para a teoria da luz como onda [16]. Na verdade o que foi sendo desenvolvido ao longo do tempo na Física foi um suporte à natureza dual de alguns corpos, que se comportam como partícula ou como onda de acordo com a interação com o ambiente [16]. Desse modo, ao lançar as partículas pelo feixe, seu comportamento de onda e a interferência que isso causa implica que não é possível determinar qual será o ponto exato em que o feixe vai incidir sobre a tela, mas apenas dizer a probabilidade de incidir sobre aquele ponto.

Fonte: Wikipedia

A inserção da probabilidade na determinação de efeitos físicos gerou grandes debates no século XX, como a conhecida frase de Einstein em descontento com a teoria em que diz “Deus não joga dados com o universo”, que não negava a mecânica quântica mas a considerava incompleta. O fato é que esse efeito é muito bem descrito por Schrödinger quando em 1926 publica a equação que descreve a função de onda de um sistema quântico [17]. Na mecânica clássica a segunda lei de Newton (F = m*a) é usada para prever a trajetória de um objeto no tempo, dada certas condições e forças atuantes.

Equação de Schrödinger sobre seu túmulo e de sua esposa. Fonte: Wikipedia

Em paralelo, como vimos que na mecânica os objetos se comportam como onda, a função de onda define o estado de um sistema quântico numa determinada posição no espaço e no tempo. Não pretendo aqui entrar nos detalhes da equação, mas apenas apresentar quais as suas implicações para quem quer fazer computação quântica.

A normalização da função de onda desenvolvida por Schrödinger postula que conseguimos apenas determinar qual a probabilidade (entre 0 e 1) de encontrar a partícula em determinado nível de energia, visto que ela está em mais de um estado ao mesmo tempo. Outro fato importante é que quando mensuramos o sistema quântico, a função de onda entra em colapso e observamos a partícula no estado clássico, apresentando-se em um único ponto. Desse modo, os físicos acabam executando várias vezes um certo experimento para observar os resultados.

Fonte: https://br.pinterest.com/pin/448952656583795995/

O qubit então está sujeito às leis da mecânica e podemos utilizar sua natureza para explorar outras maneiras de fazer computação. Na computação quântica, a Notação de Dirac [18] representa os estados quânticos com o símbolo ket |·〉 e o psi (ψ). Para um estado quântico com um único qubit inicializado em 0, temos |ψ〉 = |0〉. A base computacional (também chamada de base canônica) é composta pelos vetores:

Outra representação que nos permite visualizar o qubit é a Esfera de Bloch, na qual é possível representar o estados quânticos como vetores no espaço tridimensional de uma esfera [19]. Nesse sentido já é possível notar em teoria uma evolução dos computadores quânticos, em que sua unidade de informação permite assumir o vetor em qualquer direção, representando valores mais complexos dos que os 0 e 1 da computação clássica.

|ψ〉 = |0〉

|ψ〉 = |1〉

Portas Lógicas Quânticas

Nos computadores clássicos temos portas lógicas que fazem operações como AND, OR, NOT e outras, na computação quântica temos os operadores quânticos — uma matriz unitária — e que agem nos qubits. Vimos anteriormente que um bit quântico pode ser representado por um vetor complexo, a porta age nesse vetor e abaixo é possível observar algumas portas lógicas básicas da computação quântica.

Operador de identidade I gera a saída exatamente como a entrada; O operador X funciona como o clássico NOT no computador clássico, invertendo o valor do qubit; Hadamard (H) gera uma superposição de estados; e o portão Pauli-Z (Z) transforma para negativo o estado aplicado quando o qubit não é zero. Além das portas unitárias para um único qubit , existem operadores controlados que atuam em vários qubits e atuam como portas lógicas tradicionais de linguagens de programação (ex: if/else). CX é uma operação entre dois qubits em que um é o controle e o outro é o destino. Quando o controle é 1, o X é aplicado no segundo, ou seja, o destino. Da mesma maneira, CZ é uma porta de 2 qubits que aplica o controle no primeiro qubit e Z ao alvo.

Circuitos Quânticos

Circuito quântico com 2 qubits

Podemos representar algoritmos quânticos por circuitos quânticos. Essa representação gráfica considera os qubits como fios e operadores quânticos como caixas. O fluxo de execução, como em circuitos clássicos, é da esquerda para a direita. A Figura 1 é um exemplo de um circuito quântico composto por 2 qubits e um operador de Hadamard, após é aplicado uma mensuração em cada qubit. Abaixo vemos o que isso resulta.

Superposição e Números Complexos

O operador quântico de Hadamard, quando aplicado ao estado da base |0〉, gera uma superposição com iguais amplitudes para os estados envolvidos |ψ〉= α|0〉+ β|1〉:

Os números complexos nos permitem fazer representações de números em espaços bidimensionais, visto que são compostos por uma parte real e outra imaginária. Como vimos nas propriedade da mecânica quântica, a normalização da função de onda assegura que as probabilidades dos estados quânticos surgirem está entre 0 e 1, de modo que |α|² +|β|² = 1. Dessa forma, ao mensurar esse sistema |ψ〉acima vamos encontrar o estado |0〉com aproximadamente 0.5 de probabilidade, assim como 0.5 para o estado |1〉. Essa probabilidade na prática não é exata, visto que todo sistema quântico está sujeito à decoerência. De maneira simples, a decoerência é a perda de informação e estabilidade no sistema quântico devido a interação desse sistema com o ambiente [20]. Alguns simuladores quânticos levam isso em conta, como o simulador Aer do pacote qiskit. Hoje também são feitos esforços na área para considerar o erro na formulação dos problemas e construir computadores mais estáveis.

Um sistema de múltiplos qubits é matematicamente representado pelo operador tensorial ⊗. Num sistema de 2 qubits, por exemplo, temos |ψ1〉= α1|0〉+β1|1〉e |ψ2〉= α2|0〉+β2|1〉. O operador tensorial entre os qubits produz o estado |ψ1ψ2〉= = α1α2|00〉+ α1β2|01〉+ β1α2|10〉+ β1β2|11〉. Abaixo podemos ver o resultado da aplicação do Hadamard sobre o estado |00〉e sobre o estado |001〉.

Superposição do estado |00>
Superposição do estado |001>

Com isso vimos a fundamentação por trás da computação quântica e exploramos uma de suas propriedades, a superposição, para expandir os estados quânticos para todas as possibilidades de combinações com certo número de qubits. Esse ordem cresce a 2^N, ou seja, num computador quântico de 20 qubits temos 2²⁰, o que resulta em 1048576 estados quânticos em superposição. A ideia é que dentre alguns anos teremos computadores disponíveis com qubits suficientes para processar grandes volumes de dados nas redes sociais, traçar otimização para navegação de carros autônomos em tempo real, quebrar criptografias baseadas em chave de grandes primos e provavelmente coisas que ainda nem imaginamos .

No próximo tutorial vamos ver como construir e implementar circuitos quânticos usando o pacote Qiskit e vamos desenvolver o algoritmo de Grover [21] para amplificação de probabilidade de estado quânticos. Aqui também agradeço ao meu orientador no mestrado, Fernando Neto, professor do departamento de Ciência da Computação da UFPE que com simplicidade sempre esclarece minhas dúvidas e me ajudou a revisar este post.

Referências

[1] Arute, F., Arya, K., Babbush, R. et al. Quantum supremacy using a programmable superconducting processor. Nature 574, 505–510 (2019). https://doi.org/10.1038/s41586-019-1666-5

[2] M. A. Nielsen and I. Chuang, “Quantum computation and quantuminformation,” 2002

[3] C. Wang, G. Yvonne, L. Frunzio, M. Devoret, and R. J. Schoelkopf III,“Techniques for manipulation of two-qubit quantum states and relatedsystems and methods,” Jan. 17 2019, uS Patent App. 16/068,405.

[4] J. A. Jones, M. Mosca, and R. H. Hansen, “Implementation of a quantum search algorithm on a quantum computer,” Nature, vol. 393, no. 6683,pp. 344–346, 1998.

[5] A. Meurer, C. P. Smith, M. Paprocki, O.ˇCert ́ık, S. B. Kirpichev,M. Rocklin, A. Kumar, S. Ivanov, J. K. Moore, S. Singhet al., “Sympy: symbolic computing in python,”Peer J Computer Science, vol. 3, p. e103,2017.

[7] P. D. Nation and J. Johansson, “Qutip: Quantum toolbox in python,”online at http://qutip. org, 2011.

[8] H. A. et al, “Qiskit: An open-source framework for quantum computing,”2019

[9] F. Tacchino, C. Macchiavello, D. Gerace, and D. Bajoni, “An artificial neuron implemented on an actual quantum processor,”npj Quantum Information, vol. 5, pp. 1–8, 2019.

[10] R. Orus, S. Mugel, and E. Lizaso, “Quantum computing for finance:Overview and prospects,”Reviews in Physics, vol. 4, p. 100028, 022019.

[11] N. Shenvi, J. Kempe, and K. B. Whaley, “Quantum random-walk searcha lgorithm,”Physical Review A, vol. 67, no. 5, 2003.

[12] K.-H. Han and J.-H. Kim, “Genetic quantum algorithm and its applica-tion to combinatorial optimization problem,” inProceedings of the 2000 Congress on Evolutionary Computation. vol. 2. IEEE, 2000, pp. 1354–1360.

[13] M.Boyer, G.Brassard, P.Høyer, and A . Tapp,“Tight bounds on quantum searching,” Fortschritte der Physik, vol.46, no.4–5, pp. 493–505, 1998. [Online]. Available: https://onlinelibrary.wiley.com/doi/abs/10.1002

[14] J. Biamonte, P. Wittek, N. Pancotti, P. Rebentrost, N. Wiebe, andS. Lloyd, “Quantum machine learning,”Nature, vol. 549, pp. 195–202,2017

[15] Feynman, R.P. Simulating physics with computers. Int J Theor Phys 21, 467–488 (1982). https://doi.org/10.1007/BF02650179

[16] Feynman, Richard P.; Robert B. Leighton; Matthew Sands (1965). The Feynman Lectures on Physics, Vol. 3. Addison-Wesley. pp. 1.1–1.8. ISBN 978–0201021189.

[17] Schrödinger, E. (1926). “An Undulatory Theory of the Mechanics of Atoms and Molecules” (PDF). Physical Review. 28 (6): 1049–1070.

[18] Dirac, P. A. M. (1939). “A new notation for quantum mechanics”. Mathematical Proceedings of the Cambridge Philosophical Society. 35 (3): 416–418

[19] Bloch, Felix (Oct 1946). “Nuclear induction”. Phys. Rev. 70 (7–8): 460–474.

[20] Schlosshauer, Maximilian (2005). “Decoherence, the measurement problem, and interpretations of quantum mechanics”. Reviews of Modern Physics. 76 (4): 1267–1305.

[21] Grover, Lov K. “A fast quantum mechanical algorithm for database search.” Proceedings of the twenty-eighth annual ACM symposium on Theory of computing. 1996.

--

--