Saltar al contenido

# introduccion-a-la-computacion-cuantica-con-qiskit

Introducción a la computación cuántica con Qiskit

Volver a la portada del curso
Notebook

Construcción de Circuitos Cuánticos

Sección 3 · Operaciones Cuánticas Básicas

Construcción de circuitos cuánticos

Con la estructura clara, toca construir. En esta lección combinas puertas de uno y dos qubits para preparar estados concretos: superposiciones, estados con fase y estados entrelazados. El notebook de la lección acompaña cada idea con código que puedes modificar y volver a ejecutar.

Puertas de un qubit

El estado de un qubit se escribe como $|\psi\rangle = \alpha|0\rangle + \beta|1\rangle$, con $|\alpha|^2 + |\beta|^2 = 1$. Al medir, se obtiene 0 con probabilidad $|\alpha|^2$ y 1 con probabilidad $|\beta|^2$. Las puertas cambian esas amplitudes:

  • x: el NOT cuántico. Intercambia $|0\rangle$ y $|1\rangle$.
  • h (Hadamard): crea superposición. Desde $|0\rangle$ produce $\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)$, con 50 % de probabilidad para cada resultado.
  • z, s, t: cambian la fase de $|1\rangle$ sin alterar las probabilidades de medir en la base estándar.
  • ry(θ): rota el qubit un ángulo θ y permite fijar cualquier probabilidad entre 0 y 1.

Statevector calcula el estado exacto sin tomar muestras, ideal para comprobar qué hace cada puerta:

import numpy as np
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

for nombre, puerta in [("x", "x"), ("h", "h")]:
    qc = QuantumCircuit(1)
    getattr(qc, puerta)(0)
    print(nombre, Statevector(qc).probabilities_dict(decimals=3))

qc = QuantumCircuit(1)
qc.ry(np.pi / 3, 0)
print("ry(pi/3)", Statevector(qc).probabilities_dict(decimals=3))

Con ry(π/3) la probabilidad de medir 1 es $\sin^2(\pi/6) = 0.25$. Rotar es la forma de controlar probabilidades con precisión.

La fase: invisible pero decisiva

Los estados $\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)$ y $\frac{1}{\sqrt{2}}(|0\rangle - |1\rangle)$ dan las mismas probabilidades al medir. La diferencia es la fase, y aparece al aplicar otra Hadamard: la secuencia h, h devuelve siempre 0, pero h, z, h devuelve siempre 1. Esa interferencia entre amplitudes es el mecanismo detrás de todos los algoritmos cuánticos.

Puertas de dos qubits y entrelazamiento

La puerta cx (CNOT) invierte el qubit objetivo solo si el qubit de control vale 1. Combinada con una Hadamard produce un estado de Bell, $\frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)$: ninguno de los dos qubits tiene un valor definido por separado, pero sus resultados siempre coinciden. Si se encadenan más cx, se obtiene un estado GHZ, con tres o más qubits entrelazados:

from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler

def ghz(n):
    qc = QuantumCircuit(n)
    qc.h(0)
    for i in range(n - 1):
        qc.cx(i, i + 1)
    qc.measure_all()
    return qc

sampler = StatevectorSampler(seed=7)
resultado = sampler.run([ghz(3)], shots=1000).result()
print(resultado[0].data.meas.get_counts())

Solo aparecen 000 y 111. Al medir el primer qubit, el resultado de los otros dos queda determinado.

Qué verás en el notebook

  • El efecto de cada puerta de un qubit, comprobado con Statevector.
  • Interferencia: por qué h-z-h equivale a x.
  • Los cuatro estados de Bell y cómo prepararlos.
  • Estados GHZ de distintos tamaños y sus conteos.

Trampas comunes

  • Pensar que la fase no importa. No cambia una medición directa, pero cambia el resultado tras más puertas.
  • Invertir control y objetivo. En cx(0, 1), el qubit 0 controla y el 1 cambia.
  • Confundir superposición con incertidumbre clásica. Una moneda oculta no produce interferencia; un qubit sí.
  • Esperar conteos exactos. Con 1000 disparos, un 50 % puede salir 480 o 520: es variación estadística.

Cierre

Superposición, fase y entrelazamiento son los tres ingredientes de cualquier algoritmo cuántico. Antes de seguir, prepara tú mismo los cuatro estados de Bell y verifica sus probabilidades con Statevector.

Recursos