
Este circuito realiza la teleportación cuántica del estado del qubit 0 al qubit 2. Los resultados del qubit 2 deberían corresponderse con el estado inicial del qubit 0, demostrando así la teleportación.
# CIRCUITO 6: TELEPORTACIÓN
# Cómo crear un circuito de teleportación cuántica:
# Este circuito realiza la teleportación cuántica del estado del qubit 0 al qubit 2
# Los resultados del qubit 2 deberían corresponderse con el estado inicial del qubit 0,
# demostrando así la teleportación.
from qiskit import QuantumCircuit
from qiskit_aer import Aer
from qiskit.visualization import plot_histogram
# Crear un circuito cuántico con 3 qubits y 3 bits clásicos
qc = QuantumCircuit(3, 3)
# qc.x(0) si incilizamos a "1" el qubit 0, entonces la medición del qubit 2 será siempre "1";
# en caso contrario siempre "0"
# Preparar el estado de Bell entre qubit 1 y qubit 2
qc.h(1)
qc.cx(1, 2)
# Teleportar el estado del qubit 0 al qubit 2
qc.cx(0, 1)
qc.h(0)
# Medir los qubits 0 y 1
qc.measure([0, 1], [0, 1])
# Aplicar puertas condicionales en el qubit 2 basado en las medidas
qc.cx(1, 2)
qc.cz(0, 2)
# Medir el qubit 2
qc.measure(2, 2)
# Dibujar el circuito
qc.draw(output='mpl', style={'figwidth': 8, 'figheight': 4})

# CIRCUITO-06 : LO EJECUTAMOS
# 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
{'001': 2513, '000': 2605, '011': 2494, '010': 2388}
Vemos que el bit 2 (el primero por la izquierda) siempre es 0, porque el qubit 0 ha iniciado el circuito a '0'; si
probamos incilizando a "1" el qubit 0, entonces veremos que la medición del qubit 2 será siempre "1"