Teleportacja kwantowa brzmi jak science fiction, ale to jeden z najbardziej eleganckich protokołów informatyki kwantowej — i fundament przyszłego internetu kwantowego. Nie przenosimy materii; przenosimy stan kwantowy jednego kubitu na inny, odległy kubit, zużywając po drodze jedną parę splątaną i dwa klasyczne bity.
Problem: nie można skopiować kubitu
Twierdzenie o zakazie klonowania mówi, że nie istnieje operacja unitarna, która skopiuje nieznany stan kwantowy. Załóżmy, że Alicja ma kubit w stanie:
$$|\psi\rangle = \alpha|0\rangle + \beta|1\rangle, \qquad |\alpha|^2 + |\beta|^2 = 1$$
Nie może go zmierzyć (pomiar niszczy superpozycję) ani skopiować. Może jednak przeteleportować go do Boba — o ile wcześniej podzielili się parą splątaną.
Zasób: para Bella
Alicja i Bob współdzielą stan maksymalnie splątany:
$$|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$$
Pełny stan trzech kubitów (kubit Alicji \(|\psi\rangle\) plus para Bella) można przepisać w bazie Bella pierwszych dwóch kubitów:
$$|\psi\rangle \otimes |\Phi^+\rangle = \frac{1}{2}\Big[ |\Phi^+\rangle(\alpha|0\rangle + \beta|1\rangle) + |\Phi^-\rangle(\alpha|0\rangle – \beta|1\rangle) + |\Psi^+\rangle(\alpha|1\rangle + \beta|0\rangle) + |\Psi^-\rangle(\alpha|1\rangle – \beta|0\rangle) \Big]$$
To przepisanie jest sercem protokołu: kubit Boba już „zawiera” stan \(|\psi\rangle\) — z dokładnością do jednej z czterech korekcji Pauliego.
Protokół w trzech krokach
- Pomiar Bella. Alicja wykonuje CNOT (jej kubit steruje połówką pary Bella), potem bramkę Hadamarda i mierzy oba swoje kubity.
- Klasyczna komunikacja. Wynik pomiaru — dwa bity \((m_1, m_2)\) — wysyła Bobowi zwykłym kanałem.
- Korekcja. Bob aplikuje \(Z^{m_1} X^{m_2}\) i jego kubit ląduje dokładnie w stanie \(|\psi\rangle\).
Zwróć uwagę: potrzebne są klasyczne bity, więc teleportacja nie przesyła informacji szybciej od światła. Einstein może spać spokojnie.
Implementacja w Qiskit
Poniżej pełny, działający obwód teleportacji z pomiarem warunkowym:
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit_aer import AerSimulator
import numpy as np
psi = QuantumRegister(1, "psi") # kubit do teleportacji (Alicja)
bell = QuantumRegister(2, "bell") # para splątana (Alicja + Bob)
m = ClassicalRegister(2, "m") # wynik pomiaru Bella
out = ClassicalRegister(1, "out") # pomiar kubitu Boba
qc = QuantumCircuit(psi, bell, m, out)
# 1. Przygotuj stan |psi> = cos(θ/2)|0> + sin(θ/2)|1>
theta = 1.234
qc.ry(theta, psi)
# 2. Para Bella między Alicją a Bobem
qc.h(bell[0])
qc.cx(bell[0], bell[1])
qc.barrier()
# 3. Pomiar Bella po stronie Alicji
qc.cx(psi, bell[0])
qc.h(psi)
qc.measure(psi, m[0])
qc.measure(bell[0], m[1])
# 4. Korekcje Pauliego u Boba, sterowane klasycznie
with qc.if_test((m[1], 1)):
qc.x(bell[1])
with qc.if_test((m[0], 1)):
qc.z(bell[1])
qc.measure(bell[1], out)
counts = AerSimulator().run(qc, shots=4096).result().get_counts()
p1 = sum(v for k, v in counts.items() if k.split()[0] == "1") / 4096
print(f"P(1) = {p1:.3f}, teoria: {np.sin(theta/2)**2:.3f}")
Jeśli wszystko działa, zmierzone prawdopodobieństwo \(P(1)\) na kubicie Boba zgadza się z teoretycznym \(\sin^2(\theta/2)\) — stan przeszedł na drugą stronę obwodu, choć fizycznie nigdy nie był przesłany.
Symulator: prześledź teleportację krok po kroku
Poniżej dokładna symulacja powyższego obwodu (pełny wektor stanu — 8 amplitud trzech kubitów). Ustaw kąt \(\theta\) suwakiem, a potem przechodź strzałkami przez kolejne bramki. Najciekawsze są pomiary: wynik jest losowy (za każdym razem możesz dostać inne \(m_0, m_1\)), stan kolapsuje, a mimo to po korekcjach kubit Boba zawsze ląduje dokładnie w stanie \(|\psi\rangle = \cos(\theta/2)|0\rangle + \sin(\theta/2)|1\rangle\). Kliknij Reset i przejdź obwód ponownie — inne wyniki pomiarów, ten sam stan końcowy.
Obwód teleportacji — q0: |ψ⟩ Alicji · q1: połowa pary Bella (Alicja) · q2: Bob
stan początkowy |000⟩ — ustaw θ i klikaj „krok ▶”
Zwróć uwagę na trzy momenty. Po zbudowaniu pary Bella (krok 3) kubit Boba jest już skorelowany z kubitem Alicji, choć „nie wie” nic o \(|\psi\rangle\). Po pomiarach (kroki 6–7) z ośmiu amplitud zostają dokładnie dwie — stan Boba to już \(|\psi\rangle\) z dokładnością do korekcji Pauliego, zależnej od wylosowanych \(m_0, m_1\). A po korekcjach (kroki 8–9) \(P(q_2{=}1)\) zawsze równa się teoretycznemu \(\sin^2(\theta/2)\) — niezależnie od tego, co wypadło w pomiarach. To jest cała teleportacja: losowość pomiaru zostaje „naprawiona” dwoma klasycznymi bitami.
Dlaczego to ważne?
- Internet kwantowy — teleportacja to podstawowy prymityw przesyłania stanów między węzłami sieci.
- Obliczenia rozproszone — łączenie mniejszych procesorów kwantowych w większe systemy.
- Bramki teleportowane — w architekturach odpornych na błędy teleportacja realizuje bramki, których nie da się wykonać bezpośrednio.
W kolejnym wpisie pokażę, jak ten sam protokół uruchomić na prawdziwym sprzęcie IBM Quantum i co szum robi z wiernością teleportowanego stanu.