メインコンテンツへスキップ

反復符号

このレッスンでは、反復符号の説明から始めます。 反復符号は、量子ビットで発生しうるすべての種類のエラーから量子情報を保護するわけではありませんが、次のレッスンで学ぶ9量子ビットのショア符号の基礎となるものであり、また誤り訂正の基本を説明するうえでも有用です。

古典的な符号化と復号化

反復符号は、誤り訂正符号の非常に基本的な例です。 各ビットを一定回数繰り返すだけで、ビットをエラーから保護できるというアイデアです。

特に、まず古典情報の文脈で3ビット反復符号を考えてみましょう。 この符号は1つのビットを3回繰り返すことで3ビットに符号化するものです。00000000 に、11111111 に符号化されます。

00001111\begin{aligned} 0 & \mapsto 000\\ 1 & \mapsto 111 \end{aligned}

何も問題が起きなければ、当然ながら2つの符号化から元のビットの2通りの可能性を区別できます。 重要なのは、エラーが発生して3つのビットのうち1つが反転した場合(つまり0が1に、あるいは1が0に変わった場合)でも、2回現れる2進数値を確認することで元のビットを特定できる点です。 同等の言い方をすれば、多数決(すなわち最も多く現れる2進数値)を計算することで復号化できます。

abcmajority(a,b,c)a b c \mapsto \operatorname{majority}(a,b,c)

もちろん、符号化された3ビットのうち2つか3つが反転すると、復号化は正しく機能せず誤ったビットが復元されてしまいますが、3ビットのうち反転するのが最大1ビットであれば、復号化は正確に行われます。 これは一般的な誤り訂正符号の典型的な性質です。誤りを訂正できる可能性はありますが、誤りが多すぎる場合には限界があります。

2値対称通信路におけるノイズの低減

反復符号を使ってエラーの発生確率を下げられる状況の例として、 単一ビットを仮想的な受信者に伝達することを目的とし、2値対称通信路と呼ばれる経路を通じてビットを送信できるとします。この通信路は、送信される各ビットを独立に確率 pp で反転させます。 つまり、確率 1p1-p で受信者は送信されたビットをそのまま受け取りますが、確率 pp でビットが反転し、受信者は逆のビット値を受け取ります。

したがって、3ビット反復符号を使わずに、送りたいビットをそのまま通信路に通した場合、受信者は確率 pp で誤ったビットを受け取ります。 一方、送りたいビットを3ビット反復符号で符号化してから、その3つのビットをそれぞれ通信路に通すと、それぞれが確率 pp で独立に反転します。 今度は3つのビットが反転する可能性があるため、ビット反転の総合的なリスクは増えますが、最大1ビットしか反転しない場合は受信者が正しく復号化できます。 したがって、2つ以上のビットが送信中に反転した場合にのみ、復号化後もエラーが残ることになります。

2ビットが反転する確率は 3p2(1p)3p^2(1-p) です。これは反転しないビットの3通りの選択それぞれに対して p2(1p)p^2(1-p) となり、3ビットすべてが反転する確率は p3p^3 です。 したがって、2ビットまたは3ビットが反転する確率の合計は

3p2(1p)+p3=3p22p33 p^2 (1 - p) + p^3 = 3 p^2 - 2 p^3

となります。

pp が1/2より小さい値の場合、受信者が誤ったビットを受け取る確率は低下します。 この場合でもエラーが発生する可能性はありますが、符号によってその可能性は低下します。 (逆に pp が1/2より大きい値の場合は、符号によって受信者が誤ったビットを受け取る可能性が実際には増加します。)

2値対称通信路に対する3ビット反復符号のエラー確率グラフ

量子ビットの符号化

3ビット反復符号は古典的な誤り訂正符号ですが、これを量子ビットのエラー保護に使おうとするとどうなるかを考えてみましょう。 これから分かるように、3ビット反復符号はあまり優れた量子誤り訂正符号とはいえません。なぜなら、一部のエラーをむしろ起こりやすくしてしまうからです。 しかし、ショア符号への第一歩として、また教育的な観点からも非常に役立ちます。

明確にしておくと、量子ビットに3ビット反復符号を適用するとは、標準基底状態を3回繰り返す符号化を意味します。そのため、単一量子ビットの状態ベクトルは次のように符号化されます。

α0+β1α000+β111\alpha \vert 0\rangle + \beta \vert 1\rangle \mapsto \alpha \vert 000\rangle + \beta \vert 111\rangle

この符号化は、初期化された2つのワーク量子ビットと2つの制御NOT(CNOT)ゲートを用いた以下の量子回路で容易に実装できます。

3ビット反復符号の符号化回路

特に、この符号化はある量子ビットの状態ベクトルを ψψψψ\vert\psi\rangle \mapsto \vert\psi\rangle\vert\psi\rangle\vert\psi\rangle のように量子状態を3回繰り返すものとは異なることに注意してください。 そのような符号化は、量子複製不可能定理により、未知の量子状態 ψ\vert\psi\rangle に対しては実装できません。

ビット反転エラー

次に、符号化の後にエラーが発生するとします。 具体的には、XX ゲート、すなわちビット反転が量子ビットの1つに作用するとします。 例えば、中央の量子ビットでビット反転が発生した場合、3つの量子ビットの状態は次のように変換されます。

α010+β101.\alpha \vert 010\rangle + \beta \vert 101\rangle.

もちろん、これが発生しうるエラーの唯一の種類というわけではなく、エラーが完全なユニタリ演算の形をとるという前提を疑問視することも合理的です。 これらの問題についてはレッスンの最後のセクションで改めて取り上げます。今のところは、この形のエラーを(基本的に重要な)1つの可能な種類として見なしておきます。

上記の状態の数学的表現から、各ケット内で異なるのが中央のビットであることは明らかです。 しかし、3つの量子ビットを手元に持ちながら、その状態が分からない場合を想像してください。 ビット反転が発生した疑いがある場合、反転を確認する1つの手段として標準基底測定を行う方法が考えられます。この場合、確率 α2\vert\alpha\vert^2 および β2\vert\beta\vert^2010010 または 101101 が観測されます。 いずれの場合も、中央のビットが反転したと結論づけられますが、残念ながら元の量子状態 α0+β1\alpha\vert 0\rangle + \beta \vert 1\rangle が失われてしまいます。 これは保護しようとしている状態ですから、標準基底で測定するのは満足のいく方法ではありません。

代わりに、以下の量子回路を使うことができます。符号化された状態を上3つの量子ビットに入力します。 この回路は、3量子ビット符号化の上2つの量子ビットと下2つの量子ビットの標準基底状態のパリティを非破壊的に測定します。

3ビット反復符号のエラー検出回路

最大1ビットしか反転しないという前提のもとで、測定結果からビット反転の位置(またはビット反転がないこと)を容易に推定できます。 特に、以下の4つの回路図が示すように、測定結果 0000 はビット反転が発生していないことを示し、他の3通りの結果はどの量子ビットでビット反転が発生したかを示します。

3ビット反復符号のエラー検出(エラーなし)

3ビット反復符号のエラー検出(量子ビット0でエラー)

3ビット反復符号のエラー検出(量子ビット1でエラー)

3ビット反復符号のエラー検出(量子ビット2でエラー)

重要なことは、上3つの量子ビットの状態がいずれのケースでも崩壊しないことです。これにより、ビット反転エラーが発生した場合に XX ゲートで同じビット反転を再度適用するだけで訂正できます。 以下の表は、最大1回のビット反転から得られる状態、測定結果(誤り訂正の文脈ではシンドロームと呼ばれます)、および元の符号化に戻すために必要な訂正をまとめたものです。

状態シンドローム訂正
α000+β111\alpha\vert 000\rangle + \beta \vert 111\rangle0000III\mathbb{I}\otimes\mathbb{I}\otimes\mathbb{I}
α001+β110\alpha\vert 001\rangle + \beta \vert 110\rangle0101IIX\mathbb{I}\otimes\mathbb{I}\otimes X
α010+β101\alpha\vert 010\rangle + \beta \vert 101\rangle1111IXI\mathbb{I}\otimes X\otimes\mathbb{I}
α100+β011\alpha\vert 100\rangle + \beta \vert 011\rangle1010XIIX\otimes\mathbb{I}\otimes\mathbb{I}

ここでも、発生するビット反転は最大1回という前提で考えています。 2回または3回のビット反転が発生した場合は正しく機能しませんし、ビット反転以外のエラーについてもまだ考慮していません。

位相反転エラー

量子の文脈では、ビット反転エラーだけが心配の種ではありません。 例えば、ZZ ゲートで記述される位相反転エラーにも注意が必要です。 ビット反転エラーと同様に、位相反転エラーも量子ビットに影響を与えうるエラーの一種として考えることができます。

しかし、レッスンの最後のセクション(量子誤り訂正符号におけるエラーの離散化について)で見るように、ビット反転エラーと位相反転エラーに焦点を当てることは十分な根拠があります。 具体的には、ビット反転エラー、位相反転エラー、またはその両方を同時に訂正できる能力は、1つの量子ビットで発生する任意の量子エラーを訂正できることを自動的に意味します。

残念ながら、3ビット反復符号は位相反転に対してまったく保護を提供しません。 例えば、量子ビット状態 α0+β1\alpha\vert 0\rangle + \beta\vert 1\rangle が3ビット反復符号で符号化され、中央の量子ビットで位相反転エラーが発生したとします。 この結果、次の状態になります。

(IZI)(α000+β111)=α000β111,(\mathbb{I} \otimes Z \otimes \mathbb{I}) ( \alpha \vert 000\rangle + \beta \vert 111\rangle) = \alpha \vert 000\rangle - \beta \vert 111\rangle,

これは量子ビット状態 α0β1\alpha\vert 0\rangle - \beta\vert 1\rangle を符号化した場合に得られる状態と全く同じです。 実際、符号化の3つの量子ビットのいずれかで発生する位相反転エラーは同じ効果をもたらし、これは符号化前の元の量子ビットで位相反転エラーが発生した場合と等価です。 元の量子状態が未知の状態であるという前提のもとでは、エラーが発生したことを検出する方法はありません。なぜなら、得られた状態は別の量子ビット状態の正当な符号化であるからです。 特に、状態 α000β111\alpha \vert 000\rangle - \beta \vert 111\rangle に対して先ほどのエラー検出回路を実行すると、必ずシンドローム 0000 が得られ、エラーが発生していないと誤って判断されます。

さらに、今や1つではなく3つの量子ビットが位相反転エラーを受ける可能性があります。 したがって、各量子ビットで独立にある非ゼロ確率 pp で位相反転エラーが発生する状況(ビット反転でなく位相反転についての2値対称通信路に類似)では、この符号は小さな pp の値において復号化後の位相反転エラーの可能性を実際に増加させてしまいます。 より正確には、符号化の3つの量子ビットで奇数個の位相反転エラーが発生した場合に元の量子ビットで位相反転エラーが残り、その確率は

3p(1p)2+p33 p (1 - p)^2 + p^3

となります。

この値は 0<p<1/20<p<1/2 のとき pp より大きいため、この範囲の pp の値では符号が位相反転エラーの確率を増加させます。

位相反転エラーに対する修正版反復符号

3ビット反復符号は位相反転エラーを全く検出できないため、この種のエラーに対処するうえであまり役立ちません。 しかし、3ビット反復符号を簡単な方法で修正することで、位相反転エラーを検出できるようにすることができます。 この修正によりビット反転エラーに対しては対処できなくなりますが、次のセクションで見るように、3ビット反復符号とこの修正版を組み合わせることで、ビット反転と位相反転の両方のエラーを訂正できるショア符号が得られます。

位相反転エラーを検出できるようになる、上記の符号化回路の修正版を以下に示します。 修正は非常に単純で、2つのCNOTゲートを実行した後に各量子ビットにアダマールゲートを適用するだけです。

3ビット反復符号の修正版符号化回路

アダマールゲートは 0\vert 0\rangle 状態を +\vert + \rangle 状態に、1\vert 1\rangle 状態を \vert - \rangle 状態に変換するので、全体的な効果として、単一量子ビット状態 α0+β1\alpha\vert 0\rangle + \beta \vert 1\rangle は次のように符号化されます。

α++++β\alpha \vert {+}\,{+}\,{+} \rangle + \beta \vert {-}\,{-}\,{-} \rangle

ここで +++=+++\vert {+}\,{+}\,{+} \rangle = \vert + \rangle \otimes \vert + \rangle \otimes\vert + \rangle および =\vert {-}\,{-}\,{-} \rangle = \vert - \rangle \otimes \vert - \rangle \otimes\vert - \rangle です。

位相反転エラー、すなわち ZZ ゲートは +\vert + \rangle\vert - \rangle の状態を入れ替えるため、この符号化は位相反転エラーの検出(および訂正)に有用です。 具体的には、先ほどのエラー検出回路を以下のように修正できます。

3ビット反復符号の位相エラー検出回路

言葉で説明すると、先ほどの回路の先頭と末尾の上3つの量子ビットにアダマールゲートを追加します。 アイデアは、最初の3つのアダマールゲートが +\vert + \rangle および \vert - \rangle 状態を 0\vert 0\rangle および 1\vert 1\rangle 状態に戻し、以前と同じパリティチェックが行われ、その後2層目のアダマールゲートが状態を +\vert + \rangle および \vert - \rangle 状態に戻すことで符号化を回復するというものです。 後の参照のために、この位相反転検出回路は以下のように簡略化できることを確認しておきましょう。

簡略化された位相エラー検出回路

以下の4つの回路図は、符号化ステップとエラー検出ステップを含む3ビット反復符号の修正版が、最大1回の位相反転エラーが発生した場合にどのように機能するかを示しています。 動作は、ビット反転に対する通常の3ビット反復符号と似ています。

修正版3ビット反復符号の位相反転エラー検出(エラーなし)

修正版3ビット反復符号の位相反転エラー検出(量子ビット0でエラー)

修正版3ビット反復符号の位相反転エラー検出(量子ビット1でエラー)

修正版3ビット反復符号の位相反転エラー検出(量子ビット2でエラー)

以下は上記の表と対応する表で、今回は最大1回の位相反転エラーの可能性を考慮しています。

状態シンドローム訂正
α++++β\alpha\vert {+}\,{+}\,{+} \rangle + \beta \vert {-}\,{-}\,{-}\rangle0000III\mathbb{I}\otimes\mathbb{I}\otimes\mathbb{I}
α+++β+\alpha\vert {+}\,{+}\,{-}\rangle + \beta \vert {-}\,{-}\,{+}\rangle0101IIZ\mathbb{I}\otimes\mathbb{I}\otimes Z
α+++β+\alpha\vert {+}\,{-}\,{+}\rangle + \beta \vert {-}\,{+}\,{-}\rangle1111IZI\mathbb{I}\otimes Z\otimes\mathbb{I}
α+++β+\alpha\vert {-}\,{+}\,{+} \rangle + \beta \vert {+}\,{-}\,{-}\rangle1010ZIIZ\otimes\mathbb{I}\otimes\mathbb{I}

残念ながら、この修正版3ビット反復符号はビット反転エラーを訂正できなくなっています。 しかし、希望はあります。 先ほど示唆したように、これまで見てきた2つの符号を1つの符号、すなわち9量子ビットのショア符号に組み合わせることができます。この符号はビット反転と位相反転の両方のエラー、そして1つの量子ビットで発生する任意のエラーを訂正できます。