Circuito de 1 qubit al que se aplica una puerta Hadamard.
Veremos como construir un circuito simple con un único qubit al que se le aplcia una puerta Hadamard. Lo ejecutaremos CON y SIN medición para ver la diferencia.
from qiskit import QuantumCircuit import matplotlib.pyplot as plt from qiskit_aer import Aer import numpy as np # Crear un circuito cuántico con 1 qubit qc = QuantumCircuit(1,1) qc.h(0) # Medimos el qubit --> Luego eliminaremos el "#" para que se ejecute con medición # qc.measure(0,0) # Dibujar el circuito qc.draw(output='mpl')
# LO EJECUTAMOS Y VEMOS LOS RESULTADOS EN FORMATO ESFERA DE BLOCH # Configuración del simulador cuántico Procesando = Aer.get_backend('statevector_simulator') # Obtiene el backend 'statevector_simulator' de Qiskit Aer # Ejecutar el circuito job = Procesando.run(qc, shots=1024).result() # __________ Mostrar contador de ejecuciones _________________ # counts = job.get_counts(qc) # print("Contador de ejecuciones: ") # print(counts) # ____________________________________________________________ # __________ Mostrar los vectores de estado __________________ # Obtener el vector de estado resultante statevector = job.get_statevector(qc) # Convertir el Statevector a un array de numpy statevector_array = np.asarray(statevector) print(" ") print("Statevector resultante:") print(statevector_array) # Imprimir los estados base y sus correspondientes amplitudes de probabilidad n = qc.num_qubits for i, amplitude in enumerate(statevector_array): binary_state = format(i, f'0{n}b') print(f"|{binary_state}⟩: {amplitude}") # ____________________________________________________________ # Visualizar el estado final en la esfera de Bloch from qiskit.visualization import plot_bloch_multivector, plot_state_city import matplotlib.pyplot as plt plot_bloch_multivector(statevector)
RESULTADO:
Statevector resultante: [0.70710678+0.j 0.70710678+0.j] |0⟩: (0.7071067811865476+0j) |1⟩: (0.7071067811865476+0j)
∣ψ⟩=α∣0⟩+β∣1⟩ donde:
Es decir: Existen ∣α∣2 probabilidades de que el Qubit colapse a “1” y ∣β∣2 probabilidades de que colapse a “0”
Además tienen que satisfacer la condición de normalización: ∣α∣2+ ∣β∣2=1
Un qubit |0⟩ tendría esta notación: [1+0·j 0+0·j], porque al 100% está en (1 0)
Si pensamos en la puerta Hadamard, decíamos que pasaba el qubit a un estado en el que tenía las mismas posibilidades de colapsar a “0” o a “1”, de forma que podemos decir que la puerta de Hadamard transforma los estados de la siguiente forma:
|0⟩ pasa a 1/√2 ·|0⟩ + 1/√2 ·|1⟩ o, según la notación de números complejos: 1/√2 ·(1+0·j) + 1/√2 ·(1+0·j) porque tiene la misma probabilidad de colapsar a "0" o a "1"
1/√2 = 0.70710678
Por eso nos aparece en el resultado
Statevector resultante: [0.70710678+0.j 0.70710678+0.j]
Probabilidad de que colapse a |0⟩: (0.7071067811865476+0j)
Probabilidad de que colapse a |1⟩: (0.7071067811865476+0j):
Si lo vemos en la esfera de Bloch comprobaremos que ha pasado el qubit a la “línea del ecuador” de dicha esfera, porque ahí es donde existen las mismas probabilidades de colapsar a “0” o a “1”
Nos quedará así:
y si lo ejecutamos el resultado será:
Statevector resultante: [1.+0.j 0.+0.j] |0⟩: (1+0j) |1⟩: 0j
Statevector resultante: [0.+0.j 1.+0.j] |0⟩: 0j |1⟩: (1+0j)
|1⟩: (1+0j)