複数システム#
はじめに#
この授業では、 複数の のシステムが考えられる場合の量子情報の基礎に焦点を当てます。このような状況は、古典的、量子的を問わず、情報処理において自然に発生します。大きな情報伝達系は、ビットや量子ビットのような小さな系の集まりを使って、最も簡単に構築されることが多いです。
この授業では、複数のシステムをまとめて、あたかも1つの合成システムを 共 に形成しているかのように見ることができるという、シンプルでありながら非常に重要なアイデアを紹介します。実際、この考え方は、複数の系に対して、量子状態、量子計測、量子演算がどのように行われるかを説明することに直結しています。
しかし、複数の量子システムを理解するためには、それらをまとめて一つのシステムとして見るだけでは不十分です。例えば、ある特定の量子状態にある複数の量子システムを用意し、そのうちの1つ(または 適切な部分集合 )を測定することがあります。一般に、このような測定は残りのシステムの状態に影響を与えるため、量子アルゴリズムやプロトコルを解析する際には、その方法を正確に理解することが重要です。また、複数のシステム間の 相関 関係、特に エンタングルメント と呼ばれる相関関係を理解することも、量子情報・量子計算において重要です。
1. 古典情報#
前回の授業と同様に、古典的な情報の議論から始めます。今回も、確率論的な記述と量子論的な記述は数学的に類似しており、古典的な情報という身近な設定で数学がどのように機能するかを認識することは、量子情報がなぜそのような方法で記述されるのかを理解する上で有用です。
1.1 デカルト積による古典的状態 #
ここでは、非常に基本的なレベルから、複数のシステムの古典的な状態について説明します。簡単のために、まず2つのシステムだけを取り上げ、その後2つ以上のシステムに一般化することにします。
具体的には、 \(\mathsf{X}\) が古典的な状態の集合 \(\Sigma\) を持つシステムで、 \(\mathsf{Y}\) が古典的な状態の集合 \(\Gamma\) を持つ第二のシステムであるとします。前回と同じく、これらの集合を 古典的な状態の集合 と呼んでいるので、 \(\Sigma\) と \(\Gamma\) はともに有限で空でないという前提です。 \(\Sigma = \Gamma\) ということもあり得ますが、必ずしもそうとは限りませんので、それとは別に、これらの集合を指す名前を変えておくと、わかりやすくなります。
ここで、 \(\mathsf{X}\) と \(\mathsf{Y}\) の2つのシステムを、 \(\mathsf{X}\) を左、 \(\mathsf{Y}\) を右にして並べるとします。この2つのシステムは、あたかも1つのシステムを形成しているかのように見ることができ、これを好みによって \((\mathsf{X},\mathsf{Y})\) または \(\mathsf{XY}\) と表記することができます。
この合成システム \(( \mathsf{X},\mathsf{Y})\) について、”その古典状態は何か “という自然な疑問が湧きます。
答えは、 \(( \mathsf{X},\mathsf{Y})\) の古典的な状態の集合は、 \(\Sigma\) と \(\Gamma\) の デカルト積(直積) であり、次のように定義される集合であることです。
デカルト積とは、簡単に言えば、ある集合の要素とある集合の要素を合わせて、あたかも一つの集合の一つの要素であるかのように捉える数学的概念にほかなりません。
このとき、 \((\mathsf{X},\mathsf{Y})\) が古典的な状態 \((a,b)\in\Sigma\times\Gamma\) にあるというのは、 \(\mathsf{X}\) が古典状態 \(a\in\Sigma\) にあり、 \(\mathsf{Y}\) が古典状態 \(b\in\Gamma\) にあることを意味します。 \(\mathsf{X}\) の古典状態が \(a\in\Sigma\) 、 \(\mathsf{Y}\) の古典状態が \(b\in\Gamma\) であれば、合成システム \(( \mathsf{X},\mathsf{Y})\) の古典状態は \((a,b)\) となります。
2つ以上のシステムでは、状況は自然な形で一般化されます。ここで、 \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) がそれぞれ任意の正の整数 \(n\) に対して古典状態の集合 \(\Sigma_1, \ldots,\Sigma_n\) を持つシステムであるとします。 \(n\) 個のタプル \((\mathsf{X}_1,\ldots,\mathsf{X}_n)\) の古典状態の集合は、単一の合成システムとして表され、以下のようなデカルト積となります。
状態を文字列として表す#
古典状態 \((a_1,\ldots,a_n)\) を 文字列 \(a_1\cdots a_n\) として書くと、特に古典状態の集合 \(\Sigma_1,\ldots,\Sigma_n\) が 記号 または 文字 の集合と関連する(非常に典型的な)状況で、簡潔さのためにしばしば便利です。
実際、コンピューター サイエンスの根本的に重要な概念である文字列の概念は、デカルト積によって数学的に形式化されています。 アルファベット という用語は、通常、文字列を形成するために使用される記号の集合を指すために使用されますが、アルファベットの数学的な定義は、古典的な状態の集合の定義とまったく同じです。つまり、有限で空でない集合です。
たとえば、 \(\mathsf{X}_1,\ldots,\mathsf{X}_\mathrm{10}\) がビットであると仮定すると、これらのシステムの古典的な状態の集合はすべて同じになります。
(集合 \(\{0,1\}\) は、一般に バイナリーアルファベット と呼ばれます。 ) このとき、合成システム \((\mathsf{X}_1,\ldots,\mathsf{X}_\mathrm{10})\) の \(2^{10} = 1024\) 個の古典的な集合があり、これらは以下の集合の要素です。
これらの古典的な状態を文字列として記述すると、次のようになります。
たとえば、古典状態 \(0001010000\) の場合、\(\mathsf{X}_4\) と \(\mathsf{X}_6\) が状態 \(1\) にあるのに対し、他のすべてのシステムは状態 \(0\) にあることがわかります。
1.2 確率的状態 #
前のレッスンから、確率的状態は確率をシステムの各古典的状態に関連付けられたことを思い出してください。したがって、複数のシステムの確率的状態は (それらが 1 つのシステムを形成しているかのように集合的に見た場合) 、個々のシステムの古典的な状態の集合のデカルト積の各要素に確率が関連付けられます。
たとえば、\(\mathsf{X}\) と \(\mathsf{Y}\) が両方ともビットであり、対応する古典的な状態の集合がそれぞれ \(\Sigma = \{0,1\}\) および \(\Gamma = \{0,1\}\) であるとします。 \((\mathsf{X},\mathsf{Y})\) のペアの確率的状態を次に示します。
この確率的状態は、\(\mathsf{X}\) と \(\mathsf{Y}\) の両方がランダムなビットである状態です — それぞれが確率 1/2 で 0 で、確率 1/2 で 1 です — しかし、2 つのビットの古典的な状態は常に同じです。これは、これらのシステム間の相関関係の例です。
デカルト積の状態集合の順序付け#
システムの確率的な状態は、確率ベクトルで表されます。これは、対象となるシステムの基礎となる古典的な状態の集合に対応するように配置されたインデックスを持つ列ベクトルです。
複数のシステムで同じ状況が発生します。複数のシステムの確率的状態をデカルト積として表すには、積の要素の順序を決定する必要があります。システム \(\mathsf{X}, \mathsf{Y}\) の個々の古典的な状態集合 \(\Sigma, \Gamma\) が既に順序付けられていると仮定すると、これを行うための簡単な規則があります: アルファベット順 です。より正確には、各 \(n\) -タプル (または、同等に、各文字列のシンボル) の要素は、 左から右に大きくなる ように並べられています。
たとえば、この規則に従って、デカルト積 \(\{1,2,3\}\times\{0,1\}\) は次のように並べられます。
\(n\) -タプルが文字列として記述され、このように順序付けられると、\(\{0,1\}\times\{0,1\}\) が \(00, 01, 10, 11\) として順序付けられ、集合 \(\{0,1\}^{10}\) は上で提案されたように並べられています。 \(\{0, 1, \dots, 9\} \times \{0, 1, \dots, 9\}\) が 0 から 99 までの数字として並べられていることもわかります。これは偶然ではないことに気付くかもしれません。今日の 10 進数システムは同じアルファベット順を使用しています。もちろん、ここで「アルファベット順」はより広い意味を持ち、数字記号の集まりを含む場合があります。
上記の 2 ビットの例に戻ると、確率的状態は次の確率ベクトルによって表されます (明確にするために、要素には明示的にラベルが付けられています)。
2 つのシステムの独立性#
2つのシステムの確率的状態の特別なタイプは、システムが独立であるというものです。直感的に言えば、2つのシステムが独立であるとは、どちらかのシステムの古典的状態を学習しても、もう一方のシステムに関連する確率に影響を与えないということです。つまり、一方のシステムの古典的状態を知ることは、他方のシステムの古典的状態について全く情報を与えないということです。
この概念を正確に定義するために、もう一度 \(\mathsf{X}\) と \(\mathsf{Y}\) がそれぞれ古典的な状態の集合 \(\Sigma\) と \(\Gamma\) を持つシステムであると仮定します。これらのシステムが与えられた確率的状態に関して、次のような場合、両者は独立であるといいます。
上記は、 \(a\in\Sigma\) と \(b\in\Gamma\) のすべての選択に対してです。
この条件を確率ベクトルで表現するために、与えられた確率的な状態 \((\mathsf{X},\mathsf{Y})\) を確率ベクトルで記述すると、ディラック表記で次のように書きます。
独立性の条件 \((2)\) は、以下のような2つの確率ベクトルが存在することと等価です。
上記は、それぞれ \(\mathsf{X}\) と \(\mathsf{Y}\) の古典的な状態に関連する確率を表し、すべての \(a\in\Sigma\) および \(b\in\Gamma\) に対して、
となります。
たとえば、ベクトルで表されるビット \((\mathsf{X},\mathsf{Y})\) のペアの確率的状態
は \(\mathsf{X}\) と \(\mathsf{Y}\) が独立したものです。具体的には、独立性に必要な条件は、以下の確率ベクトルに対して真です。
たとえば、\(00\) の要素に一致させるには、\(\frac{1}{6} = \frac{1}{4} \times \frac{2}{3}\) が必要であり、実際にそうです。他の要素も同様の方法で確認できます。
一方、確率的状態 \((1)\) は、次のように記述できます。
これは、システム \(\mathsf{X}\) と \(\mathsf{Y}\) の間の独立性を表していません。これを主張する簡単な方法は次のとおりです。
上記の方程式 \((3)\) のように、 \(a\) と \(b\) のすべての選択に対して条件 \((4)\) を満たす確率ベクトル \(\vert \phi\rangle\) と \(\vert \psi \rangle\) が存在すると仮定します。その場合、必然的に
となり、これは、 \(q_0 = 0\) または \(r_1 = 0\) のどちらかを意味します。これは、両方とも0でない場合、積 \(q_0 r_1\) が0にならないためです。このことから、 \(q_0 r_0 = 0\) ( \(q_0=0\) の場合)か \(q_1 r_1 = 0\) ( \(r_1=0\) の場合)のどちらかであることがわかります。しかし、 \(q_0 r_0 = 1/2\) と \(q_1 r_1 = 1/2\) でなければならないので、どちらの等式も成り立たないことがわかります。したがって、独立に必要な性質を満たすベクトル \(\vert\phi\rangle\) と \(\vert\psi\rangle\) は存在しません。
2つのシステム間の独立性を定義したので、今度は相関関係を独立性の欠如として正確に定義できるようになりました。例えば、ベクトル \((5)\) が表す確率的状態の2つのビットは独立ではないので、定義上、相関があることになります。
ベクトルのテンソル積#
今説明した独立の条件は、テンソル積の概念によってより簡潔に表現できます。これは非常に抽象的に定義され、さまざまな数学的構造に適用できる非常に一般的な概念ですが、当面の場合、単純で具体的な用語で定義できます。与えられた 2 つのベクトル
のテンソル積 \(\vert \phi \rangle \otimes \vert \psi \rangle\) は、次のように定義される合成状態の集合 \(\Sigma \times \Gamma\) 上の新しいベクトルです。
同様に、ベクトル \(\vert \pi \rangle = \vert \phi \rangle \otimes \vert \psi \rangle\) は次の式で定義され、
は、すべての \(a\in\Sigma\) と \(b\in\Gamma\) について真です。
ここで、合成システム \((\mathsf{X}, \mathsf{Y})\) の確率ベクトル \(\vert \pi \rangle\) がテンソル積として表現可能であることを要求するものとして、独立の条件を作り直すことができます。
サブシステム \(\mathsf{X}\) と \(\mathsf{Y}\) のそれぞれの確率ベクトル \(\vert \phi \rangle\) と \(\vert \psi \rangle\) のこの状況では、 \(\vert \pi \rangle\) は積状態または積ベクトルであるといいます。
ケットののテンソル積を取るとき、しばしば ‘\(\otimes\)’ を省略します。たとえば、 \(\vert \phi \rangle \otimes \vert \psi \rangle\) ではなく、 \(\vert \phi \rangle \vert \psi \rangle\) と書きます。 この慣例は、テンソル積が、このコンテキストでは、2つのベクトルの積を取る最も自然な方法である、またはデフォルトの方法であるという考えを表しています。あまり一般的ではありませんが、\(\vert \phi\otimes\psi\rangle\) という表記も使用されることがあります。
デカルト積の要素の並び方にアルファベット規則を使用すると、2 つの列ベクトルのテンソル積について次の仕様が得られます。
重要な余談ですが、標準基底ベクトルのテンソル積について、次のような書き方があります。
あるいは、 \((a,b)\) を文字列ではなく、順序付きペアで書くと、次のようになります。
しかし、より一般的には以下のように書きます。
数学の慣習にならい、明確さや曖昧さをもたらさない括弧は削除します。
2つのベクトルのテンソル積は、双線形という重要な性質を持っています。これは、もう一方の引数が固定されていると仮定して、2つの引数のそれぞれに対して個別に線形であることを意味します。
この性質は、以下の式で表すことができます。
最初の引数の線形性:
2 番目の引数の線形性:
これらの式のうち、2番目の式を考えると、スカラーはテンソル積の中で「自由に浮遊」していることがわかります。
したがって、このベクトルを指し示すために、単純に \(\alpha\vert\phi\rangle\otimes\vert\psi\rangle\) と書いても、あるいは \(\alpha\vert\phi\rangle\vert\psi \rangle\) や\(\alpha\vert\phi\otimes\psi\rangle\) と書いても問題ありません。
3 つ以上のシステムの独立性とテンソル積#
独立性とテンソル積の概念は、3 つ以上のシステムに直接一般化できます。 \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) がそれぞれ古典的な状態集合 \(\Sigma_1,\ldots,\Sigma_n\) を持つ系である場合、組み合わせたシステム \((\mathsf{X}_1,\ldots,\mathsf{X}_n)\) の確率的状態は、関連する確率ベクトルが、 \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) の確率的状態を記述する確率ベクトル \(\vert \phi_1 \rangle,\ldots,\vert \phi_n\rangle\) に対して、以下のような形の場合、
積状態{nbsp}となります。
ここで、テンソル積の定義は自然な方法で一般化されます: ベクトル \(\vert \psi \rangle = \vert \phi_1 \rangle \otimes \cdots \otimes \vert \phi_n \rangle\) は次の式によって定義され、
これは、すべての \(a_1\in\Sigma_1、\ldots a_n\in\Sigma_n\) について真です。 3 つ以上のベクトルのテンソル積を定義する別の方法は、2 つのベクトルのテンソル積に関して再帰的に行われます。
この時、 \(n\geq 3\) と仮定しています。
2 つのベクトルだけのテンソル積と同様に、3 つ以上のベクトルのテンソル積は、他のすべての引数が固定されていると仮定すると、各引数で個別に線形になります。この場合、3 つ以上のベクトルのテンソル積は多重線形であると言います。
2 つのシステムの場合と同様に、システム \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) が積状態にある場合、システムは独立していると言えますが、用語相互に独立しているという方がより正確です。ペアごとの独立性など、3 つ以上のシステムの独立性の他の概念がありますが、現時点では考慮しません。
標準基底ベクトルのテンソル積に関して先ほどみた事柄を一般化すると、任意の正の整数 \(n\) と任意の古典的な状態 \(a_1,\ldots,a_n\) に対して以下のようになります。
1.3 確率的状態の測定 #
ここで、複数システムの確率的状態の測定に話を移しましょう。複数のシステムをまとめて一つのシステムとして見ることで、複数のシステムに対して測定がどのように機能しなければならないかという仕様がすぐに得られます–ただし、すべてのシステムが測定される場合に限ります。
例えば、2ビットの確率的な状態 \((\mathsf{X},\mathsf{Y})\) が以下の確率ベクトルで記述されるとします。
とすると、結果 \(00\) という結果、つまり \(\mathsf{X}\) の測定で \(0\)、\(\mathsf{Y}\) の測定で \(0\) 、が確率 \(1/2\) で得られ、 \(11\) という結果も確率 \(1/2\) で得られます。それぞれの場合に、我々の知識の確率ベクトルの記述を適宜更新し、確率的状態はそれぞれ \(|00\rangle\) または \(|11\rangle\)と なります。
部分測定#
しかし、すべてのシステムを測定するのではなく、システムの適切な部分集合だけを測定することにしたとします。この場合、測定された各システムの測定結果は、残りのシステムの知識にも(一般的に)影響を与えることになります。
ここでは、2つのシステムのうち、1つが測定されるケースに焦点を当てましょう。より一般的な状況-3つ以上のシステムの適切な部分集合が測定される場合-は、測定されるシステムをあたかも1つのシステムを形成しているかのようにまとめ、測定されないシステムをあたかも第2のシステムを形成しているかのようにみなすと、事実上2つのシステムのケースに縮約することができます。
正確には、 \(\mathsf{X}\) は古典状態の集合 \(\Sigma\) を持つシステム、 \(\mathsf{Y}\) は古典状態の集合 \(\Gamma\) を持つシステムで、この二つのシステムが一緒にある確率的状態にあると仮定します(いつものように)。ここでは、 \(\mathsf{X}\) を測定するだけで、 \(\mathsf{Y}\) には何もしない場合について考えます。 \(\mathsf{Y}\) を測定して \(\mathsf{X}\) に何も起こらない状況は対称に扱われます。
まず、 \(\mathsf{X}\) だけが測定されたときに特定の古典的状態 \(a\in\Sigma\) を観察する確率は、 \(\mathsf{Y}\) も測定されたという仮定の下で得られる確率と一致しなければならないことがわかっています。
つまり、
これは、 \(\mathsf{X}\) 単独のいわゆる縮約(または周辺) の 確率的状態の式です。
この式は直感的に理解できます:これが間違いであるためには、何か非常に奇妙なことが起こる必要があります。つまり、\(\mathsf{X}\) の測定の確率は、 \(\mathsf{Y}\) の結果に関係なく、 \(\mathsf{Y}\) も測定されたかどうかだけで影響される、ということを意味します。もし、 \(\mathsf{Y}\) が遠い場所、例えば、別の銀河系にあるとしたら、光よりも速い信号伝達が可能になりますが、これは物理学の理解に基づいて否定されます。また、確率の解釈として、システムの状態に対する確信の度合いを表すという考え方もあります。 \(\mathsf{Y}\) の測定は、既存の状態を明らかにするだけと考えるので、 \(\mathsf{X}\) を見る別の観測者が \(\mathsf{Y}\) の測定を知らなくても、確率は変化しないはずです。
\(\mathsf{X}\) だけが測定され、 \(\mathsf{Y}\) は測定されないと仮定すると、一般に \(\mathsf{Y}\) の古典的状態に対する不確実性がまだ存在する可能性がります。このため、 \(a\in\Sigma\) と \(b\in\Gamma\) のある選択に対して、 \((\mathsf{X},\mathsf{Y})\) の確率的状態を \(\vert ab\rangle\) に更新するのではなく、この \(\mathsf{Y}\) に関するこの不確実性を適切に反映するように記述を更新する必要があります。
この不確実性を反映したのが、以下の条件付き確率の式です。
ここで、 \(\operatorname{Pr}(\mathsf{Y} = b | \mathsf{X} = a)\) という式は、 \(\mathsf{X} = a\) の条件付き(または、が与えられた時の)\(\mathsf{Y} = b\) の確率を表します。
ただし、上の式は \(\operatorname{Pr}(\mathsf{X}=a)\) が0でないときのみ定義されることに注意してください。もし、 \(\operatorname{Pr}(\mathsf{X}=a) = 0\) であれば、不定形 \(\frac{0}{0}\)が得られます。しかし、 \(\operatorname{Pr}(\mathsf{X}=a) = 0\)であれば、 \(a\) を \(\mathsf{X}\) の測定結果としては観測しないので、この可能性を気にする必要はありません。
これらの式を確率ベクトルで表現するために、 \((\mathsf{X},\mathsf{Y})\) の結合状態を記述する確率ベクトル \(\vert \psi \rangle\) を考えてみましょう。
\(\mathsf{X}\) を単独で測定すると、それぞれの可能な結果が確率で得られます。
したがって、 \(\mathsf{X}\) のみの確率状態(すなわち、 \(\mathsf{X}\) の縮約された確率状態)を表すベクトルは、次式で与えられます。
\(\mathsf{X}\) の測定の結果 \(a\in\Sigma\) を得た後、条件付き確率の式に従って \(\mathsf{Y}\) の確率的状態を更新し、以下の確率ベクトルで表現するようにします。
また、 \(\mathsf{X}\) の測定結果が古典状態 \(a\) であった場合、合成システムの確率的状態\((\mathsf{X},\mathsf{Y})\) の記述を \(\vert a\rangle \otimes \vert\pi_a\rangle\) のように更新します。
この \(\vert\pi_a\rangle\) の定義を考える方法の1つは、ベクトル \(\sum_{b\in\Gamma} p_{ab} \vert b\rangle\) の正規化と見なすことです。 このベクトルの要素の合計で割り、確率ベクトルを取得します。この正規化は、\(\mathsf{X}\) の測定結果が \(a\) という結果になった場合の条件付けを効果的に説明します。
具体的な例として、 \(\mathsf{X}\) の古典的な状態集合が \(\Sigma = \{0,1\}\) 、 \(\mathsf{Y}\) の古典的な状態集合が \(\Gamma = \{1,2,3\}\) で、 \((\mathsf{X},\mathsf{Y})\) の確率的状態が以下であるときを考えます。
私たちの目標は、2 つの可能な結果 (\(0\) と \(1\)) の確率を決定し、システム \(\mathsf{X}\) を測定したと仮定して、2つの結果に対する \(\mathsf{Y}\) の結果の確率的状態がどうであるかを計算することです。
テンソル積の双線形性、特に 2 番目の引数が線形であるという事実を使用して、ベクトル \(\vert \psi \rangle\) を次のように書き直すことができます。
測定されるシステムのための明確な標準基底ベクトルを分離し、2番目のシステムのためのすべての項を集めました。これは、どのようなベクトルから始めたかにかかわらず、常に可能であることが、少し考えればわかります。
このように整理しなおすと、測定結果の分析が容易になります。2つの結果の確率は次式で与えられます。
これらの確率の和は予想通り1になり、計算の確認に役立つことに注意してください。
また、 \(\mathsf{Y}\) の確率的な状態は、括弧内のベクトルを正規化(先ほど計算した確率で割る)して確率ベクトルにすることですぐに推測することが可能です。すなわち、 \(\mathsf{X}\) が0であることを条件すると、 \(\mathsf{Y}\) の確率的状態は以下のようになります。
\(\mathsf{X}\) の測定値が 1 であると条件付けすると、 \(\mathsf{Y}\) の確率的状態は次のようになります。
1.4 確率的状態の演算 #
複数システムに対する古典的情報の考察の最後に、確率的状態にある複数システムに対する演算を考えてみましょう。 確率的状態と測定の時と同じ考え方で、複数のシステムをまとめて一つの合成システムと見なし、前の授業を参照してこれがどのように機能するかを確認できます。
典型的な2つのシステム \(\mathsf{X}\) と \(\mathsf{Y}\) に戻って、合成システム \((\mathsf{X},\mathsf{Y})\) に対する古典演算を考えてみましょう。前回の授業と上記の議論から、このような演算は行と列がデカルト積 \(\Sigma\times\Gamma\) でインデックスされる確率行列で表されると結論付けられます。
例えば、 \(\mathsf{X}\) と \(\mathsf{Y}\) がビットであるとし、次のような記述を持つ演算を考えます。
\(\mathsf{X} = 1\) の場合、 \(\mathsf{Y}\) に対して NOT 演算を実行します。それ以外の場合は何もしません。
これは、制御NOT演算と呼ばれる決定論的な演算です。ここで、 \(\mathsf{X}\) は制御ビットで、ターゲットビット \(\mathsf{Y}\) にNOT演算を適用するかどうかを決定します。この演算を行列表現すると次のようになります。
標準基底状態に対する作用は次の通りです。
仮に \(\mathsf{X}\) と \(\mathsf{Y}\)の役割を交換し、 \(\mathsf{Y}\)を制御ビット、 \(\mathsf{X}\) をターゲットビットとすると、演算の行列表現は次のようになります。
標準基底状態での作用はこのようになります。
また、他の例として、このように演算を説明することもあります。
確率 1/2 で、 \(\mathsf{Y}\) を \(\mathsf{X}\) と等しくなるように設定します。それ以外の場合は、 \(\mathsf{X}\) を \(\mathsf{Y}\) と等しくなるように設定します。
この操作の行列表現は次のとおりです。
標準基底ベクトルに対するこの操作の作用は次のとおりです。
これらの例では、2つのシステムをまとめて1つのシステムとして捉え、前回の授業と同様に進めているに過ぎません。
同じことが、いくつのシステムに対してもできます。例えば、3ビットの場合、3ビットをモジュロ \(8\) で増やし、つまり3ビットを2進数表記で \(0\) から \(7\) までの数をエンコードしていると考え、 \(1\) を加え、 \(8\) で割った余りを取る、と考えます。この演算は次のように書くことができます。
また、次のように書くこともできます。
ケットの中の数字 \(j\in\{0,1,\ldots,7\}\) は、その数字の3ビット2進法符号化を指すということで合意したと仮定してください。第三の方法は、この演算を行列で表現することです。
独立した演算#
ここで、複数のシステムがあり、それぞれのシステムに対して独立に個別の演算を行うとします。
例えば、古典状態集合 \(\Sigma\) と \(\Gamma\) を持つ二つのシステム \(\mathsf{X}\) と \(\mathsf{Y}\) を用意し、\(\mathsf{X}\) に対するある演算と \(\mathsf{Y}\) に対する別の演算を完全に独立に行うとします。前回の授業でわかったように、これらの演算は確率行列で表されます。正確には、 \(\mathsf{X}\) に対する操作を行列 \(M\) で表し、 \(\mathsf{Y}\) に対する操作を行列 \(N\) で表すとしましょう。したがって、 \(M\) の行と列は \(\Sigma\) の要素に対応するインデックスを持ち、同様に \(N\) の行と列は \(\Gamma\) の要素に対応するインデックスを持ちます。
ここで、 \(\mathsf{X}\) と \(\mathsf{Y}\) を合わせて一つの合成システム \(( \mathsf{X},\mathsf{Y})\) と考えたとき、この合成システムに対する二つの演算の合成作用を表す行列は何か、というのが自然な質問でしょう。この問いに答えるには、まず行列のテンソル積を導入する必要があります。これはベクトルのテンソル積と似ていて、同様に定義されています。
行列のテンソル積#
行列のテンソル積 \(M\otimes N\)
と
は、以下のような行列です。
同様に、 \(a,b\in\Sigma\) と \(c,d\in\Gamma\) のすべてにおいて、 \(M\) と \(N\) は次の式
で定義されます。
別の方法で、 \(M\otimes N\) を説明する方法は、ベクトル \(\vert\phi\rangle\) および \(\vert\psi\rangle\) のすべての可能な選択に対して、次の方程式を満たす唯一の行列であるということです。
(わかりやすくするために、ここでは \(\vert\phi\rangle\) の添字が \(\Sigma\) の要素に対応し、 \(\vert\psi\rangle\) の添字が \(\Gamma\) に対応すると仮定します。)
前述したデカルト積の要素の並び方の慣習に従って、2つの行列のテンソル積を明示的に次のように書くこともできます。
3 つ以上の行列のテンソル積も同様の方法で定義されます。 \(M_1, \ldots, M_n\) が古典的な状態の集合 \(\Sigma_1,\ldots,\Sigma_n\) に対応する添字を持つ行列である場合、テンソル積 \(M_1\otimes\cdots\otimes M_n\) は、古典的な状態 \(a_1,b_1\in\Sigma_1,\ldots,a_n,b_n\in\Sigma_n\) のすべての選択に対して、次の条件によって
定義されます。
また、3つ以上の行列のテンソル積をベクトルと同様に、2つの行列のテンソル積で再帰的に定義することもできます。
行列のテンソル積は、以下の式から、乗法的であると言われることがあります。
これは、 \(M_1,\ldots,M_n\) と \(N_1,\ldots,N_n\) の任意の選択に対して、積 \(M_1 N_1, \ldots, M_n N_n\) が意味を成す場合、常に真です。
独立した演算(続き)#
以上の議論をまとめると、以下のことが分かります。 \(M\) を \(\mathsf{X}\) 上の確率演算、 \(N\) を \(\mathsf{Y}\) 上の確率演算とし、この二つの演算を独立に行ったとき、合成システム \((\mathsf{X},\mathsf{Y})\) に対する演算はテンソル積 \(M\otimes N\) となります。
ここでも確率的な状態でも見られるのは、テンソル積は独立性を表すということです。二つのシステム \(\mathsf{X}\) と \(\mathsf{Y}\) が独立に確率状態 \(\vert\phi\rangle\) と \(\vert\pi\rangle\) にあるとすると、合成システム \((\mathsf{X},\mathsf{Y})\) は確率状態 \(\vert\phi\rangle\otimes\vert\pi\rangle\) にあることがわかります。そして、この2つのシステムに確率的操作 \(M\) と \(N\) を独立に適用すると、結果として合成システム \((\mathsf{X},\mathsf{Y})\) に対する作用は、演算 \(M\otimes N\) で記述されることになります。
前回のビット1個に対する確率演算を思い出して、例題を見てみましょう。ビットの古典的状態が \(0\) ならそのまま、 \(1\) なら確率 \(1/2\) で0に反転させる演算は、以下の行列で表されます。
この演算をビット \(\mathsf{X}\) に対して行い、2番目のビット \(\mathsf{Y}\) に対して(独立に)NOT演算を行った場合、合成システム \((\mathsf{X},\mathsf{Y})\) に対する合成演算は行列表現となります。
調べると、これは確率行列であることがわかります。
これは常に当てはまります:2 つ以上の確率行列のテンソル積は常に確率的です。
あるシステムに対してある演算を行い、別のシステムに対しては何もしないという状況はよくあることです。このような場合、何もしないは単位行列で表されることに注意して、全く同じ処方箋に従います。例えば、ビット \(\mathsf{X}\) を \(0\) にリセットし、 \(\mathsf{Y}\) に何もしない場合、 \((\mathsf{X},\mathsf{Y})\) 行列で表される確率的(実際には決定論的)な次の演算が返されます。
2. 量子情報 #
さて、次は複数システムの量子情報です。前回の単一システムの場合と同様に、複数システムの量子情報の数学的記述も、確率的な場合とよく似ており、同様の概念と技法が用いられています。
2.1 量子状態#
複数のシステムをまとめて一つの合成システムとして見ることができます。このことは、確率論的な設定においてすでに観察されており、量子論的な設定も同様です。
つまり、複数システムの量子状態は、単一システムの量子状態と同様に、複素数の要素を持ち、ユークリッドノルムが1に等しい列ベクトルで表現されます。複数システムの場合、これらのベクトルの添字は、個々のシステムの古典状態の集合のデカルト積に対応するように配置されます(合成システムの古典状態の集合であるため)。
例えば、 \(\mathsf{X}\) と \(\mathsf{Y}\) が量子ビットの場合、量子ビットのペア \((\mathsf{X},\mathsf{Y})\) を一つのシステムとしてまとめてみたときの古典状態の集合はデカルト積 \(\{0,1\}\times\{0,1\}\) となるわけです。2値の組を長さ2の2進文字列で表すことにより、このデカルト積の集合を集合 \(\{00,01,10,11\}\) と関連付けることができます。
したがって、以下のベクトルはすべて \((\mathsf{X},\mathsf{Y})\) の組の量子状態ベクトルの例となります。
複数システムの量子状態ベクトルの表現方法にはバリエーションがあり、好みに応じて選択することができます。以下は、上記の1つ目の量子状態ベクトルに対する例です。
\(\vert ab\rangle = \vert a\rangle \vert b\rangle\) (任意の古典的な状態 \(a\) および \(b\) ) という事実を使用して、代わりに次のように記述できます。
テンソル積の記号を明示的に次のように書くこともできます。
次のように、考えているシステムにどのように対応するかを示すために、ケットに添え字をつけることができます。
もちろん、量子状態ベクトルを列ベクトルとして明示的に記述することもできます。
出現する文脈に応じて、これらのバリエーションのいずれかが優先される場合がありますが、同じベクトルを記述するという意味で、それらはすべて同等です。
量子状態ベクトルのテンソル積#
確率ベクトルの場合と同様に、量子状態ベクトルのテンソル積も量子状態ベクトルであり、システム間の独立性を表します。
具体的には、2 つのシステムの場合から始めて、 \(\vert \phi \rangle\) がシステム \(\mathsf{X}\) の量子状態ベクトルであり、\(\vert \psi \rangle\) がシステム \(\mathsf{Y}\) の量子状態ベクトルであるとします。テンソル積 \(\vert \phi \rangle \otimes \vert \psi \rangle\) は、 \(\vert \phi \rangle \vert \psi \rangle\) または、 \(\vert \phi \otimes \psi \rangle\) と書くこともでき、合成システム \((\mathsf{X},\mathsf{Y})\) の量子状態ベクトルです。
このような状態を積状態と呼びます。
直感的に言えば、2つのシステム \((\mathsf{X},\mathsf{Y})\) が積状態 \(\vert \phi \rangle \otimes \vert \psi \rangle\) にあるとき、 \(\mathsf{X}\) は量子状態 \(\vert \phi \rangle\)にあり、 \(\mathsf{Y}\) は量子状態 \(\vert \psi \rangle\) にある、と解釈でき、2つのシステムの状態は互いに何の関係もありません。
テンソル積ベクトル \(\vert \phi \rangle \otimes \vert \psi \rangle\) が実際に量子状態ベクトルであるという事実は、テンソル積に関して乗法であるユークリッドノルムと一致しています。
したがって、 \(\vert \phi \rangle\) と \(\vert \psi \rangle\) は量子状態ベクトルであるため、 \(\|\vert \phi \rangle\| = 1\) と \(\|\vert \psi \rangle\| = 1\) が得られます。 したがって \(\|\vert \phi \rangle \otimes \vert \psi \rangle\| = 1\) なので、 \(\vert \phi \rangle \otimes \vert \psi \rangle\) も量子状態ベクトルです。
この議論は、2 つ以上のシステムに一般化することができます。 \(\vert \psi_1 \rangle,\ldots,\vert \psi_n \rangle\) がシステム \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) の量子状態ベクトルの場合、 \(\vert \psi_1 \rangle\otimes\cdots\otimes \vert \psi_n \rangle\) は、合成システム \((\mathsf{X}_1,\ldots,\mathsf{X}_n)\) の積状態を表す量子状態ベクトルです。繰り返しますが、ここでも、これが量子状態ベクトルであることがわかるのは、次のような理由からです。
エンタングル状態#
複数のシステムのすべての量子状態ベクトルが積状態であるとは限りません。たとえば、2量子ビットの量子状態ベクトル
は積状態ではありません。これを推論するために、ベクトル \((5)\) によって表される確率的状態が積状態ではないことを証明するために使用したのとまったく同じ議論に従うことができます。
つまり、 \((7)\) が積状態である場合、次のような量子状態ベクトル \(\vert\phi\rangle\) と \(\vert\psi\rangle\) が存在します。
しかし、その場合、必然的に次のようになります。
これは、 \(\langle 0 \vert \phi\rangle = 0\) または \(\langle 1 \vert \psi\rangle = 0\) (または両方) であることを意味します。それは、次の事実に反します。
と
が両方とも非ゼロであることです。
特定の値 \(1/\sqrt{2}\) は、この引数にとって重要ではないことに注意してください。重要なのは、この値がゼロでないことです。したがって、たとえば、量子状態
も同様の理由で積状態ではありません。
したがって、量子状態ベクトル \((7)\) は 2 つのシステム間の相関を表し、具体的にはシステムがエンタングルしていると言います。
エンタングルメントは量子情報の典型的な特徴であり、後の授業でさらに詳しく説明します。エンタングルメントは、特に、授業 1 で述べた量子情報の一般的な密度行列の定式化で記述できる種類のノイズの多い量子状態の場合、複雑になります。しかし、この章で取り上げる単純化された定式化の量子状態ベクトルでは、エンタングルメントは相関と等価となります。つまり、積ベクトルでない量子状態ベクトルは、すべてエンタングルした状態を表しているのです。
対照的に、量子状態ベクトル
は、積状態の一例です:
したがって、この状態はエンタングルではありません。
ベル状態#
ベル状態から始めて、複数量子ビットの量子状態の重要な例をいくつか見ていきます。ベル状態は、次の 4 つの 2 量子ビット状態です。
ベル状態は、ジョン・ベルにちなんで名付けられました。
\(\vert\phi^+\rangle\) が積状態でないことを証明する同じ議論によって、他のベル状態も積状態でないことが明らかになることに注意してください。 — ベル状態の 4 つすべてが 2 つの量子ビット間のエンタングルメントを表しています。
4 つのベルの状態のすべての集まり
は、 ベル基底として知られています。 2量子ビットの任意の量子状態ベクトル、または実際には 2 ビットの 4 つの古典的な状態に対応する要素を持つ任意の複素ベクトルは、4 つのベル状態の線形結合として表現できます。例えば、次のようになります。
GHZ と W 状態#
次に、3 量子ビット状態の 2 つの興味深い例を検討します。
最初の例は、3 量子ビット \((\mathsf{X},\mathsf{Y},\mathsf{Z})\) の量子を表す GHZ 状態です。(最初にその性質を研究した Daniel Greenberger, Michael Horne, Anton Zeilinger に敬意を表してこの名が付きました):
2 番目の例は、いわゆる W 状態です。
これらの状態はどちらも積状態ではありません。つまり、3 量子ビットの量子状態ベクトルのテンソル積として記述することはできません。
この2つの状態については、複数システムの量子状態の部分測定の際に、さらに検討します。
追加の例#
これまで見てきた複数システムの量子状態の例は、2 つか 3 つの量子ビットの状態ですが、異なる古典状態の集合を持つ複数システムの量子状態を持つこともできます。
たとえば、 \(\mathsf{X}\), \(\mathsf{Y}\), \(\mathsf{Z}\) の 3 つのシステムの量子状態の例です。ここで、 \(\mathsf{X}\) の古典状態の集合はバイナリーアルファベット (つまり \(\mathsf{X}\) は量子ビット) であり、\(\mathsf{Y}\) と \(\mathsf{Z}\) の古典状態の集合は \(\{\clubsuit,\diamondsuit,\heartsuit,\spadesuit\}\) です:
こちらも、 3 つのシステム \((\mathsf{X}, \mathsf{Y}, \mathsf{Z})\) の量子状態の例です。ここで、 \(\mathsf{X}\), \(\mathsf{Y} \) 、および \(\mathsf{Z}\) はすべて、同じ古典状態の集合 \(\{0,1,2\}\) を共有します。
古典状態の集合 \(\{0,1,2\}\) を持つシステムは、多くの場合、トリットと呼ばれます。または、それらが量子状態にある可能性を考慮して、キュートリットと呼ばれます。 quditという用語は、 \(d\) 個の任意の選択に対して、古典的な状態の集合 \(\{0,\ldots,d-1\}\) を持つシステムを指します。
2.2 量子状態の測定 #
単一システムの量子状態の標準基底測定については、前回の授業で説明しました。古典状態の集合 \(\Sigma\) を持つシステムがベクトル \(\vert \psi \rangle\) で表される量子状態にあり、そのシステムを(標準基底測定に関して)測定すると、各古典状態 \(a\in\Sigma\) が確率 \(\vert \langle a \vert \psi \rangle\vert^2\) で出現します。
これは、複数のシステムの量子状態があり、合成システム全体を測定する(これはシステムのすべてを測定することと等しい)ことを選択したときに何が起こるかを教えてくれます。具体的に言うと、 \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) がそれぞれ古典状態の集合 \(\Sigma_1,\ldots,\Sigma_n\) を持つシステムだとします。このとき、 \((\mathsf{X}_1,\ldots,\mathsf{X}_n)\) をまとめて、古典状態集合がデカルト積 \(\Sigma_1\times\cdots\times\Sigma_n\) である一つのシステムとみなしてよいでしょう。このシステムの量子状態を量子状態ベクトル \(\vert\psi\rangle\) で表し、すべてのシステムを測定すると、各可能な結果 \((a_1,\ldots,a_n)\in\Sigma_1\times\cdots\times\Sigma_n\) は確率 \(\vert\langle a_1\cdots a_n\vert \psi\rangle\vert^2\) で現れることになります。
例えば、システム \(\mathsf{X}\) と \(\mathsf{Y}\) が合成して以下の量子状態にあるとき
両システムを標準基底で測定すると、確率 \(9/25\) で \((0,\heartsuit)\) の結果が得られ、確率 \(16/25\) で \((1,\spadesuit)\) の結果が得られます。
2 つのシステムの部分測定#
ここで、ある量子状態の複数のシステムがあり、その部分集合を測定する場合を考えてみましょう。先程と同じく、古典状態の集合 \(\Sigma\) と \(\Gamma\) を持つ2つのシステム \(\mathsf{X}\) と \(\mathsf{Y}\) から始めます。
一般に、 \((\mathsf{X},\mathsf{Y})\) の量子状態ベクトルは次のような形をとります。
ここで、 \(\{\alpha_{ab} : (a,b)\in\Sigma\times\Gamma\}\) は、次を満たす複素数の集合です。
(これは \(\vert \psi \rangle\) が単位ベクトルであることと同等です)。
もし、 \(\mathsf{X}\) と \(\mathsf{Y}\) の両方が測定されたなら、それぞれの可能な結果 \((a,b)\in\Sigma\times\Gamma\) は次の確率で現れることが、上の議論から既に分かっています。
したがって、最初のシステム \(\mathsf{X}\) だけが測定されると仮定すると、各結果 \(a\in\Sigma\) が現れる確率は次のようになります。
これは確率的な設定で既に見たことと一致し、また物理の理解とも一致します。つまり、 \(\mathsf{X}\) を測定したときに特定の結果が現れる確率は、 \(\mathsf{Y}\) も測定したかどうかに依存することはありえません。そうでなければ、超光速通信が可能になるからです。
この \(\mathsf{X}\) の測定で特定の結果 \(a\in\Sigma\) を得たとき、 \(\mathsf{X}\) の量子状態は単一システムのときと同じように \(\vert a\rangle\)に等しくなるように変化すると予想されます。
しかし、 \(\mathsf{Y}\)の量子状態はどうなるのでしょうか?
この問いに答えるために、 \(\mathsf{X}\) を(標準基底で)測定し、その結果を古典状態 \(a\) と仮定して、 \((\mathsf{X},\mathsf{Y})\) の合成量子状態を記述してみましょう。
まず、ベクトル \(\vert\psi\rangle\) を次のように表します。
このとき \(a\in\Sigma\) ごとに以下です。
\(\mathsf{X}\) の標準基底測定がそれぞれ結果 \(a\) になる確率は、次のように記述できることに注意してください。
ここで、\(\mathsf{X}\) の標準基底測定の結果 \(a\) が得られた結果、ペア \((\mathsf{X},\mathsf{Y})\) の量子状態が得られます。
つまり、単一システムの場合のように状態は「崩壊」しますが、それは、 \(\mathsf{X}\) の測定が結果 \(a\) を生成したことと状態が一致するために必要な範囲だけです。
非公式に言うと、\(\vert a \rangle \otimes \vert \phi_a\rangle\) は、 \(\mathsf{X}\) の測定が結果 \(a\) をもたらしたことと一致する \(\vert \psi\rangle\) の成分を表しています。このベクトルをユークリッドノルムで割って正規化すると、ユークリッドノルムが \(1\) になる量子状態ベクトルが得られます。この正規化ステップは、確率論的な設定でベクトルを要素の合計で割って確率ベクトルを得たときに行ったことと類似しています。
この章の最初の例で 2 つの量子ビット \((\mathsf{X},\mathsf{Y})\) の状態を考えてみましょう。
最初のシステム \(\mathsf{X}\) が測定されたときに何が起こるかを理解するために、次のように書きます。
上記の説明に基づいて、結果 \(0\) が測定される確率は次のようになることがわかります。
この場合、 \((\mathsf{X},\mathsf{Y})\) の状態は次のようになります。
測定結果が \(1\) になる確率は
この場合、 \((\mathsf{X},\mathsf{Y})\) の状態は次のようになります。
同じ手法を対称的に用いて、1番目のシステムではなく 2 番目のシステム \(\mathsf{Y}\) が測定された場合に何が起こるかを説明します。ベクトル \(\vert \psi \rangle\) を次のように書き換えます。
\(\mathsf{Y}\) の測定結果 \(0\) が得られる確率は
この場合、 \((\mathsf{X},\mathsf{Y})\) の状態は次のようになります。
測定結果が \(1\) である確率は
この場合、 \((\mathsf{X},\mathsf{Y})\) の状態は次のようになります。
縮約量子状態について#
この例は、量子情報の簡略的な記述の限界を示しています。それは、確率的な場合のように、2つのシステムのうちの1つだけ(あるいは任意の数のシステムの部分集合)の縮約(あるいは周辺)量子状態を記述する方法がないことです。
具体的にいうと、2つのシステムの確率ベクトル \((\mathsf{X},\mathsf{Y})\) で記述される確率的状態について、以下のように書きました。
\(\mathsf{X}\) だけの縮約(または周辺) 状態は、次の確率ベクトルによって記述されます。
量子状態ベクトルの場合、類似はなく — 量子状態ベクトルは、以下のようになり、
ベクトル
は一般に量子状態ベクトルではなく、縮約状態または周辺状態の概念を適切に表していません。実際、このベクトルはゼロベクトルである可能性があります。
したがって、代わりに、量子情報の一般的な記述法に目を向ける必要があります。ユニット 3 で説明するように、量子情報の一般的な記述法は、確率論的設定に類似した縮約量子状態を定義することのできる方法です。
3 つ以上のシステムの部分測定#
システムのいくつかの部分集合が測定される 3 つ以上のシステムの部分的な測定は、システムを 2 つのコレクション (測定されるものと測定されないもの) に分割することによって、2 つのシステムの場合に減らすことができます。
これを行う方法を示す具体的な例を次に示します。これは、それらが表すシステムの名前によるケットの添字付けがいかに有用であるかを示しています。
例として、5 つのシステム \(\mathsf{X}_1,\ldots,\mathsf{X}_5\) の量子状態があり、すべてが同じ古典的な状態の集合 \(\{\clubsuit,\diamondsuit,\heartsuit,\spadesuit\}\) を共有している場合を考えます。
1 番目と 3 番目のシステムを測定し、残りのシステムを放置する状況を考えます。概念的に言えば、この状況と 2 つのシステムのうちの 1 つが測定される状況との間に基本的な違いはありませんが、残念ながら、測定されるシステムと測定されないシステムが混在しているため、これらの計算を実行するために必要な式を書き留めるのにハードルがあります。 先に述べたように、どのシステムを参照しているかを示すためにケットに添字を付けます。これにより、次に説明するように、順序を自由に変更できます。
まず、上記の量子状態ベクトルは、次のように書くこともできます。
各ケットに対応するシステムを示す添字をつけたこと以外は、何も変更されていません。ここでは下付き文字 \(1,\ldots,5\) を使用しましたが、システム自体の名前を使用することもできます ( \(\mathsf{X}\), \(\mathsf{Y}\), \(\mathsf{Z}\) などのシステム名がある場合)。
次に、ケットを並べ替えて、次のように項を収集できます。
(この例のように括弧が使用されている場合でも、テンソル積であることは暗黙の了解です。)
システム \(\mathsf{X}_1\) と \(\mathsf{X}_3\) が測定される場合、異なる結果の (ゼロでない) 確率は次のようになります。
測定結果 \((\heartsuit,\diamondsuit)\) は次の確率で発生します
測定結果 \((\diamondsuit,\diamondsuit)\) は次の確率で発生します
測定結果 \((\spadesuit,\clubsuit)\) は次の確率で発生します
たとえば、測定結果が \((\heartsuit,\diamondsuit)\) の場合、\((\mathsf{X}_1,\ldots,\mathsf{X}_5)\) の状態は次のようになります。
他の測定結果についても、同様の方法で状態を決定できます。
ここで、テンソル積は可換ではないことを理解する必要があります: \(\vert \phi\rangle\) と \(\vert \pi \rangle\) がベクトルの場合、一般に \(\vert \phi\rangle\otimes\vert \pi \rangle\) は \(\vert \pi\rangle\otimes\vert \phi \rangle\) とは異なり、3 つ以上のベクトルのテンソル積についても同様です。たとえば、 \(\vert\heartsuit\rangle \vert\clubsuit\rangle \vert\diamondsuit\rangle \vert\spadesuit\rangle \vert\spadesuit\rangle\) は \(\vert\heartsuit\rangle \vert\diamondsuit\rangle \vert\clubsuit\rangle \vert\spadesuit\rangle \vert\spadesuit\rangle\) とは異なるベクトルです。 ケットの並べ替えについて説明した手法は、別の方法を示唆していると解釈されるべきではありません。むしろ、計算を実行して結果を表現するために、システム \(\mathsf{X}_1,\ldots,\mathsf{X}_5\) をまとめて \((\mathsf{X}_1,\mathsf{X}_2,\mathsf{X}_3,\mathsf{X}_4,\mathsf{X}_5)\) ではなく、 \((\mathsf{X}_1,\mathsf{X}_3,\mathsf{X}_2,\mathsf{X}_4,\mathsf{X}_5)\) とします。 ケットの添字は、ここれを整理するためのものです。
同様に、より単純なデカルト積と順序対の設定では、 \(a\) と \(b\) が異なる古典状態であれば、 \((a,b)\) と \((b,a)\) も異なる状態です。
しかし、2つのビット \((\mathsf{X},\mathsf{Y})\) の古典状態が \((1,0)\) であると言うことは、次のことと等価です:
\((\mathsf{Y},\mathsf{X})\) の古典的状態は \((0,1)\) です。すべてのシステムが固有の名前を持つとき、その順序さえはっきりしていれば、どのような順序で並べるかはあまり問題にはならないのです。
最後に、前に約束したように、GHZ 状態と W 状態を含む 2 つの例を次に示します。まず、GHZ状態を考えてみましょう
最初のシステムだけを測定すると、確率 \(1/2\) で結果 \(0\) が得られます。この場合、3 量子ビットの状態は \(\vert 000\rangle\) になります。また、確率 \(1/2\) で結果 \(1\) を取得します。この場合、3 量子ビットの状態は \(\vert 111\rangle\) になります。
次に、次のように記述できる W 状態を考えてみましょう。
したがって、最初の量子ビットの測定結果が 0 になる確率は、次のようになります。
この結果を生成する測定を条件として、3 量子ビットの量子状態は次のようになります。
測定結果が 1 になる確率は \(1/3\) で、この場合、3 量子ビットの状態は \(\vert 100\rangle\) になります。
2.3 ユニタリー演算 #
この授業の前の章では、デカルト積を使用して、個々のシステムをより大きな単一のシステムとして扱いました。同じ考え方に従って、複数のシステムでの演算を、このより大きなシステムの状態ベクトルに作用するユニタリー行列として表すことができます。
原理的には、行と列が古典的な状態に対応するユニタリー行列であれば、どのようなシステムであっても量子演算は有効であり、個々のシステムの古典的状態の集合のデカルト積である合成システムの場合も同様です。
2つのシステムに注目すると、 \(\mathsf{X}\) が古典状態の集合 \(\Sigma\) を持つシステム、 \(\mathsf{Y}\) が古典状態集合 \(\Gamma\) を持つシステムであれば、合成システムの古典状態の集合 \((\mathsf{X},\mathsf{Y})\) は \(\Sigma\times\Gamma\) です。 したがって、この合成システムに対して実行可能な演算の集合は、行と列が集合 \(\Sigma\times\Gamma\) に対応するように配置されたユニタリー行列で表現されます。この行列の行と列の並びは、システム \((\mathsf{X},\mathsf{Y})\) の量子状態ベクトルに用いられる並びと同じです。
例えば、 \(\Sigma = \{1,2,3\}\) と \(\Gamma = \{0,1\}\) とすると、デカルト積 \(\{1,2,3\}\times\{0,1\}\) の要素の順番は、 \((1,0)\), \((1,1)\), \((2,0)\), \((2,1)\), \((3,0)\), \((3,1)\) が標準です。
以下は、 \((\mathsf{X},\mathsf{Y})\) 上の演算を表すユニタリー行列の例です。
このユニタリー演算には特別な意味はありませんが、 \(U^{\dagger} U = \mathbb{1}\) であることを確認できるので、 \(U\) はユニタリーです。
たとえば、標準基底ベクトル \(\vert 11 \rangle\) に \(U\) を作用させると次のようになります。
これは、集合 \(\{1,2,3\}\times\{0,1\}\) の順序を考慮して、 \(U\) の 2 番目の列を調べることで確認できます。
他の行列と同様に、 \(U\) の 20 個の非ゼロの要素に対して 20 個の項を使用するディラック表記法を使用して、 \(U\) を表すことができます。ただし、 \(6\times 6\) 行列を書くのではなく、これらの項をすべて書き留めると、行列式から明らかな特定のパターンを見逃す可能性があります。簡単に言えば、行列を表現する方法としてディラック表記が常に最良の選択であるとは限りません。
3 つ以上のシステムに対するユニタリー演算は、システムの古典的な状態の集合のデカルト積に対応する行と列を持つユニタリー行列で、同じように働きます。
この授業で既にみた例では、3 量子ビット演算には次の例があります。
ここで、 \(\vert j \rangle\) は、数値 \(j\) の 3 ビット バイナリーエンコードがユニタリーであることを意味します。ユニタリーで決定論的な演算を表す演算は、可逆演算と呼ばれます。この行列の共役転置は、次のように記述できます。
この行列は、元の演算の逆(reverse)、または数学用語で*逆(inverse)*を表します。これは、ユニタリー行列の共役転置から期待されるものです。
この先の授業で、複数のシステムでのユニタリー演算の他の例をみていきます。
個々のシステムで独立して実行されるユニタリー演算#
ユニタリー演算が個々のシステムのコレクションに対して独立して実行される場合、これらの独立した演算の合成作用は、それらを表すユニタリー行列のテンソル積によって記述されます。つまり、 \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) が量子システムの場合、 \(U_1,\ldots, U_n\) はこれらのシステムへの演算を表すユニタリー行列であり、演算は独立して実行され、 \((\mathsf{X}_1,\ldots,\mathsf{X}_n)\) に対する合成作用は、行列 \(U_1\otimes\cdots\otimes U_n\) で表されます。繰り返しますが、確率論的設定と量子設定はこの点で類似していることがわかります。
前の段落を読んで、ユニタリー行列の任意の集まりのテンソル積がユニタリーであることが当然予想されます。確かにこれは正しく、次のように検証できます。
まず、共役転置演算が以下を満たすことに注目しましょう。
これは、テンソル積と共役転置の定義に戻り、方程式の両側の各要素が一致していることを確認することで確認できます。これは次を意味します。
行列のテンソル積は乗法なので、次のようになります。
ここで、システム \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) 上の恒等演算を表す行列を \(\mathbb{1}_1,\ldots,\mathbb{1}_n\) と書きました。 つまり、これらはサイズが \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) の古典的な状態の数と一致する恒等行列です。
最後に、テンソル積 \(\mathbb{1}_1 \otimes \cdots \otimes \mathbb{1}_n\) は恒等行列に等しく、ここで行と列の数は、行列 \(\mathbb{1}_1,\ldots,\mathbb{1}_n\) の行と列の数の積に一致します。この大きな恒等行列は、合成システム \((\mathsf{X}_1,\ldots,\mathsf{X}_n)\) 上の恒等演算を表すものと見なすことができます。
要約すると、次の一連の等式になります。
したがって、 \(U_1 \otimes \cdots \otimes U_n\) はユニタリーであると結論付けられます。
よくある重要な状況は、より大きな合成システムの中の1つのシステム、あるいはシステムの部分集合に単一演算を適用する場合です。例えば、 \(\mathsf{X}\) と \(\mathsf{Y}\) を合わせて一つの複合システム \((\mathsf{X},\mathsf{Y})\) と見なし、 \(\mathsf{X}\) のシステムにのみ演算を施すとします。正確には、 \(U\) が \(\mathsf{X}\) に対する演算を表すユニタリー行列で、その行と列が \(\mathsf{X}\) の古典的状態に対応して配置されているとします。
\(U\) で表される演算をシステム \(\mathsf{X}\) だけで行うということは、\(\mathsf{Y}\) には何もしないということであり、 \(U\) を \(\mathsf{X}\) で、 恒等演算 を \(\mathsf{Y}\) で独立に行っているということです。つまり、 \(\mathsf{Y}\) に対して「何もしない」ということは、 \(\mathsf{Y}\) に対して恒等演算を行うことと等しく、恒等行列 \(\mathbb{1}_\mathsf{Y}\) で表現されることになります。(ここで、 \(\mathsf{Y}\) の添え字は \(\mathbb{1}_\mathsf{Y}\) が \(\mathsf{Y}\) の古典状態の集合と一致する行と列数を持つ恒等行列であることを表しています)。したがって、 \(U\) を \(\mathsf{X}\) に対して行い、 \(\mathsf{Y}\) を何もしない場合に得られる \((\mathsf{X},\mathsf{Y})\) の演算はユニタリー行列で表現されることになります。
たとえば、 \(\mathsf{X}\) と \(\mathsf{Y}\) が量子ビットの場合、 \(\mathsf{X}\) に対してアダマール演算を実行する (そして \(\mathsf{Y}\) には何もしない) ことは、合成システム \((\mathsf{X},\mathsf{Y})\)に対して、
の演算を実行することと等しいです。
同様に、ユニタリー行列 \(U\) で表される演算が \(\mathsf{Y}\) に適用され、 \(\mathsf{X}\) には何も行われない場合も考えることができます。この場合、 \(( \mathsf{X},\mathsf{Y})\) に対する演算は、以下のユニタリー行列で表されます。
たとえば、 \(\mathsf{X}\) と \(\mathsf{Y}\) の両方が量子ビットであり、 \(U\) がアダマール演算である状況をもう一度考えると、\((\mathsf{X}, \mathsf{Y})\) に対する演算は以下の行列で表されます。
システム \(\mathsf{X}_1,\ldots,\mathsf{X}_n\) の集合に対するユニタリー演算は、これらのシステムの量子状態ベクトルがすべて積状態でないように、全てがユニタリー演算のテンソル積 \(U_1\otimes\cdots\otimes U_n\) として記述できるわけではないことが知られています。たとえば、以下で説明する 2 量子ビットに対するスワップ演算や制御NOT 演算は、ユニタリー演算のテンソル積として表すことはできません。
スワップ演算#
授業を締めくくるために、複数システムでのユニタリー演算の例を 2 つ見てみましょう。スワップ演算から始めます。
\(\mathsf{X}\) と \(\mathsf{Y}\) が、同じ古典的な状態セット \(\Sigma\) を共有するシステムであるとします。ペア \((\mathsf{X},\mathsf{Y})\) のスワップ操作は、2 つのシステムの内容を交換する操作ですが、それ以外の場合はシステムをそのままにしておきます (したがって、 \(\mathsf{X}\) は左側に、 \(\mathsf{Y}\) が右側に残ります)。
この演算を \(\operatorname{SWAP}\) と書き、古典的な状態 \(a,b\in\Sigma\) のすべての選択に対して、次のように操作します。
ディラック表記を使用して、この演算に関連付けられた行列を記述する 1 つの方法は次のとおりです。
この行列が \(\operatorname{SWAP}\) を表していることはすぐにはわからないかもしれませんが、古典的な状態 \(a,b\in\Sigma\) のすべての選択に対して、条件 \(\operatorname{SWAP} \vert a \rangle \vert b \rangle = \vert b \rangle \vert a \rangle\) を満たすことを確認できます。
簡単な例として、 \(\mathsf{X}\) と \(\mathsf{Y}\) が量子ビットの場合、以下のようになります。
制御ユニタリー演算#
ここで、 \(\mathsf{X}\) が量子ビットで、 \(\mathsf{Y}\) が任意のシステムであり、任意の古典的な状態が設定されているとします。
システム \(\mathsf{Y}\) に作用するすべてのユニタリー演算 \(U\) に対して、制御 \(U\) 演算とは、次のように定義されたペア \((\mathsf{X},\mathsf{Y})\) に対するユニタリー演算です。 :
たとえば、 \(\mathsf{Y}\) も量子ビットであり、パウリ x 演算を \(X = \sigma_x\) と表すと、制御 \(X\) 演算は次のように与えられます。
この演算は、以前の授業で、古典情報と確率的な演算の文脈で、すでに遭遇しています。
代わりに、 \(X\) 演算の代わりに \(\mathsf{Y}\) に対する パウリ z 演算を考えると、次の演算が得られます。
代わりに、 \(\mathsf{Y}\) を 2 量子ビットと見なし、 \(U\) をこれら 2 量子ビット間のスワップ演算と見なすと、次の演算が得られます。
この演算は、エドワード・フレドキンにちなんで名付けられたフレドキン演算(または、より一般的には、フレドキン ゲート) としても知られています。標準基底状態に対するその作用は、次のように説明できます。
最後に、 \(\mathrm{cc}X\) と表すことのできる制御-制御-NOT 操作は、トフォリ演算(またはトフォリ ゲート) と呼ばれ、トマソ・トフォリ にちなんで名付けられました。その行列表現は次のようになります。
代わりに、ディラック表記を使用して次のように表現することもできます。
3. Qiskit コード例#
前のページでは、Qiskitの Statevector
クラスと Operator
クラスについて学び、それらを使って量子システムをシミュレートしてみました。この章では、それらを使って複数システムの振る舞いを探ります。まず、これらのクラスをインポートすることから始めます。
from qiskit.quantum_info import Statevector, Operator
from numpy import sqrt
3.1 テンソル積#
Statevector
クラスには、それ自体のテンソル積と別のStatevector
のテンソル積を返すtensor
メソッドがあります。
たとえば、以下では、 \(|0\rangle\) と \(|1\rangle\) を表す 2 つの状態ベクトルを作成し、 tensor
メソッドを使用して新しいベクトル \(|0\rangle \otimes |1\rangle\) を作成します。
zero, one = Statevector.from_label("0"), Statevector.from_label("1")
zero.tensor(one).draw("latex")
以下の別の例では、 \(|{+}\rangle\) および \(\tfrac{1}{\sqrt{2}}(|0\rangle + i|1\rangle)\) 状態を表す状態ベクトルを作成し、合成して、新しい状態ベクトルを作成します。この新しいベクトルを変数psi
に割り当てます。
plus = Statevector.from_label("+")
i_state = Statevector([1 / sqrt(2), 1j / sqrt(2)])
psi = plus.tensor(i_state)
psi.draw("latex")
Operator
クラスにはtensor
メソッドもあります。以下の例では、 \(X\) および \(I\) ゲートを作成し、それらのテンソル積を表示します。
X = Operator([[0, 1], [1, 0]])
I = Operator([[1, 0], [0, 1]])
X.tensor(I)
Operator([[0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],
[0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j],
[1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
[0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j]],
input_dims=(2, 2), output_dims=(2, 2))
次に、前のページで単一システムで行ったように、これらの合成状態と演算を扱うことができます。たとえば、下のセルでは、上で定義した状態psi
を使用して、\((I\otimes X)|\psi\rangle\) を計算します。
注: ^
演算子を使用して、2 つの演算子を一緒にテンソル積することもできます。
psi.evolve(I ^ X).draw("latex")
以下では、 \(\text{CNOT}\) 演算子を作成し、 \(\text{CNOT}|\psi\rangle\) を計算します。
CX = Operator(
[
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 1, 0],
]
)
psi.evolve(CX).draw("latex")
3.2 部分測定#
前のページでは、 measure
メソッドを使用して、量子状態ベクトルの測定をシミュレートしました。このメソッドは、シミュレートされた測定結果と、この測定値が与えられた新しいStatevector
の 2 つの項目を返します。
デフォルトでは、 measure
は状態ベクトル内のすべての量子ビットを測定しますが、整数のリストを指定して、それらのインデックスの量子ビットのみを測定できます。下のセルは状態 \(W = \tfrac{1}{\sqrt{3}}(|001\rangle + |010\rangle + |100\rangle)\) を作成します。
注: Qiskit は、主に量子ビットベースの量子コンピューターで使用するために設計されています。そのため、 Statevector
は \(2^n\) 要素を持つベクトルを \(n\) 量子ビットのシステムとして解釈しようとします。コンストラクターにdims
引数を渡すことで、これをオーバーライドできます。たとえば、 dims=(4,2)
は Qiskit に、システムに 1 つの 4 レベル システムと 1 つの 2 レベル システム (量子ビット) があることを伝えます。
W = Statevector([0, 1, 1, 0, 1, 0, 0, 0] / sqrt(3))
W.draw("latex")
以下のセルは、右端の量子ビット (インデックス 0 を持つ) の測定をシミュレートします。他の 2 つの量子ビットは測定されません。
result, new_sv = W.measure([0]) # measure qubit 0
print(f"Measured: {result}\nState after measurement:")
new_sv.draw("latex")
Measured: 0
State after measurement:
セルを数回実行して、色々な結果を確認してください。 1
を測定すると、他の両方の量子ビットが \(|0\rangle\) であることがわかっていることを意味しますが、 0
を測定すると、残りの 2 つの量子ビットは \(\tfrac{1}{\sqrt{2}}(|01\rangle + |10\rangle)\) です。