Entendendo a Matemática por Trás da Computação Quântica
A Álgebra linear é a linguagem da computação quântica. Embora você não precise conhecê-la para implementar ou escrever programas quânticos, ela é amplamente usado para descrever estados qubit, operações quânticas e para prever o que um computador quântico faz em resposta a uma sequência de instruções.
Quando estamos nos referindo a Álgebra Linear, estamos falando sobre Vetores e Matrizes da matemática,
tudo isso sendo aplicada na computação quântica.
Um qubit pode estar em um estado de 1 ou 0 ou em uma superposição de ambos. Usando álgebra linear, o
estado
de um qubit é descrito como um vetor e é representado por uma única matriz de coluna
. Também é conhecido
como um vetor de
estado quântico e deve atender ao requisito de que
.
Os elementos da matriz representam a probabilidade de o qubit entrar em colapso de uma forma ou de
outra, com
sendo a probabilidade de
colapsar para zero, e
sendo a
probabilidade de colapsar para um. Todas as matrizes a seguir representam vetores de estado quântico
válidos:

O Algoritmo Quântico
O que é um qubit?
Um qubit é a unidade básica de informação na computação quântica. Os Qubits desempenham um papel semelhante na computação quântica que os bits desempenham na computação clássica, mas se comportam de maneira muito diferente. Os bits clássicos são binários e podem manter apenas uma posição de 0 ou 1, mas, os qubits podem manter uma superposição de todos os estados possíveis.
Os cientistas podem aproveitar a interferência criando uma sequência determinística de portas qubit. Essas portas qubit fazem com que as amplitudes se somem construtivamente. Isso significa que eles têm garantia matemática de aumentar a probabilidade de ver uma das respostas certas.
Sobreposição
Na superposição, as partículas quânticas são uma combinação de todos os estados possíveis. Eles flutuam até serem observados e medidos. Uma maneira de imaginar a diferença entre posição binária e superposição é imaginar uma moeda. Os bits clássicos são medidos "jogando a moeda" e obtendo cara ou coroa. No entanto, se você pudesse olhar para uma moeda e ver cara e coroa ao mesmo tempo, bem como todos os estados intermediários, a moeda estaria em superposição.
Emaranhamento
Emaranhamento é a capacidade das partículas quânticas de correlacionar seus resultados de medição entre si. Quando os qubits estão emaranhados, eles formam um único sistema e influenciam uns aos outros. Podemos usar as medições de um qubit para tirar conclusões sobre os outros. Ao adicionar e emaranhar mais qubits em um sistema, os computadores quânticos podem calcular exponencialmente mais informações e resolver problemas mais complicados.
Interferência Quântica
Interferência quântica é o comportamento intrínseco de um qubit, devido à superposição, para influenciar a probabilidade de ele entrar em colapso de uma forma ou de outra. Os computadores quânticos são projetados e construídos para reduzir ao máximo a interferência e garantir resultados mais precisos. Para tanto, a Microsoft utiliza qubits topológicos, que são estabilizados manipulando sua estrutura e envolvendo-os com compostos químicos que os protegem de interferências externas.
Como Utilizar um Algoritmo Quântico na Prática
Para fazermos essa experiência, iremos usar o Google Collab, que é um serviço Jupyter Notebook hospedado que não requer configuração para uso e fornece acesso gratuito a recursos de computação, incluindo GPUs e TPUs. Nesta primeira experiência, iremos fazer o famoso "Hello World", que é tradicionalmente usado para apresentar programadores novatos a uma linguagem de programação, mas, dessa vez, faremos isso na maneira "quântica".
Primeiramente, para fazermos o nosso programa temos que construir e executar circuitos quânticos. Circuitos quânticos são uma sequência de portas quânticas, e esses circuitos são referidos como "um registro n-qubit". Para isso, iremos usar dois comandos:
A próxima coisa que faremos é começar a construir o registro quântico. Teremos que primeiro codificar a entrada, fazer alguns cálculos e extrair uma saída. Primeiro vamos importar as bibliotecas Qiskit, pylatexenc e seus pacotes associados.
Em seguida, inicializaremos um registro quântico com 2 qubits. Um qubit é a unidade fundamental de um circuito quântico, o análogo de um pouco na computação clássica! Também inicializaremos um registro clássico com 2 qubits. A maioria dos circuitos será uma combinação de registros clássicos e quânticos, como os registradores quânticos serão usados para realizar operações de mecânica quântica em qubits, e registros clássicos serão usados para realizar operações clássicas nas medidas obtidas.
No Qiskit, temos a opção de visualizar como o circuito quântico fica executando o seguinte comando:
Veremos dois bits quânticos e dois bits clássicos. Veremos o efeito de aplicar um portão quântico em um único bit, o portão de Hadamard, que é um portão usado para criar superposição. Faremos isso executando o seguinte comando para o primeiro qubit no registro quântico. Observe que a indexação começa a partir de 0 em Python.
Vamos explorar portões mais fundamentais, como o portão cx que é um portão x controlado, e o portão executa um NÃO no qubit de destino se o qubit de controle estiver no estado 1. Por padrão, todos os qubits são inicializados para o estado 0. O qubit de controle é o primeiro parâmetro ou qr[0] neste caso e o parâmetro de destino é qr[1]. No circuito seguinte, o qubit alvo é um círculo com um sinal de adição e o controle é um ponto.
Este circuito é usado para implementar o emaranhamento entre dois qubits. Depois de inicializar um circuito quântico e realizar computação implementando portas quânticas, extrairemos as saídas usando a função .measure() no Qiskit. Neste exemplo, os bits clássicos serão usados para armazenar as saídas. As setas apontam dos qubits, para os bits clássicos que são usados para armazenar as saídas extraídas.
E este foi basicamente o nosso primeiro "Hello World" na programação quântica!!
Para mais informações sobre: