Loading [MathJax]/jax/output/HTML-CSS/jax.js
Portuguese, Brazilian
Idiomas
English
Japanese
German
Korean
Portuguese, Brazilian
French
  • Docs >
  • Primeiros passos com Qiskit
Shortcuts

Primeiros passos com Qiskit

O fluxo de utilização do Qiskit consiste em três etapas principais:

  • Construir: projete um circuito quântico que representa o problema que você está considerando.

  • Executar: execute experimentos em plataformas diferentes (que incluem ambos os sistemas e simuladores).

  • Analisar: calcule estatísticas sumarizadas e visualize os resultados dos experimentos.

Aqui está um exemplo de um fluxo de utilização completo, com explicação detalhada de cada etapa, nas sessões subsequentes:

import numpy as np
from qiskit import(
  QuantumCircuit,
  execute,
  Aer)
from qiskit.visualization import plot_histogram

# Use Aer's qasm_simulator
simulator = Aer.get_backend('qasm_simulator')

# Create a Quantum Circuit acting on the q register
circuit = QuantumCircuit(2, 2)

# Add a H gate on qubit 0
circuit.h(0)

# Add a CX (CNOT) gate on control qubit 0 and target qubit 1
circuit.cx(0, 1)

# Map the quantum measurement to the classical bits
circuit.measure([0,1], [0,1])

# Execute the circuit on the qasm simulator
job = execute(circuit, simulator, shots=1000)

# Grab results from the job
result = job.result()

# Returns counts
counts = result.get_counts(circuit)
print("\nTotal count for 00 and 11 are:",counts)

# Draw the circuit
circuit.draw()

Total count for 00 and 11 are: {'00': 496, '11': 504}
     ┌───┐     ┌─┐   
q_0: ┤ H ├──■──┤M├───
     └───┘┌─┴─┐└╥┘┌─┐
q_1: ─────┤ X ├─╫─┤M├
          └───┘ ║ └╥┘
c: 2/═══════════╩══╩═
                0  1 
# Plot a histogram
plot_histogram(counts)
_images/getting_started_1_0.png

Fluxo de trabalho passo-a-passo

O programa acima pode ser dividido em seis etapas:

  1. Importar pacotes

  2. Inicializar variáveis

  3. Adicionar gates

  4. Visualizar o circuito

  5. Simular o experimento

  6. Visualizar os resultados

Etapa 1: Importar pacotes

Os elementos básicos necessários para o seu programa são importados da seguinte forma:

import numpy as np
from qiskit import(
  QuantumCircuit,
  execute,
  Aer)
from qiskit.visualization import plot_histogram

Em maiores detalhes, os elementos importados são

  • QuantumCircuit: podem ser entendidos como as instruções do sistema Quantum. Contém todas as operações Quantum.

  • execute: executa o seu circuito / experimento.

  • Aer: suporta o backend do simulador.

  • plot_histogram: cria histogramas.

Etapa 2: Inicializar Variáveis

Considere a seguinte linha do código

circuit = QuantumCircuit(2, 2)

Aqui, você está inicializando com 2 qubits no estado zero; com 2 bits clássicos configurados iguais a zero; e circuit é o circuito quantum.

Sintaxe:

  • QuantumCircuit (int, int)

Etapa 3: Adicionar Gates

Você pode adicionar gates (operações) para manipular os registros do seu circuito.

Considere as três linhas de código a seguir:

circuit.h(0)
circuit.cx(0, 1)
circuit.measure([0,1], [0,1])

Os gates são adicionados um-a-um ao circuito para formar o Bell state

|ψ=(|00+|11)/2.

O código acima aplica os seguintes gates:

  • QuantumCircuit.h(0): Um Hadamard gate H no qubit 0, que o coloca em um estado de superposição.

  • QuantumCircuit.cx(0, 1): Uma operação controlled-Not (CNOT) sobre o qubit de controle 0 e qubit de destino 1, deixando os qubits em estado de emaranhamento.

  • QuantumCircuit.measure([0,1], [0,1]): se você passar os registros quantum e clássicos como measure, o resultado da medição o ith qubit será armazenado no ith bit clássico.

Etapa 4: Visualizar o Circuito

Você pode usar qiskit.circuit.QuantumCircuit.draw() para ver o circuito que você projetou nas várias formas usadas em muitos livros didáticos e artigos de pesquisa.

circuit.draw()
     ┌───┐     ┌─┐   
q_0: ┤ H ├──■──┤M├───
     └───┘┌─┴─┐└╥┘┌─┐
q_1: ─────┤ X ├─╫─┤M├
          └───┘ ║ └╥┘
c: 2/═══════════╩══╩═
                0  1 

Neste circuito, os qubits são ordenados com qubit zero na parte superior e qubit um na parte inferior. O circuito é lido da esquerda para a direita, significando que gates que são aplicados primeiro no circuito aparecem mais para a esquerda.

O backend padrão para QuantumCircuit.draw() ou qiskit.visualization.circuit_drawer() é o text backend. No entanto, é possível alterar esses padrões para algo mais adequado para o seu ambiente e caso de uso. Isso é feito com no arquivo config do usuário. Por padrão este arquivo fica localizado em ~/.qiskit/settings.conf e possui extensão .ini.

Por exemplo, um arquivo settings.conf para configurar um Matplotlib drawer é:

[default]
circuit_drawer = mpl

Você pode usar qualquer um dos circuit drawer backends válidos para esta configuração, que inclui text, mpl, latex e latex_source.

Etapa 5: Simular o Experimento

O Qiskit Aer é um framework de simulador de alto desempenho para circuitos quantum. Ele fornece vários backends para alcançar diferentes objetivos de simulação.

Se você tiver problemas ao instalar o Aer, você pode usar alternativamente, o Basic Aer provider substituindo Aer com BasicAer. Basic Aer está incluído no Qiskit Terra.

import numpy as np
from qiskit import(
  QuantumCircuit,
  execute,
  BasicAer)
...

Para simular este circuito, você usará o qasm_simulator. Cada execução deste circuito produzirá o bit string 00 ou 11.

simulator = Aer.get_backend('qasm_simulator')
job = execute(circuit, simulator, shots=1000)
result = job.result()
counts = result.get_counts(circuit)
print("\nTotal count for 00 and 11 are:",counts)

Total count for 00 and 11 are: {'00': 521, '11': 479}

Como esperado, o resultado do bit string igual a 00 ocorrerá aproximadamente em 50% das vezes. O número de vezes que o circuito é executado pode ser especificado através do argumento shots, do método execute. O número de disparos da simulação foi configurado como 1000 (o padrão é 1024).

Uma vez que você tenha o objeto result, poderá acessar as contagens através do método get_counts(circuit). Apresentando os resultados agregados do experimento que você executou.

Etapa 6: Visualizar os Resultados

Qiskit fornece várias visualizações,

incluindo a função plot_histogram, para visualizar seus resultados.

plot_histogram(counts)
_images/getting_started_4_0.png

As probabilidades observadas Pr(00) e Pr(11) são calculadas pelas respectivas contagens e dividindo pelo número total de execuções.

Nota

Tente alterar o valor de shots no método execute para ver como as probabilidades estimadas mudam.

Próximos passos

Agora que você aprendeu o básico, considere esses recursos de aprendizagem: