DOT + d3-graphviz で見る
表面符号 lattice surgery
この版は、lattice surgery を「patch」「seam」「new stabilizer」「logical observable」「decoder observable」の依存グラフとして可視化するためのものです。d3-graphviz により、DOT 記述をボタンで切り替えながら観察できます。
0. この図解版の使い方
lattice surgery は、見た目には「隣の patch と境界をつなぐ」操作ですが、量子情報としては 特定の論理 Pauli 積を fault-tolerant に測定する操作です。DOT 図では、次の4階層を分けます。
物理層
data qubit を準備・測定し、ancilla による syndrome extraction のチェック集合を一時的に変更する。
ゲージ/スタビライザー層
seam に新しいチェックを入れる。測定された seam checks の積が、スタビライザー剰余で論理 Pauli 積に等しい。
論理層
射影 \(P_m=(I+mP_L)/2\) として働く。ここで \(P_L\) は \(X_AX_B\) または \(Z_AZ_B\)。
decoder 層
各ラウンドの raw syndrome ではなく、時空間 detector と observable をまとめて復号し、logical measurement bit を補正する。
1. convention と記法
境界名は文献・図の置き方で混乱しやすいので、本レポートでは以下を一次的な定義とします。
| 本レポートの名前 | 物理的に turn on する seam check | bridge/routing data qubit の初期化 | split で測る basis | 測定される論理量 |
|---|---|---|---|---|
| X型 seam surgery | X-type seam checks | \(\ket{0}\) | Z basis | \(X_A X_B\) |
| Z型 seam surgery | Z-type seam checks | \(\ket{+}\) | X basis | \(Z_A Z_B\) |
以下では stabilizer 群を \(\S\)、物理 Pauli 群を \(\P\) とし、論理演算子は \(N(\S)/\S\) の元として扱います。seam checks の集合を \(\Gamma_X\) または \(\Gamma_Z\) と書きます。
2. DOT + d3-graphviz 図解
下のボタンで DOT グラフを切り替えてください。左から右へ進む矢印は「物理操作」「測定 outcome」「Pauli frame への入力」の因果を表します。
Graphviz を読み込み中です。
現在の DOT source を表示・編集する
3. X型 seam surgery: \(X_A X_B\) 測定を物理 qubit 操作に分解する
2つの patch \(A,B\) を、\(X\)-logical が seam を横切れる向きに隣接させます。ここで行うことは「境界を接着する」というより、seam をまたぐ X-type stabilizer/gauge checks を一時的に測ることです。
3.1 物理操作列
- routing region の data qubits を \(\ket{0}\) に初期化する。\(Z\) の既知固有状態なので、後で Z-basis で切り離すときの classical record と整合する。
- seam 近傍の古い境界チェックを停止し、代わりに seam をまたぐ X-type checks \(S^X_i\) を syndrome extraction schedule に入れる。weight-4 を直接測る場合も、weight-2 gauge checks に分解してから積で super-check を得る場合もある。
- 通常の bulk checks と seam checks を \(d_m\) ラウンド、典型的には code distance \(d\) 程度、繰り返し測る。1ラウンドだけでは measurement error が logical parity bit を直接反転し得る。
- decoder に、開始時・終了時の境界変化を含む時空間 detector model と observable \(O_{XX}\) を渡す。
- split する場合、routing region の data qubits を Z basis で測り、元の境界 checks を復帰する。測定値は split 後の patch の Pauli frame に入る。
3.2 なぜ \(X_AX_B\) を測ったことになるか
seam checks の積を \(M_X=\prod_{i\in\Gamma_X} S^X_i\) とする。個々の \(S^X_i\) は物理 stabilizer/gauge check だが、積を取ると内部の物理 \(X\) は偶数回現れて消え、seam を貫く端の support だけが残る。適切な向きの patch では、これは論理演算子の代表元 \(X_A X_B\) に bulk stabilizer を掛けたものになる:
\[ M_X = X_A X_B \cdot S_{\mathrm{bulk}},\qquad S_{\mathrm{bulk}}\in\S. \]コード空間上では \(S_{\mathrm{bulk}}=+1\) なので、\(M_X\) の測定 outcome は \(X_AX_B\) の outcome と同じです。実際には noisy なので、raw product ではなく decoder が推定した observable bit を使います。
論理作用は非ユニタリな射影です:
\[ \rho \longmapsto \frac{P_x \rho P_x}{\Tr(P_x\rho)},\qquad P_x=\frac{I+xX_AX_B}{2},\quad x\in\{+1,-1\}. \]4. Z型 seam surgery: \(Z_A Z_B\) 測定
Z型は X型の双対です。routing region を \(\ket{+}\) に準備し、Z-type seam checks を入れ、split 時は X basis で routing qubits を測ります。
\(Z_AZ_B\) 測定後は、\(Z_A\) と \(Z_B\) は測定値により相関しますが、\(X_A\) や \(X_B\) 単体は測定した observable と反交換するため、それぞれ単独では事後状態の well-defined logical observable ではなくなります。split 後にどの物理 string を新しい \(X_A,X_B\) と呼ぶかは、split 測定 outcome を含む Pauli frame によって固定されます。
5. split/merge の状態写像
「merge」はしばしば、2個の logical qubit を 1個の大きな patch にする操作を指します。一方、量子回路の parity measurement として使うときは、merge 後に split して 2個の logical qubit に戻します。両者を混同しないことが重要です。
| 操作 | 論理 Hilbert 空間 | 抽出される classical bit | 典型的 byproduct |
|---|---|---|---|
| merge のみ | 2 logical \(\to\) 1 logical | joint parity | 残った logical basis の定義に吸収 |
| merge + split | 2 logical \(\to\) 2 logical | joint parity | split 測定値に依存する Pauli frame |
| split のみ | 1 logical \(\to\) 2 logical | 切断線 qubit 測定値 | Bell/GHZ 型の相関または frame correction |
6. CNOT のグラフ的構成
lattice surgery の CNOT は「CNOT を直接かける」のではなく、ancilla patch を使った Pauli product measurement pattern です。
- ancilla \(A\) を \(\ket{+}_L\) に準備する。
- Z型 surgery で \(Z_CZ_A\) を測る。outcome を \(m_1\in\{\pm1\}\) とする。
- X型 surgery で \(X_AX_T\) を測る。outcome を \(m_2\in\{\pm1\}\) とする。
- ancilla を logical Z basis で測る。outcome を \(m_3\in\{\pm1\}\) とする。
- Pauli frame: \(m_2=-1\) なら control に \(Z_C\)、\(m_1m_3=-1\) なら target に \(X_T\) を入れる。
CNOT byproduct calculator
measurement outcomes をクリックすると、必要な Pauli frame correction を計算します。
この pattern が CNOT になる理由は、Clifford tableau で見れば、入力の Pauli generators が測定と feed-forward 後に次のように変換されるためです:
\[ X_C\mapsto X_CX_T, \quad Z_C\mapsto Z_C, \quad X_T\mapsto X_T, \quad Z_T\mapsto Z_CZ_T. \]7. detector graph と observable
物理 qubit level の手術では、最終的に必要なのは「raw seam product」ではなく、復号後の logical measurement observable です。時刻 \(t\) の check outcome を \(s_i(t)\in\F_2\) とすると、通常の detector は差分
\[ D_i(t)=s_i(t)\oplus s_i(t-1) \]で作られます。seam を入れた最初のラウンドと、seam を消した最後のラウンドでは、比較対象が変わるため boundary detector が必要です。
space-like fault
seam を横切る物理エラー列が observable \(O_{XX}\) または \(O_{ZZ}\) を反転させる。
time-like fault
同じ seam check の measurement error が時間方向に連なり、parity bit を誤らせる。
したがって、surgery の code distance は「patch の静的距離」だけでなく、seam 長、測定ラウンド数、境界 detector の設計、hook error の向きで決まります。
8. 典型的な誤解
誤解1: seam check の積を1回取れば十分
measurement error が1個あるだけで logical parity が反転するため、fault tolerance がありません。\(d_m\) ラウンドの時空間復号が必要です。
誤解2: merge はユニタリゲートである
merge/split は測定 outcome を持つ CPTP map です。CNOT などのユニタリは、測定 pattern と Pauli frame correction を含めて初めて実現されます。
誤解3: rough/smooth の名前だけで \(XX\) か \(ZZ\) が決まる
名前は convention 依存です。実験制御では seam check type、routing qubit 初期化 basis、split measurement basis、observable の support を仕様にするべきです。
誤解4: split 測定値は補助情報であり無視できる
split 測定値は、split 後の patch の logical frame を固定します。無視すると後続の測定結果を誤って解釈します。
参考文献と位置づけ
本レポートは、下記の文献・実装系解説を参照しつつ、物理チェックの切替、logical observable の同定、Pauli frame の処理を教育目的に再構成したものです。文献により rough/smooth の命名や patch の向きが異なることがあるため、本文では必ず「X型 seam surgery」「Z型 seam surgery」のように、測る論理演算子と物理チェック型を明示します。
- Dominic Horsman, Austin G. Fowler, Simon Devitt, Rodney Van Meter, Surface code quantum computing by lattice surgery, New Journal of Physics 14, 123011 (2012).
- Austin G. Fowler, Matteo Mariantoni, John M. Martinis, Andrew N. Cleland, Surface codes: Towards practical large-scale quantum computation, Phys. Rev. A 86, 032324 (2012).
- Daniel Litinski, A Game of Surface Codes: Large-Scale Quantum Computing with Lattice Surgery, Quantum 3, 128 (2019).
- Austin G. Fowler, Craig Gidney, Low overhead quantum computation using lattice surgery (2018).
- Niel de Beaudrap, Dominic Horsman, The ZX calculus is a language for surface code lattice surgery (2017).
- magjac, d3-graphviz: DOT を d3 と Graphviz/WASM で SVG にレンダリングするライブラリ。