表面符号の lattice surgery
物理量子ビットで何を測り、どの安定化子を切り替え、なぜそれが論理量子ビット上の Pauli 積測定、CNOT、状態分割・結合になるのかを、CSS stabilizer 代数と時空間 decoding の両方から追う。
0. 前提・記法・境界名の約束
ここでは「表面符号の stabilizer 測定、MWPM などの decoding、logical operator の同値類」は理解しているものとして、lattice surgery 固有の論理・物理対応だけを詳細に扱う。
| 本文の名前 | 物理的な切替 | 論理的に測られる量 | split で測り捨てる seam data |
|---|---|---|---|
| rough merge 本文では MXX とも呼ぶ |
中間 data qubit を \(\ket{0}\) に準備し、境界をまたぐ新しい \(X\)-type check を有効化する。 | \(\bar X_A\bar X_B\) | \(Z\) basis |
| smooth merge 本文では MZZ とも呼ぶ |
中間 data qubit を \(\ket{+}\) に準備し、境界をまたぐ新しい \(Z\)-type check を有効化する。 | \(\bar Z_A\bar Z_B\) | \(X\) basis |
この表で一見「\(\ket{0}\) を用いるのに \(\bar X\bar X\) を測る」「\(\ket{+}\) を用いるのに \(\bar Z\bar Z\) を測る」ように見えるのが混乱の主因である。中間 qubit の準備 basis は「消す・貼る境界の stabilizer 整合性」のためであり、論理 Pauli 積は「新しく有効化された seam check 群の積が、元の 2 パッチ上でどの非自明 logical string と同値か」で決まる。
以下、物理 qubit を data qubit と syndrome ancilla に分ける。data qubit 集合を \(D\)、check ancilla 集合を \(A_X\cup A_Z\) と書く。1 回の syndrome extraction cycle を「1 ラウンド」と呼び、符号距離を \(d\) とする。logical operator は \(\bar X,\bar Z\) と表す。測定値は符号 \(s\in\{+1,-1\}\) または bit \(m\in\{0,1\}\) で表し、\(s=(-1)^m\) と対応させる。
1. 一行でいうと何をしているか
Lattice surgery は、surface-code patch の境界をまたぐ stabilizer 測定を一時的にオン・オフすることで、logical Pauli product を fault-tolerant に測定する code deformationである。
重要なのは、通常の量子ゲートのように「data qubit 間に CNOT を横断的に打つ」わけではない点である。量子ハードウェア上で行うことは、局所的にはいつもの stabilizer extraction と同じで、違うのは境界付近の check の support と、何ラウンド分の測定 record をどの logical observable として decoder に渡すかである。
物理レベル
中間 data qubit を \(\ket{0}\) または \(\ket{+}\) に初期化し、境界をまたぐ check ancilla を有効化する。以後 \(d\) ラウンド程度、合体後の大きな patch として syndrome を測る。
stabilizer レベル
旧 stabilizer 群 \(S_A S_B\) に seam check 群を加える。この群の積が、旧符号空間上で \(\bar X_A\bar X_B\) または \(\bar Z_A\bar Z_B\) と等価になる。
論理レベル
2 論理 qubit は logical parity で射影される。merge のみなら \(k=2\to1\) で非ユニタリ。merge-split にすると、2 qubit を保持したまま Pauli 積測定になる。
2. パッチ、論理演算子、境界
距離 \(d\) の rotated planar patch を念頭に置く。標準的には data qubit は \(d^2\) 個、独立 stabilizer は \(d^2-1\) 個で、\([[d^2,1,d]]\) の CSS 符号と見なせる。実装図では境界 check が weight 2 または weight 3、内部 check が weight 4 になることが多い。
CSS stabilizer 群を
と書く。ここで \(f,g\) は checkerboard plaquette / vertex / face の集合である。logical operator は stabilizer を掛けても同じ論理作用を持つ同値類であり、例えば
で、\(\gamma_X\) と \(\gamma_Z\) は互いに奇数回交差する非自明 string である。
2.1 境界の物理的意味
境界は「ある種の anyon/string の端点が消える場所」である。直感的には、ある Pauli string が境界で終端しても syndrome を出さないなら、その string はその境界同士を結ぶ logical operator になれる。lattice surgery は、この境界を貼り合わせる、または切る操作である。
measure XX / measure ZZ のように logical observable で管理する方が事故が少ない。
2.2 stabilizer extraction circuit の基準
各 check \(C=\prod_j P_j\) は、syndrome ancilla を介して測る。典型的な CNOT 型回路は次の通りである。
| check | ancilla 初期化 | 二量子ビット gate | ancilla 測定 | 出力 |
|---|---|---|---|---|
| \(Z_{q_1}\cdots Z_{q_w}\) | \(\ket{0}\) | data \(q_j\) を control、ancilla を target とする CNOT | \(Z\) | \(\prod_j Z_{q_j}\) |
| \(X_{q_1}\cdots X_{q_w}\) | \(\ket{+}\) | ancilla を control、data \(q_j\) を target とする CNOT | \(X\) | \(\prod_j X_{q_j}\) |
実機では CZ + basis rotation、Echoed cross-resonance、MS gate などで同等回路を組むことがあるが、stabilizer と detector の意味は同じである。hook error を距離低下に変えないため、各 plaquette の CNOT 順序は通常の rotated surface code と同様に向きをそろえる。seam check を追加したときも、この hook の向きが logical operator の短い方向に伸びないよう schedule を設計する。
3. merge / split の stabilizer 代数
3.1 merge は logical Pauli product の射影
2 つの patch \(A,B\) がそれぞれ 1 logical qubit を持つとする。merge の前の stabilizer 群は
境界を貼ると、合体後の大きな surface code の stabilizer 群 \(S_{\rm merge}\) を測る。旧境界付近の check は support が変わり、seam をまたぐ新しい check 群 \(G_{\rm seam}\) が有効化される。この \(G_{\rm seam}\) の積、または stabilizer を掛けて変形した積が、旧符号空間上で logical Pauli product と同値になる。
したがって seam check の corrected product が \(s\) なら、論理状態には射影
が作用する。merge したままなら stabilizer に logical product が追加されるため、独立 logical qubit 数は \(2\to1\) に減る。
3.2 \(M_{XX}\) / rough merge の論理演算子写像
測定 outcome を \(s=(-1)^m\) とする。\(M_{XX}\) merge 後は \(s\bar X_A\bar X_B\) が stabilizer として固定される。新しい 1 logical qubit の代表を
と選べる。このとき \(\bar X_B=s\bar X_A\) は Pauli frame 上の同値として扱う。反交換は
なので、確かに 1 logical qubit が残る。
計算基底で状態写像を書く。入力を
とする。\(XX\) parity outcome \(s\) の射影後、merged qubit の基底を
と定義すれば、merged state は
これは「\(XX\) parity を測ったあと、2 qubit の parity sector を 1 qubit の logical space として再解釈する」ことに等しい。
3.3 \(M_{ZZ}\) / smooth merge の論理演算子写像
双対性 \(X\leftrightarrow Z\) により、\(M_{ZZ}\) merge では \(s\bar Z_A\bar Z_B\) が stabilizer として固定される。代表を
と選べる。Hadamard basis で書けば
3.4 merge はユニタリではない
merge は \(k=2\to1\) なので、2 logical qubit の完全な情報を 1 logical qubit に保存するユニタリではない。これは欠点ではなく、Pauli product measurement として使うための機能である。merge したままなら logical parity で射影して自由度を 1 つ捨てる。merge の後に split すれば、2 logical qubit を再び持ちながら、その Pauli product 測定結果だけを得る。
4. 物理量子ビットレベルの操作
ここが lattice surgery の中核である。以下では 2 つの距離 \(d\) patch \(A,B\) が、1 data-qubit 幅の routing/seam 領域を挟んで隣接しているとする。実装によっては seam 領域を常時配置し、普段は測らない qubit としてアイドルさせる。別の実装では空き qubit を動的に割り当てる。
4.1 merge 前の状態
- patch \(A\) と patch \(B\) は独立に syndrome extraction を回している。
- それぞれの patch の境界 stabilizer は、境界のため weight が小さい。seam 領域の qubit は stabilizer に含まれていないか、リセットされたアイドル qubit として扱われる。
- decoder は \(A\) と \(B\) の matching graph を別々、またはブロック対角な graph として扱ってよい。
4.2 \(M_{XX}\) / rough merge の物理手順
目的は \(\bar X_A\bar X_B\) を測ること。手順は次である。
Step 1:中間 data qubit の \(\ket{0}\) 準備
seam の data qubit \(r_1,\dots,r_\\ell\) を物理 \(Z\) basis で初期化する。
測定リセットが使えるなら \(Z\) 測定 outcome に応じて conditional \(X\) correction か Pauli frame update を行う。active reset がなければ、測定値を記録し、必要な stabilizer sign と logical frame に吸収する。中間 qubit はまだ logical 情報を持たない。
Step 2:seam check の有効化
境界付近の syndrome ancilla の隣接リストを変更する。具体的には、旧境界で切れていた \(X\)-type check を、seam data と反対側 patch の data を含む check に置き換える。rotated code では境界や角により weight 2, 3, 4 の check が混在するが、抽象的には
という変更である。ここで \(h\) は seam をまたぐ plaquette / vertex の support である。bulk check はそのまま測り続ける。\(Z\)-type check については、合体後の surface code の定義に従って seam data を含む通常 check を測る。重要なのは、以後 decoder には「2 つの patch」ではなく「1 つの合体 patch」の check layout を渡すことである。
Step 3:\(d\) ラウンドの合体 syndrome
1 ラウンドごとに以下を実行する。
- 全 \(X\)-check ancilla を \(\ket{+}\) に、全 \(Z\)-check ancilla を \(\ket{0}\) に reset する。
- 通常の hook-safe schedule に従い、各 check の support 上の data qubit と ancilla の間で局所 2-qubit gate を行う。
- ancilla を対応 basis で測定し、syndrome bit を記録する。
- 連続ラウンドの syndrome 差分から detection event を作る。ただし seam check の最初の測定は merge によって新規生成された check なので、過去値との差分ではなく時空間 boundary に接続する。
logical parity の raw value は、原理的には 最初の merge ラウンドで得られた seam \(X\)-check 群の積である。ただし測定誤りや data error があるので、この raw product は decoder correction によって flip され得る。
ここで \(t_0\) は merge 後最初の syndrome round、\(\widehat E\) は decoder が推定した error chain、\(\operatorname{obsFlip}\) はその error chain が chosen logical observable と反交換するかを表す bit である。
Step 4:merge 後の logical frame
merge 後に 1 つの patch として保持するなら、\(\bar X_A\bar X_B=(-1)^{m_{XX}}\) を stabilizer sign として記録する。物理的な correction は原則として行わず、以後の logical operator の代表と measurement interpretation を更新する。
4.3 \(M_{ZZ}\) / smooth merge の物理手順
完全に双対である。目的は \(\bar Z_A\bar Z_B\) の測定。
seam data の準備は
新しく有効化するのは seam をまたぐ \(Z\)-type check 群であり、decoded observable は
4.4 何が「物理的に」起きていないか
lattice surgery では、通常の transversal CNOT のように patch \(A\) の各 data qubit と patch \(B\) の対応 data qubit を直接 CNOT することはない。境界近傍の syndrome ancilla が、近傍 data qubit に対していつもの stabilizer extraction gate を行うだけである。logical action は、stabilizer measurement の back-action と decoding された measurement record によって生じる。
5. なぜ論理 Pauli 積測定になるか
5.1 stabilizer 群としての証明
\(M_{XX}\) の場合を考える。merge 前の符号空間 \(\mathcal C_A\otimes\mathcal C_B\) では、すべての旧 stabilizer は \(+1\) に固定されている。merge 後に新しい seam \(X\)-check 群 \(G_{\rm seam}^X\) を測る。これらの check は個々には旧 logical operator ではないが、その積は旧 stabilizer を掛けた上で \(\bar X_A\bar X_B\) に等しい。
したがって、すべての \(g\in G_{\rm seam}^{X}\) を測り、その積の固有値 \(s\) を得ることは、旧 logical space 上で \(\bar X_A\bar X_B\) の固有値 \(s\) を測ることと同じである。
同様に \(M_{ZZ}\) では
5.2 homology / cancellation としての証明
seam check 群を幾何的に掛け合わせると、内部 qubit 上の Pauli は偶数回現れて消える。残るのは seam の両端と旧境界に沿う非自明 string である。この string は旧 patch それぞれの logical string を 1 本ずつ含むため、全体として \(\bar P_A\bar P_B\) と同じ homology class になる。
これが「新しい check 群の積が logical product である」という事実の幾何学的な中身である。表面符号の stabilizer は境界を持つ 2 次元 cell complex の境界作用素と見なせるため、seam check の積で内部境界が打ち消され、外側の非自明 cycle だけが残る、と言ってもよい。
5.3 測定 back-action と logical parity
Pauli product \(\bar P_A\bar P_B\) の測定は、状態をその固有空間へ射影する。
個々の \(\bar P_A\) や \(\bar P_B\) を測ったわけではない。測ったのは積だけなので、例えば \(ZZ\) 測定なら computational basis の個々の値は壊さず、その parity だけが分かる。これが CNOT や teleportation 型 Clifford gadget に使える理由である。
6. split の物理操作と論理写像
split は merge の逆向き code deformation である。1 つの patch の中央の row / strip の data qubit を測定して取り除き、境界 check を切って 2 つの独立 patch を作る。merge と同様、split だけでも非ユニタリである。ただし merge と異なり、1 logical qubit の情報を 2 logical qubit の entangled subspace に埋め込む isometry として理解できる。
6.1 物理的な stabilizer update
data qubit \(q\) を Pauli \(P_q\) basis で測って取り除くとき、stabilizer の更新は一般に次の規則で書ける。
- \(P_q\) と可換で、\(P_q\) を含む stabilizer \(S=P_q R\) は、測定 outcome \(p_q\in\{\pm1\}\) により \(S\leadsto p_q R\) へ縮約される。
- \(P_q\) と反可換な stabilizer は測定で壊れ、対応する境界が新しくできる。
- 縮約後の boundary check の sign は、旧 stabilizer outcome と cut-row data measurement outcome の積で決まる。
これが split 時に「測り捨てた qubit の outcome を decoder / Pauli frame に入れる」必要がある理由である。
6.2 smooth split / \(Z\)-split
smooth merge、すなわち \(M_{ZZ}\) の逆は、cut row の data qubit を \(X\) basis で測る。論理写像は computational basis をコピーする形になる。
ここで \(r\) は cut-row \(X\)-measurement と境界 stabilizer の積から得られる frame bit である。\(r=1\) の符号は片方の子 patch に logical \(Z\) を Pauli frame として掛ければ取り除ける。operator の対応は
つまり split 後の 2 patch は独立な 2 logical qubit ではあるが、初期状態は \(\bar Z_L\bar Z_R=+1\) で相関している。
6.3 rough split / \(X\)-split
rough merge、すなわち \(M_{XX}\) の逆は、cut row の data qubit を \(Z\) basis で測る。Hadamard basis をコピーする。
operator 対応は
6.4 split 後に必要な syndrome ラウンド
split 直後は、新しい境界 check の sign に測定誤りが混入し得る。出力 patch を距離 \(d\) の保護状態として使うには、分離後の layout で syndrome extraction を少なくとも \(d\) ラウンド相当回し、split boundary に沿う measurement error を時空間 decoder で保護する必要がある。実際のスケジューリングでは、前後の操作と detection graph を共有してパイプライン化できるが、「時空間方向にも距離 \(d\) を確保する」という原理は変わらない。
7. merge-split としての Pauli 積測定
計算で最もよく使うのは、2 patch を永久に merge する操作ではなく、一時的に merge して parity を読み、その後 split して 2 patch に戻す操作である。
7.1 \(\bar X_A\bar X_B\) 測定
- \(A,B\) の向かい合う rough seam を使う。
- 中間 data を \(\ket{0}\) に準備する。
- seam \(X\)-check をオンにし、合体 patch として \(d\) ラウンド syndrome を取る。
- 最初の seam \(X\)-check product を decoder で補正し、\(m_{XX}\) を得る。
- 中間 row を \(Z\) basis で測って split し、境界 sign を更新する。
- 分離 layout で syndrome を継続し、measurement error を時空間的に閉じる。
論理作用は
7.2 \(\bar Z_A\bar Z_B\) 測定
- smooth seam を使う。
- 中間 data を \(\ket{+}\) に準備する。
- seam \(Z\)-check をオンにし、合体 patch として \(d\) ラウンド syndrome を取る。
- 最初の seam \(Z\)-check product を decoder で補正し、\(m_{ZZ}\) を得る。
- 中間 row を \(X\) basis で測って split し、境界 sign を更新する。
7.3 単一 logical measurement も同じ枠組み
単一 patch の \(\bar Z\) 測定は、すべての data qubit を \(Z\) basis で測り、任意の \(\bar Z\) string 上の parity を decoder で補正して読む。\(\bar X\) 測定も同様に \(X\) basis で測る。lattice surgery の Pauli product 測定は、この「論理演算子の代表に沿った測定 parity」を、patch を壊さず境界 check の first-round product として得る方法である。
8. CNOT の完全な測定型導出
lattice surgery は Pauli product measurement を実装する。CNOT は、Pauli product measurement と ancilla patch を組み合わせて得る。ここでは最も透明な測定型 gadget を示す。
8.1 論理レベルの手順
control を \(C\)、target を \(T\)、中間 ancilla を \(A\) とする。\(A\) を \(\ket{+}_L\) に準備し、以下を行う。
- \(m_1\):\(\bar Z_C\bar Z_A\) を測る。物理的には \(M_{ZZ}\) / smooth merge-split。
- \(m_2\):\(\bar X_A\bar X_T\) を測る。物理的には \(M_{XX}\) / rough merge-split。
- \(m_3\):\(A\) を logical \(Z\) basis で測る。
- Pauli frame correction として \(Z_C^{m_2}\) と \(X_T^{m_1\oplus m_3}\) を記録する。
8.2 projector での導出
符号 \(s_i=(-1)^{m_i}\) を使う。測定 projector は
ancilla を \(\ket{+}_A\) で準備し、最後に \(Z_A\) outcome \(s_3\) に射影する Kraus operator は
直接展開すると
bit 表記では \((1-s_2)/2=m_2\)、\((1-s_1s_3)/2=m_1\oplus m_3\) なので、上の correction rule が出る。
展開を基底で確認する
入力基底 \(\ket{c,t}\) に対して \(A\) は \(\ket{+}\)。最初の \(Z_CZ_A\) 測定は \(A\) の computational value を \(c\oplus m_1\) に相関させる。次の \(X_AX_T\) 測定は、Hadamard-dual な parity によって \(T\) 側の bit flip を生成する。最後の \(Z_A\) 測定で ancilla を消去すると、\(t\mapsto t\oplus c\) が残り、測定 outcome 由来の byproduct が \(Z_C^{m_2}X_T^{m_1\oplus m_3}\) として残る。
8.3 物理レベルでの CNOT 手順
上の 3 つの論理測定を surface-code patch で実装すると、以下になる。
| 段階 | 物理操作 | decoder が返す logical 情報 | frame update |
|---|---|---|---|
| Ancilla prep | patch \(A\) の全 data を \(\ket{+}\) に準備し、\(d\) ラウンド syndrome で \(\ket{+}_L\) を作る。 | 初期 logical \(\bar X_A=+1\) | 必要なら初期 syndrome に基づく frame |
| \(m_1=ZZ\) | \(C\) と \(A\) を smooth / \(M_{ZZ}\) merge-split。seam data は \(\ket{+}\)、seam \(Z\)-check を \(d\) ラウンド。 | \(m_1\) | まだ correction しない |
| \(m_2=XX\) | \(A\) と \(T\) を rough / \(M_{XX}\) merge-split。seam data は \(\ket{0}\)、seam \(X\)-check を \(d\) ラウンド。 | \(m_2\) | \(Z_C^{m_2}\) を記録 |
| Ancilla readout | patch \(A\) の data を \(Z\) basis で破壊測定し、logical \(\bar Z_A\) parity を decode する。 | \(m_3\) | \(X_T^{m_1\oplus m_3}\) を記録 |
物理的な Pauli correction を直ちにかける必要はない。control に \(Z\) frame、target に \(X\) frame をソフトウェアで記録し、以後の logical measurement interpretation と Clifford propagation に反映すればよい。
8.4 Heisenberg picture での確認
byproduct を補正した後の CNOT は logical Pauli を
へ写す。これは \(C\to T\) CNOT の定義そのものである。
9. decoder / Pauli frame / fault tolerance
9.1 動的 matching graph
lattice surgery の decoding は、通常の surface code memory と同じく時空間 3D graph 上の推定問題だが、途中で check layout が変わる。したがって detector 定義には merge boundary と split boundary が入る。
- merge 開始時:新しい seam check には過去の測定値がない。最初の seam outcome は detector というより logical observable の候補であり、測定誤りは後続ラウンドとの整合性で検出される。
- merge 中:seam check も bulk check と同じように連続ラウンド差分から detection event を作る。
- split 時:測り捨てる data qubit の outcome と隣接 check の最後の outcome を組み合わせ、新しい boundary detector を作る。
- split 後:2 patch の通常 detector に戻る。ただし split boundary 起源の sign / frame が残る。
9.2 logical observable の decoding
lattice surgery で得たい \(m_{XX}\) や \(m_{ZZ}\) は、単なる raw parity ではなく「error correction 後の logical observable」である。実装上は、測定 record のある subset の XOR と、decoder correction がその observable と反交換するかどうかで決める。
ここで \(R_{\rm obs}\) は seam first-round check など observable を構成する measurement record の集合、\(\widehat e\) は推定 error、\(o\) はその logical observable の dual surface / cut、\(\langle\cdot,\cdot\rangle\) は mod 2 交差数である。
9.3 なぜ \(d\) ラウンドか
測定値そのものが noisy なので、1 ラウンドで得た seam product は信頼できない。\(d\) ラウンド測ることで、time-like 方向の measurement error chain も少なくとも長さ \(d\) の保護を受ける。rough/smooth merge の途中で code distance が落ちないよう seam 長と patch 幅を設計すれば、空間方向と時間方向の両方で距離 \(d\) の fault tolerance が得られる。
9.4 Pauli frame
lattice surgery では outcome に応じて logical frame が変わる。典型的には物理 data qubit に corrective Pauli を打たず、classical control 上の frame を更新する。
| event | frame に記録するもの | 理由 |
|---|---|---|
| merge outcome \(s=-1\) | merged logical operator の代表に符号を入れる、または片側の logical Pauli byproduct として記録する。 | \(\bar P_A\bar P_B=-1\) sector に射影されたため。 |
| split cut measurement の random parity | 片方の子 patch に \(X\) または \(Z\) frame を記録する。 | split isometry の相対位相が測定値で決まるため。 |
| CNOT gadget outcome | \(Z_C^{m_2}\)、\(X_T^{m_1\oplus m_3}\) | 測定型 CNOT の byproduct。 |
9.5 距離を落とさない条件
lattice surgery が fault-tolerant であるには、合体中・分割中・前後のいずれの時空間断面でも、論理失敗を起こす最短 error chain が長さ \(d\) 未満にならない必要がある。代表的な条件は次である。
- seam の長さを少なくとも \(d\) にする。
- merge により外側境界間に短い logical string が生まれない patch 配置にする。
- hook error の向きを、短い logical direction に沿わせない。
- split で正方形 patch を半分にする場合、出力 patch の距離が半減しないよう、分割前 patch の寸法を設計する。
- idle seam qubit / routing region の leakage や reset error を detector model に入れる。
10. インタラクティブ図解
以下の図は概念図であり、特定ハードウェアの exact layout ではない。step を動かすと、prepare → seam check activation → \(d\) rounds → split の流れを確認できる。
10.1 merge-split 操作ビューア
10.2 CNOT Pauli-frame calculator
測定 outcome を選ぶと、CNOT 後に frame へ入れる byproduct を表示する。\(+1\) を bit 0、\(-1\) を bit 1 とする。
10.3 check product のキャンセル
内部 support は偶数回現れて消え、外側に残る非自明 string が logical product になる。
11. 実装上の落とし穴
11.1 rough / smooth のラベルだけで実装しない
境界名は流儀差がある。実装 spec では「この操作は \(\bar X_A\bar X_B\) を測る」「この操作は \(\bar Z_A\bar Z_B\) を測る」と logical observable を明記し、さらに seam data の準備 basis と split basis を明記する。
11.2 first-round product を捨てない
merge 中に stabilizer を何ラウンドも測ると、最後の round の seam product を parity outcome と誤解しやすい。pre-merge logical parity を測っているのは、seam check が初めて有効化された round の product である。後続 round は、その測定値を measurement error から守るために必要である。
11.3 split boundary の measurement outcome を stabilizer sign に入れる
cut row を測って qubit を消すと、その outcome は新しい境界 check の sign に入る。ここを忘れると、decoder に偽の syndrome が入り、logical frame がずれる。
11.4 merge を CNOT そのものだと思わない
merge は非ユニタリな parity measurement であり、CNOT は複数の parity measurement と ancilla preparation / readout / frame correction から作られる。merge 単体を「2 qubit gate」と呼ぶと、論理自由度の数が変わる事実を見落とす。
11.5 decoder と compiler を分離しすぎない
compiler が「\(M_{XX}\) を実行」とだけ言い、decoder が seam observable を知らないと、測定結果を正しく補正できない。lattice surgery の命令は、少なくとも以下を decoder model に渡す必要がある。
- merge 開始 round と split round
- その round で有効な check layout
- logical observable を構成する measurement record IDs
- 新規 detector / boundary detector の定義
- hook error を含む circuit-level noise model
12. 拡張:多体測定、Y、magic state
12.1 多体 Pauli product measurement
lattice surgery は 2 patch の \(XX\) / \(ZZ\) だけでなく、ancilla patch や routing patch を使えば多体 Pauli product の測定器として使える。例えば
を 1 回の長い seam / bus patch の merge で測る設計がある。multi-target CNOT は、こうした多体測定により時空間コストを削減できる。
12.2 \(Y\) を含む測定
標準の twist-free planar patch で直接 \(Y\) 境界を貼ることは自然ではない。\(Y=iXZ\) を含む product は、Hadamard / phase frame、magic-state gadget、twist defect、または temporally encoded lattice surgery などで実装する。大規模 architecture では、Clifford 層を Pauli product measurement の列へコンパイルし、必要な basis change を patch orientation や frame に吸収するのが一般的である。
12.3 magic state injection / distillation との関係
surface code で universal computation を行うには非 Clifford が必要である。lattice surgery は主に Clifford / Pauli measurement substrate を提供し、\(T\) や CCZ は injection と distillation で得た magic state を消費して実行する。実用的な大規模設計では、データ patch と magic-state factory patch を lattice surgery で接続し、必要な Pauli product measurement を実行する。
付録A. 低レベル命令列:1 回の surgery を hardware schedule に落とす
ここでは、抽象命令 MEASURE_XX_PATCH(A,B) または MEASURE_ZZ_PATCH(A,B) を、物理 reset / gate / measurement / classical record の列として書く。特定の rotated layout では check の support が異なるが、命令の依存関係は同じである。
A.1 入力データ構造
compiler / control system は少なくとも次の情報を持つ。
| 記号 | 内容 |
|---|---|
| \(D_A,D_B\) | patch \(A,B\) の data qubit ID。 |
| \(R\) | routing / seam data qubit ID。merge 前は logical code に入っていない。 |
| \(\mathcal S_{\rm sep}\) | 分離時 layout の check support と ancilla ID。 |
| \(\mathcal S_{\rm merge}^{XX}\), \(\mathcal S_{\rm merge}^{ZZ}\) | 合体時 layout の check support。どちらも surface code として妥当な CSS check 集合。 |
| \(G_{\rm seam}^{X}\), \(G_{\rm seam}^{Z}\) | logical observable を構成する seam check の subset。 |
| \(O_{XX},O_{ZZ}\) | decoder に渡す observable definition。measurement record IDs と correction-crossing rule を含む。 |
A.2 疑似コード:\(M_{XX}\)
procedure LATTICE_SURGERY_MXX(A, B, R, d):
# Phase 0: separated memory rounds may already be running.
assert seam_length(R) >= d
assert merged_layout_distance(A, B, R, type="XX") >= d
# Phase 1: prepare bridge data.
for q in R:
reset_Z(q) # prepare |0>; if measurement-reset, record reset outcome
record_reset_frame(q)
# Phase 2: switch check layout.
active_checks := S_merge_XX(A, B, R)
mark_observable_records := []
for t in 0 .. d-1:
round_records := EXTRACT_SYNDROME_ROUND(active_checks, hook_safe_order=True)
if t == 0:
mark_observable_records += records_of(G_seam_X, round_records)
append_detector_events(round_records, previous_round_records, layout_transition=(t==0))
previous_round_records := round_records
raw_m := xor(mark_observable_records)
e_hat := decode_dynamic_graph()
m_xx := raw_m xor observable_flip(e_hat, O_XX)
update_logical_parity_frame(A, B, P="X", value=m_xx)
return m_xxEXTRACT_SYNDROME_ROUND の内部は通常の surface code cycle と同じである。\(X\)-check なら ancilla を \(\ket{+}\) に reset し、ancilla-control の CNOT を check support の data へ順に打ち、ancilla を \(X\) basis で測る。\(Z\)-check なら ancilla を \(\ket{0}\) に reset し、data-control の CNOT を ancilla へ順に打ち、ancilla を \(Z\) basis で測る。
A.3 疑似コード:\(M_{ZZ}\)
procedure LATTICE_SURGERY_MZZ(A, B, R, d):
assert seam_length(R) >= d
assert merged_layout_distance(A, B, R, type="ZZ") >= d
for q in R:
reset_X(q) # prepare |+>; equivalently reset_Z + H
record_reset_frame(q)
active_checks := S_merge_ZZ(A, B, R)
mark_observable_records := []
for t in 0 .. d-1:
round_records := EXTRACT_SYNDROME_ROUND(active_checks, hook_safe_order=True)
if t == 0:
mark_observable_records += records_of(G_seam_Z, round_records)
append_detector_events(round_records, previous_round_records, layout_transition=(t==0))
previous_round_records := round_records
raw_m := xor(mark_observable_records)
e_hat := decode_dynamic_graph()
m_zz := raw_m xor observable_flip(e_hat, O_ZZ)
update_logical_parity_frame(A, B, P="Z", value=m_zz)
return m_zzA.4 split を含む parity measurement
2 patch を出力として残すなら、merge 後に split transition を行う。\(M_{XX}\) 後は seam data を \(Z\) basis、\(M_{ZZ}\) 後は \(X\) basis で測る。
procedure SPLIT_AFTER_MXX(A, B, R, d):
z_records = {}
for q in R:
z_records[q] = measure_Z(q)
active_checks := S_separated(A, B)
create_split_boundary_detectors(z_records, last_merged_round, basis="Z")
for t in 0 .. d-1:
round_records := EXTRACT_SYNDROME_ROUND(active_checks, hook_safe_order=True)
append_detector_events(round_records, previous_round_records, layout_transition=(t==0))
update_child_patch_frames_from_cut(z_records, basis="Z")
procedure SPLIT_AFTER_MZZ(A, B, R, d):
x_records = {}
for q in R:
x_records[q] = measure_X(q)
active_checks := S_separated(A, B)
create_split_boundary_detectors(x_records, last_merged_round, basis="X")
for t in 0 .. d-1:
round_records := EXTRACT_SYNDROME_ROUND(active_checks, hook_safe_order=True)
append_detector_events(round_records, previous_round_records, layout_transition=(t==0))
update_child_patch_frames_from_cut(x_records, basis="X")A.5 syndrome extraction の moment 分解
1 ラウンドをさらに moment に分解すると、概念的には以下になる。
| moment | 操作 | 注意 |
|---|---|---|
| 0 | 全 syndrome ancilla を reset。\(Z\)-check ancilla は \(\ket{0}\)、\(X\)-check ancilla は \(\ket{+}\)。 | reset error は detector model に入れる。 |
| 1–4 | 各 plaquette の 1 番目から 4 番目の data neighbor と 2-qubit gate。 | rotated code では weight 2/3 check は存在する gate だけ実行。hook-safe order を seam check にも適用。 |
| 5 | ancilla measurement。 | measurement record ID を check ID と round ID に紐づける。 |
| 6 | classical processing。 | detector event、observable record、frame update を生成。低レイテンシ decoder ならここで逐次処理。 |
superconducting qubit などですべての check を完全並列に測れない場合は、同じ round 内で色分け schedule を使う。重要なのは、round の終わりに各 active check の syndrome value が 1 つずつ定義されることである。
付録B. stabilizer 更新の形式化
B.1 CSS chain complex として見る
CSS surface code は、binary chain complex
から作れる。data qubit は 1-chain \(C_1\)、\(Z\)-check は face boundary \(\partial_2 C_2\)、\(X\)-check は co-boundary \(\partial_1^T C_0\) と見なせる。logical \(Z\) は \(H_1=\ker\partial_1/\operatorname{im}\partial_2\)、logical \(X\) は相対 cohomology の代表である。
merge は cell complex に seam cell を追加し、境界写像 \(\partial_1,\partial_2\) を変更する操作である。新しい seam check の積は、追加された局所 boundary の和であり、内部 boundary が \(\mathbb F_2\) 上で消えるため、旧 complex 上の非自明 homology/cohomology class だけが残る。
B.2 stabilizer 測定としての一般補題
証明は 1 行で済む。\(\ket{\psi}\in\mathcal C\) では任意の \(h\in S\) が \(h\ket{\psi}=\ket{\psi}\) を満たすため、\(g_J\ket{\psi}=\bar P h\ket{\psi}=\bar P\ket{\psi}\)。したがって \(g_J\) の固有値積は \(\bar P\) の固有値と等しい。
B.3 merge 後の logical operator の選び方
\(M_{XX}\) では \(\bar X_A\bar X_B=s\) が stabilizer constraint になる。logical operator の候補は、測られた operator と可換で、新 stabilizer ではないものから選ぶ。
| 候補 | \(\bar X_A\bar X_B\) との関係 | merge 後 |
|---|---|---|
| \(\bar X_A\), \(\bar X_B\) | 可換 | 互いに stabilizer constraint で同一視:\(\bar X_B=s\bar X_A\) |
| \(\bar Z_A\) | 反可換 | 単独では残らない。測定で壊れる。 |
| \(\bar Z_B\) | 反可換 | 単独では残らない。 |
| \(\bar Z_A\bar Z_B\) | 可換 | 新 logical \(\bar Z_M\) |
\(M_{ZZ}\) はこの表の \(X\leftrightarrow Z\) 交換で得られる。
B.4 split 時の gauge 的自由度
split は stabilizer generator を削除するため、logical qubit 数が増える。ただし増えた qubit は任意状態で現れるのではなく、cut-row measurement によって決まる parity constraint を持つ。たとえば \(Z\)-split では \(\bar Z_L\bar Z_R\) が既知であり、\(X\)-split では \(\bar X_L\bar X_R\) が既知である。これは「新しい qubit を作る」というより「もとの logical qubit を 2 patch の相関部分空間に展開する」と捉えるのが正確である。
付録C. 実装チェックリスト
以下は、lattice surgery を実機制御または simulator に実装するときの確認項目である。
Compiler 側
- 各 patch の orientation と boundary type が logical observable と一致している。
- \(M_{XX}\) なら seam data \(\ket{0}\)、\(M_{ZZ}\) なら \(\ket{+}\) を準備する。
- seam 長、patch 幅、routing 領域により距離 \(d\) が保たれる。
- merge / split の開始・終了 round が明示されている。
- 同時に走る surgery の seam / bus が交差しない、または交差時の check が定義されている。
Circuit schedule 側
- 全 active check に ancilla が割り当てられている。
- seam check の CNOT/CZ 順序が hook-safe。
- reset / measurement / idle / leakage のエラーが noise model に入っている。
- 境界 weight 2/3 check の moment が他 check と衝突しない。
- seam qubit が prepare 直後に必要な stabilizer 以外と不整合を起こさない。
Decoder 側
- 動的 detector graph が merge / split transition を含む。
- first-round seam records が observable に含まれている。
- split cut-row records が boundary detector と frame update に含まれている。
- decoder correction が observable を flip するか計算できる。
- logical measurement と frame の bit ordering が compiler と一致している。
Runtime / control 側
- Pauli frame を物理 correction ではなく classical に追跡する。
- CNOT gadget の correction rule \(Z_C^{m_2}X_T^{m_1\oplus m_3}\) が正しく適用される。
- 次の Clifford / measurement へ frame を伝播する。
- decoder latency が長い場合でも、必要な frame が測定解釈までに反映される。
- 異常 syndrome / leakage event に対する abort / reinitialize policy がある。
参考文献
- Dominic Horsman, Austin G. Fowler, Simon Devitt, Rodney Van Meter, “Surface code quantum computing by lattice surgery,” New Journal of Physics 14, 123011 (2012). arXiv:1111.4022.
- Austin G. Fowler, Matteo Mariantoni, John M. Martinis, Andrew N. Cleland, “Surface codes: Towards practical large-scale quantum computation,” Physical Review A 86, 032324 (2012). arXiv:1208.0928.
- Daniel Litinski, “A Game of Surface Codes: Large-Scale Quantum Computing with Lattice Surgery,” Quantum 3, 128 (2019). arXiv:1808.02892.
- Austin G. Fowler, Craig Gidney, “Low overhead quantum computation using lattice surgery,” arXiv:1808.06709.
- Niel de Beaudrap, Ross Duncan, Dominic Horsman, Simon Perdrix, “The ZX calculus is a language for surface code lattice surgery,” Quantum 4, 218 (2020). Quantum journal page.
- Daniel Herr, Alexandre Paler, Simon J. Devitt, Franco Nori, “Lattice surgery translation for quantum computation,” New Journal of Physics 19, 013034 (2017).
- Error Correction Zoo, “Rotated surface code.” errorcorrectionzoo.org.
- A. Erhard et al., “Entangling logical qubits with lattice surgery,” Nature 589, 220–224 (2021).