Circuito-03 : Doble Hadamard CON CX equivale a la CX inversa

En este ejercicio comprobaremos que un circuito de dos qubits, con dos Hadamard y una CX intermedia es equivalente a un circuito con la CX inversa.



En esta ocasión, incluiremos una parte de código para "pintar" una líneas verticales que nos sirvan de guía para comentar la evolución de los estados de los qubits.

Tenemos como novedad una puerta "I"; no hace nada, se llama "puerta identidad" y la hemos incluido para alinear a conveniencia todas las puertas con las guías verticales.

Tras la ejecución veremos el diagrama con las líneas y lo comentaremos.

 

# 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()

ANALICEMOS PASO A PASO:

  • (0)  ∣oo
  • (1)  ∣10
  • (2)  ∣- +⟩ = 1/√2 · (∣0⟩ - ∣1⟩) · 1/√2 · (∣0⟩ + ∣1⟩) = 1/2· (∣00⟩ + ∣01⟩ - (∣10⟩ - ∣11⟩)
  • (3)   = 1/2· (∣00⟩ + ∣11⟩ - ∣10⟩ - ∣01⟩) Vamos a analizar esto que tenemos a la salida del punto (3):

 

    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

  • (4)  Dado que la puerta Hadamard convierte ∣-⟩ en ∣1⟩ tendríamos:    ∣11⟩

(Ese 11 es exactamente el es el resultado que hemos medido en las 10.000 ejecuciones)

 

Hemos comprobado por tanto que: 

 

 

 

 



VOLVER
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram