Surface code / lattice surgery report

1個の smooth merge はどの論理測定をしているのか

「smooth merge は \(Z\) なのか \(X\) なのか」を、境界名ではなく seam check と logical observable から確認する。 このレポートでは、物理手順、stabilizer 代数、射影測定、decoder observable、merge 後の論理演算子まで一続きで整理する。

量子 surface code lattice surgery smooth merge

0. 結論

このノートの convention では、1個の smooth merge は 2 つの論理パッチ \(A,B\) に対する \(\bar Z_A\bar Z_B\) の parity 測定である。

\[ M_{\rm smooth}\equiv M_{ZZ}, \qquad \Pi_s^{ZZ}=\frac{I+s\,\bar Z_A\bar Z_B}{2}, \qquad s\in\{+1,-1\}. \]

測っているのは \(\bar Z_A\) 単体でも \(\bar Z_B\) 単体でもない。 わかるのは「2つの \(Z\) 論理値が同じか、違うか」という積の情報だけである。

測定される量

\(\bar Z_A\bar Z_B\)。結果 \(s=+1\) は even parity、\(s=-1\) は odd parity を表す。

物理的に入れるもの

seam data を \(\ket{+}\) に準備し、境界をまたぐ \(Z\)-type seam checks を測る。

保持される情報

\(\bar Z_A\bar Z_B\) と可換な情報は保持される。反可換な \(\bar X_A\), \(\bar X_B\) は測定 back-action を受ける。

ただし、smooth/rough の名前は文献や rotated patch の置き方で入れ替わって見えることがある。 事故を避けるには「smooth merge」とだけ書かず、M_ZZ または measure ZZ と論理 observable を併記するのがよい。

1. このノートの約束

表面符号の境界名は、どの anyon が凝縮するか、どの向きに patch を描くか、rotated patch の色付けをどう選ぶかで見え方が変わる。 このレポートでは、既存の 表面符号の lattice surgery と同じ約束を使い、 smooth merge を \(M_{ZZ}\)、rough merge を \(M_{XX}\) と呼ぶ。

操作名 seam で有効化する check 論理測定 split するなら
rough merge X-type seam checks \(\bar X_A\bar X_B\) seam data を \(Z\) basis 測定
smooth merge Z-type seam checks \(\bar Z_A\bar Z_B\) seam data を \(X\) basis 測定

この表の「smooth \(=\) \(ZZ\)」は、境界名そのものから魔法のように出るのではない。 決め手は、merge で新しく測り始める seam check 群の積が、merge 前の符号空間でどの logical Pauli 積と同値かである。

以後、測定結果を符号 \(s\in\{+1,-1\}\) または bit \(m\in\{0,1\}\) で書き、 \(s=(-1)^m\) と対応させる。logical Pauli は \(\bar X_A,\bar Z_A,\bar X_B,\bar Z_B\) と書く。

2. smooth merge の物理手順

2つの距離 \(d\) patch \(A,B\) を、間の routing/seam 領域 \(R\) を使って一時的に大きな patch にする。 実装によっては \(R\) が常に置かれていて普段は使わない qubit であり、別の実装では merge の直前に割り当てる。 どちらでも論理的な意味は同じである。

0. 独立 \(A,B\) を別々の patch として通常 syndrome extraction で保持する。
1. 準備 seam data \(R\) を \(\ket{+}\) に準備する。
2. 貼る 境界をまたぐ \(Z\)-type seam checks を有効化する。
3. 反復 merged layout の stabilizer を \(d_m\) ラウンド測る。
4. 復号 seam observable と detector graph から \(m_{ZZ}^{\rm decoded}\) を得る。
5. 継続 merge したまま保持するか、\(X\) basis split で再分離する。

「\(\ket{+}\) に準備するのに、なぜ \(Z Z\) を測るのか」が最初の混乱点である。 \(\ket{+}\) 準備は、追加した seam data が \(X\) 型の初期化 syndrome と整合するようにするための物理的準備であり、 読み出す論理量は「有効化した \(Z\)-type seam check 群の積」が決める。

  1. merge 前: \(S_A\) と \(S_B\) は独立に測られており、\(\bar Z_A,\bar Z_B\) はそれぞれの patch を横切る logical string として定義されている。
  2. merge 開始: 境界付近の古い check の一部を止め、merged patch として妥当な \(Z\)-type seam checks を測り始める。
  3. 結果の読み方: 最初の seam check product は、noiseless なら \(\bar Z_A\bar Z_B\) の値である。 実際には測定誤りと data error があるため、時空間 detector graph で補正する。

3. 射影として見る

入力は 2 つの論理 qubit \(A,B\) である。smooth merge の測定結果を \(s=+1\) または \(s=-1\) とすると、理想的な論理作用は次の射影で表せる。

\[ \rho_{AB}\longmapsto \frac{\Pi_s^{ZZ}\rho_{AB}\Pi_s^{ZZ}} {\operatorname{Tr}(\Pi_s^{ZZ}\rho_{AB})}, \qquad \Pi_s^{ZZ}=\frac{I+s\,\bar Z_A\bar Z_B}{2}. \]

つまり、\(s=+1\) なら \(\bar Z_A\bar Z_B=+1\) の sector に、 \(s=-1\) なら \(\bar Z_A\bar Z_B=-1\) の sector に状態を射影する。 実機では raw seam product をそのまま使わず、syndrome record と decoder correction を合わせて \(s\) を決める。

この式は「1個の smooth merge はユニタリゲートではない」ことも示している。 測定 outcome \(s\) があり、その outcome に応じて状態は \(ZZ\) parity sector へ射影される。 outcome を捨てると、even/odd sector 間の coherence は失われる。

4. Stabilizer で見る

merge 前の stabilizer 群を \(S_A\) と \(S_B\) とする。 smooth merge では、境界をまたぐ新しい \(Z\)-type seam check 群 \(G_{\rm seam}^Z\) を測る。 個々の \(g\in G_{\rm seam}^Z\) は旧符号空間上の logical operator ではないが、適切な積を取ると次の同値が成り立つ。

\[ \prod_{g\in G_{\rm seam}^Z}g \;\equiv\; \bar Z_A\bar Z_B \pmod{\langle S_A,S_B\rangle}. \]

したがって、最初の merge ラウンドで得る seam check の積は、ノイズがなければ \(\bar Z_A\bar Z_B\) の測定値である。ノイズがある場合は、decoder が推定した error chain が この observable を反転するかどうかを加味する。

\[ m_{ZZ}^{\rm decoded} = \bigoplus_{g\in G_{\rm seam}^Z} m_g(t_0) \oplus \operatorname{obsFlip}(\widehat E), \qquad s=(-1)^{m_{ZZ}^{\rm decoded}}. \]

4.1 なぜ積だけが論理量になるのか

個々の seam check は局所 stabilizer であり、測っても単独では「logical qubit の値」を表さない。 しかし seam に沿ってすべて掛け合わせると、内部の local edge は \(\mathbb F_2\) 上で2回現れて消え、 両端に残る非自明 string が \(A\) と \(B\) の logical \(Z\) string になる。 これが \(\prod G_{\rm seam}^{Z}\equiv \bar Z_A\bar Z_B\) という同値の幾何学的意味である。

4.2 可換性で確認する

演算子\(\bar Z_A\bar Z_B\) との関係smooth merge 後の意味
\(\bar Z_A\)可換merged qubit の \(\bar Z_M\) として使える。
\(\bar Z_B\)可換constraint \(\bar Z_A\bar Z_B=s\) により \(s\bar Z_A\) と同値。
\(\bar X_A\)反可換単独では merge 後の logical operator になれない。
\(\bar X_B\)反可換単独では merge 後の logical operator になれない。
\(\bar X_A\bar X_B\)可換merged qubit の \(\bar X_M\) として使える。

5. 基底で見る

\(\bar Z\) の固有基底を \(\ket{0},\ket{1}\) と書く。 一般の 2 logical state を

\[ \ket{\psi} = c_{00}\ket{00} +c_{01}\ket{01} +c_{10}\ket{10} +c_{11}\ket{11} \]

とすれば、smooth merge は偶奇 parity を読む。

\(s=+1\): even \(ZZ\) sector

\[ c_{00}\ket{00}+c_{11}\ket{11} \] が残る。2つの \(Z\) 論理値は同じである。

\(s=-1\): odd \(ZZ\) sector

\[ c_{01}\ket{01}+c_{10}\ket{10} \] が残る。2つの \(Z\) 論理値は異なる。

ここで重要なのは、\(\ket{00}\) と \(\ket{11}\) のどちらだったかまでは測っていない点である。 だから smooth merge は \(Z_A\) 測定でも \(Z_B\) 測定でもなく、あくまで \(Z_AZ_B\) parity 測定である。

「\(ZZ\) parity を測る」と「\(Z_A\) と \(Z_B\) をそれぞれ測る」は違う。 前者は \(\ket{00}\) と \(\ket{11}\) の重ね合わせを保てるが、後者はどちらかを区別してしまう。

6. merge 後の論理演算子

smooth merge だけで止める場合、2つの logical qubits は1つの merged logical qubit に再定義される。 測定 outcome を \(s\) とすると、新しい stabilizer constraint は

\[ s\,\bar Z_A\bar Z_B \in S_{\rm merged} \qquad\text{または}\qquad \bar Z_A\bar Z_B=s. \]

この constraint と可換で、かつ stabilizer ではない代表を1組選べば merged logical qubit の Pauli が得られる。 典型的な選び方は次である。

merged logical代表元理由
\(\bar Z_M\) \(\bar Z_A\) または \(s\bar Z_B\) \(\bar Z_A\bar Z_B=s\) なので \(\bar Z_A\) と \(s\bar Z_B\) は merged code 上で同じ作用を持つ。
\(\bar X_M\) \(\bar X_A\bar X_B\) \(\bar X_A\) と \(\bar X_B\) はそれぞれ constraint と反可換だが、積は可換で \(\bar Z_M\) と反可換。

これは rough merge の双対である。rough merge では \(\bar X_A\bar X_B=s\) が固定され、 \(\bar X_M=\bar X_A\)、\(\bar Z_M=\bar Z_A\bar Z_B\) のように選べる。 smooth merge では \(X\leftrightarrow Z\) を交換した対応になる。

6.1 outcome ごとの基底再解釈

outcome残る subspace\(\bar Z_M=\bar Z_A\) とした基底
\(s=+1\)\(\Span\{\ket{00},\ket{11}\}\)\(\ket{0_M}=\ket{00},\quad \ket{1_M}=\ket{11}\)
\(s=-1\)\(\Span\{\ket{01},\ket{10}\}\)\(\ket{0_M}=\ket{01},\quad \ket{1_M}=\ket{10}\)

7. 「1個の merge だけ」と「merge + split」

smooth merge だけ

2 logical qubits を 1 つの大きな patch に合体する。 \(\bar Z_A\bar Z_B=s\) が stabilizer constraint として固定されるので、 独立な論理自由度は \(2\to1\) に減る。

smooth merge + split

一時的に merge して \(ZZ\) parity を読み、その後 \(X\) basis split で 2 patch に戻す。 この場合は、2 logical qubits を残したまま \(ZZ\) 測定だけを実行したと見なせる。

したがって「1個の smooth merge はどの論理測定か」と聞かれたら、答えは \(\bar Z_A\bar Z_B\) の測定でよい。 ただし merge だけで止めるなら、測定に加えて「2 qubit 空間を 1 qubit 空間へ再符号化する」 という状態写像も同時に起きている。

7.1 split を入れると何が増えるか

計算でよく使うのは、merge したまま論理数を減らす操作ではなく、 merge で \(ZZ\) parity を読み、その後 split して2つの patch に戻す操作である。 smooth merge の逆向き split では、seam data を \(X\) basis で測る。

\[ M_{ZZ}\text{ merge} + X\text{-basis split} \quad\Longrightarrow\quad \text{2 logical qubits remain, with recorded }ZZ\text{ outcome.} \]

split の \(X\)-basis 測定値は単なる後片付けではない。 境界を切る transition の detector と Pauli frame 更新に入るため、測定 record として保存する必要がある。

8. Decoder observable と fault tolerance

理想式では seam check product がそのまま \(ZZ\) outcome だった。 しかし実機や circuit-level simulator では、data error、measurement error、reset error、hook error がある。 そのため、smooth merge の出力は raw product ではなく、decoder が補正した observable bit である。

\[ m_{ZZ}^{\rm decoded} = m_{ZZ}^{\rm raw} \oplus \operatorname{obsFlip}(\widehat E), \qquad m_{ZZ}^{\rm raw}=\bigoplus_{g\in G_{\rm seam}^Z}m_g(t_0). \]
項目意味実装上の注意
\(m_g(t_0)\) merge 後最初に測った seam check \(g\) の outcome bit。 新規 check なので、通常の「前ラウンドとの差分」と同じ扱いにはしない。
detector graph merge 開始・継続・split 終了を含む時空間 syndrome の制約。 transition boundary を入れないと、measurement error が parity 反転に見えない。
\(\operatorname{obsFlip}(\widehat E)\) decoder が推定した error chain が \(ZZ\) observable と交差するかを表す bit。 observable support を detector model に明示する。
\(d_m\) merge layout として syndrome を測るラウンド数。 fault-tolerant にするなら通常 \(d_m\) は code distance と同程度に取る。
procedure SMOOTH_MERGE_MZZ(A, B, R, d):
    prepare seam data R in |+>
    enable merged-layout Z-type seam checks
    for round in 1..d:
        measure merged stabilizers
        append outcomes to detector record
    raw = xor(first-round seam Z-check outcomes)
    e_hat = decode(detector record, observable=O_ZZ)
    m_zz = raw xor observable_flip(e_hat, O_ZZ)
    return s = (-1)^m_zz

「1個の smooth merge」と言っても、fault-tolerant operation としては1回の check 測定ではない。 空間方向の seam 長、時間方向の測定ラウンド数、hook error の向きまで含めて初めて操作距離が決まる。

9. 具体例

例1: \(\ket{0}\ket{0}\)

\(\bar Z_A\bar Z_B=+1\) が確定しているので、smooth merge outcome は理想的には \(s=+1\)。 測定 back-action はあるが、すでに eigenstate なので論理状態は変わらない。

例2: \(\ket{0}\ket{1}\)

\(\bar Z_A=+1,\bar Z_B=-1\) なので \(\bar Z_A\bar Z_B=-1\)。 outcome は理想的には \(s=-1\) である。

例3: \(\ket{+}\ket{+}\)

\[ \ket{+}\ket{+} =\frac{\ket{00}+\ket{01}+\ket{10}+\ket{11}}{2}. \] \(s=+1\) なら \((\ket{00}+\ket{11})/\sqrt2\)、\(s=-1\) なら \((\ket{01}+\ket{10})/\sqrt2\) に射影される。

例4: \(\alpha\ket{00}+\beta\ket{11}\)

すでに even \(ZZ\) sector にいるため、outcome は \(s=+1\)。 \(\alpha,\beta\) の coherence は parity 測定では壊れない。

10. 誤解しやすい点

誤解正しい見方
smooth merge は \(\bar Z_A\) と \(\bar Z_B\) を別々に測る。 測るのは積 \(\bar Z_A\bar Z_B\) だけ。個別値は区別しない。
\(\ket{+}\) を準備するから \(X\) 測定である。 \(\ket{+}\) 準備は seam data の初期化。論理 observable は \(Z\)-type seam check product で決まる。
merge はユニタリゲートである。 merge は outcome を持つ測定付き code deformation。merge だけなら論理自由度も \(2\to1\) に減る。
最初の raw seam product をそのまま使えばよい。 fault-tolerant な outcome は decoder correction を含む \(m_{ZZ}^{\rm decoded}\)。
rough/smooth 名だけで実装仕様として十分。 文献依存の呼び方があるため、seam check type、初期化 basis、split basis、logical observable を書く。

11. 実装チェック

  • 名前smooth merge だけでなく M_ZZ または measure ZZ と書く。
  • 物理seam data を \(\ket{+}\) に準備し、\(Z\)-type seam checks を有効化する。
  • 出力raw seam product ではなく、decoder correction を含む \(m_{ZZ}^{\rm decoded}\) を使う。
  • split2 patch に戻すなら seam data は \(X\) basis で測る。
  • frame\(s=-1\) の扱いは物理 correction ではなく Pauli frame / observable sign convention に入れる。
  • 距離seam 長、測定ラウンド数、hook error schedule が目的の操作距離を落としていないか確認する。
  • 記録merge 開始、first seam product、継続ラウンド、split terminal measurements を detector model に入れる。

関連する既存ノート

参考文献

  1. 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.
  2. Daniel Litinski, “A Game of Surface Codes: Large-Scale Quantum Computing with Lattice Surgery,” Quantum 3, 128 (2019). Quantum journal page.
  3. Austin G. Fowler, Craig Gidney, “Low overhead quantum computation using lattice surgery,” arXiv:1808.06709.
  4. 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.