El código crea un circuito cuántico básico, lo ejecuta en un simulador, y muestra los resultados obtenidos.
En primer lugar creamos un circuito cuántico de un único qubit al que aplicamos una puerta Hadamard y a continuación realizamos una medición. Recordamos que una puerta Hadamard ("H") lo que hace es poner el qubit en un estado de superposición tal que existen las mismas posibilidades de que colapse a cualquiera de los estados |0⟩ y |1⟩. En el circuito dibujado se aprecia una línea doble titulada con una "c"; representa al bit que recoge la medición.
A continuación utilizamos una máquina de simulación llamada qasm_simulator
para ejecutar nuestro experimento 10.000 veces, y comprobar, para cada una de ellas, que valor tiene nuestro qubit.
Finalmente, mostramos estos resultados en forma de un gráfico, como si estuviéramos mirando un montón de lanzamientos de monedas y contando cuántas veces cae cara y cuántas veces cae cruz.
# CIRCUITO-01 : UN QUBIT CON UNA PUERTA H Y SU MEDIDA # Importar las librerías necesarias from qiskit import QuantumCircuit # Importa la clase QuantumCircuit de Qiskit from qiskit_aer import Aer # Importa el módulo Aer de Qiskit Aer qc_a = QuantumCircuit(1, 1) # Definimos un circuito de 1 qubit y un bit qc_a.h(0) # Añadimos un apuerta Hadamard qc_a.measure(0,0) # Medimos el qubit 0 en el bit 0 qc_a.draw("mpl") # Dibujamos el circuito cuántico
# Configuración del simulador cuántico Procesando = Aer.get_backend('qasm_simulator') # Obtiene el backend 'qasm_simulator' de Qiskit Aer # Ejecución del circuito cuántico en el simulador cuántico Proceso = Procesando.run(Circuito, shots=10000).result() # Ejecuta el circuito cuántico 10000 veces y obtiene los resultados # Obtención de los
# CIRCUITO-01 : LO EJECUTAMOS 10.000 VECES Y VEMOS LOS RESULTADOS # Configuración del simulador cuántico Procesando = Aer.get_backend('qasm_simulator') # Obtiene el backend 'qasm_simulator' de Qiskit Aer # Ejecución del circuito cuántico en el simulador cuántico Proceso = Procesando.run(qc_a, shots=10000).result() # Ejecuta el circuito cuántico 10000 veces y obtiene los resultados # Obtención de los resultados de la ejecución Resultados = Proceso.get_counts(qc_a) # Obtiene los conteos de los resultados de la ejecución del circuito print(Resultados) # Imprime los resultados en la consola
{'0': 4950, '1': 5050}
# CIRCUITO-01 : MOSTRAMOS LOS RESULTADOS EN FORMA DE HISTOGRAMA plot_histogram(Resultados) # Grafica un histograma con los resultados obtenidos
PASOS DADOS EN ESTA PRIMERA ACTIVIDAD
Importar librerías: Importamos las librerías necesarias para ejecutar el código. En este caso, utilizamos módulos de Qiskit, una biblioteca de computación cuántica de código abierto.
Crear el circuito cuántico: Creamos un objeto QuantumCircuit llamado Circuito que representa nuestro circuito cuántico. Este circuito tiene un qubit y un bit clásico, ambos inicializados en el estado 0.
Aplicar una puerta Hadamard: Aplicamos una puerta Hadamard al qubit en el índice 0 del circuito. La puerta Hadamard es una puerta cuántica que crea una superposición igual de los estados |0⟩ y |1⟩.
Incorporar la medición del qubit: Medimos el qubit en el índice 0 y guardamos el resultado en el bit clásico en el índice 0. Esto colapsa la superposición del qubit en un estado definido: |0⟩ y |1⟩.
Dibujor del circuito: Se muestra el diagrama del circuito cuántico creado hasta este punto.
Configurar el simulador cuántico: Se obtiene un backend del simulador cuántico llamado 'qasm_simulator' utilizando Qiskit Aer. Este backend simula el comportamiento de un ordenador cuántico de manera clásica.
Ejecutar el circuito cuántico: Se ejecuta el circuito cuántico en el simulador cuántico, especificando que se ejecute 10000 veces (shots=10.000). Esto produce un conjunto de resultados estadísticos que representan las posibles mediciones que podrían ocurrir en un sistema cuántico real. Los resultados obtenidos se almacenan en la variable Resultados.
Mostrar los resultados: Se muestran los resultados por consola.
Visualizar los resultados en un histograma: Se muestra un histograma que representa visualmente la distribución de los resultados obtenidos.