03 zirkuitua: Hadamard BIKOITZA CX batekin baliokidea da "CX inversa" batekin.

Ariketa honetan, bi Hadamard eta tarteko CX dituen bi qubiteko zirkuitu bat, alderantzizko CX duen zirkuitu baten baliokidea dela egiaztatuko dugu.



Oraingoan, kodearen zati bat sartuko dugu, qubiten egoeren bilakaera azaltzeko gida gisa balioko diguten lerro bertikalak "margotzeko".
"I" ate bat dugu; ez du ezer egiten, "identitate-atea" deitzen zaio, eta ate guztiak gida bertikalekin egoki lerrokatzeko sartu 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()

Urratsez urrats:

  • (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⟩) azter dezagun (3) irteeran duguna:

 

    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)  Hadamard ateak ∣-⟩ bihurtzen du ∣1⟩, beraz hau daukagu:    ∣11⟩

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

 

Beraz, honako hau egiaztatu dugu:

 

 

 

 



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