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

CSSコード

古典線形符号

古典誤り訂正符号は1940年代に初めて研究され、現在では多くの異なる符号が知られています。最もよく研究・利用されている符号は、線形符号と呼ばれるカテゴリに属します。 この文脈で「線形」という言葉が何を意味するかについてはすぐに説明しますが、今の時点で線形符号を簡潔に表現するなら、古典的なスタビライザー符号と言えます。 CSSコードは本質的に、2つの古典線形符号をペアとして組み合わせて量子誤り訂正符号を構成したものです。 したがって、以下の議論に備えて、古典線形符号に関するいくつかの基本事項を理解しておく必要があります。

この議論全体を通じて、Σ\Sigma を二値アルファベットとします。 古典線形符号とは、ある正の整数 nn に対して、長さ nn の二進文字列の空でない集合 CΣn\mathcal{C}\subseteq\Sigma^n であり、次の一つの基本的な性質を満たすものです: uuvvC\mathcal{C} に属する二進文字列であれば、文字列 uvu\oplus vC\mathcal{C} に属します。 ここで、uvu\oplus vuuvv のビット単位の排他的論理和(XOR)を指し、「量子アルゴリズムの基礎」コースで何度も登場しました。

本質的に、古典誤り訂正符号を線形と呼ぶとき、長さ nn の二進文字列を nn 次元ベクトルとみなしています。各成分は 00 または 11 であり、符号自体が線形部分空間を形成することを要求しています。 ただし、実数や複素数上の通常のベクトル加算ではなく、2を法とする加算、すなわち排他的論理和を使います。 つまり、2つの符号語 uuvvuuvvC\mathcal{C} に属する二進文字列)があれば、u+vu + v を2を法として計算した値、すなわち uvu\oplus vC\mathcal{C} の符号語でなければなりません。 特に、この命題は u=vu = v の場合にも成立しなければなりません。 これは、任意の文字列とそれ自身のビット単位XORは全ゼロ文字列になるため、C\mathcal{C} は全ゼロ文字列 0n0^n を含まなければならないことを意味します。

例:3ビット繰り返し符号

3ビット繰り返し符号は古典線形符号の一例です。 特に C={000,111}\mathcal{C} = \{000,111\} であり、線形性の条件に関して uu の選択肢は2通り、vv の選択肢も2通りしかありません。 4つの可能なペアをすべて調べると、ビット単位XORを取ると常に符号語が得られることが確認できます:

000000=000,000111=111,111000=111,111111=000.000 \oplus 000 = 000, \quad 000 \oplus 111 = 111, \quad 111 \oplus 000 = 111, \quad 111 \oplus 111 = 000.

例:[7,4,3][7,4,3]-ハミング符号

次に、[7,4,3][7,4,3]-ハミング符号と呼ばれる古典線形符号の別の例を紹介します。 これは発見された最初期の古典誤り訂正符号の一つで、長さ7の16個の二進文字列で構成されています。 ([7,4,3][7,4,3]-ハミング符号はこれらの文字列を反転させたものを指す場合もありますが、ここではここに示された文字列を含む符号とします。)

0000000110000110100100110011011010010101011100110000011111110000011001010101010010111001100010110100111101111111\begin{array}{cccc} 0000000 & 1100001 & 1010010 & 0110011\\[1mm] 0110100 & 1010101 & 1100110 & 0000111\\[1mm] 1111000 & 0011001 & 0101010 & 1001011\\[1mm] 1001100 & 0101101 & 0011110 & 1111111 \end{array}

これらの文字列の選定には非常に単純な論理がありますが、本レッスンの主題ではないためここでは説明しません。 今のところ、これが古典線形符号であることを確認するだけで十分です:これらの文字列のうち任意の2つをXORすると、常にこの符号内の別の文字列が得られます。

表記 [7,4,3][7,4,3](単一の角括弧)は、前のレッスンで述べたスタビライザー符号の二重角括弧表記に類似した意味を持ちますが、ここでは古典線形符号に対するものです。 具体的には、符号語は 77 ビットを持ち、16=2416 = 2^4 個の符号語があるため 44 ビットをエンコードでき、距離 33 の符号です。これは、任意の2つの異なる符号語が少なくとも 33 箇所で異なることを意味します — つまり、一方の符号語をもう一方に変えるには少なくとも 33 ビットを反転させなければなりません。 この符号が距離 33 であるという事実は、最大1ビットのビット反転誤りを訂正できることを意味します。

古典線形符号の記述方法

先ほど挙げた例は古典線形符号のごく単純な例ですが、符号語を単にリストアップしただけでは [7,4,3][7,4,3]-ハミング符号でさえ幾分謎めいて見えます。 古典線形符号をより良く、より効率的に記述する方法として、次の2つがあります。

  1. 生成元。古典線形符号を記述する一つの方法は、符号を生成する符号語の最小リストを使うことです。これらの符号語のすべての可能な部分集合のXORを取ることで、符号全体が得られます。

    より詳しく述べると、文字列 u1,,umΣnu_1,\ldots,u_m\in\Sigma^n が古典線形符号 C\mathcal{C} を生成するとは、

    C={α1u1αmum:α1,,αm{0,1}},\mathcal{C} = \bigl\{\alpha_1 u_1 \oplus \cdots \oplus \alpha_m u_m\,:\,\alpha_1,\ldots,\alpha_m\in\{0,1\}\bigr\},

    が成立することであり、α=1\alpha = 1 のとき αu=u\alpha u = uα=0\alpha = 0 のとき αu=0n\alpha u = 0^n と定義します。 また、いずれかの文字列を削除すると生成される符号が小さくなる場合、このリストは最小と言います。 このような記述を自然に考えると、集合 {u1,,um}\{u_1,\ldots,u_m\}C\mathcal{C} の部分空間の基底を形成しており、文字列を二値成分を持つベクトルとみなし、2を法として算術を行う線形空間で作業していることになります。

  2. パリティ検査。 古典線形符号を記述するもう一つの自然な方法は、パリティ検査を用いることです — 符号内の文字列が正確にこれらのパリティ検査文字列のそれぞれとの二進内積がゼロになるような、二進文字列の最小リストです。(ビット単位XORと同様に、二進内積は「量子アルゴリズムの基礎」で何度か登場しました。)

    すなわち、文字列 v1,,vrΣnv_1,\ldots,v_r\in\Sigma^n が古典線形符号 C\mathcal{C} のパリティ検査文字列であるとは、

    C={uΣn:uv1==uvr=0},\mathcal{C} = \bigl\{ u\in \Sigma^n\,:\, u\cdot v_1 = \cdots = u \cdot v_r = 0 \bigr\},

    が成立することであり、いずれかを削除すると符号が大きくなる場合、この文字列の集合は最小です。 これらがパリティ検査文字列と呼ばれるのは、vv11 を持つ位置にある uu のビットが偶数パリティを持つ場合のみ、uuvv との二進内積がゼロになるからです。 したがって、文字列 uu が符号 C\mathcal{C} に属するかどうかを判定するには、uu の特定のビットの部分集合のパリティを確認するだけで十分です。

    ここで重要な注意点があります。二進内積は形式的な意味での内積ではありません。特に、2つの文字列の二進内積がゼロであっても、通常の意味での直交性を意味しません。例えば、文字列 1111 とそれ自身の二進内積はゼロです — つまり、古典線形符号のパリティ検査文字列がその符号自体に属することもあり得ます。

二値アルファベット上の古典線形符号は常に 22 の累乗個の文字列を含み、上述の2通りの方法で記述された単一の古典線形符号では、常に n=m+rn = m + r が成立します。 特に、mm 個の最小生成元の集合があれば、符号は mm ビットをエンコードし、2m2^m 個の符号語を持ちます。 また、rr 個の最小パリティ検査文字列があれば、2nr2^{n-r} 個の符号語を持ちます。 つまり、生成元を一つ追加するたびに符号空間のサイズが2倍になり、パリティ検査文字列を一つ追加するたびに半分になります。

例えば、3ビット繰り返し符号は線形符号なので、これら両方の方法で記述できます。 特に、機能する生成元の選択肢は一つだけです:111111 です。 あるいは、110110011011 という2つのパリティ検査文字列でこの符号を記述することもできます — これはこの符号に関する以前の議論でも見慣れたものです — または 110110101101、あるいは 101101011011 をパリティ検査文字列として選ぶこともできます。(生成元とパリティ検査文字列は、一般に与えられた古典線形符号に対して一意ではありません。)

2番目の例として、[7,4,3][7,4,3]-ハミング符号を考えます。 以下は機能する生成元リストの一つの選択肢です。

1111000011010010100101100001\begin{array}{c} 1111000\\[1mm] 0110100\\[1mm] 1010010\\[1mm] 1100001 \end{array}

そして、この符号のパリティ検査リストの一つの選択肢は次のとおりです。

111100011001101010101\begin{array}{c} 1111000\\[1mm] 1100110\\[1mm] 1010101 \end{array}

ここで、パリティ検査文字列がすべてこの符号自体に属していることが分かります。

古典線形符号についての最後の注意として、スタビライザー形式主義との関連を述べます。パリティ検査文字列は、ZZ パウリ行列と恒等行列のみからなるスタビライザー生成元に相当します。 例えば、3ビット繰り返し符号のパリティ検査文字列 110110011011 は、スタビライザー生成元 ZZIZ\otimes Z\otimes \mathbb{I}IZZ\mathbb{I}\otimes Z\otimes Z にそれぞれ対応しており、これは前のレッスンのパウリ観測量の議論と一致しています。

CSSコードの定義

CSSコードは、特定の古典線形符号のペアを組み合わせて得られるスタビライザー符号です。 これは任意の2つの古典線形符号では機能しません — 2つの符号は特定の関係を持つ必要があります。 それでも、この構成法は古典符号理論の75年以上の蓄積に一部基づいて、量子誤り訂正符号の多くの可能性を開きます。

スタビライザー形式主義において、ZZ パウリ行列と恒等行列のみを含むスタビライザー生成元はパリティ検査に相当することを、3ビット繰り返し符号で確認しました。 別の例として、[7,4,3][7,4,3]-ハミング符号の次のパリティ検査文字列を考えます。

111100011001101010101\begin{array}{c} 1111000\\[1mm] 1100110\\[1mm] 1010101 \end{array}

これらのパリティ検査文字列は以下のスタビライザー生成元に対応します(テンソル積記号なしで記述)。各 11ZZ に、各 00I\mathbb{I} に置き換えることで得られます。 これらは7量子ビット・スティーン符号の6つのスタビライザー生成元のうちの3つです。

ZZZZIIIZZIIZZIZIZIZIZ\begin{array}{ccccccc} Z & Z & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] Z & Z & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} \\[1mm] Z & \mathbb{I} & Z & \mathbb{I} & Z & \mathbb{I} & Z \end{array}

このようなスタビライザー生成元、すなわちパウリ ZZ と恒等テンソル因子のみを持つもの(XX および YY パウリ行列は ZZ スタビライザー生成元には現れない)に、ZZ スタビライザー生成元という名前を付けましょう。

また、XX と恒等パウリ行列のみがテンソル因子として現れるスタビライザー生成元も考えることができます。 このようなスタビライザー生成元は ZZ スタビライザー生成元と類似していますが、標準基底ではなく {+,}\{\vert+\rangle,\vert-\rangle\} 基底でパリティ検査を記述しているとみなすことができます。 この形式のスタビライザー生成元を*XX スタビライザー生成元*と呼びます — この場合、YYZZ パウリ行列は含まれません。

例えば、7量子ビット・スティーン符号の残り3つのスタビライザー生成元を考えます。

XXXXIIIXXIIXXIXIXIXIX\begin{array}{ccccccc} X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] X & X & \mathbb{I} & \mathbb{I} & X & X & \mathbb{I} \\[1mm] X & \mathbb{I} & X & \mathbb{I} & X & \mathbb{I} & X \end{array}

これらは ZZ スタビライザー生成元と全く同じ [7,4,3][7,4,3]-ハミング符号のパターンに従っていますが、今回は 11ZZ ではなく XX に置き換えています。 これら3つのスタビライザー生成元だけから得られる符号には、[7,4,3][7,4,3]-ハミング符号の文字列に対応する標準基底状態にアダマール演算を適用することで得られる、ここに示す16個の状態が含まれます。 (もちろん、この符号の符号空間にはこれらの状態の線形結合も含まれます。)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++\begin{array}{cccc} \vert {+++++++} \rangle \quad & \vert {--++++-} \rangle \quad & \vert {-+-++-+} \rangle \quad & \vert {+--++--} \rangle \\ \vert {+--+-++} \rangle \quad & \vert {-+-+-+-} \rangle \quad & \vert {--++--+} \rangle \quad & \vert {++++---} \rangle \\ \vert {----+++} \rangle \quad & \vert {++--++-} \rangle \quad & \vert {+-+-+-+} \rangle \quad & \vert {-++-+--} \rangle \\ \vert {-++--++} \rangle \quad & \vert {+-+--+-} \rangle \quad & \vert {++----+} \rangle \quad & \vert {-------} \rangle \end{array}

これで、CSSコードを非常に簡潔に定義できます。

定義

CSSコードとは、XX スタビライザー生成元と ZZ スタビライザー生成元のみを用いて表現できるスタビライザー符号です。

つまり、CSSコードとはパウリ YY 行列が現れないスタビライザー生成元を持ち、かつ XXZZ同じスタビライザー生成元に現れないスタビライザー符号です。

明確にしておくと、この定義によれば、CSSコードとは XXZZ スタビライザー生成元のみを選択することが可能な符号です — ただし、スタビライザー符号のスタビライザー生成元の選び方には自由度があることを念頭に置く必要があります。 したがって、一般にCSSコードのスタビライザー生成元には、XXZZ スタビライザー生成元ではない選択肢も(少なくとも1つの有効な選択肢に加えて)存在します。

ZZ スタビライザー生成元と XX スタビライザー生成元の両方を含む非常に単純なCSSコードの例を示します:

ZZXX\begin{array}{cc} Z & Z \\[1mm] X & X \end{array}

最初のスタビライザー生成元が ZZ スタビライザー生成元であり、2番目が XX スタビライザー生成元であるため、これがCSSコードであることは明らかです。 もちろん、CSSコードは有効なスタビライザー符号でもなければなりません — つまり、スタビライザー生成元は可換であり、最小生成集合を形成し、少なくとも1つの量子状態ベクトルを固定する必要があります。 これらの要件は、この符号では容易に確認できます。 前のレッスンで述べたように、この符号の符号空間は ϕ+\vert\phi^+\rangle ベル状態で張られる1次元空間です。 両方のスタビライザー生成元がこの状態を固定することは、eビットの次の2つの表現と、これらのスタビライザー生成元を {0,1}\{\vert 0\rangle, \vert 1\rangle\} 基底および {+,}\{\vert +\rangle, \vert -\rangle\} 基底でのパリティ検査として解釈することで明らかになります。

ϕ+=00+112=+++2\vert\phi^+\rangle = \frac{\vert 0\rangle\vert 0\rangle + \vert 1\rangle\vert 1\rangle}{\sqrt{2}} = \frac{\vert +\rangle\vert +\rangle + \vert -\rangle\vert -\rangle}{\sqrt{2}}

7量子ビット・スティーン符号はCSSコードのもう一つの例です。

ZZZZIIIZZIIZZIZIZIZIZXXXXIIIXXIIXXIXIXIXIX\begin{array}{ccccccc} Z & Z & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] Z & Z & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} \\[1mm] Z & \mathbb{I} & Z & \mathbb{I} & Z & \mathbb{I} & Z \\[1mm] X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] X & X & \mathbb{I} & \mathbb{I} & X & X & \mathbb{I} \\[1mm] X & \mathbb{I} & X & \mathbb{I} & X & \mathbb{I} & X \end{array}

ここでは3つの ZZ スタビライザー生成元と3つの XX スタビライザー生成元があり、これが有効なスタビライザー符号であることはすでに確認されています。

そして、9量子ビット・ショア符号も別の例です。

ZZIIIIIIIIZZIIIIIIIIIZZIIIIIIIIZZIIIIIIIIIZZIIIIIIIIZZXXXXXXIIIIIIXXXXXX\begin{array}{ccccccccc} Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & Z & Z\\[1mm] X & X & X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I}& X & X & X & X & X & X \end{array}

今回は6つの ZZ スタビライザー生成元とたった2つの XX スタビライザー生成元があります。 これは問題ありません。2種類の生成元の間にバランスや対称性がある必要はありません(しばしばありますが)。

繰り返しになりますが、CSSコードが有効なスタビライザー符号であることは非常に重要であり、特に各 ZZ スタビライザー生成元は各 XX スタビライザー生成元と可換でなければなりません。 したがって、XX および ZZ スタビライザー生成元のすべての組み合わせが有効なCSSコードを定義するわけではありません。

誤り検出と訂正

誤り検出と訂正に関して、CSSコードは一般的に9量子ビット・ショア符号と同様の特性を持っています。つまり、XX 誤りと ZZ 誤りを完全に独立して検出・訂正できます。ZZ スタビライザー生成元はビット反転を防ぐ符号を記述し、XX スタビライザー生成元は位相反転を独立して防ぐ符号を記述します。 これが機能するのは、ZZ スタビライザー生成元が必然的に ZZ 誤りとも、訂正として適用される ZZ 演算とも可換であり、両方に対して完全に無関係であるためです。XX スタビライザー生成元、誤り、訂正についても同様です。

例として、7量子ビット・スティーン符号を考えます。

ZZZZIIIZZIIZZIZIZIZIZXXXXIIIXXIIXXIXIXIXIX\begin{array}{ccccccc} Z & Z & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] Z & Z & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} \\[1mm] Z & \mathbb{I} & Z & \mathbb{I} & Z & \mathbb{I} & Z \\[1mm] X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] X & X & \mathbb{I} & \mathbb{I} & X & X & \mathbb{I} \\[1mm] X & \mathbb{I} & X & \mathbb{I} & X & \mathbb{I} & X \end{array}

この符号の基本的な考え方は明らかです:ビット反転誤りに対する [7,4,3][7,4,3]-ハミング符号と、位相反転誤りに対する [7,4,3][7,4,3]-ハミング符号を組み合わせたものです。 XXZZ スタビライザー生成元が可換であることは、もしそうでなければ有効なスタビライザー符号にならないため、幸運なことと言えるかもしれません。 しかし実際には、このような方法で使用した場合に有効なスタビライザー符号を与える古典線形符号の既知の例は多数あります。

一般に、ZZ スタビライザー生成元が最大 jj 個のビット反転誤りを訂正でき、XX スタビライザー生成元が最大 kk 個の位相反転誤りを訂正できるCSSコードを考えます。 例えば、[7,4,3][7,4,3]-ハミング符号が1つのビット反転を訂正できるため、スティーン符号では j=1j = 1k=1k = 1 です。 すると、誤りの離散化により、このCSSコードは jjkk最小値以下の量子ビット数の任意の誤りを訂正できます。 これは、シンドロームを測定すると、この数の量子ビットに対する任意の誤りが確率的に XX 誤り、ZZ 誤り、またはその両方の組み合わせへと収縮し、XX 誤りと ZZ 誤りが独立して検出・訂正されるためです。

要約すると、2つの古典線形符号(または1つの古典線形符号の2つのコピー)が、XXZZ スタビライザー生成元が可換になるという意味で互換性を持っていれば、それらを組み合わせて得られるCSSコードは、上述の意味でそれら2つの符号の誤り訂正特性を引き継ぎます。

ただし、コストが生じる点にも注意が必要です。2つの古典符号でビットをエンコードできる量よりも、量子ビットをエンコードできる量が少なくなります。 これは、CSSコードのスタビライザー生成元の総数が2つの古典線形符号のパリティ検査の数の合計であり、各スタビライザー生成元が符号空間の次元を半分にするためです。 例えば、[7,4,3][7,4,3]-ハミング符号はこの符号に対してパリティ検査文字列が3つしかないため4つの古典ビットをエンコードできますが、7量子ビット・スティーン符号は6つのスタビライザー生成元を持つため1量子ビットしかエンコードできません。

CSSコードの符号空間

CSSコードに関する議論の最後に、これらの符号の符号空間を考察します。 これにより、2つの古典線形符号がCSSコードを形成するために組み合わせられるという意味で互換性を持つために、どのような関係が成立しなければならないかをより詳細に検討する機会が得られます。

nn 量子ビット上の任意のCSSコードを考え、z1,,zsΣnz_1, \ldots, z_s \in \Sigma^n をこの符号の ZZ スタビライザー生成元に対応する nn ビットのパリティ検査文字列とします。 つまり、ZZ スタビライザー生成元のみで記述される古典線形符号 CZ\mathcal{C}_Z は次の形式を取ります。

CZ={uΣn:uz1==uzs=0}\mathcal{C}_Z = \bigl\{ u \in \Sigma^n \,:\, u \cdot z_1 = \cdots = u \cdot z_s = 0 \bigr\}

言葉で言えば、古典線形符号 CZ\mathcal{C}_Z は、パリティ検査文字列 z1,,zsz_1, \ldots, z_s のすべてとの二進内積がゼロになる全ての文字列を含みます。

同様に、x1,,xtΣnx_1,\ldots,x_t\in\Sigma^n を符号の XX スタビライザー生成元に対応する nn ビットのパリティ検査文字列とします。 したがって、XX スタビライザー生成元に対応する古典線形符号は次の形式を取ります。

CX={uΣn:ux1==uxt=0}\mathcal{C}_X = \bigl\{ u \in \Sigma^n \,:\, u \cdot x_1 = \cdots = u \cdot x_t = 0 \bigr\}

XX スタビライザー生成元のみでは、標準基底ではなく {+,}\{\vert {+}\rangle,\vert {-}\rangle\} 基底でこの符号に類似した符号を記述します。

次に、同じ文字列 z1,,zsz_1,\ldots,z_sx1,,xtx_1,\ldots,x_t の選択から導かれる2つの新しい古典線形符号を導入します。ただし、これらの文字列をパリティ検査文字列としてではなく生成元として扱います。 特に、次の2つの符号が得られます。

DZ={α1z1αszs:α1,,αs{0,1}}DX={α1x1αtxt:α1,,αt{0,1}}\begin{aligned} \mathcal{D}_Z & = \bigl\{ \alpha_1 z_1 \oplus \cdots \oplus \alpha_s z_s \,:\, \alpha_1,\ldots,\alpha_s \in \{0,1\} \bigr\}\\[1mm] \mathcal{D}_X & = \bigl\{ \alpha_1 x_1 \oplus \cdots \oplus \alpha_t x_t \,:\, \alpha_1,\ldots,\alpha_t \in \{0,1\} \bigr\} \end{aligned}

これらは先に定義した符号の双対符号として知られています: DZ\mathcal{D}_ZCZ\mathcal{C}_Z の双対符号であり、DX\mathcal{D}_XCX\mathcal{C}_X の双対符号です。 この時点では双対符号がなぜ関連するのか明確でないかもしれませんが、次の2つの理由を含む複数の理由から非常に関連性が高いことが分かります。

第一に、2つの古典線形符号 CZ\mathcal{C}_ZCX\mathcal{C}_X がCSSコードを形成するために互換性を持つために成立しなければならない条件は、双対符号を参照することで簡潔に記述できます。 具体的には、DZCX\mathcal{D}_Z\subseteq\mathcal{C}_X でなければなりません。または等価に、DXCZ\mathcal{D}_X\subseteq\mathcal{C}_Z でなければなりません。 言葉で言えば、双対符号 DZ\mathcal{D}_ZZZ スタビライザー生成元に対応する文字列を含んでおり、それらが CX\mathcal{C}_X に含まれることは、これらの文字列と XX スタビライザー生成元に対応する文字列との二進内積がゼロであることと等価です。 それはさらに、各 ZZ スタビライザー生成元が各 XX スタビライザー生成元と可換であることと等価です。 あるいは、XXZZ スタビライザー生成元の役割を入れ替えて、包含関係 DXCZ\mathcal{D}_X\subseteq\mathcal{C}_Z から出発しても、同じ結論に達することができます。

第二に、双対符号を参照することで、特定のCSSコードの符号空間を簡単に記述できます。 特に、符号空間は次の形式のベクトルによって張られます。

uDX=12tvDXuvuCZ の全てに対して)\vert u \oplus \mathcal{D}_X\rangle = \frac{1}{\sqrt{2^t}} \sum_{v\in\mathcal{D}_X} \vert u \oplus v\rangle \qquad \text{($u\in\mathcal{C}_Z$ の全てに対して)}

言葉で言えば、これらのベクトルは、XX スタビライザー生成元に対応する符号の双対符号 DX\mathcal{D}_X の文字列上の一様重ね合わせであり、ZZ スタビライザー生成元に対応する符号 CZ\mathcal{C}_Z の文字列によって(ビット単位XORで)シフトされたものです。 明確にするために、シフトのための異なる選択(この式における文字列 uu で表される)が同じベクトルをもたらすことがあります。 したがって、これらの状態はすべて異なるわけではありませんが、集合的に符号空間全体を張ります。

なぜこのようなベクトルが符号空間に属し、かつそれを張るのかについての直感的な説明を示します。 任意の nn ビット文字列 uu に対して nn 量子ビットの標準基底状態 u\vert u\rangle を考え、この状態を符号空間に射影するとします。 つまり、Π\Pi をCSSコードの符号空間への射影として、ベクトル Πu\Pi\vert u\rangle を考えます。 2つのケースがあります:

  • ケース1:uCZu\in\mathcal{C}_Z。 これは、CSSコードの各 ZZ スタビライザー生成元が u\vert u\rangle に対して自明に作用することを意味します。 一方、XX スタビライザー生成元はそれぞれ単に u\vert u\rangle のいくつかのビットを反転させます。 特に、DX\mathcal{D}_X の各生成元 vv に対して、vv に対応する XX スタビライザー生成元は u\vert u\rangleuv\vert u\oplus v\rangle に変換します。 前のレッスンで見たように、Π\Pi をスタビライザーの要素の平均として特徴付けることで、次の式が得られます:

    Πu=12tvDXuv=12tuDX.\Pi \vert u \rangle = \frac{1}{2^t} \sum_{v\in\mathcal{D}_{X}} \vert u \oplus v\rangle = \frac{1}{\sqrt{2^t}} \vert u \oplus \mathcal{D}_X\rangle.
  • ケース2:uCZu\notin\mathcal{C}_Z。これは、ZZ スタビライザー生成元に対応するパリティ検査の少なくとも1つが失敗することを意味します。つまり、u\vert u\rangle は少なくとも1つの ZZ スタビライザー生成元の 1-1 固有ベクトルでなければなりません。CSSコードの符号空間はスタビライザー生成元の +1+1 固有空間の交差です。したがって、少なくとも1つの ZZ スタビライザー生成元の 1-1 固有ベクトルである u\vert u\rangle は、符号空間に直交します:

    Πu=0.\Pi\vert u\rangle = 0.

そして、すべての nn ビット文字列 uu を調べ、Πu=0\Pi\vert u\rangle = 0 となるものを捨て、残りを正規化することで、前述のベクトルが得られます。これにより、それらが符号空間を張ることが示されます。

また、XXZZ スタビライザー生成元の対称性を利用して、符号空間を類似しているが異なる方法で記述することもできます。 特に、次の形式のベクトルで張られる空間です。

HnuDZ=12svDZHnuvuCX に対して)H^{\otimes n} \vert u \oplus \mathcal{D}_Z\rangle = \frac{1}{\sqrt{2^s}} \sum_{v\in\mathcal{D}_Z} H^{\otimes n}\vert u \oplus v\rangle \qquad \text{($u\in\mathcal{C}_X$ に対して)}

本質的には、XXZZ が現れるたびに入れ替わっていますが、標準基底を {+,}\{\vert+\rangle,\vert-\rangle\} 基底と入れ替える必要もあるため、アダマール演算が含まれています。

例として、7量子ビット・スティーン符号を考えます。 XX スタビライザー生成元と ZZ スタビライザー生成元の両方のパリティ検査文字列は同じです: 111100011110001100110110011010101011010101 です。 したがって、符号 CX\mathcal{C}_XCZ\mathcal{C}_Z は同じであり、どちらも [7,4,3][7,4,3]-ハミング符号と等しくなります。

CX=CZ={0000000,0000111,0011001,0011110,0101010,0101101,0110011,0110100,1001011,1001100,1010010,1010101,1100001,1100110,1111000,1111111}\mathcal{C}_X = \mathcal{C}_Z = \{0000000, 0000111, 0011001, 0011110, 0101010, 0101101, 0110011, 0110100, 1001011, 1001100, 1010010, 1010101, 1100001, 1100110, 1111000, 1111111\}

したがって、双対符号 DX\mathcal{D}_XDZ\mathcal{D}_Z も同じになります。 3つの生成元があるので、8つの文字列が得られます。

DX=DZ={0000000,0011110,0101101,0110011,1001011,1010101,1100110,1111000}\mathcal{D}_X = \mathcal{D}_Z = \{0000000, 0011110, 0101101, 0110011, 1001011, 1010101, 1100110, 1111000\}

これらの文字列はすべて [7,4,3][7,4,3]-ハミング符号に含まれており、CSS条件が満たされています:DZCX\mathcal{D}_Z \subseteq \mathcal{C}_X、または等価に DXCZ\mathcal{D}_X \subseteq \mathcal{C}_Z

DX\mathcal{D}_XCZ\mathcal{C}_Z のすべての文字列の半分を含むため、uCZu\in\mathcal{C}_Z を選ぶことで得られる異なるベクトル uDX\vert u\oplus \mathcal{D}_X\rangle は2つだけです。 これは7量子ビット・スティーン符号が2次元の符号空間を持つことから予想される結果です。 このようにして得られる2つの状態を使って、論理状態 0\vert 0\rangle1\vert 1\rangle を次のようにエンコードできます。

00000000+0011110+0101101+0110011+1001011+1010101+1100110+1111000810000111+0011001+0101010+0110100+1001100+1010010+1100001+11111118\begin{aligned} \vert 0\rangle & \mapsto \frac{ \vert 0000000\rangle + \vert 0011110\rangle + \vert 0101101\rangle + \vert 0110011\rangle + \vert 1001011\rangle + \vert 1010101\rangle + \vert 1100110\rangle + \vert 1111000\rangle }{\sqrt{8}}\\[4mm] \vert 1\rangle & \mapsto \frac{ \vert 0000111\rangle + \vert 0011001\rangle + \vert 0101010\rangle + \vert 0110100\rangle + \vert 1001100\rangle + \vert 1010010\rangle + \vert 1100001\rangle + \vert 1111111\rangle }{\sqrt{8}} \end{aligned}

通常通り、この選択は強制されるものではありません — 符号空間を使って量子ビットを自由にエンコードできます。 ただし、このエンコードは前のレッスンの7量子ビット・スティーン符号のエンコード回路の例と一致しています。