跳轉到

4.3 量子隱形傳態#

概念說明#

量子隱形傳態(quantum teleportation)的目標:把一個未知量子態 \(|\psi\rangle = \alpha|0\rangle + \beta|1\rangle\) 從 Alice 傳給 Bob。注意:

  • 傳的是態,不是粒子:Bob 手上原本就有一顆位元,我們讓它「變成」 \(|\psi\rangle\) 。
  • 不違反不可克隆:Alice 的原態在過程中被測量摧毀——總共仍只有一份。
  • 不超光速:Bob 必須先收到 Alice 的 2 個古典位元(測量結果)才能重建態,古典通訊受光速限制。
  • 不解壓縮:兩個複數(無限精度)的態只需 2 個古典位元+1 對糾纏位元——不可克隆定理保證了這不可能被用來超光速傳訊。

電路步驟(3 位元:q2=待傳態、q1=Alice 的糾纏位元、q0=Bob 的糾纏位元):

  1. Alice 與 Bob 先共享 Bell 對: \(H(q_1)\) 、 \(\mathrm{CNOT}(q_1 \to q_0)\) 。
  2. \(\mathrm{CNOT}(q_2 \to q_1)\) 、 \(H(q_2)\) 。
  3. Alice 測量 \(q_2, q_1\) 得兩位元 \((m_1, m_0)\) ,用古典通道傳給 Bob。
  4. Bob 依結果修正:若 \(m_0=1\) 做 \(X\) ;若 \(m_1=1\) 做 \(Z\) 。
  5. 此時 \(q_0 = |\psi\rangle\) 。

數學上,步驟 1–3 後整體狀態可寫成

\[ |\psi\rangle|\beta_{00}\rangle \to \frac{1}{2}\Big[|\beta_{00}\rangle|\psi\rangle + |\beta_{01}\rangle X|\psi\rangle + |\beta_{10}\rangle Z|\psi\rangle + |\beta_{11}\rangle XZ|\psi\rangle\Big] \]

Alice 的兩位元古典資訊告訴 Bob 他在四個分支中的哪一個,於是只需對應的 Pauli 修正。

Python 範例#

import numpy as np

H = np.array([[1,1],[1,-1]], dtype=complex)/np.sqrt(2)
X = np.array([[0,1],[1,0]], dtype=complex)
Z = np.array([[1,0],[0,-1]], dtype=complex)
CX = np.array([[1,0,0,0],[0,1,0,0],[0,0,0,1],[0,0,1,0]], dtype=complex)

I2 = np.eye(2, dtype=complex)
CX_21 = np.kron(CX, I2)                      # 控制 q2 標的 q1
CX_10 = np.kron(I2, CX)                      # 控制 q1 標的 q0
H2 = np.kron(np.kron(H, I2), I2)

def teleport(psi, rng):
    state = np.kron(np.kron(psi, ket0), ket0)
    state = CX_10 @ np.kron(H, np.eye(4, dtype=complex)) @ state   # Bell 對
    state = H2 @ CX_21 @ state
    # Alice 測 q2, q1
    p = np.abs(state)**2
    outcome = rng.choice(4, p=p)
    m1, m0 = (outcome >> 1) & 1, outcome & 1
    # Bob 修正
    fix = np.eye(2)
    if m0: fix = X @ fix
    if m1: fix = Z @ fix
    # 塌縮到量測結果對應的分支
    prob = 0.0; bob = np.zeros(2, dtype=complex)
    for b in range(2):
        idx = (outcome << 1) | b
        prob += p[idx]
        bob[b] = state[idx]
    bob /= np.sqrt(prob)
    return m1, m0, fix @ bob

ket0 = np.array([1, 0], dtype=complex)
ket1 = np.array([0, 1], dtype=complex)
plus = (ket0 + ket1)/np.sqrt(2)
arb  = np.array([0.6, 0.8], dtype=complex)   # 已正規化的未知態

rng = np.random.default_rng(7)
for psi in [ket0, ket1, plus, arb]:
    m1, m0, bob = teleport(psi, rng)
    print(f"傳 {np.round(psi,2)} -> 測得({m1},{m0}) -> Bob 收到 {np.round(bob,2)}")

複雜度分析#

電路用了 1 個共享 Bell 對、2 個 CNOT、1 個 H、2 個單位元測量與 2 個古典位元通訊,共 4 個雙位元資源內完成。在模擬器上:狀態 8 維、每閘 \(O(2^3)\) ,總成本微不足道;推廣到多態同傳則資源線性成長。量子位元版「通訊複雜度」:每傳 1 個未知態恰需 1 ebit(最大糾纏對)+2 cbits,這已被證明是下界。

練習#

  1. 完整寫出 \(|\psi\rangle = |1\rangle\) 時隱形傳態各步驟後的狀態,並確認 Bob 修正後得 \(|1\rangle\) 。
  2. (程式)把 teleport 改成傳輸後不修正,統計 Bob 收到的四種可能態,驗證它們在 Bloch 球上平均後是「完全混合」——沒有古典通道就毫無資訊。
  3. (觀念)為什麼隱形傳態需要「預先共享糾纏」?如果沒有 Bell 對,Alice 只量測再傳 2 位元,Bob 能重建 \(|\psi\rangle\) 嗎?