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:
- Cree una cuenta gratuita de IBM Quantum Experience.
- Navegue a Mi cuenta.
- Haga clic en Copiar token para copiar el token en el portapapeles (el token representa la API para acceder a los dispositivos IBM Quantum).
- 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,|
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: