Cree un circuito cuántico simple utilizando IBM Qiskit en Python

Qiskit es un marco de código abierto para la computación cuántica. Proporciona herramientas para crear y manipular programas cuánticos y ejecutarlos en prototipos de dispositivos cuánticos en IBM Q Experience o en simuladores en una computadora local. Veamos cómo podemos crear un circuito Quantum simple y probarlo en una computadora Quantum real o simularlo en nuestra computadora localmente. Python es un requisito previo imprescindible para comprender los programas de Quantum, ya que Qiskit se desarrolla con Python.

La primera y principal parte antes de entrar en el tema es la instalación de Qiskit y Anaconda. Consulte los artículos a continuación para obtener una guía paso a paso para la instalación de anaconda.

Instalación

Para instalar qiskit, siga los pasos a continuación:

  • Abra Anaconda Prompt y escriba
pip install qiskit
  • Eso es todo, esto instalará todos los paquetes necesarios.
  • A continuación, abra Jupyter Notebook.
  • Importe qiskit usando el siguiente comando.
import qiskit

Para obtener acceso a IBM Quantum Systems:

  1. Cree una cuenta gratuita de IBM Quantum Experience.
  2. Navegue a Mi cuenta.
  3. Haga clic en Copiar token para copiar el token en el portapapeles (el token representa la API para acceder a los dispositivos IBM Quantum).
  4. Ejecute los siguientes comandos (Jupyter Notebook) para almacenar su token API localmente para su uso posterior en un archivo de configuración llamado qiskitrc . Reemplace MY_API_TOKEN con el token de API.
from qiskit import IBMQ
IBMQ.save_account('MY_API_TOKEN')

Empezando

En primer lugar, importaremos los paquetes necesarios. Las líneas de importación importan los elementos básicos (paquetes y funciones) necesarios para su programa.                              

Las importaciones utilizadas en el ejemplo de código son:

  • QuantumCircuit: contiene todas sus operaciones cuánticas; las instrucciones para el sistema cuántico
  • ejecutar : ejecuta su circuito
  • Aer : maneja los backends del simulador
  • qiskit.visualization: permite la visualización de datos, como plot_histogram

Inicializar variables

En la siguiente línea de código, inicializa dos qubits en el estado cero y dos bits clásicos en el estado cero, en el circuito cuántico llamado circuito.

Agregar puertas

Las siguientes tres líneas de código, comenzando con circuito ., agregan puertas que manipulan los qubits en su circuito.

Explicación detallada

  • QuantumCircuit.h(0 ): una puerta de Hadamard en qubit 0 , que lo pone en un estado de superposición
  • QuantumCircuit.cx(0, 1 ): una operación NO controlada ( C x ) en el qubit de control 0 y el qubit de destino 1 , que pone los qubits en un estado entrelazado
  • QuantumCircuit.measure([0,1], [0,1] ): el primer argumento indexa los qubits, el segundo argumento indexa los bits clásicos. El resultado de la medición del n -ésimo qubit se almacenará en el n -ésimo bit clásico.

Este trío particular de puertas añadidas una por una al circuito forma el estado Bell,|

|?? = (|00? + |11?) / ?2

En este estado, hay un 50 por ciento de posibilidades de encontrar que ambos qubits tengan el valor cero y un 50 por ciento de posibilidades de encontrar que ambos qubits tengan el valor uno.

Simular el experimento

La siguiente línea de código llama a un marco de simulador específico; en este caso, llama a Qiskit Aer, que es un simulador de alto rendimiento que proporciona varios backends para lograr diferentes objetivos de simulación. En este programa, usaremos el qasm_simulator . Cada ejecución de este circuito producirá la string de bits ’00’ o ’11’ . El programa especifica el número de veces que se ejecutará el circuito en el argumento disparos del método de ejecución ( trabajo = ejecutar (circuito, simulador, disparos = 1000) ). El número de disparos de la simulación se establece en 1000 (el valor predeterminado es 1024 ). Una vez que tenga un resultadoobjeto, puede acceder a los recuentos mediante el método get_counts(circuit) . Esto le da los resultados agregados de su experimento. La string de bits de salida es ’00’ aproximadamente el 50 por ciento del tiempo. Este simulador no modela el ruido. Cualquier desviación del 50 por ciento se debe al pequeño tamaño de la muestra.

Visualiza el circuito

QuantumCircuit.draw() (llamado por circuit.draw() en el código) muestra su circuito en uno de los varios estilos usados ​​en libros de texto y artículos de investigación. En el circuito obtenido después del comando de visualización, los qubits se ordenan con el qubit cero en la parte superior y el qubit uno debajo. El circuito se lee de izquierda a derecha, representando el paso del tiempo.

Visualiza los resultados

Qiskit proporciona muchas visualizaciones , incluida la función plot_histogram , para ver los resultados.

plot_histogram(counts)

Las probabilidades (frecuencias relativas) de observar el |00? y |11? Los estados se calculan tomando los conteos respectivos y dividiéndolos por el número total de disparos.

A continuación se muestra la implementación.

Python3

# python program to create a simple Quantum circuit
  
  
%matplotlib inline
from qiskit import QuantumCircuit, execute, Aer, IBMQ
from qiskit.compiler import transpile, assemble
from qiskit.tools.jupyter import *
from qiskit.visualization import *
  
# Loading your IBM Q account(s)
provider = IBMQ.load_account()
   
# 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])
   
# Use Aer's qasm_simulator
simulator = Aer.get_backend('qasm_simulator')
   
# Execute the circuit on the qasm
# simulator
job = execute(circuit, simulator, shots=1000)
   
# Grab results from the job
result = job.result()
   
# Return counts
counts = result.get_counts(circuit)
print("\nTotal count for 00 and 11 are:",counts)
  
# Draw the circuit
circuit.draw()

Producción:

Trazar un histograma

Python3

# Plot a histogram
plot_histogram(counts)

Producción:

        

Publicación traducida automáticamente

Artículo escrito por adarshj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *