表面符号と格子手術
誤り訂正量子ビットの本命がなぜ表面符号なのかを、格子の構造・距離・しきい値から解き明かす。格子手術で論理CNOTがどう実装されるかまで、実機スケールの設計原理を原理からつかめます。
- 1.表面符号はデータ量子ビットを2次元格子に並べ、各面でZ型(ZZZZ)とX型(XXXX)の近接4ビットスタビライザだけを測る。すべての測定が局所的なので超伝導・中性原子チップに素直に載り、しきい値が約1%と高い。
- 2.論理量子ビットは格子の対辺(境界)を結ぶ誤りチェーンで表され、その最短長が符号距離dになる。dを上げる(格子を大きくする)ほど論理誤り率が指数的に下がるが、CNOTのような論理演算を格子内でどう実装するかが別問題として残る。
- 3.格子手術は2枚の論理パッチの境界を一時的に併合(merge)・分離(split)し、その境界スタビライザ列の積として論理ZZやXXをまとめて測る手法。この測定と補助状態を組み合わせて論理CNOTを近接操作だけで実現し、面積効率よくスケールする。
なぜ表面符号が実機の本命なのか
量子誤り訂正の一般論は「状態は測らずスタビライザ(パリティ)だけを測り、重ね合わせを守ったまま誤り位置を突き止める」でした。理論上はもっと符号率の良い符号もありますが、実機に載るかは別問題です。超伝導量子ビットや中性原子アレイは隣接する量子ビット同士しか高精度に相互作用できないからです。遠く離れた量子ビットにまたがるスタビライザを要求する符号は、いくら性能が高くても物理チップに実装できません。
表面符号(surface code)はこの局所性の制約を満たしつつ、しきい値が約1%と高い——つまり現実のハードウェアの物理誤り率(0.1〜1%)でようやく意味を持つ水準です。だからGoogle・IBMをはじめ多くの開発が表面符号を主軸に据えています。本稿では格子の構造・距離・しきい値を押さえ、その上で論理演算をどう実装するか——格子手術(lattice surgery)——まで踏み込みます。
2次元格子:データ量子ビットと測定量子ビット
表面符号の格子には2種類の量子ビットが交互に並びます。役割がまったく違うので最初に分けます。
- データ量子ビット(data qubit):論理状態そのものを担う量子ビット。格子の頂点(またはセルの角)に置かれ、これらの重ね合わせが符号化された論理情報を保持します。
- 測定量子ビット(measure qubit / ancilla):スタビライザのパリティを転写して測るための補助量子ビット。各面(プラケット)の中心に置かれ、周囲4つのデータ量子ビットとだけ相互作用します。
面には市松模様(チェッカーボード)状に2種類のスタビライザが割り当てられます。
表面符号の2種類のスタビライザ(各々が近接4データ量子ビットに作用)
Zタイプ(Z面): 面を囲む4データ量子ビットの Z⊗Z⊗Z⊗Z パリティ → X(ビット反転)誤りを検出
Xタイプ(X面): 面を囲む4データ量子ビットの X⊗X⊗X⊗X パリティ → Z(位相反転)誤りを検出
Z面とX面は互いに隣接するように配置され、任意の2つのスタビライザは共有する量子ビットがちょうど0個か2個になるよう組まれます。これが決定的で、パウリの反交換は共有ビットが偶数個なら打ち消し合うため、すべてのスタビライザが互いに可換になります。可換だからこそ全生成元を同時に測れ、論理状態を壊さずにシンドロームを得られるわけです。実装では各測定量子ビットにアンシラを介してパリティを転写する回路(CNOTの連鎖とアンシラ測定)を、1サイクルごとに繰り返し実行します。
表面符号の強みは、どんなに格子を大きくしても各スタビライザが触るのは常に近接4量子ビット(境界では2〜3)だけという点です。符号距離を上げても測定回路の複雑さは増えず、必要なのは格子の面積を広げることだけ。これが「配線が固定の隣接格子」という超伝導チップの制約に理想的に合致し、ハードウェアのスケールを現実的にします。
シンドロームと誤りチェーン
1個のデータ量子ビットにX誤りが起きると、それに隣接する2つのZ面スタビライザが同時に -1(反交換)を返します。誤りが連続した鎖(チェーン)を成すと、鎖の内部では -1 が打ち消し合い、チェーンの両端でだけスタビライザが -1 を出します。つまりシンドロームは「点」ではなく「-1を出したスタビライザのペア(誤りチェーンの端点)」として現れます。
古典側で走る**復号器(decoder)は、この -1 の端点群を最も尤もらしく結ぶ誤りチェーンを推定します。代表格が最小重み完全マッチング(MWPM: Minimum-Weight Perfect Matching)**で、-1点を最短距離のペアに結んで訂正すべきデータ量子ビットを割り出します。近年は同等以上の精度で高速なUnion-Find復号器や、機械学習ベースの復号器も使われます。
復号の流れ(1サイクルぶん)
1. 全スタビライザを測り、-1 を返した測定量子ビットの位置を集める(シンドローム)
2. 直前サイクルとの差分をとり、今サイクルで新たに反転した端点を確定する
3. 復号器(MWPM 等)が端点を最短経路で結び、誤りチェーンを推定する
4. 推定チェーンに対応する Pauli 訂正を記録(実際の物理操作はせず追跡だけ)する
スタビライザ測定に使う回路もゲートとアンシラで組む以上、測定結果そのものが誤ります。そこで表面符号は同じ測定を距離 d 回ぶん時間方向に繰り返し、シンドロームを(空間2次元+時間1次元の)3次元格子として復号します。誤りチェーンは時空を貫く曲線となり、測定誤りは時間方向のチェーンとして訂正されます。「1回測って終わり」ではない点が実装の肝です。
論理量子ビットと符号距離
論理情報はどこに宿るのでしょうか。答えは格子の大域的な構造(トポロジー)です。すべてのスタビライザと可換でありながら、どのスタビライザの積でも書けないパウリ演算子が論理演算子です。
平面型の表面符号(planar code)では、格子の境界を2種類に作り分けます。データ量子ビットの列がむき出しになる**粗い境界(rough boundary)と、測定量子ビットが縁に来る滑らかな境界(smooth boundary)**です。論理演算子はこの境界を結ぶ演算子の帯として定義されます。
- 論理Z(Z_L):対向する2つの滑らかな境界を結ぶ、データ量子ビット列上のZ演算子の連鎖。
- 論理X(X_L):対向する2つの粗い境界を結ぶ、データ量子ビット列上のX演算子の連鎖。
Z_L と X_L は格子上で必ず1回だけ交差するため反交換し、正しく1組の論理パウリを成します。ここで符号距離 d は「論理演算子を実現する最小の物理演算子数」=境界から境界へ渡る最短の連鎖長で決まります。距離 d の符号は (d-1)/2 個までの誤りを確実に訂正します。論理誤りが起きるのは、復号器が見逃した誤りチェーンが境界間を丸ごと貫いてしまうときだけ——だから距離が長いほど、そうした「貫通」は指数的に起こりにくくなります。
| 観点 | 物理量子ビット | 論理量子ビット(表面符号) |
|---|---|---|
| 情報の担い手 | 単一の量子ビット | d×d 格子に符号化された大域状態 |
| Z 演算子 | その量子ビットの Z | 滑らかな境界間を結ぶ Z の連鎖 |
| X 演算子 | その量子ビットの X | 粗い境界間を結ぶ X の連鎖 |
| 誤り耐性 | なし(生の誤り率 p) | (d-1)/2 個まで訂正、論理誤り率 ~ (p/p_th)^(d/2) |
| コスト | 1 量子ビット | 距離 d で概ね 2d²-1 量子ビット規模 |
しきい値:スケールが効く条件
表面符号が実用候補たり得る核心がしきい値定理です。物理誤り率 p が符号固有のしきい値 p_th を下回れば、距離 d を上げるほど論理誤り率 p_L が指数的に下がります。
p が p_th 未満のとき: p_L ~ (p / p_th)^(d/2)
p が p_th 未満なら p/p_th が1未満となり、指数 d/2 を大きくする(格子を広げる)ほど p_L は急速に0へ向かいます。逆に p が p_th を超えると、格子を大きくするほど論理誤り率は悪化します。表面符号のしきい値は約1%と、既知の局所符号の中でも際立って高く、これが「物理誤り率0.1〜1%の現実のハードウェア(ハードウェア実装方式参照)」で初めて意味を持つ理由です。代償は面積で、実用的な論理量子ビット1個に距離に応じ数百〜数千の物理量子ビットを要します。
格子手術:論理演算をどう実装するか
ここからが本稿の主題です。論理量子ビットを守れても、その上で論理CNOTのような2量子ビット演算を実行できなければ計算になりません。素朴には論理演算子どうしを直接相互作用させたいところですが、それは遠隔の量子ビット間操作を要し、局所性を壊します。**格子手術(lattice surgery)**はこれを、隣接パッチの境界を一時的にくっつけたり切ったりする近接操作だけで実現します。
鍵は2つの操作です。
- 併合(merge):隣り合う2枚の論理パッチの間にある境界に、新たに境界をまたぐスタビライザ列を導入して測定する。この境界スタビライザ列の総積は、2パッチの論理演算子の積(たとえば
Z_L ⊗ Z_L)に一致するよう設計される。よって併合の測定は、2つの論理量子ビットの同時パリティZ_L Z_L(またはX_L X_L)をまとめて測ることに等しい。 - 分離(split):導入した境界スタビライザの測定をやめ、元の2枚の独立したパッチに戻す。併合→分離の1往復で、論理状態を壊さずに joint パリティ1つぶんの情報だけを取り出せる。
境界の種類で測る対象が変わります。滑らかな境界どうしを併合すれば Z_L Z_L、粗い境界どうしなら X_L X_L を測れます。
論理 ZZ 測定(滑らかな境界どうしの併合)の擬似コード
併合:
2枚のパッチの隣接する滑らかな境界に、境界をまたぐ Z 型スタビライザ列を追加
追加スタビライザを含む全スタビライザを d サイクル測定する
追加境界スタビライザ列の総積 = Z_L(左) · Z_L(右) の測定結果を得る
分離:
追加した境界スタビライザの測定を停止し、2枚に戻す
出力:
M_ZZ = ±1 (論理 Z_L Z_L の固有値。個々の Z_L は不定のまま)
格子手術の妙は、Z_L Z_L という積の固有値だけを取り出し、Z_L 単体・X_L 単体には触れない点です。これはちょうど2量子ビットの安定化測定と同じで、量子情報を保ったまま相関だけを注入します。この「joint 測定」を測定ベースの回路(測定+補助状態+古典条件付き Pauli 訂正)に組み込むと、論理 CNOT を近接操作だけで構成できます。
格子手術で論理CNOTを組む
論理CNOTは、joint 測定と補助の論理量子ビット(アンシラパッチ)を組み合わせて構成します。要は「テレポーテーション型のゲート」で、直接ビットどうしを結ぶのではなく、測定と条件付き訂正で等価な作用を実現します。
格子手術による論理 CNOT(制御 C, 標的 T, 補助 A を用いる)
1. アンシラパッチ A を論理 |+>_L に初期化する
2. C と A の間で joint 測定 M_ZZ = Z_L(C) Z_L(A) を実行(併合→分離)する
3. A と T の間で joint 測定 M_XX = X_L(A) X_L(T) を実行(併合→分離)する
4. A を論理 Z 基底で測定し、その結果 m_A を得る
5. M_ZZ, M_XX, m_A の測定結果に応じて C・T に論理 Pauli 訂正を条件付きで適用する
各 joint 測定はどれも隣接パッチ間の近接スタビライザ測定なので、全工程が局所操作だけで完結します。条件付きの論理Pauli訂正は物理ゲートを打つ必要すらなく、Pauliフレームとして古典的に追跡(記録)するだけで済むのが普通です。この「測定と古典追跡でゲートを実現する」流儀が、フォールトトレラント量子計算の実装様式そのものです(量子ゲートと回路の可逆・ユニタリなゲート像とは実装レイヤーが異なる点に注意)。
| 論理演算の実装法 | 接続要件 | 面積オーバーヘッド | 備考 |
|---|---|---|---|
| トランスバーサルゲート | パッチ間の全対全的な横結合 | 小さいが局所性を破る | 表面符号では2量子ビットゲートに使いにくい |
| ブレイディング(欠陥/ホール) | 格子内で欠陥を引き回す | 大きい(引き回し経路ぶん) | 初期の表面符号提案の主流 |
| 格子手術 | 隣接パッチの境界併合のみ | 小さい(隣接1辺) | 近接操作だけ・面積効率が良く現在の主流 |
歴史的には、初期の表面符号は格子に**欠陥(defect / ホール)を開けてそれを互いに引き回すブレイディング(braiding)**で論理演算を実装していました(2000年代後半〜2010年代前半)。しかしブレイディングは引き回しの経路ぶん広い面積と時間を食います。2012年前後に提案された格子手術は、隣接パッチの境界を併合するだけで joint 測定を実現でき、必要なのは接する1辺だけ——面積・時間ともに効率が良く、隣接結合しか持たないハードウェアに素直なため、現在のフォールトトレラント設計(表面符号コンパイラや資源見積り)の標準的な構成要素になっています。
何がまだ足りないか:非クリフォード演算
格子手術(と初期化・測定)で組めるのはクリフォード演算——CNOT・H・S とその合成——までです。クリフォードゲートだけでは万能量子計算にならず(古典効率でシミュレートできてしまう、Gottesman–Knill 定理)、非クリフォードなTゲートやToffoliを1つ以上足して初めて万能になります。
表面符号ではTゲートを直接フォールトトレラントに実装できないため、あらかじめ高品位な魔法状態(magic state)を別領域で蒸留(magic state distillation)して用意し、それを格子手術で論理回路に注入(テレポート)します。この魔法状態蒸留が、実は大規模フォールトトレラント計算の資源コストの大半を占めることが多く、NISQとデコヒーレンスで見た「なぜ実用が遠いのか」の答えの核心部です。格子手術はクリフォード層を面積効率よく捌き、その土俵の上に魔法状態注入を載せる——この分業が現在の設計思想です。
- 格子の構造:データ量子ビットと測定量子ビット、Z面(ZZZZ→X誤り検出)とX面(XXXX→Z誤り検出)、全スタビライザが可換(共有ビットは0か2個)。
- 距離と論理演算子:論理 Z/X は対向する境界を結ぶ演算子の連鎖、符号距離 d はその最短長。
p_L ~ (p/p_th)^(d/2)、しきい値 約1%。 - 格子手術:隣接パッチの境界を併合(merge)・分離(split)して joint パリティ
Z_L Z_L/X_L X_Lをまとめて測る。近接操作だけで論理CNOTを構成、面積効率でブレイディングを置き換えた。 - 万能性の壁:クリフォードは格子手術で足りるが、Tゲート(非クリフォード)は魔法状態蒸留+注入が別途必要で、これが資源コストの主因。
まとめ
表面符号は、データ量子ビットと測定量子ビットを2次元格子に並べ、近接4ビットのZ型・X型スタビライザだけでシンドロームを得る局所符号です。論理量子ビットは格子の境界を結ぶ演算子の連鎖として大域的に符号化され、その最短長が符号距離 d、p_L ~ (p/p_th)^(d/2) としきい値約1%が「規模を上げれば信頼性が上がる」保証を与えます。そして論理演算は、隣接パッチの境界を一時的に併合・分離して joint パリティをまとめて測る格子手術で実装され、論理CNOTを近接操作だけで、ブレイディングより面積効率よく実現します。残る非クリフォード(Tゲート)は魔法状態蒸留と注入で補う——この「表面符号で守り、格子手術で繋ぎ、魔法状態で万能性を足す」三層構造が、実用フォールトトレラント量子計算の現在の設計図です。基礎は量子誤り訂正を、実装の物理制約はハードウェア実装方式を併せて参照してください。
量子コンピューティング Article
表面符号と格子手術を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
表面符号
比較で見る軸
難易度: advanced / カテゴリ: 量子コンピューティング / タグ数: 6
導入後に効く点
論理量子ビットは格子の対辺(境界)を結ぶ誤りチェーンで表され、その最短長が符号距離dになる。dを上げる(格子を大きくする)ほど論理誤り率が指数的に下がるが、CNOTのような論理演算を格子内でどう実装するかが別問題として残る。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- 量子コンピューティング
- タグ数
- 6
判断チェックリスト
- 自社の用途が「表面符号 / 格子手術」に近いか確認する。
- 強みである「表面符号はデータ量子ビットを2次元格子に並べ、各面でZ型(ZZZZ)とX型(XXXX)の近接4ビットスタビライザだけを測る。すべての測定が局所的なので超伝導・中性原子チップに素直に載り、しきい値が約1%と高い。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。