Portas Lógicas Quânticas

O análogo das portas lógicas digitais na computação quântica

Filipe Chagas Ferraz
CQ em Português
12 min readFeb 7, 2021

--

Dando continuidade ao texto Qubits — O (primeiro) princípio da computação quântica, serão abordadas aqui as portas lógicas quânticas, responsáveis por modificar e emaranhar os estados dos qubits.

Introdução

Portas lógicas clássicas e circuitos lógicos

Uma porta lógica clássica é um dispositivo (normalmente eletrônico) com um conjunto de bits de entrada e um bit de saída. Este dispositivo implementa alguma lógica de “uns” e “zeros” para determinar o estado do bit de saída a partir dos estados dos bits de entrada.

As quatro principais portas lógicas clássicas são: NOT, OR, AND e XOR.

Simulação das portas lógica NOT, OR, AND e XOR.
Tabelas-verdade das portas lógicas NOT, OR, AND e XOR.

Combinando portas lógicas clássicas, é possível criar autômatos e circuitos lógicos capazes de realizar cálculos. O processador de um computador clássico, por exemplo, é composto em sua maior parte por portas lógicas.

Circuito lógico somador incompleto simples

Circuitos quânticos

Exemplo de circuito quântico

Circuitos quânticos são diagramas que costumam ser usados como pseudocódigo para algoritmos quânticos. Neles, os qubits são representados como linhas horizontais, e as “portas lógicas quânticas” — ou melhor dizendo, os operadores análogos às portas lógicas digitais na computação quântica — são representadas como pequenos retângulos desenhados sobre as linhas horizontais, as vezes acompanhados de linhas verticais que os ligam a qubits de controle. O percurso da esquerda para a direita das linhas horizontais representa a evolução temporal do sistema.

O que de fato são as “portas lógicas quânticas”

As tais portas lógicas quânticas são, na verdade, operadores lineares unitários (matrizes). Então, convém prosseguir com esta leitura fazendo uma breve abordagem de álgebra linear. Em seguida, serão apresentadas as principais portas lógicas quânticas e suas respectivas funções dentro dos circuitos quânticos.

Conceitos de álgebra linear

Mapas/Transformações e Operadores Lineares [1]

Mapas lineares, também conhecidos como transformações lineares, aplicações lineares e, em alguns casos, operadores lineares, são funções que possuem as seguintes propriedades:

  • F(𝑏+𝑐) = F(𝑏) + F(𝑐), onde 𝑏 e 𝑐 pertencem ao domínio de F.
  • F(λ𝑏) = λF(𝑏), onde λ é uma constante.

Uma matriz A de 𝑛 linhas e 𝑚 colunas é um mapa linear tal que:

(1)

onde:

  • K é um corpo, um tipo especial de conjunto numérico. Na computação quântica, este K costuma ser ℂ (o conjunto dos complexos).
  • Kᵐ e Kⁿ são espaços vetoriais de, respectivamente, 𝑚 e 𝑛 dimensões.
  • 𝑣 é um vetor pertencente ao espaço vetorial Kᵐ
  • A𝑣 (o produto da matriz A pelo vetor 𝑣) é um vetor pertencente ao espaço vetorial Kⁿ

Traduzindo da linguagem matemática para o bom português: o produto da matriz A pelo vetor 𝑣 ∊ Kᵐ resulta em um vetor A𝑣 (que chamaremos de 𝑢) tal que 𝑢 ∊ Kⁿ.

(2)

A matriz A, como um mapa linear, tem as seguintes propriedades:

  • A(𝑏+𝑐) = A𝑏 + A𝑐, onde 𝑏,𝑐 ∊ Kᵐ
  • A(λ𝑏) = λA(𝑏), onde 𝑏 ∊ Kᵐ e λ∊ K

Duas matrizes A e B de 𝑛 linhas e 𝑚 colunas têm as seguintes propriedades:

  • (A+B)(𝑐) = Ac + Bc, onde 𝑐 ∊ Kᵐ
  • (A+B)(𝑏+𝑐) = A(𝑏+𝑐) + B(𝑏+𝑐) = A𝑏 + A𝑐 + B𝑏 + B𝑐, onde 𝑏,𝑐 ∊ Kᵐ
  • (A+B)(λ𝑐) = A(λ𝑐) + B(λ𝑐) = λA𝑐 + λB𝑐, , onde 𝑐 ∊ Kᵐ e λ∊ K

Um mapa linear pode ser chamado de operador linear quando seu conjunto domínio equivale ao seu contradomínio.

Matriz identidade

Uma matriz de 𝑛 linhas e 𝑛 colunas cujas entradas da diagonal principal são 1 e todas as outras entradas são 0 é denominada matriz identidade e costuma ser denotada por Iₙ (ou simplesmente I, caso o número de linhas e colunas já esteja claro no contexto). [6]

Forma geral de uma matriz identidade

Este tipo de matriz é especial pela seguinte propriedade: para qualquer matriz A de 𝑚 linhas e 𝑛 colunas, temos que Iₘ A = A Iₙ = A. [7]

Esta primeira propriedade implica nas seguintes:

  • Para qualquer matriz coluna 𝑣 de 𝑛 entradas: Iₙ 𝑣 = 𝑣.
  • Para qualquer matriz linha 𝑢 de 𝑛 entradas: 𝑢 Iₙ = 𝑢.
  • Para qualquer matriz A de 𝑛 linhas e 𝑛 colunas: Iₙ A = A Iₙ = A.

Como, tratando-se de mapas lineares, é de costume representar vetores como matrizes coluna, é assumido que uma matriz identidade I é um operador linear que não altera o operando (tal como a função 𝑓(𝑥)=𝑥).

Matriz transposta e transposta conjugada

A grosso modo, a transposição de uma matriz de números reais é uma operação na qual as linhas da matriz são transformadas em colunas e as colunas são transformadas em linhas.

Considere uma matriz de números reais A de 𝑛 linhas e 𝑚 colunas. Sua transposta Aᵀ é uma matriz de 𝑚 linhas e 𝑛 colunas cujas entradas Aᵀ₍ⱼ,ₖ₎ (sendo 𝑗 o índice linha e 𝑘 o índice coluna) satisfazem à equivalência Aᵀ₍ⱼ,ₖ₎=A₍ₖ,ⱼ₎. [1]

Exemplo de transposição de uma matriz de números reais

Tratando-se de matrizes de números complexos, existem também as transpostas conjugadas, nas quais, além da inversão linha-coluna, há a “conjugação” das entradas. [2] Quando a matriz de números complexos é um operador linear, sua transposta conjugada é também conhecida como operador adjunto hermitiano. [8][10]

Basicamente, o conjugado de um número complexo 𝑧=α+iβ é 𝑧*=α-iβ (repare na inversão do sinal da parte complexa).

Diferente da transposta simples, que é simbolizada pela letra ‘ T ’ sobrescrita, a transposta conjugada é representada pelo símbolo Dagger (‘ † ’) sobrescrito ou por um asterísco (‘ * ‘).

Exemplo de transposta conjugada

Funções e Matrizes inversas

Considere uma função injetora 𝑓:X⟼Y (sendo X seu conjunto domínio e Y seu contradomínio). A função inversa de 𝑓 é uma função 𝑔:Y⟼X tal que, para 𝑥∊X e 𝑦∊Y, se é verdade que 𝑦=𝑓(𝑥), é também verdade que 𝑥=𝑔(𝑦), ou seja: 𝑔(𝑓(𝑥))=𝑥. [3]

Por exemplo: as funções 𝑓(𝑥)=2𝑥 e 𝑔(𝑥)=𝑥/2 são inversas, pois 𝑓(𝑔(𝑥))=2(𝑥/2)=(2/2)𝑥=𝑥.

Funções inversas são frequentemente denotadas pelo número “-1” sobrescrito. A inversa de 𝑓(𝑥), por exemplo, pode ser denotada por 𝑓 ⁻¹(𝑥). No entanto esta é uma notação confusa, pois o “-1” sobrescrito também pode denotar uma potência, e 𝑓 elevado a -1 não necessariamente equivale à inversa de 𝑓. [3]

Matriz inversa é, basicamente, uma forma matricial de função inversa.

Considere uma matriz quadrada A. Sua inversa é uma matriz A⁻¹ tal que, se é verdade que 𝑢=A𝑣, também é verdade que 𝑣=A⁻¹𝑢, ou seja, 𝑣=AA⁻¹𝑣.

Partindo do pressuposto de que uma matriz identidade I com as mesmas quantidades de linhas e colunas que AA⁻¹ satisfaz 𝑣=I𝑣, conclui-se que AA⁻¹=I. Portanto, para provar que uma matriz B é inversa de A, basta mostrar que AB=I. [1][4]

Exemplo de inversão de matrizes

Matriz unitária [5]

Uma matriz quadrada U (que tem a mesma quantidade de linhas e colunas) é dita unitária quando sua transposta conjugada é também sua inversa.

Principal propriedade de uma matriz unitária

É possível verificar se uma matriz quadrada U é unitária de duas formas:

  • Se |det U|=1, então a matriz U é unitária.
  • Se UU*=I, então a matriz U é unitária.

Uma matriz unitária é um mapa linear que caracteriza-se por não alterar a norma do vetor operando (|U𝑣|=|𝑣|).

Todos os operadores lineares usados em algoritmos quânticos são unitários.

Operadores autoadjuntos

Um operador linear A atuando em um espaço de Hilbert é dito autoadjunto quando satisfaz a regra ⟨A𝑢|𝑣⟩=⟨𝑢|A𝑣⟩ para qualquer par 𝑢,𝑣. [11]

Quando o operador linear é uma matriz quadrada, ele também se caracteriza por equivaler ao seu próprio adjunto hermitiano. [12]

Operador autoadjunto matricial A

Alguns dos operadores lineares usados em algoritmos quânticos são autoadjuntos.

Operadores de 1 qubit

Aqui começa a abordagem sobre as “portas lógicas quânticas” (ou melhor dizendo, os operadores básicos da computação quânticas). Primeiramente, serão apresentadas 9 portas de 1 qubit: Pauli-X, Pauli-Y, Pauli-Z, Rx, Ry, Rz, Hadamard, Phase e π/8. Em seguida, na próxima seção, serão apresentadas 4 portas de múltiplos qubits: Controlled-NOT, Swap, Controlled-U e Toffoli. Estas são apenas algumas das portas lógicas quânticas existentes. É possível criar uma infinidade de outras portas lógicas quânticas a partir destas mais básicas.

Pauli-X, Pauli-Y e Pauli-Z

Símbolos das portas lógicas quânticas Pauli-X, Pauli-Y e Pauli-Z na plataforma IBM QX Circuit Composer.

Os operadores Pauli-X, Pauli-Y e Pauli-Z são responsáveis por rotacionar o estado de um qubit em 180 graus na esfera de Bloch.

Definição dos operadores Pauli-X, Pauli-Y e Pauli-Z. [13]

Os nomes dos operadores já sugerem o eixo de rotação de cada um: Pauli-X rotaciona em torno do eixo x, Pauli-Y rotaciona em torno do eixo y e Pauli-Z rotaciona em torno do eixo z.

Ilustração das transformações Pauli-X, Pauli-Y e Pauli-Z na esfera de Bloch.

O operador Pauli-X pode ser interpretado como uma “versão quântica” da porta lógica NOT, pois:

  • X|0⟩ = |1⟩
  • X|1⟩ = |0⟩

Os três operadores Pauli são autoadjuntos.

Rotações Rx, Ry e Rz.

Os operadores Rx, Ry e Rz rotacionam o estado de um qubit em um angulo “θ” qualquer na esfera de Bloch.

Definições dos operadores Rx, Ry e Rz. [13]

Rx rotaciona em torno do eixo x, Ry rotaciona em torno do eixo y e Rz rotaciona em torno do eixo z.

Estes operadores não necessariamente são autoadjuntos. As inversas de Rx(θ), Ry(θ) e Rz(θ) são, respectivamente, Rx(-θ), Ry(-θ) e Rz(-θ).

Hadamard

Símbolo da porta lógica quântica Hadamard na plataforma IBM QX Circuit Composer.
Definição do operador Hadamard. [13]

O operador Hadamard, denotado pela letra ‘H’, é um operador autoadjunto que pode ser usado para transformar estados não superpostos em estados superpostos (e vice-versa), como mostram os exemplos a seguir.

  • H|0⟩ = (|0⟩+|1⟩)/√2
  • H|1⟩ = (|0⟩-|1⟩)/√2.
  • H(|0⟩+|1⟩)/√2 = |0⟩
  • H(|0⟩-|1⟩)/√2 = |1⟩

O operador Hadamard pode ser definido alternativamente como H=(X+Z)/√2. [13]

Phase

Símbolo da porta lógica quântica S (Phase) na plataforma IBM QX Circuit Composer.
Definição do operador S. [13]

O operador Phase (denotado pela letra S) aplica um fator de fase 𝑖 ao estado |1⟩. Seu uso tem o mesmo efeito de uma uma transformação Rz(π/2). [14]

  • S|0⟩ = |0⟩
  • S|1⟩ = 𝑖|1⟩

S não é autoadjunto, sua função inversa é o operador S* (transposta conjugada de S).

Símbolo da porta lógica quântica S* (transposta conjugada de S) na plataforma IBM QX Circuit Composer.
Definição do operador S*.

π/8

Símbolo da porta lógica quântica T (π/8) na plataforma IBM QX Circuit Composer.
Definição do operador T. [13]

O operador π/8 (denotado pela letra T) aplica um fator de fase exp(𝑖π/4) ao estado |1⟩. Seu uso tem o mesmo efeito de uma uma transformação Rz(π/4).

  • T|0⟩ = |0⟩
  • T|1⟩ = exp(𝑖π/4)|1⟩

Este operador é referido como π/8 simplesmente porque pode ser definido alternativamente como uma matriz com exp(±𝑖π/8) nas entradas da diagonal principal e com um fator global de fase exp(𝑖π/8). [13]

Definição do operador T com fator global de fase exp(𝑖π/8).

T não é autoadjunto, sua função inversa é o operador T* (transposta conjugada de T). [15]

Símbolo da porta lógica quântica T* (transposta conjugada de T) na plataforma IBM QX Circuit Composer.
Definição do operador T* (transposta conjugada de T).

Operadores de múltiplos qubits

Controlled-NOT

Símbolo da porta lógica quântica Controlled-NOT na plataforma IBM QX Circuit Composer. Os qubits de controle e alvo são, respectivamente, q0 e q1.
Definição do operador Controlled-NOT. [13]

Controlled-NOT é o mais básico dos operadores de múltiplos qubits. Este possui dois operandos: um qubit de controle e um qubit alvo. Em termos de bases computacionais, seu comportamento pode ser definido da seguinte forma:

  • |𝑐⟩|𝑡⟩ |𝑐⟩|𝑐 ⊕ 𝑡⟩, onde 𝑐 e 𝑡 são, respectivamente, control (controle) e target (alvo), e “⊕” é uma adição módulo 2, equivalente ao operador booleano XOR . [13]
Entradas e saídas da porta lógica quântica Controlled-NOT

Basicamente, o operador Controlled-NOT inverte o estado do qubit alvo quando o qubit de controle é definido como |1⟩. Quando o qubit de controle é definido como |0⟩, o estado do qubit alvo não sofre alteração. Em ambos os casos, o estado do qubit de controle não sofre alteração.[13]

É possível explicar este comportamento usando uma analogia com o operador if ternário de uma linguagem de programação, como mostra o exemplo a seguir:

  • |𝑐⟩|𝑡⟩ |𝑐⟩|not 𝑐 if 𝑡 == 1 else c⟩

Obs: Neste exemplo eu usei especificamente a sintaxe do if ternário da linguagem Python.

No geral, o operador Controlled-NOT tende a apresentar o comportamento de um operador Pauli-X aplicado ao qubit alvo quando o qubit de controle colapsa em |1⟩.

O operador Controlled-NOT é autoadjunto.

Swap

Símbolo da porta lógica quântica Swap na plataforma IBM QX Circuit Composer.

Swap é um operador composto por um arranjo de 3 operadores Controlled-NOT. Sua função é, basicamente, permutar os estados do par de qubits operandos.

Composição de um operador Swap usando 3 operadores Controlled-NOT. O sistema inicia no estado |ψ⟩|ɸ⟩ e termina no estado |ɸ⟩|ψ⟩, graças a permutação aplicada pelo operador Swap. [16]

O comportamento do operador Swap pode ser definido da seguinte forma:

  • |ψ⟩|ɸ⟩ |ɸ⟩|ψ⟩

O operador Swap é autoadjunto.

Controlled-U

Símbolo de um operador Controlled-U

Controlled-U é uma generalização para os diversos operadores controlados que podem ser criados a partir do operador Controlled-NOT e dos operadores de 1 qubit. [13] Basicamente, para um operador unitário U de 1 qubit, pode haver uma versão controlada, que atua como U sobre o qubit alvo apenas quando o qubit de controle colapsa em |1⟩.

Toffoli

Símbolo da porta lógica quântica Toffoli na plataforma IBM QX Circuit Composer. Os dois qubits de controle e o qubit alvo são, respectivamente, q0, q1 e q2.
Definição do operador Toffoli. [17]

Toffoli é um operador que funciona de forma parecida com o Controlled-NOT, porém com dois qubits de controle.

Em termos de bases computacionais, o operador Toffoli inverte o estado do qubit alvo apenas quando ambos os qubits de controle são definidos como |1⟩. [13]

Tabela-verdade e simbologia de uma porta lógica quântica Toffoli. [13]

Este comportamento pode ser definido da seguinte forma:

  • |𝑐₁⟩|𝑐₂⟩|𝑡⟩ |𝑐₁⟩|𝑐₂⟩|𝑐₁𝑐₂ ⊕ 𝑡⟩, onde 𝑐₁, 𝑐₂ e 𝑡 são, respectivamente, controle 1, controle 2, e target (alvo).

A porta lógica quântica Toffoli pode ser implementada como um circuito quântico composto por portas de 1 e 2 qubits, como mostra a seguinte ilustração:

Implementação da porta lógica quântica Toffoli [13]

O operador Toffoli é autoadjunto.

Referências

[1] LIESEN, Jörg; MEHRMANN, Volker. Linear Algebra. [S. l.]: Springer International Publishing, 2015. DOI 10.1007/978–3–319–24346–7. Disponível em: http://dx.doi.org/10.1007/978-3-319-24346-7.

[2] Weisstein, Eric W. “Conjugate Transpose.” From MathWorld — A Wolfram Web Resource. https://mathworld.wolfram.com/ConjugateTranspose.html

[3] Weisstein, Eric W. “Inverse Function.” From MathWorld — A Wolfram Web Resource. https://mathworld.wolfram.com/InverseFunction.html

[4] Stover, Christopher and Weisstein, Eric W. “Matrix Inverse.” From MathWorld — A Wolfram Web Resource. https://mathworld.wolfram.com/MatrixInverse.html

[5] Rowland, Todd. “Unitary Matrix.” From MathWorld — A Wolfram Web Resource, created by Eric W. Weisstein. https://mathworld.wolfram.com/UnitaryMatrix.html

[6] Weisstein, Eric W. “Identity Matrix.” From MathWorld — A Wolfram Web Resource. https://mathworld.wolfram.com/IdentityMatrix.html

[7] IDENTITY Matrix. In: Wikipédia: a enciclopédia livre. Disponível em: <https://pt.wikipedia.org/wiki/Conte%C3%BAdo_aberto> Acesso em: 26 nov 2020.

[8] Sakurai, J., Napolitano, J., & Dahmen, S. (2013). Mecânica quântica moderna. Bookman.

[10] Horn, Roger A.; Johnson, Charles R. (1985). Matrix Analysis. [S.l.]: Cambridge University Press. ISBN 0–521–38632–2

[11] Stulpe W. (2009) Self-Adjoint Operator. In: Greenberger D., Hentschel K., Weinert F. (eds) Compendium of Quantum Physics. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-70626-7_196

[12] OPERADOR autoadjunto. In: Wikipédia: a enciclopédia livre. Disponível em: <https://pt.wikipedia.org/wiki/Operador_autoadjunto> Acesso em: 26 nov 2020.

[13] Nielsen, M., & Chuang, I. (2010). Quantum Computation and Quantum Information: 10th Anniversary Edition. Cambridge: Cambridge University Press. doi:10.1017/CBO9780511976667

[14] Voorhoede, D., 2021. S Gate. [online] Quantum Inspire. Available at: <https://www.quantum-inspire.com/kbase/s-gate/> [Accessed 6 February 2021].

[15] Voorhoede, D., 2021. T Gate. [online] Quantum Inspire. Available at: <https://www.quantum-inspire.com/kbase/t-gate/> [Accessed 6 February 2021].

[16] Colin Wilmott. (2011). A generalized quantum SWAP gate. <https://arxiv.org/abs/0811.1684> [Accessed 6 February 2021].

[17] Voorhoede, D., 2021. Toffoli Gate. [online] Quantum Inspire. Available at: <https://www.quantum-inspire.com/kbase/toffoli/> [Accessed 7 February 2021].

--

--

Filipe Chagas Ferraz
CQ em Português

Brasil, Cuiabá-MT; engenheiro de computação pela Universidade Federal de Mato Grosso; professor e pesquisador. https://github.com/FilipeChagasDev