QEC における Code Deformation 詳説
Surface code の基礎を知っている読者を前提に、code deformation を「時間依存 stabilizer / subsystem code の列」として定式化し、 境界変形、穴の生成・移動、defect braiding、lattice surgery、twist/corner、gauge fixing、decoder への渡し方、実装上の落とし穴まで一貫して扱う。
Surface code の基礎を知っている読者を前提に、code deformation を「時間依存 stabilizer / subsystem code の列」として定式化し、 境界変形、穴の生成・移動、defect braiding、lattice surgery、twist/corner、gauge fixing、decoder への渡し方、実装上の落とし穴まで一貫して扱う。
Code deformation は、量子情報を保ったまま、測定する stabilizer / gauge operator の集合と物理 qubit の有効レイアウトを時間的に変える手法である。 Surface code ではこの操作が幾何学的に見える。境界を伸ばす、穴を開ける、穴を移動する、2 つの patch を merge する、patch を split する、twist defect を動かす、といった操作はいずれも 「ある時刻 \(t\) の code \(\Cg_t\) から次の時刻 \(\Cg_{t+1}\) へ、syndrome 測定で移行する」過程として表せる。
重要なのは「変形中にも情報が守られる」ことである。幾何学的な面積や境界の形だけでなく、 任意の低重み fault が logical fault に化けない spacetime distance、測定エラーを含む 3D syndrome history、 そして logical operator の tracking を同時に設計しなければならない。
Surface code の logical operator は、局所 stabilizer を掛けることで形を変えられる。したがって、境界や穴の位置を少し動かしても、 logical operator は homology class / relative homology class として更新される。Code deformation はこの自由度を利用し、 logical string の端点、hole、domain wall、patch の接続関係を変えて、測定や gate を実現する。
ただし「自由に形を変えられる」は「任意に雑に測定してよい」という意味ではない。測定ノイズを含む syndrome history では、 error chain は 3 次元の worldline / worldsheet として現れる。変形により新しい time-like boundary が生じるため、decoder はその境界を知らなければならない。
| 名称 | 典型例 | 数学的見方 | 主な用途 |
|---|---|---|---|
| 幾何学的 deformation | patch growth, shrink, hole movement | 境界条件・相対 homology の変更 | レイアウト調整、defect 回避、logical qubit 移動 |
| Lattice surgery | Z-merge, X-merge, split | 局所 check の追加により logical Pauli product を測定 | CNOT、multi-Pauli 測定、magic-state injection |
| Defect braiding | Z-hole と X-hole の braid | puncture の worldline による logical operator の変換 | CNOT、長距離相互作用 |
| Twist/corner deformation | e-m domain wall endpoint の移動 | anyon label の自動同型 \(e \leftrightarrow m\) | Clifford gates、Y 測定、twist lattice surgery |
| Gauge fixing | subsystem code の check 順序変更、code switching | 共通の親 gauge code の異なる stabilizer fixing | universal gate、性能改善、変形の fault-tolerance 判定 |
| Clifford-deformed code | XZZX, XY, random CDSC | 局所 Clifford で stabilizer を変換 | biased noise への適応 |
Stabilizer code は \(n\) 個の物理 qubit 上の Pauli 群 \(\Pauli_n\) の可換部分群 \(\Sg\) で定義される。 \(-I \notin \Sg\) とし、\(r = \rank \Sg\) なら code space の次元は \[ \dim \Cg = 2^{n-r}, \qquad k = n-r. \] Logical Pauli は normalizer quotient \[ \Lg = \N(\Sg)/\Sg, \qquad \N(\Sg)=\{P\in\Pauli_n: PS=SP\; \forall S\in\Sg\} \] で表される。Code deformation の核心は、\(\Sg_t\) を \(\Sg_{t+1}\) に変えるとき、\(\Lg_t\) のどの元が測定され、どの元が同値な logical として残り、どの byproduct が Pauli frame に入るかを管理することにある。
現在の stabilizer group \(\Sg\) に対して Pauli operator \(M\) を測定し、結果を \(m\in\{+1,-1\}\) とする。 測定更新は次の 3 ケースに分かれる。
| ケース | 条件 | 更新 | logical への意味 |
|---|---|---|---|
| 既知 stabilizer | \(M\in\pm\Sg\) | 理想的には結果は既知。ノイズがあれば syndrome。 | 情報は変わらない。 |
| 可換・独立 | \(M\in\N(\Sg)\setminus \Sg\) | \(\Sg' = \langle \Sg, mM\rangle\) | もし \(M\) が logical なら、その logical Pauli を測定し、\(k\) が 1 減る。 |
| 反可換 | ある \(S\in\Sg\) と \(MS=-SM\) | 反可換 generator を 1 つ \(mM\) で置換し、残りの反可換 generator は掛け合わせて可換化する。 | rank は多くの場合同じ。code switching / gauge fixing 的な更新。 |
実際の deformation では複数の local check を同時または数ラウンドにわたり測定する。 それらが互いに可換なら新 stabilizer set として扱いやすい。互いに非可換、または旧 stabilizer と非可換な測定を含む場合、 一時的に subsystem code の gauge operator を測っていると見ると整理しやすい。
Subsystem code では gauge group \(\Gg\subset\Pauli_n\) を導入し、stabilizer は \[ \Sg = Z(\Gg) \cap \Gg \] で与えられる。Gauge fixing は \(\Gg\) の中の可換な gauge operator を選び、追加 stabilizer として固定する操作である。 Code deformation と lattice surgery は、広い範囲でこの gauge fixing として定式化できる。
Stabilizer \(\Sg\) の code projector は \[ P_\Sg = \prod_{S_i\in G(\Sg)} \frac{I+S_i}{2} \] と書ける。Deformation step は、理想化すれば \[ \rho \longmapsto \frac{P_{\Sg_{t+1},\,\mathbf m}\,\rho\,P_{\Sg_{t+1},\,\mathbf m}}{\Tr(P_{\Sg_{t+1},\,\mathbf m}\rho)} \] であり、\(\mathbf m\) は新 check の測定結果を表す。Fault-tolerant protocol ではこの射影を 1 回で信用せず、 同じまたは関連する check を複数ラウンド測り、時系列から真の syndrome と measurement fault を推定する。
標準的な edge-qubit surface code では、2 次元 cell complex の chain complex \[ C_2 \xrightarrow{\partial_2} C_1 \xrightarrow{\partial_1} C_0, \qquad \partial_1\partial_2=0 \] を用いて stabilizer を記述できる。物理 qubit は edge \(e\in C_1\) に置く。 vertex check と plaquette check は \[ A_v = \prod_{e\ni v} X_e, \qquad B_f = \prod_{e\in \partial f} Z_e \] である。\(Z\)-error chain の境界は \(X\)-syndrome を生み、\(X\)-error chain の双対境界は \(Z\)-syndrome を生む。
境界がある場合、absolute homology ではなく relative homology が現れる。 ここで Z-boundary は \(Z\) string の端点を吸収し、X-boundary は \(X\) string の端点を吸収する。 2 つの Z-boundary を結ぶ \(Z\) string は \(\bar Z\)、2 つの X-boundary を結ぶ \(X\) string は \(\bar X\) として選べる。
例えば \(Z\)-string \(\gamma\) に plaquette stabilizer \(B_f\) を掛けると、\(\gamma\) は face \(f\) の境界分だけ変形される。 これは同じ homology class の代表を変えただけなので logical action は同じである。 Deformation の最小単位は、この「代表の変形」を stabilizer 測定により物理的に可能にすることだと見なせる。
境界や穴の位置を変えると、許される相対 cycle の空間も変わる。Logical operator tracking は、古い cycle を新しい cell complex 上の同じ homology class に写す操作である。 Twist domain wall がある場合は、cycle が壁を横切ると \(X\) と \(Z\) の型が入れ替わるため、単なる CSS homology よりも richer な label tracking が必要になる。
CSS surface code では \[ d_Z = \min_{Z\text{-logical }L_Z} |\operatorname{supp}(L_Z)|, \qquad d_X = \min_{X\text{-logical }L_X} |\operatorname{supp}(L_X)|, \] \[ d = \min(d_X,d_Z) \] と見ることができる。Deformation 中の形が細い neck を作ると、\(d_X\) または \(d_Z\) が一時的に落ちる。 Fault tolerance の評価では空間的な最短 string だけでなく、時間方向の measurement fault chain も含む effective distance を見なければならない。
複雑な code deformation protocol は、少数の primitive の合成として理解できる。 実装では各 primitive を「qubit の準備・測定」「新 check の導入」「旧 check の停止」「decoder graph の更新」「logical frame の更新」に分解する。
patch の端に data qubit と syndrome qubit を追加し、新しい boundary check を測る。
一部 data qubit を単一 Pauli 基底で測定して取り除き、隣接 stabilizer を短縮する。
内部 stabilizer を停止して hole を作る。hole の周囲が新たな boundary になる。
hole / boundary の前方を grow し、後方を shrink する。logical string も追随させる。
2 patch 間に bridge check を入れ、logical Pauli product を測定する。
bridge 領域を測定で切り離し、patch を分離する。分離測定結果は Pauli frame に入る。
mixed stabilizer と domain wall の位置を変えて twist defect を動かす。
親 subsystem code の gauge operator 測定順序・固定 subgroup を変える。
各物理 qubit に局所 Clifford を掛けた stabilizer へ変える。XZZX など。
Grow は、古い code の境界外に新 data qubit を置き、必要な初期状態に準備し、新しい local stabilizer を測定し始める操作である。 CSS code なら追加 qubit の準備基底は、新しく deterministic にしたい check と整合させる。 典型的には、Z 型情報を固定したい場所は \(\ket{0}\)、X 型情報を固定したい場所は \(\ket{+}\) を使う。 ただし実際の rotated layout では、1 つの qubit が X/Z check の両方に関わるため、初回 syndrome のランダム性を decoder graph の初期境界として扱う必要がある。
Shrink は grow の逆で、除去する data qubit を単一 Pauli 基底で測定し、その測定結果で短縮後の stabilizer 符号を補正する。 例えば \(Z\)-basis で data qubit を測定して取り除く場合、その qubit を含む Z-type stabilizer の値は測定値で決まり、 その qubit と反可換な X-type stabilizer は停止・置換される。測定結果が \(-1\) なら、隣接する新 stabilizer または Pauli frame に sign update が必要である。
Hole は、内部 stabilizer の測定を停止し、その周囲に boundary を作ることで得られる。 Z-hole は Z-boundary の円周を持つ puncture、X-hole は X-boundary の円周を持つ puncture と呼ぶ。 同じ型の hole のペアは 1 logical qubit を符号化できる。典型的な選択は次の通り。
| hole pair | logical の代表 | 直観 |
|---|---|---|
| Z-hole pair | \(\bar Z\):2 つの hole を結ぶ Z string。\(\bar X\):片方の hole を回る X loop。 | Z string の端点は Z-boundary に終端できる。 |
| X-hole pair | \(\bar X\):2 つの hole を結ぶ X string。\(\bar Z\):片方の hole を回る Z loop。 | X string の端点は X-boundary に終端できる。 |
Hole の作成が新 logical qubit を生む場合、その logical qubit は作り方により初期化される。 どの logical が固定され、どの logical がランダムになるかは、停止した stabilizer と測定した data qubit の product によって決まる。
Hole movement は「前方を grow、後方を shrink」の繰り返しである。論理的には puncture の worldline を描く。 Z-hole を動かすとき、Z string は hole とともに引きずられ、X loop は hole の周囲で更新される。 異なる型の hole の周りを braid すると、logical operator の交差数が変わり、CNOT 型の Clifford action が生じる。
2 つの patch の Z-boundary を bridge check で結合して測定すると、\(\bar Z_A\bar Z_B\) が測定される。 同様に X-boundary を結合すると、\(\bar X_A\bar X_B\) が測定される。 Merge 後に split すれば、patch を分離したまま parity measurement の結果だけを logical circuit に渡せる。
Surface code には \(e\) anyon と \(m\) anyon がある。\(e\)-\(m\) domain wall は string operator の型を入れ替える壁であり、 その端点が twist defect である。Twist の近傍では stabilizer が CSS でなくなり、\(X\) と \(Z\) が混在する mixed check が現れる。 Twist の移動は、mixed check の位置を局所的に更新する deformation として実装される。
Gauge fixing は幾何学的に見えない deformation も統一する。 2 つの code \(\Cg_A,\Cg_B\) が共通の gauge group \(\Gg\) の異なる fixing として表せるなら、 \(\Cg_A\to\Cg_B\) は、\(\Gg\) 内の別の可換 subgroup を測って固定する操作である。 Lattice surgery でも、merge された一時的な code と分離された code は、適切な親 subsystem code の異なる fixing と見なせる。
Code deformation の正しさは、理想 stabilizer algebra だけでは不十分である。 実験・アーキテクチャでは measurement error、data error、reset error、leakage、hook error、遅延した classical feed-forward がすべて関わる。 Fault-tolerant deformation の目標は、距離 \(d\) の code で、少なくとも \(t=\lfloor(d-1)/2\rfloor\) 個までの fault が logical failure を起こさないようにすることである。
通常の memory では、space 方向の非自明 chain が logical error である。 しかし noisy syndrome extraction では、measurement fault が time 方向の edge を作るため、decoder graph は 3 次元になる。 Deformation では check の集合が時間で変わるので、decoder graph には past boundary、future boundary、deformation boundary が生じる。
Operation の fault distance \(d_{\mathrm{op}}\) は、間違った logical outcome または誤った logical frame update を引き起こす最小 fault chain の重みとして見るとよい。 安全な設計では \[ d_{\mathrm{op}} \ge d_{\mathrm{target}} \] を満たすように、merge の幅、hole 間距離、braid の離隔、測定ラウンド数を選ぶ。
Merge seam の local check product が logical parity になるとしても、1 ラウンドの測定結果は measurement error 1 個で反転する。 距離 \(d\) の parity measurement にするには、通常は seam check を \(O(d)\) ラウンド測り、space-like と time-like の両方の fault chain を decoder に渡す。 実装によって \(d\) ラウンド、\(d_m\) ラウンド、またはノイズモデルに合わせた可変ラウンドが使われるが、原理は「時間方向の距離も確保する」ことである。
固定 stabilizer \(S_j\) なら、連続ラウンドの syndrome \(s_{j,t}\) から detection event \[ \delta_{j,t}=s_{j,t}s_{j,t-1} \] を作る。Deformation 中に check が変わる場合、単純な差分は使えない。代わりに、旧 check の product と新 check の product の間にある既知の関係、 または split / merge 時の data measurement から得た boundary condition を使って、比較可能な syndrome quantity を作る。
Ancilla を使って重み 4 stabilizer を測る場合、CNOT の順序によって 1 つの ancilla fault が 2 つの data qubit error に広がる。 この hook error が logical string 方向に伸びると effective distance を下げる。 Deformation で check 形状が変わると、普段の schedule がそのまま安全とは限らない。Bridge check、mixed twist check、truncated boundary check では、hook の向きを再評価する必要がある。
空間距離 \(d\)、変形中の最小 neck 幅 \(w\)、merge 測定ラウンド数 \(r\) を入れると、単純化した bottleneck を表示する。
これは設計初期の sanity check であり、実際の circuit-level distance は schedule と decoder graph で確認する必要がある。
Lattice surgery は、patch を merge / split することで logical Pauli product を測定する code deformation である。 Surface code の 2D nearest-neighbor 制約を保ちながら、多 qubit Pauli measurement を実現できるため、大規模 surface-code architecture の中心的 primitive になっている。
2 つの patch \(A,B\) の Z-boundary を向かい合わせる。間に bridge 領域があるなら、bridge data qubit を準備して、 境界をまたぐ Z-type check を測定し始める。Seam check の product は、stabilizer を除いて \(\bar Z_A\bar Z_B\) に等しい。
Ideal level では、merge 測定は projector \[ P_{m}^{ZZ}=\frac{I + m\,\bar Z_A\bar Z_B}{2} \] を logical state に作用させる。
X-boundary を merge する場合は、X-type seam check の product から \(\bar X_A\bar X_B\) を得る。 Ideal projector は \[ P_{m}^{XX}=\frac{I + m\,\bar X_A\bar X_B}{2}. \] X-merge と Z-merge は CSS duality で対応するが、hardware schedule では CNOT 向きや hook error の向きが入れ替わるため、同一視してはいけない。
Split は bridge / cut line の data qubit を単一 Pauli 基底で測定して取り除く。 本稿の convention では、Z-boundary を作る split では cut qubit の Z-basis 測定、X-boundary を作る split では X-basis 測定を使う。 測定結果の product は新しい patch の Pauli frame、特に分離後 logical の符号に影響する。
重要なのは、split は単なる幾何操作ではなく non-unitary logical map であることだ。 Merge / split は ZX-calculus の spider と同様に、状態をコピーするのではなく、特定 basis の parity と byproduct を持つ射影写像として振る舞う。
CNOT は lattice surgery で直接 unitary として実装するというより、ancilla logical qubit と Pauli product measurement の列で実装するのが標準的である。 Control を \(c\)、target を \(t\)、ancilla を \(a\) とする。
Ideal measurement algebra では、出力は CNOT 後に byproduct \[ Z_c^{(1-m_2)/2}\; X_t^{(1-m_1m_3)/2} \] が掛かったものに等しい。したがって classical Pauli frame で \[ Z_c \text{ correction if } m_2=-1, \qquad X_t \text{ correction if } m_1m_3=-1 \] を記録すればよい。
Lattice surgery の強みは 2-qubit parity に限られない。複数 patch を ancilla / routing region に merge して、 \[ P = \bar P_1 \bar P_2 \cdots \bar P_r, \qquad \bar P_i\in\{\bar X_i,\bar Y_i,\bar Z_i\} \] のような logical Pauli product を測れる。\(\bar Y\) を含めるには twist、basis change、または一時的な deformation が必要になる。 大規模アルゴリズムでは Clifford+T circuit を Pauli product measurement へコンパイルし、lattice surgery layout 上で実行する設計がよく使われる。
Lattice surgery は patch を merge/split する「不連続」な deformation と見なせる。一方、defect braiding は hole や twist を連続的に動かすことで logical gate を得る。 Surface code の初期の topological-computing picture では、puncture の worldline が 3D spacetime で braid を形成し、その linking が Clifford gate を決める。
同じ型の hole を 2 つ用意すると、1 logical qubit を符号化できる。Z-hole pair の例では、\(\bar Z\) は 2 つの hole を結ぶ Z string、 \(\bar X\) は片方の hole の周りの X loop である。2 つの operator は 1 回交差するため反可換になる。 距離は hole 間距離、hole 周長、外部境界までの距離の最小値で決まる。
Z-hole を 1 plaquette 分動かす場合、次のように考える。
Z-type defect と X-type defect の braid は、交差数に応じて logical operator を変換する。 Convention に依存する control/target の割り当てを固定すれば、CNOT の Heisenberg action は \[ \bar X_c \mapsto \bar X_c\bar X_t, \qquad \bar Z_c \mapsto \bar Z_c, \] \[ \bar X_t \mapsto \bar X_t, \qquad \bar Z_t \mapsto \bar Z_c\bar Z_t. \] である。Braid がこれを実現する理由は、defect の周りを回る loop と defect 間 string の交差数が braid 後に変わるためである。
| 観点 | 利点 | 欠点 |
|---|---|---|
| 位相的直観 | gate が worldline の braid として見える。 | spacetime 体積が大きくなりやすい。 |
| 局所性 | 2D nearest-neighbor のまま実装できる。 | 長距離 braid には時間がかかる。 |
| decoder | defect boundary を時間追跡すればよい。 | moving boundary と hook schedule の扱いが複雑。 |
| 現代 architecture | 概念的基礎として重要。 | 多くの設計では lattice surgery の方が resource-efficient。 |
Twist は surface code の e-m duality を局所的に導入する defect である。通常の CSS surface code では e anyon と m anyon が別々に扱われるが、 e-m domain wall を横切ると label が入れ替わる。Domain wall の端点では、anyon が自分自身と異なる型に変換されるため、twist defect は Ising/Majorana 的な振る舞いを持つ。
\(Z\)-string は e anyon を端点に持つ。もし e-m domain wall を横切ると、壁の向こう側では \(X\)-string として続く。 そのため twist 近傍の stabilizer は純粋な \(X\)-type / \(Z\)-type ではなく、例えば \(XZXZ\) や重み 5 の mixed check になることがある。
Planar patch の corner は、Z-boundary と X-boundary が接する場所である。ここでは string の終端規則が切り替わるため、corner を twist と同一視できる枠組みがある。 Corner を code deformation で交換すると、logical operators の対応が変わり、単一 qubit Clifford gate を実現できる。
例えば Hadamard-like な操作は \(\bar X\leftrightarrow \bar Z\) の交換として現れる。 Phase-like な操作は \(\bar X\mapsto \bar X\bar Z\)、\(\bar Z\mapsto \bar Z\) のような symplectic transformation として記述される。 実際の protocol では patch の角を切る、穴を開ける、twist pair を動かすなどの局所変形列に分解する。
\(Y\)-type logical measurement や一部の Clifford gate では、通常の X/Z boundary merge だけだと補助状態や追加変形が必要になる。 Twist を利用すると \(Y\) を含む Pauli product をより直接扱える場合がある。 ただし twist check は高重みまたは非 CSS になりやすく、syndrome extraction circuit が深くなることがある。
Code deformation の設計を厳密にするには、各ステップを subsystem code の gauge fixing として見るのが強力である。 親 gauge group \(\Gg\) を用意し、旧 code と新 code を同じ \(\Gg\) の異なる stabilizer fixing として表す。
旧 code: \[ \Sg_{\mathrm{old}} = \langle Z(\Gg), F_{\mathrm{old}}\rangle \] 新 code: \[ \Sg_{\mathrm{new}} = \langle Z(\Gg), F_{\mathrm{new}}\rangle \] と書けるなら、\(F_{\mathrm{old}}\) の固定を外し、\(F_{\mathrm{new}}\) を測って固定することで移行できる。
Gauge fixing view では、deformation step の安全性は親 subsystem code の距離で評価できる。 直観的には、変形中に gauge として無視される自由度を使って、低重み operator が logical を短絡しないかを確認する。 実務では次をチェックする。
これは QEC として強力な例ではないが、stabilizer replacement の構造を示す。 \(Z\)-repetition code を \[ \Sg_Z=\langle Z_1Z_2\rangle, \qquad \bar Z=Z_1,\quad \bar X=X_1X_2 \] とする。一方、\(X\)-repetition code は \[ \Sg_X=\langle X_1X_2\rangle, \qquad \bar X'=X_1,\quad \bar Z'=Z_1Z_2. \] \(X_1X_2\) は \(Z_1Z_2\) と反可換ではない、実は可換なので同時に固定すると Bell state になり \(k=0\) になる。 Code switching として扱うなら、どの logical を測って消費するか、どの logical を新 code の logical として残すかを明示しなければならない。 この toy example が教えるのは、stabilizer を増やすことは logical qubit を減らすことであり、単なる「形の変更」ではないという点である。
Code deformation は、紙の上では境界を変えるだけに見えるが、実機では制御システム全体の問題である。 以下では、surface-code workflow に入れるときの実装粒度で整理する。
変形 protocol を実行する compiler / control stack は、少なくとも次の情報を時刻ごとに持つ必要がある。
| データ | 内容 | 注意 |
|---|---|---|
| qubit map | data / syndrome / routing / disabled qubit の区別 | defect や leakage により runtime で変わる場合がある。 |
| check schedule | 各 stabilizer の support、測定 ancilla、CNOT 順序 | hook error の向きを含める。 |
| check identity | 時刻をまたいで「同じ syndrome」と比較できるか | 変形時には product relation が必要。 |
| logical frame | logical Pauli basis と byproduct signs | Clifford frame と Pauli frame を分けるとよい。 |
| decoder graph | space/time edge、boundary、edge weights | ノイズ bias と測定失敗確率を反映する。 |
Standard surface code の重み 4 check では、ancilla を準備し、data qubit と CNOT し、ancilla を測定する。 変形時には重み 2/3 の boundary check、重み 5 以上の twist check、bridge check、または mixed Pauli check が現れる。 Mixed check \(XZXZ\) は、各 data qubit に対応する CNOT / CZ / basis rotation を組み合わせて測る。
MWPM / union-find / belief matching / tensor network decoder など、どの decoder でも、変形中の check identity を知る必要がある。 固定 memory の decoder graph を使い回すだけでは、merge の parity outcome や split の data measurement outcome が正しく入らない。
実機では一時的に使えない qubit、leakage、cosmic ray による burst、calibration drift が起きる。 Code deformation は、欠陥周辺の stabilizer を停止し、patch を迂回・拡大・縮小することで QEC capability を保つ方法として使える。 この場合は「logical gate のための deformation」ではなく「faulty resource を避ける deformation」になる。
Dynamic defect mitigation では、単に欠陥 qubit を hole として扱うだけでは距離が落ちることがある。 迂回後の最短 logical string、欠陥 hole と外部境界の距離、decoder graph の重み、routing region の混雑を同時に最適化する必要がある。
Code deformation の多くは physical correction を即時に打たず、Pauli frame / Clifford frame を更新する。 たとえば CNOT lattice surgery の \(m_1,m_2,m_3\) は、後続の logical measurement basis を変える classical metadata である。 Frame が物理 gate schedule と非同期になると、特に adaptive T gate、magic state injection、feed-forward 測定で問題が出る。
状況。 距離 \(d=5\) の rotated patch の上側 Z-boundary を 1 列外側に広げたい。
Seam に 3 つの Z-type parity check \(z_1,z_2,z_3\) があるとする。ある round の測定結果が \[ z_1=+1,\quad z_2=-1,\quad z_3=+1 \] なら、raw product は \[ m_{ZZ}^{\mathrm{raw}}=z_1z_2z_3=-1. \] ただしこれは raw parity であり、measurement error や seam 近傍 data error を decoder で補正した後の parity を logical measurement outcome として使う。
測定結果が \(m_1=-1\)、\(m_2=+1\)、\(m_3=-1\) だったとする。 \(m_1m_3=+1\) なので target の \(X_t\) correction は不要。 \(m_2=+1\) なので control の \(Z_c\) correction も不要。 したがって Pauli byproduct は identity である。
一方、\(m_1=-1\)、\(m_2=-1\)、\(m_3=+1\) なら、\(m_1m_3=-1\) かつ \(m_2=-1\) なので \[ Z_c X_t \] を Pauli frame に記録する。
\(Z\)-string が e-m domain wall を 1 回横切ると、壁の反対側では \(X\)-string として続く。 したがって全体の logical operator は CSS Pauli ではなく、support 上で \(Z\) と \(X\) が混じった Pauli product になる。 これが twist code における mixed stabilizer と \(Y\)-type logical measurement の源である。
下の selector は、同じ概念図を deformation step に応じて DOT で書き換え、d3-graphviz で再描画する。 図は抽象化されており、実際の qubit 座標ではなく logical / boundary の関係を示す。
各問題は解答を折りたためる。計算問題では、まず stabilizer rank、commutation、logical operator の対応を紙に書いてから解くとよい。
問題。 \([[n,k]]\) stabilizer code で、独立な logical operator \(M\in\N(\Sg)\setminus\Sg\) を測定して stabilizer に追加した。新しい \(k'\) は何か。
解答。 rank が 1 増えるので \(k'=n-(\rank\Sg+1)=k-1\)。これは logical Pauli measurement が logical qubit 1 個分の自由度を消費することを意味する。
問題。 測定 operator \(M\) が stabilizer generator \(g_1,g_2\) と反可換し、他とは可換だとする。可換な新 generator set を構成せよ。
解答。 \(g_1\) を \(mM\) で置き換え、\(g_2\) を \(g_2g_1\) に置き換える。\(g_2g_1\) は \(M\) と可換で、他の generator との可換性も保てる。
問題。 本稿の convention で 2 patch の Z-boundary を merge した。測定される logical product は何か。
解答。 \(\bar Z_A\bar Z_B\)。Seam の Z-type check product が、旧 patch の Z-boundary を結ぶ logical Z string の product と等価になる。
問題。 本稿の convention で 2 patch の X-boundary を merge した。測定される logical product は何か。
解答。 \(\bar X_A\bar X_B\)。CSS duality により Z-merge の X 版である。
問題。 CNOT lattice surgery で \(m_1=+1,m_2=-1,m_3=-1\)。必要な Pauli frame correction は何か。
解答。 \(m_2=-1\) なので \(Z_c\)。また \(m_1m_3=-1\) なので \(X_t\)。よって \(Z_cX_t\)。
問題。 \(m_1=-1,m_2=+1,m_3=-1\) のときは?
解答。 \(m_1m_3=+1\)、\(m_2=+1\) なので correction は identity。
問題。 Seam check product が logical parity になるなら、なぜ 1 round だけ測って終わりにしないのか。
解答。 1 個の measurement error で parity product が反転しうるため、time-like distance が 1 になる。距離 \(d\) の logical measurement にするには複数ラウンド測り、measurement fault と data fault を decoder で同時に推定する。
問題。 Z-hole pair で \(\bar Z\) と \(\bar X\) の代表を述べよ。
解答。 \(\bar Z\) は 2 つの Z-hole を結ぶ Z string。\(\bar X\) は片方の hole を一周する X loop。両者は 1 回交差するため反可換。
問題。 Hole pair encoding の code distance を決める幾何学的量を 3 つ挙げよ。
解答。 hole 間距離、hole 周長、hole から外部境界または別 defect までの距離。最小 nontrivial logical string / loop が distance を決める。
問題。 新 qubit を追加して境界を grow したとき、初回 syndrome を単純に前 round と比較できない場合がある。なぜか。
解答。 新 check は前 round に存在しないか、旧 stabilizer product から予測できない成分を含むため。初回値は preparation randomness または gauge choice として扱い、decoder graph の boundary condition にする。
問題。 e-m domain wall を横切る \(Z\)-string はどうなるか。
解答。 壁の反対側で \(X\)-string として続く。したがって operator は support 上で Pauli label が混在する。
問題。 Planar patch の corner を twist と見なせる理由を説明せよ。
解答。 Corner は Z-boundary と X-boundary が接する場所であり、anyon condensation rule が切り替わる端点である。これは e-m domain wall の端点と同様に、string type の変換点として振る舞う。
問題。 Code deformation と lattice surgery を gauge fixing として見る利点を 2 つ挙げよ。
解答。 1 つ目は、旧 code と新 code の logical 対応を stabilizer algebra で厳密に追えること。2 つ目は、変形中の subsystem distance を使って fault tolerance を評価しやすいこと。
問題。 Deformation 後の logical basis が正しいか確認するには、どの commutation relation を保存すべきか。
解答。 同一 qubit の \(\bar X_i\) と \(\bar Z_i\) は反可換、異なる qubit の logical は可換、同種同士は可換という symplectic form を保存する必要がある。
問題。 変形中の bridge check で hook error の向きが重要になる理由は?
解答。 1 つの ancilla fault が 2 data error に広がり、そのペアが最短 logical string 方向に並ぶと、実効距離が下がるから。Bridge や boundary では通常 layout と最短方向が変わる場合がある。
問題。 Split 時に cut qubit の単一 Pauli 測定結果を捨ててはいけない理由は?
解答。 その product が新しくできた stabilizer や logical operator の sign を決めるため。無視すると Pauli frame が誤り、後続 logical measurement の符号が反転する。
問題。 一時的に使えない data qubit が patch 内に現れた。単にその周囲の stabilizer を止めるだけで十分とは限らない理由は?
解答。 欠陥が hole として振る舞い、外部境界や他の defect との距離が短いと logical string が短絡するため。decoder graph と layout を再設計し、必要なら patch を拡大・迂回させる。
問題。 Z-merge で raw seam product が \(-1\) だった。この \(-1\) は physical correction を直ちに打つべきか。
解答。 通常は physical correction ではなく logical measurement outcome として Pauli frame / classical control に入れる。実際の値は decoder で補正した parity を使う。
問題。 Twist/corner deformation では Pauli frame だけでなく Clifford frame が必要になる場合がある。なぜか。
解答。 Hadamard や phase のように logical Pauli basis 自体を写す操作が起きるため。単なる Pauli sign ではなく、\(X,Z,Y\) のラベル変換を tracking する必要がある。
問題。 target \(d=9\) の patch を変形中に幅 \(w=5\) の neck でつないだ。単純な空間 bottleneck はいくつか。
解答。 \(\min(d,w)=5\)。この部分により operation distance が最大でも 5 に落ちる可能性がある。
問題。 Seam check product が logical product に等しい、という主張で「stabilizer を除いて」とは何を意味するか。
解答。 2 つの Pauli operator が stabilizer の積だけ異なるなら、code space 上では同じ logical action を持つ。したがって local check の product が logical string と stabilizer の積になれば、測定 outcome は logical parity を与える。
問題。 CNOT protocol の最初の測定 \(Z_cZ_a\) の projector を書け。
解答。 \(P_{m_1}^{Z_cZ_a}=\frac{1+m_1 Z_cZ_a}{2}\)。ここで \(m_1=\pm1\)。
問題。 Code deformation は surface code 固有か。
解答。 固有ではない。Stabilizer / subsystem code の測定集合を時間的に変える一般手法なので、color code、subsystem code、LDPC code、code switching などにも広がる。ただし幾何学的直観と locality は code ごとに異なる。
問題。 Deformation-aware decoder に渡すべき情報を 4 つ挙げよ。
解答。 時刻ごとの check support、check identity / product relation、boundary node と time-like edge、measurement outcome と edge weights、disabled qubit map、logical parity vertex など。
問題。 標準 CSS surface code の X/Z boundary merge だけで \(Y\)-logical measurement が直接でない理由は?
解答。 \(Y=iXZ\) は X/Z の混合であり、CSS check product だけでは単純な X-boundary または Z-boundary merge として表しにくい。Twist、basis change、ancilla protocol などが必要になる。
問題。 Code deformation は transversal gate と何が違うか。
解答。 Transversal gate は各 code block の対応する物理 qubit に並列 gate をかける unitary 操作。Code deformation は stabilizer / gauge 測定の集合を変え、しばしば non-unitary measurement と Pauli frame update により logical operation を実現する。
問題。 Code deformation protocol を論文・実装で提案するとき、最低限示すべきものを 5 つ挙げよ。
解答。 目的の logical map、時刻ごとの stabilizer/check set、測定 outcome からの frame update、変形中の distance または fault-distance 解析、decoder graph または decoding rule、syndrome extraction circuit と hook error 解析、resource overhead。
rough/smooth は文献により X/Z edge の呼び方が異なる。常に「どの Pauli string が終端できるか」で判断する。
Merge の check product は noisy。decoder 後の logical measurement outcome を使う。
変形中の neck、hole 距離、time-like boundary が operation distance を決める。
Split の単一 qubit 測定値は stabilizer sign と logical frame に入る。
変形 check は形が違う。既存 schedule が hook-error avoiding とは限らない。
Twist/corner では Pauli label の交換が起こる。Clifford frame を明示する。
Code deformation は文献ごとに用語・図式・境界 convention が異なる。以下の順に読むと、幾何学的直観から gauge fixing の定式化まで繋がりやすい。