Circuito-04 : Puerta SWAP = Triple CX

Comprobaremos que es lo mismo aplicar tres CX que una puerta SWAP



La puerta SWAP intercambia los estados de dos qubits; pues bien, vamos a comprobar que  aplicar tres CX intercambiando los qubit de control y objetivo es equivalente que aplicar una puerta SWAP.

Al igual que en el anterior ejercicio trataremos de explicarlo paso a paso.

# CIRCUITO-04 : PUERTA SWAP = TRIPLE CX
# (La puerta SWAP intercambia los estados de dos qubits)

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)                # Definimos un circuito con dos qubit y dos bit para realizar las mediciones
qc.x(1)                                  # Puerta X para poner a 1 el quibit

qc.cx(0, 1), qc.cx(1, 0), qc.cx(0, 1)    # Tres CX intercambiando objetos y objetivos

qc.swap(0, 1)                            # Puerta SWAP (intercambiará los valores)


qc.measure (0,0)
qc.measure (1,1)


qc.draw('mpl')

 

# CIRCUITO 04 : AHORA PINTAREMOS EL CIRCUITO CON LINEAS VERTICALES PARA COMENTARLAS 

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, '(1)', rotation=90, verticalalignment='center', color='red')

ax.axvline(x=1.3, color='b', linestyle='--')
ax.text(1.2, 1.3, '(2)', rotation=90, verticalalignment='center', color='blue')

ax.axvline(x=2.3, color='r', linestyle='--')
ax.text(2.2, 1.3, '(3)', rotation=90, verticalalignment='center', color='red')

ax.axvline(x=3.3, color='b', linestyle='--')
ax.text(3.2, 1.3, '(4)', rotation=90, verticalalignment='center', color='blue')

ax.axvline(x=4.3, color='r', linestyle='--')
ax.text(4.2, 1.3, '(5)', rotation=90, verticalalignment='center', color='red')


# Mostrar el gráfico
plt.show()

Veamos cómo deberían ir los estados paso a paso:

  • (0)  ∣oo
  • (1)  ∣10
  • (2)  ∣10
  • (3)  ∣11
  • (4)  ∣01
  • (5)  ∣10

 

# CIRCUITO-04 : 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
{'10': 10000}
Nos devuelve siempre '10', que es lo que había antes de aplicar las tres CX y la SWAP. 
Si probamos quitando la SWAP o quitando las tres CX  veremos que lo que hace es intercambiar 
los estados entre los qubits, y devolverá '01'.



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