★本記事は Bellの不等式(1/2): "同担拒否モデル"によるBellの不等式の導出 の続きです。
まず前回の記事のまとめを記しておきます:
前回の記事では、Bellの不等式
\begin{align}
P(a+;b+)\le P(a+;c+)+P(c+;b+)
\end{align}
を、同担拒否の2人組への推しに関するアンケート結果から構成した。これはJJ.Sakuraiの教科書(Ref.[1])に記載されている形のBellの不等式である。次に、対応する量子力学的なBellの不等式を、3つの方向$\hat a, \hat b, \hat c$に対するスピンの測定により構成した。その結果
\begin{align}
P(a+;b+)=\frac{1}{2}\sin^2\theta, \ \ \ P(a+;c+)=P(c+;b+)=\frac{1}{2}\sin^2\left(\frac{\theta}{2}\right)
\end{align}
を得た。よって上記のBellの不等式は量子論において
\begin{align}
\frac{1}{2}\sin^2\theta \le \sin^2\left(\frac{\theta}{2}\right)
\end{align}
となる。この式は$0\le \theta < \pi/2$で破れる。
前回の記事の準備のもと、本記事では、実際に量子計算を実行し、上記のBellの不等式の破れを実機で確認します。
量子計算にはIBM Quantum Lab (Refs.[2][3])を用いました。Labでは、QiskitというオープンソースのPythonライブラリ(Ref.[4])を用い、量子計算機システムIBM Quantum Oneを使うことができます。Qiskitには大変丁寧なガイド・チュートリアルが存在します(Ref.[5])。この中の"Local Reality and the CHSH Inequality"というノートブックに、「CHSH不等式」というタイプのBellの不等式の破れの確認用コードがありますが、本記事ではこれと違った形の、上述したJJ.Sakuraiの教科書に記載のあるBellの不等式を確認してみます。
本記事の作成にあたり、IBM Quantum Canary Processor(Ref.[6]参照のこと)のひとつであるibmq_belemおよびibmq_quitoを使用しました。
まず今回使った量子回路の説明をします。次に量子計算の古典計算機によるシミュレーション結果を載せ、そのあと実際の量子計算の結果を示します。以下では前回記事における記法を使ってますので、適宜ご参照ください。
今回使った量子計算回路。$R_y$はy軸まわりの回転を表し、そこに示されている数字は回転角です。本図では特別な回転角が示されていますが、これは実際にはいくつか変化させて計算します。
図1は今回使った量子計算の回路です。図の各部分の説明は以下です:
上の2本の線が量子ビット(qubit)です。今回は2 qubit($q_0,q_1$)の計算を行います。
cと書いてある下の2重線は、古典的なビット(bit)です。2と書いてあるのは2bit用意してあることを意味します。これはqubitを計測して書き込むためのbitであり、量子計算には基本的に関係しません。よって上2本の線のみに注目すればよいです。
初期状態を$q_0,q_1$ともに$|0\rangle$(z方向のスピンのプラス固有値の固有状態)にセットします。
x,y,z方向のスピン演算子は、前回の記事の$S_x,S_y,S_z$から$\hbar$を除いたものとします:
\begin{align}
&\sigma_x=
\begin{pmatrix}
0 & 1\\
1 & 0
\end{pmatrix}
, \
\sigma_x=
\begin{pmatrix}
0 & -i\\
i & 0
\end{pmatrix}
, \
\sigma_x=
\begin{pmatrix}
1 & 0\\
0 & -1
\end{pmatrix}
\\
& S_x=\sigma_x/2, \ S_y=\sigma_y/2, \ S_z=\sigma_z/2
\end{align}
$S_x$の$+1/2$の固有値の固有状態を$|+\rangle$、$-1/2$の固有値の固有状態を$|-\rangle$と呼びます。このとき
\begin{align}
|+\rangle&=\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\leftrightarrow\frac{1}{\sqrt{2}}
\begin{pmatrix}
1\\1
\end{pmatrix}
,\\
|-\rangle&=\frac{1}{\sqrt{2}}(|0\rangle-|1\rangle)\leftrightarrow\frac{1}{\sqrt{2}}
\begin{pmatrix}
1\\-1
\end{pmatrix}
\end{align}
です。(ちなみに以下では出てきませんが、$S_y$の固有状態を$|\circlearrowleft\rangle,|\circlearrowright\rangle$と書きます)
HはHadamardゲートと呼ばれます。これは1qubitに対する操作で、
\begin{align}
H|0\rangle&=|+\rangle,\\
H|1\rangle&=|-\rangle,\\
\end{align}
のように基底を変換するunitary演算子です。
$q_0$と$q_1$をつなぐ青い線の端に青小丸と十字の入った大きい丸がついているのは、Controlled NOT (CNOT) ゲートです。これは、青小丸がついてる方のqubit(制御qubit)が$|1\rangle$のとき、十字つきの丸がついているqubitを反転します。そうでないときは何もしません。すなわち、制御qubitにcをつけると
\begin{align}
&|1\rangle_c|0\rangle\rightarrow |1\rangle_c|1\rangle,\\
&|1\rangle_c|1\rangle\rightarrow |1\rangle_c|0\rangle,\\
&|0\rangle_c|0\rangleと|0\rangle_c|1\rangleは不変\\
\end{align}
という変換です。
Zは1 qubitに対するゲートで$\sigma_z$です。これは
\begin{align}
|0\rangle&\rightarrow |0\rangle,\\
|1\rangle&\rightarrow -|1\rangle,
\end{align}
という変換です。よって$|i\rangle \ (i=0,1)$を$(-1)^i|i\rangle$に変換します。このように状態のラベルに対応するphase(位相)を返すことを"phase kickback"と言います。
Xは1 qubitに対するゲートでNOTゲートです。これは
\begin{align}
|0\rangle&\rightarrow |1\rangle,\\
|1\rangle&\rightarrow |0\rangle,
\end{align}
という変換です。
$R_y$は、qubitをy軸のまわりに回転させる演算です。
具体的には
\begin{align}
R_y(\theta)=\exp\left(-\frac{i\theta}{2}\sigma_y\right)=
\begin{pmatrix}
\cos\frac{\theta}{2} & -\sin\frac{\theta}{2}\\
\sin\frac{\theta}{2} & \cos\frac{\theta}{2}
\end{pmatrix}
\end{align}
です。図1の$R_y$の下に示されている数字が回転角です。図では特別な値が代入されていますが、実際には様々に変化させて計算を行います。
回路の右端には、計測器のような記号があります。これはそのとおり観測をする部分です。観測は$|0\rangle, |1\rangle$の基底で行われます。qubit$q_0,q_1$の観測結果($|0\rangle$なら0、$|1\rangle$なら1)をclassical bit 1,2に書き込みます。
次に、初期の入力、および各ゲートを通過した後の状態を以下に記します:
初期状態および各ゲートの出力の説明用の図
上記は量子ゲートの性質よりすぐに導けます。
ここで重要なのは、③のCNOTゲートの出力状態です。このゲートを通った後の状態は、それぞれのqubitの状態を指定するのではなく、$q_0,q_1$全体で状態を指定する必要があります。これが2粒子がエンタングルした状態であり、両者は相関を持ちます。
この回路を用いて、以下の実験を行いました:
④における全スピン0の状態:$\frac{1}{\sqrt{2}}(|0\rangle|1\rangle-|1\rangle|0\rangle)$に対して
ここで$\hat a, \hat b, \hat c$は$x$-$z$平面上図3のように設定しています:
$\hat a, \hat b, \hat c$の方向。どれもx-z平面上に存在している。
この実験に関する理論的な計算に関しては、 前回の記事 をご参照ください。
最初に、量子論におけるBellの不等式を再度記しておきます:
\begin{align}
P(a+;b+)\le P(a+;c+)+P(c+;b+)
\ \leftrightarrow \ \frac{1}{2}\sin^2\theta \le \sin^2\left(\frac{\theta}{2}\right)\tag{1}
\end{align}
これは$0 < \theta <\pi/2$において破れます。
図4は前章の実験を古典計算機においてシミュレーションした結果です。横軸はEq.(1)の角度$\theta$(unit: radian)、赤丸が$P(a+,b+)$、青バツが$P(a+,c+)+P(c+,b+)$です。統計は5000で計算しました。
古典計算機によるBellの不等式の破れのシミュレーション。横軸は$\theta$(rad)。Nshot(統計数)は5000。
これを見ると、たしかにEq.(1)の左辺と右辺を良い精度で再現していることがわかります。すなわち赤丸は$\sin^2(\theta)/2$、青バツは$\sin^2(\theta/2)$をよく再現しています。そして$\theta=0$から$\pi/2$においてEq.(1)が破れています。この準備により、統計は5000あれば十分Bellの不等式の破れを観測できることがわかります。
図5は量子計算機によるBellの不等式の破れの測定結果です。横軸・縦軸は図4と同じです。統計も同じ5000で計算しました。
量子計算機における検証。図4と同じnotationを用いている。Nshot=5000。
これを見ると、たしかに$\theta=0.6\text{-}1.5$付近でBellの不等式が破れていることが確認できます(エラーバーをつけていませんがご容赦ください)。ただし、$\theta$が小さい2点で、大小関係が古典計算機の場合と入れ替わっています。この傾向は何回か計算をやり直しても同じなので、統計誤差ではなく、量子ゲートの操作や測定時に生じる系統的な誤差なのだと思います。Qiskitのdocumentでも、特に測定において誤差が生じる旨が記されています。
それでも十分にBellの不等式の破れを確認できます。私の想像よりはるかに綺麗なグラフが得られました。ちなみに今回の計算にかかる時間は、計算機の待ち時間を除くと、1つの角度に関して10から30秒程度で終わります。つまり"すぐ"終わると言っていいです。
どの計算機resourceが自分に使用可能であり、各resourceにどのくらいpendingのジョブ(ジョブ待ち)があり、また投入したジョブの状態がどうなっているか等は全てIBM Quantum Labから確認することができます。これらを確認しながら適切に計算を行いましょう。
今回はIBM Quantum Labにおいて量子計算を行うことにより、量子論においてBellの不等式が破れることを実際に確かめました。この事実は、量子論は確率に支配される理論ではあるが、古典統計系とは本質的に異なることを示しています。
このような実験が手軽に行えるようになったのは本当に素晴らしいと思います。すごい時代になったなぁと感じます。
おしまい。${}_\blacksquare$
We acknowledge the use of IBM Quantum services for this web article. The views expressed are those of the authors, and do not reflect the official policy or position of IBM or the IBM Quantum team.