トポロジカルな繰り返し符号【誤り耐性量子計算】
Nov. 4, 2023, 12:59 a.m. edited Nov. 4, 2023, 1:38 p.m. $$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$繰り返し符号というと、よく Shor の符号を想像される場合が多い(実際、 Google 翻訳で「繰り返し符号 量子」と検索するとこうなる)が、 IBM Qiskit のページにもあるようにトポロジカル符号の繰り返し符号も存在する。そのトポロジカルなタイプの繰り返し符号に最近よく遭遇し、これはなんだとなりがちだったので、ここに自分の理解をまとめておく。
まず、 2 ラウンドの符号距離 2 の繰り返し符号は次のようになる:
これはビット反転エラーを検知することができる。データ量子ビットは上下のビットであり、補助ビットは中央となる。初めの 2 つの CNOT は 表面符号で各サイクルで使われる回路は何を表しているのか【量子計算】 の \(Z\) スタビライザーのところで書いたように、 \(Z_0Z_1\) の固有状態への射影である。ゆえに、途中でビット反転が 1 つ起きると \(M_0\) にて固有値 \(-1\) となるため検知できる。しかし、 2 つ起きると打ち消しあって検知できない。これは符号距離が 2 であるため論理エラーとなるためである。となると、逆に論理演算子は \(Z_L=Z_0Z_1\) とすれば良いのだろう。
2 ラウンド目でも同様に \(M_2\) でエラーを検知するが、実際には \(M_0,M_2\) の排他的論理和が用いられる。これにより検査行列が疎に保たれるのだろう。それから最後に \(M_1,M_2,M_3\) の排他的論理和でもエラー検知をする。これにより、最後の CNOT と測定の間で起きたエラーも検知できるらしい。
最後に、論理測定については、 \(M_1\) を測定するだけで十分なようだ。これで論理状態が \(\ket{0}_L\) であれば 0 が、 \(\ket{1}_L\) であれば 1 が手に入る。
…まあ、実用的には表面符号使う方がいいけどね!!(こっちの方がシンプルだから例にあがりやすいのだろう)
Tags
- #Python (25)
- #量子力学 (20)
- #量子情報 (17)
- #Unity (11)
- #Outer Wilds (10)
- #AoE2 (8)
- #Mac (8)
- #数学 (7)
- #Quantum Zoo (6)
- #意識 (5)
- #NumPy (5)
- #Bash (5)
- #Linux (5)
- #相対論 (4)
- #シミュレーション (4)
- #Docker (4)
- #Android (4)
- #Qiskit (4)
- #Rust (3)
- #PyO3 (3)
- #GitHub (3)
- #Django (2)
- #情報理論 (2)
- #LaTeX (2)
- #AR (2)
- #Git (2)
- #iOS (2)
- #C++ (2)
- #正規表現 (2)
- #電磁気学 (1)
- #Google Drive (1)
- #Overleaf (1)
- #Let's Encrypt (1)
- #ポケモン (1)
- #AdMob (1)
- #Autoya (1)
- #docopt (1)
- #SymPy (1)
- #AWS (1)
- #Twitter (1)
- #URP (1)
- #iMovie (1)
- #論文 (1)
- #PyTorch (1)
- #C# (1)