Circuito somador em Qiskit

Estou participando do IBM Quantum Challenge, que vai até a semana que vem.

Uma coisa interessante nesse, é a necessidade de reescrever resultados básicos de computação tradicional, porém respeitando as regras da computação quântica.

Queria detalhar aqui o circuito somador.

Um dos exercícios necessitava do auxílio de uma espécie de contador.

Lembrando aqui que estamos trabalhando com qubits, onde cada qubit pode assumir uma sobreposição de valores 0 e 1.

Portanto, não é possível simplesmente somar do jeito comum, porque teríamos que somar todas as possibilidades: 2 qubits = 4 possibilidades, 3 qubits = 8 possibilidades, 4 qubits = 2^4 = 16 possibilidades, etc…

Para piorar, um computador quântico atual (e mesmo um simulador), tem um limite muito baixo de qubits (28, no caso). Ou seja, não dá para desperdiçar nada.

O circuito abaixo tem 9 qubits na entrada, e 3 qubits para fazer a soma. Ou seja, o máximo que três qubits podem somar é 7 (estado 111), que é menos do que 9, porém, para o exercício, isso era suficiente.

Como ele funciona?

Os 9 qubits podem ser modificados para 0 ou 1 (como todos inicializam em 0, basta ligar com uma porta X).

Os três qubits somadores funcionam assim: o q13_0 (vide figura) é o dígito menos significativo, o q13_1 é o do meio, e o q13_2 é o mais significativo.

A primeira linha do somador é como se aplicasse um OR às entradas. Começa com 0, se torna 1 quando tiver alguma entrada, volta para zero quando tiver uma segunda entrada.

A segunda linha do somador faz um AND com a entrada atual e a linha acima. Ou seja, vai virar 1 quando a entrada for 1 e a soma atual for 1. Essa linha faz as vezes de carry da primeira, ou seja, quando transborda o número.

A terceira linha é a mesma ideia, mas transbordando a primeira e a segunda.

O tutorial da IBM a seguir explica a lógica de outra forma. Acho que vale a leitura deste. The Atoms of Computation (qiskit.org)

É muito mais fácil fazer uma soma utilizando computação clássica. O objetivo deste circuito é incorporar num modelo bem mais complexo, que vai utilizar estados em superposição, daí a necessidade de refazer o mesmo quanticamente.

Há diversas outras formas possíveis de criar tal circuito, porém, essa foi a forma que encontrei, dadas as restrições do problema.

Acredite: esse código é muito útil.

Código no Github.

asgunzi/3qubitAdderQiskit: A 3 qubit circuit Adder in Qiskit (github.com)

Ideias técnicas com uma pitada de filosofia
https://ideiasesquecidas.com/

Entre no grupo de estudos de Computação Quântica:
https://www.facebook.com/groups/1013309389112487

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s