9.3 NISQ 時代的容錯挑戰#
概念說明#
NISQ(Noisy Intermediate-Scale Quantum,Preskill 2018 年提出)描述當前硬體:50~1000 個物理量子位元、閘錯誤率 \(10^{-3}\sim10^{-2}\) 、無糾錯。NISQ 機器能跑淺電路(數十到數百層閘),但跑不了 Shor——那需要數百萬個閘,錯誤早已累積成災。
Threshold 定理(Aharonov–Ben-Or、Knill–Laflamme–Zurek 等):若物理閘錯誤率低於某個門檻 \(p_{th}\) (表面碼約 \(10^{-2}\) ,受 GateSet 影響),則可以用容錯(fault-tolerant)設計把邏輯錯誤率壓到任意低,開銷只隨 \(\log(1/\varepsilon)\) 緩慢成長。這是量子計算「理論上可行」的根基:錯誤不會失控,只要夠乾淨就能用糾錯買回可靠性。
容錯的代價(以表面碼為例):
- 碼距 \(d\) 的表面碼: \(d^2\) 個資料位元 + 約 \(d^2\) 個測量位元,邏輯錯誤率 \(\sim (p/p_{th})^{(d+1)/2}\) ;
- 想跑 Shor( \(\sim 10^{10}\) 個 Toffoli,錯誤率需 \(\sim 10^{-12}\) ):每個邏輯位元約需 1000~10000 個物理位元;
- Gidney–Ekerå(2019)估計:分解 2048 位元 RSA 約需 2000 萬個噪聲物理量子位元、8 小時。目前最大晶片(~1000 位元)與之相差四個數量級。
邁向容錯的路標:
- 2024 Google Willow:首次示範「碼距從 3→5→7 時邏輯錯誤率下降」(低於 threshold 的運作),並展示即時解碼;
- 邏輯量子位元演示:Harvard/QuEra 中性原子 48 個邏輯位元(2023)、IBM 的 qLDPC 碼路線圖;
- T 閘的 magic state distillation:容錯中最昂貴的資源,是最佳化焦點。
NISQ 時代的務實演算法:變分演算法(VQE、QAOA)、取樣任務(random circuit sampling)——它們容忍雜訊,但能否真正超越古典仍有爭議。教科書演算法(Grover、Shor)需要容錯硬體才能展現實用威力。
Python 範例:模擬邏輯錯誤率 vs 碼距#
import numpy as np
def repetition_code_logical_error(p_phys, d, trials=200000, seed=0):
"""d 位元重複碼 + 多數表決的邏輯錯誤率(古典模擬,性質同表面碼標度)"""
rng = np.random.default_rng(seed)
errs = rng.random((trials, d)) < p_phys
# 多數表決失敗 = 超過半數位元翻轉
return np.mean(errs.sum(axis=1) > d//2)
print(" p_phys d=3 d=5 d=7 d=9")
for p in [0.03, 0.06, 0.09, 0.11, 0.15]:
row = [repetition_code_logical_error(p, d) for d in (3, 5, 7, 9)]
print(f" {p:.2f} " + " ".join(f"{v:.4f}" for v in row))
# 觀察:p < ~0.1(threshold 附近)時,d 越大邏輯錯誤率越低(指數改善);
# p 太大時相反 —— 這就是 threshold 定理的具體呈現
# 邏輯錯誤率隨碼距的指數下降
p = 0.03
for d in [3, 5, 7, 9, 11]:
pe = repetition_code_logical_error(p, d)
print(f"p={p}, d={d}: P_L ≈ {pe:.2e} (理論 ~ A*(p/p_th)^((d+1)/2))")
複雜度分析#
- 表面碼開銷: \(n_{phys} \approx 2d^2\) 位元、每個糾錯週期 \(d\) 輪測量;邏輯錯誤率 \(P_L \propto (p/p_{th})^{(d+1)/2}\) 。
- 容錯計算總資源: \(n_{phys} \approx n_{logic} \cdot O(d^2)\) 、時間開銷 \(O(d)\) ;要跑 \(T\) 個閘需 \(P_L \lesssim 1/T\) ,故 \(d = O(\log T)\) 。
- 模擬糾錯(蒙地卡羅):每次實驗 \(O(d^2)\) 樣本 × 解碼(最小完美匹配 \(O(d^2\log d)\) )——解碼器速度是即時容錯的關鍵瓶頸。
練習#
- 用上表資料估算 repetition code 在 \(p=0.03\) 時的 threshold 落在何處,並說明「p 低於 threshold 時加大碼距有指數回報」。
- (程式)把模擬改成「每次糾錯週期獨立擲錯、共 \(d\) 輪」的時間維度模型,觀察邏輯錯誤率如何變化。
- (觀念)NISQ 演算法(如 VQE)為什麼不需要糾錯?它們的風險是什麼(提示:雜訊會讓變分最佳化收斂到錯誤的極小值)?