Ariketa honetan, bi Hadamard eta tarteko CX dituen bi qubiteko zirkuitu bat, alderantzizko CX duen zirkuitu baten baliokidea dela egiaztatuko dugu.
Exekuzioaren ondoren, lerroen diagrama ikusiko dugu, eta horri buruz hitz egingo dugu.
# CIRCUITO-03 : DOBLE HADAMAR CON CX = CX from qiskit import QuantumCircuit # Importa la clase QuantumCircuit de Qiskit from qiskit_aer import Aer # Importa el módulo Aer de Qiskit Aer qc = QuantumCircuit(2, 2) qc.id(0) # esto es una PUERTA DE IDENTIDAD, no hace nada, la hemos puesto para alinear el dibujo del circuito qc.h(0) qc.x(1) qc.h(1) qc.cx(0, 1) qc.h(0) qc.h(1) # qc.append(mcx_gate, [1, 0, 2, 3]) qc.measure (0,0) qc.measure (1,1) qc.draw('mpl')
# CIRCUITO-03 : 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, 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) # Obtiene los conteos de los resultados de la ejecución del circuito print(Resultados) # Imprime los resultados en la consola
Todas las ejecuciones nos dan el mismo resultado: {'11': 10000} A continuación veremos la explicación, tras "pintar" el circuito con líneas guía para poder comentarlo:
# CIRCUITO 03 : AHORA PINTAREMOS EL CIRCUITO CON LINEAS VERTICALES PARA COMENTARLAS (en pdf) import matplotlib.pyplot as plt fig, ax = plt.subplots() qc.draw(output='mpl', ax=ax) # Agregar líneas verticales y comentarios # Estos valores de x y y necesitan ser ajustados dependiendo de la posición en el circuito donde quieres la línea/comentario ax.axvline(x=0.3, color='r', linestyle='--') ax.text(0.2, 1.3, 'Punto 1', rotation=90, verticalalignment='center', color='red') ax.axvline(x=1.3, color='b', linestyle='--') ax.text(1.2, 1.3, 'Punto 2', rotation=90, verticalalignment='center', color='blue') ax.axvline(x=2.3, color='r', linestyle='--') ax.text(2.2, 1.3, 'Punto 3', rotation=90, verticalalignment='center', color='red') ax.axvline(x=3.3, color='b', linestyle='--') ax.text(3.2, 1.3, 'Punto 4', rotation=90, verticalalignment='center', color='blue') # Mostrar el gráfico plt.show()
1/2· (∣00⟩ + ∣11⟩ - ∣10⟩ - ∣01⟩) =
= 1/2· ( ∣0⟩·(∣0⟩ - ∣1⟩) - ∣1⟩·(∣0⟩ - ∣1⟩) =
= 1/√2 ·(∣0⟩ - ∣1⟩) · 1/√2 ·(∣0⟩ - ∣1⟩) = ∣- - ⟩ Esta sería la salida del punto 3
(Ese 11 es exactamente el es el resultado que hemos medido en las 10.000 ejecuciones))