メインコンテンツへスキップ
このプロジェクトはベータ版です。バグを見つけましたか?GitHub Issueを開く。質問やアイデアがありますか?Discussionsで質問する — フィードバックをお待ちしています!
このページの翻訳品質はいかがですか?

9量子ビットのShor符号

ここでは、前節で取り上げた2つの符号を組み合わせることで得られる量子誤り訂正符号、9量子ビットShor符号を扱います。2つの符号とは、1回のビット反転誤りを訂正できる量子ビット用3ビット繰り返し符号と、1回の位相反転誤りを訂正できるその変形版です。

符号の説明​

9量子ビットShor符号は、前節の2つの符号を連結することで得られる符号です。 具体的には、まず1つの符号化を適用して1量子ビットを3量子ビットに符号化し、次にその3量子ビットのそれぞれに別の符号化を適用することで、合計9量子ビットを得ます。

より正確には、この場合はどちらの順序で2つの符号を適用しても構いませんが、ここでは最初に3ビット繰り返し符号の変形版(位相反転誤りを検出するもの)を適用し、次に得られた3つの量子ビットのそれぞれを、元の3ビット繰り返し符号(ビット反転誤りを検出するもの)を使って独立に符号化することにします。 以下はこの符号化の回路図表現です。

3つのブロックを示す9量子ビットShor符号の符号化回路

図が示すように、Shor符号の9量子ビットは3量子ビットずつ3つのブロックに分けて考えます。各ブロックは2番目の符号化ステップ(通常の3ビット繰り返し符号)から得られます。 ここで3回独立に適用される通常の3ビット繰り返し符号は内符号と呼ばれ、一方で最初の符号化ステップで使われる符号、すなわち位相反転誤りを検出する3ビット繰り返し符号の変形版が外符号と呼ばれます。

元の量子ビットの2つの標準基底状態がどのように符号化されるかを記述することで、符号を別の形で指定することもできます。

∣0⟩ ↦ 122(∣000⟩+∣111⟩)⊗(∣000⟩+∣111⟩)⊗(∣000⟩+∣111⟩)∣1⟩ ↦ 122(∣000⟩−∣111⟩)⊗(∣000⟩−∣111⟩)⊗(∣000⟩−∣111⟩)\begin{aligned} \vert 0\rangle & \:\mapsto\: \frac{1}{2\sqrt{2}} (\vert 000\rangle + \vert 111\rangle) \otimes (\vert 000\rangle + \vert 111\rangle) \otimes (\vert 000\rangle + \vert 111\rangle) \\[4mm] \vert 1\rangle & \:\mapsto\: \frac{1}{2\sqrt{2}} (\vert 000\rangle - \vert 111\rangle) \otimes (\vert 000\rangle - \vert 111\rangle) \otimes (\vert 000\rangle - \vert 111\rangle) \end{aligned}

これが分かれば、任意の量子ビット状態ベクトルの符号化を線形性によって決定できます。

ビット反転誤りと位相反転誤りの訂正​

誤りとCNOTゲート​

9量子ビットShor符号やその他の符号に対して、XX誤りとZZ誤りが量子ビットの符号化にどのような影響を与えるかを分析するには、これらの誤りとCNOTゲートの間にあるいくつかの単純な関係を観察しておくことが役立ちます。 9量子ビットShor符号の分析を始める前に、ここで一度立ち止まってこれを確認しておきましょう。

以下の回路図は、XXゲートとCNOTゲートの間の3つの基本的な関係を示しています。 具体的には、CNOTの前にターゲット量子ビットにXXゲートを適用することは、順序を入れ替えてCNOTを先に実行することと等価です。一方、CNOTの前に制御量子ビットにXXゲートを適用することは、CNOT後に両方の量子ビットにXXゲートを適用することと等価です。 最後に、CNOTの前に両方の量子ビットにXXゲートを適用することは、先にCNOTを実行してから制御量子ビットにXXゲートを適用することと等価です。 これらの関係は、必要な行列の掛け算を実行するか、標準基底状態に対する回路の効果を計算することで確認できます。

CNOTゲートの前後でのX誤り

ZZゲートについても状況は似ていますが、制御量子ビットとターゲット量子ビットの役割が入れ替わります。 特に、以下の量子回路が示す3つの関係が成り立ちます。

CNOTゲートの前後でのZ誤り

ビット反転誤りの訂正​

次に、9量子ビットShor符号を使って誤りを検出・訂正する方法を考えます。まず、以降では簡潔さのためにXX誤りと呼ぶビット反転誤りから始めます。

XX誤りを検出・訂正するには、符号化の3つのブロックそれぞれを独立に扱えばよいのです。 各ブロックは3ビット繰り返し符号を使った量子ビットの符号化であり、XX誤りに対して保護されています。そのため、前節で説明したシンドローム測定とXX誤り訂正を各ブロックに対して実行することで、1ブロックあたり最大1回のXX誤りを検出・訂正できます。 特に、9量子ビットの符号化上にXX誤りが最大1回しか発生しない場合、この手順によってその誤りは検出・訂正されます。

簡潔に言えば、この符号においてビット反転誤りの訂正は単純な問題です。内符号がビット反転誤りを訂正するからです。

位相反転誤りの訂正​

次に、位相反転誤り、簡潔に言えばZZ誤りを考えます。 今度は、外符号がZZ誤りを検出する符号であるにもかかわらず、内符号がある意味で「邪魔をして」おり、これらの誤りの検出と訂正がやや難しくなっています。そのため、何をすべきか必ずしも明確ではありません。

次の図に示すように、Shor符号の9量子ビットのうちの1つにZZ誤りが発生したとします。

9量子ビットShor符号における量子ビットへのZ誤り

3ビット繰り返し符号を使用している際にZZ誤りが発生した場合に何が起こるかは、すでに観察しています——それは符号化前にZZ誤りが発生した場合と等価です。 9量子ビットShor符号の文脈では、これはブロック内のどの量子ビットにZZ誤りが発生しても常に同じ効果をもたらすことを意味します。その効果は、内符号が適用される前の対応する量子ビットにZZ誤りが発生した場合と等価です。

例えば、上の回路図は以下の図と等価です。 これは、上述したZZとCNOTゲートの関係を使って推論するか、任意の量子ビット状態∣ψ⟩\vert\psi\rangleに対して回路を評価することで確認できます。

9量子ビットShor符号における内符号適用前のZ誤り

これは、ZZ誤りを検出・訂正するための1つの選択肢を示唆しています。内符号を復号して、外符号に使われる3量子ビットと6つの初期化済みワーク用量子ビットを残します。 その後、外符号の3量子ビットでZZ誤りを確認し、最後に内符号で再符号化することで、Shor符号による9量子ビット符号化に戻ります。 ZZ誤りを検出した場合は、内符号で再符号化する前に訂正するか、再符号化後にそのブロックの任意の量子ビットにZZゲートを適用して訂正することができます。

以下は、符号化回路と上述の誤り、および今述べたステップ(ただし実際の訂正ステップは除く)を含む回路図です。

9量子ビットShor符号のZ誤り検出

この特定の例では、シンドローム測定の結果は1111となり、ZZ誤りが中央ブロックのいずれかの量子ビットで発生したことが特定されます。

再符号化後にZZ誤りを訂正することの利点の1つは、上の回路を簡略化できることです。 以下の回路は等価ですが、CNOTゲートが4つ少なくて済みます。

9量子ビットShor符号のZ誤り検出の簡略化版

ここでも、シンドロームはどの量子ビットがZZ誤りの影響を受けたかを示すのではなく、どのブロックがZZ誤りを受けたかを示します。ブロック内のどの量子ビットが影響を受けても、効果は同じです。 その後、影響を受けたブロックの3量子ビットのいずれかにZZゲートを適用することで誤りを訂正できます。

余談として、ここでは量子誤り訂正符号における縮退の例が見られます。縮退とは、一部の誤り(この場合はZZ誤り)を一意に特定しなくても訂正できることを指します。

ビット反転誤りと位相反転誤りの同時発生​

ここまでで、9量子ビットShor符号を使ってXX誤りとZZ誤りの両方を検出・訂正する方法を見てきました。特に、最大1回のXX誤りまたは最大1回のZZ誤りを検出・訂正できることを示しました。 では、同じ量子ビットで発生する可能性がある場合も含めて、ビット反転誤りと位相反転誤りの両方が発生するとしましょう。 実のところ、この状況ではすでに述べたことと異なる操作は何も必要ありません——この符号は、追加の変更なしに最大1回のXX誤りと1回のZZ誤りを同時に検出・訂正できます。

より具体的には、XX誤りは通常の3ビット繰り返し符号のシンドローム測定を適用することで検出されます。この測定は3量子ビットからなる3つのブロックそれぞれに対して個別に実行されます。ZZ誤りは上述の手順によって検出されます。これは内符号を復号し、位相反転用の変形3ビット繰り返し符号のシンドローム測定を実行し、その後再符号化するという手順と等価です。 これら2つの誤り検出ステップ——および対応する訂正——は完全に独立して実行でき、どちらの順序で実行しても構いません。

なぜそうなのかを理解するために、次の回路図に示す例を考えます。中央ブロックの最下位量子ビットにXX誤りとZZ誤りの両方が発生しています。

9量子ビットShor符号のXZ誤り

まず、誤りの順序は重要ではないことを確認しましょう。XX誤りとZZ誤りの位置を入れ替えても等価な回路になります。 明確にしておくと、XXとZZは可換ではなく、反可換です:

XZ=(0110)(100−1)=(0−110)=−(100−1)(0110)=−ZX.XZ = \begin{pmatrix} 0 & 1\\[1mm] 1 & 0 \end{pmatrix} \begin{pmatrix} 1 & 0\\[1mm] 0 & -1 \end{pmatrix} = \begin{pmatrix} 0 & -1\\[1mm] 1 & 0 \end{pmatrix} = - \begin{pmatrix} 1 & 0\\[1mm] 0 & -1 \end{pmatrix} \begin{pmatrix} 0 & 1\\[1mm] 1 & 0 \end{pmatrix} = -ZX.

これは、次の回路が上の回路と大域位相因子−1-1を除いて等価であることを意味します。

9量子ビットShor符号のZX誤り

ここで、前と同様にZZ誤りを移動させて別の等価な回路を得ることができます。

9量子ビットShor符号のZX誤り

この時点で、XX誤りを検出・訂正する手順を先に実行するとXX誤りが訂正され、その後ZZ誤りを検出・訂正する手順を実行することで、前と同様にZZ誤りを取り除けることが明らかです。

あるいは、ZZ誤りを検出・訂正する手順を先に実行することもできます。 この手順が1つ以上のXX誤りが存在する場合でも期待通りに機能する理由は、符号化に使われる9量子ビットのいずれかへのXXゲートが、ZZ誤りのシンドロームを測定するための簡略化回路内のすべてのゲートと可換であるという事実から導かれます。 したがって、このシンドローム測定はどのブロックがZZ誤りの影響を受けたかを正しく特定します。 あるブロックへのZZ誤りは、XX誤りも発生していても、そのブロックのいずれかの量子ビットにZZゲートを適用することで訂正されるという事実は、大域位相を除いて等価な回路を与えるXXゲートとZZゲートの順序に関する上述の議論と同じ論拠から導かれます。

以上から、9量子ビットShor符号は、この符号に使われる9量子ビットのいずれか1つについて、XX誤り、ZZ誤り、またはその両方を訂正できることが分かります。 実際には、それ以上の誤りも訂正でき、複数のXX誤り(それぞれ異なるブロックに属する限り)や複数のZZ誤り(最大1つのブロックで奇数個の誤りが発生する限り)を訂正することも可能です——ただし、このレッスンの目的において最も重要なのは、どの1量子ビットでもXX誤り、ZZ誤り、またはその両方を訂正できるということです。

ランダム誤りに対する誤り低減​

レッスンの最後のセクション(任意の量子誤りに関するもの)に移る前に、パウリ行列で表される誤りが量子ビットにランダムに発生する場合の9量子ビットShor符号の性能について簡単に考えてみましょう。

より具体的には、誤りが量子ビットに独立に発生する単純なノイズモデルを考えます。各量子ビットが確率ppで誤りを経験し、異なる量子ビット間の誤りに相関がないモデルで、古典ビットの二元対称通信路に似ています。 XX、YY、ZZ誤りの発生確率をそれぞれ異なる値に設定することもできますが、できる限り単純に保つために、9量子ビットShor符号にとって最悪のケース、すなわち影響を受ける各量子ビットにYY誤りが発生する場合を考えます。 ちなみに、YY誤りはY=iXZY = iXZであることから、同一量子ビットでXX誤りとZZ誤りの両方が発生した場合と(無関係な大域位相因子を除いて)等価です。 これが、これまでYY誤りを一見無視していた理由を説明しています。

さて、ある特定の状態にある量子ビットQ\mathsf{Q}を誤りから保護したいとします。9量子ビットShor符号を使うという選択肢を考えます。 自然な疑問として、「使うべきか?」があります。

答えは必ずしも「はい」ではありません。 ノイズが多すぎる場合、すなわちppが大きすぎる場合、Shor符号を使うことがかえって状況を悪化させる可能性があります——ちょうどppが2分の1より大きい場合に3ビット繰り返し符号が符号なしより悪くなるのと同様です。 しかし、ppが十分に小さければ、「はい」使うべきです。符号化された状態が破損する可能性を低下させるからです。 なぜそうなのか、そしてこの符号にとってppが大きすぎる・十分に小さいとはどういう意味かを見てみましょう。

Shor符号は1量子ビット上の任意のパウリ誤り(もちろんYY誤りも含む)を訂正しますが、2つ以上のYY誤りは正しく訂正できません。 明確にしておくと、ここでは前節で説明したXX誤りとZZ誤りの訂正を使用していると仮定しています。 (もちろん、YY誤りだけを心配すればよいと事前に分かっていれば、当然ながら異なる訂正方法を選ぶでしょう——しかしそれはノイズモデルを「ズル」することになります。また、そうしたところで、2つ以上の量子ビットが誤りの影響を受けるように異なるパウリ誤りを選ぶことで、この新しい訂正選択を失敗させるモデルを作ることが常にできます。)

したがって、符号は9量子ビットのうち最大1つだけが誤りの影響を受ける限りQ\mathsf{Q}を保護します。それが起こる確率は

(1−p)9+9p(1−p)8.(1-p)^9 + 9 p (1-p)^8.

それ以外の場合、次の確率で

1−(1−p)9−9p(1−p)8,1 - (1-p)^9 - 9 p (1-p)^8,

この符号はQ\mathsf{Q}を保護できません。

具体的には、この文脈でそれが意味するのは、大域位相を除いて、非恒等パウリ演算が私たちのキュビットQ\mathsf{Q}に(論理キュビットとして)適用されるということです。 つまり、レッスンの前半で説明したように、ショア符号に対してXXエラーとZZエラーが検出され訂正された場合、私たちは、Q\mathsf{Q}の元の状態に適用された非恒等パウリ演算のエンコードと、大域位相を除いて同等な状態のエンコードが残ることになります。 これをより簡潔に言うと、論理エラーが発生したということです。 これは、Q\mathsf{Q}の元の状態——言い換えれば、私たちが9個の物理キュビットでエンコードした論理キュビット——に影響を与える場合と与えない場合がありますが、この分析の目的上、この出来事を失敗と見なします。

一方、この符号を使用しなかった場合、私たちの唯一のキュビットは確率ppで同様の運命(非恒等パウリ演算にさらされること)に見舞われることになります。 符号が役立つのは、最初の確率が2番目の確率よりも小さい場合です

1−(1−p)9−9p(1−p)8<p.1 - (1-p)^9 - 9 p (1-p)^8 < p.

以下は、ppの値が非常に小さい場合に符号が優位性を提供することを示すプロットで、損益分岐点は約0.03230.0323で発生します。

Error probability graph for independent Y errors using the Shor code

もしppがこの損益分岐点より小さければ、符号は役立ちます。 損益分岐点では確率が等しいため、符号を使用しても8つのキュビットとともに時間を無駄にしているだけです。 そして損益分岐点を超えると、この符号を使うべきではありません。なぜなら、それはQ\mathsf{Q}における論理エラーの確率を増加させてしまうからです。

3.25パーセント程度というのは、古典情報に対する3ビット繰り返し符号の類似の損益分岐点である50%50\%と比べると、あまり良い損益分岐点には見えないかもしれません。 この違いは、主に量子情報が古典情報よりも繊細で保護が難しいことに起因しています。 また、9量子ビットShor符号が世界初の量子誤り訂正符号という画期的な発見であることは認めつつも、実用的な観点からは実はそれほど良い符号ではない、という点も認めておくべきでしょう。