フォールトトレラント量子計算
AI 生成・木下が未勉強
量子情報入門 第2章 §2.9
ここまでは静止した量子情報の保護を論じてきたが、実際の計算では、状態準備・ゲート・測定・配線のすべてが雑音に冒される中で計算を進めねばならない。素朴に「復号 ゲート 再符号化」を行うと復号中の誤りに無防備になるので、符号化されたまま論理ゲートを実行する。これがフォールトトレラント量子計算である。
誤りはどう伝播するか
設計の敵は誤りの伝播である。これを定量的に追う道具が、前章で鍛えた共役である。CNOT(ユニタリ )の直前に第1ビットで 誤りが起きたとすると、回路全体の作用は
——「完璧なCNOTの後に、両方のビットに 誤りが起きた」ことと等価である。共役表のとおり は制御から標的へ増殖し、 は標的から制御へ逆流する。1個の誤りが2個に化ける——これを符号ブロックの内部で許すと、訂正能力()が一撃で飽和してしまう。
ゲート自身が故障する場合も同じ枠組みで扱える。雑音のあるCNOTの量子操作 は ( は完璧なCNOT)と書き直せるので、「完璧なゲート+その後の小さな雑音(Pauli誤りが確率 程度で乗る)」とモデル化してよい。以降、誤りは が確率的に乗るものとして数える(誤りの離散化により、これで一般性を失わない)。
要点
フォールトトレラントな手続きの定義:手続き中のただ1つの部品(ゲート・測定・配線・状態準備)が故障しても、出力の各符号ブロックに生じる誤りが高々1個にとどまること。測定の手続きにはさらに、1部品の故障のもとでも測定結果自体が確率 で正しいことを要求する(結果は古典制御に使われ、誤った結果は多数のビットに波及するため)。
横断的ゲート
最も簡単にフォールトトレランスを実現するのが、符号の各物理ビットに独立にゲートを作用させる横断的(transversal)実装である。ビット同士が一切相互作用しないので、1部品の故障は1ビットにしか影響できず、定義が自動的に満たされる。誤りの通過も無害である:たとえば横断的 の直前に 誤りがあっても、 より「完璧な の後の 誤り1個」に化けるだけで、誤りの個数は増えない。
Steane符号では次が横断的に実装できる(論理演算子 , を共役でどう動かすかを確かめればよい):
- Pauli:、。
- Hadamard: は共役で を交換する——論理レベルでHadamardの定義を満たす。
- 位相ゲート:素朴な は と符号が余るので、 で符号を直した が論理 になる。
- CNOT:2つの符号ブロックの対応するビット同士を7本のCNOTで結ぶ。CNOTは誤りを増殖させるが、増殖先は別ブロックの対応ビットであり、各ブロック内では高々1個のまま——「ブロックをまたぐ伝播は許容、ブロック内の増殖は禁止」という設計原理の見本である。
が揃ったので、前章の定理によりClifford群のすべてがフォールトトレラントに実行できる。しかしGottesman–Knillの教えるとおり、Cliffordだけでは古典を超えられない。残るは ()ゲートである。
フォールトトレラント ゲート
はSteane符号で横断的に実装できない。代わりに測定と古典制御で「ゲートを注入する」構成を用いる。用意するのは補助の論理ビット1つ、状態
である(この状態の準備が非自明な部分で、後述)。手順は3手:
(1) データ を標的、 を制御として、横断的CNOTを作用させる。状態を書き下すと
(添字 を省略;第1因子が元 側)。
(2) 第2レジスタ(元データ側)を計算基底でフォールトトレラントに測定する。
(3) 結果が ならそのまま、 なら残ったレジスタに を適用する。 となり、どちらの場合も残りは (全体位相を除く)—— ゲートが完成する(両分岐とも状態ベクトル計算で数値検証済み)。
この構成の要点は、難しいゲート の適用を「特殊な状態 の準備」に置き換えたことである。回路本体はCNOT・測定・(いずれもフォールトトレラント化済み)だけで、これは第4章のテレポーテーションの発想の転用——ゲートテレポーテーション——である。 のような状態は魔法状態(magic state)と呼ばれ、その供給がフォールトトレラント計算の律速資源になる。
では 自身はどう用意するか。 は演算子 の固有値 の固有状態である( による)。そこで論理 を用意し、 を次節の方法でフォールトトレラントに測定する。結果 ならそのまま 、結果 なら より横断的 1発で 固有状態に直せる。同じ思想の(より複雑な)構成でToffoliゲートもフォールトトレラント化でき、——普遍ゲート集合の全部——が揃う。
フォールトトレラント測定
残る部品は「演算子 (固有値 、横断的実装 を持つ)のフォールトトレラントな測定」である。前章の1補助ビット回路(補助 から制御 )をそのまま符号ブロックに使うと、1つの補助ビットがすべてのデータビットに触るため、補助の誤り1個が全データへ増殖して失格である。
解決は猫状態 (データビットと同数の補助)を使うことである。
- 準備と検証:猫状態を作る回路自体はフォールトトレラントでないので、作った後にペアのパリティ を追加ビットで検査し、不合格なら捨てて作り直す(検証)。
- 制御 の横断的適用:猫状態の第 ビットを制御に、データ第 ビットへ制御 を1対1で張る。猫が 成分なら何もせず、 成分なら符号化された が丸ごと作用する——1補助ビット回路と同じキックバックが起こるが、補助とデータの接触が1対1なので誤りはブロック内で増殖しない。
- 復号と多数決:猫状態をCNOT列と で1ビットに畳んで測る。補助内の 誤りはデータへは伝播しないが測定結果を狂わせうるので、全体を3回繰り返して多数決を取る。1回の結果が狂うには故障が要るから、多数決が狂う確率は に抑えられる。/ 誤りは高々1個しか補助に残らないことが示せ、データへの影響も高々1個——定義の両条件が満たされる。
が1論理ビットの観測量である必要はない。スタビライザー生成元( のようなPauliテンソル積)の測定にもそのまま一般化でき、これでフォールトトレラントな症候測定・符号化(論理 準備=全生成元と の測定+符号合わせ)・最終読み出し(論理 の測定)のすべてが手に入る。
木下の勉強ステータス
木下はまだこの記事を勉強していません。
AI(Claude)が書いた教材を、木下が勉強しながら公開しています。式と数値は検算していますが、誤りが残っているかもしれません。誤りのご指摘・削除のご依頼をいただければ直します。 連絡先:support@tecktom.com
← AI生成教科書『基礎理論』の記事一覧へ