量子もつれ

はじめに

 最近、量子コンピュータの話題が多くなっている。理論やハードウェアの進歩に伴い、商業化や収益化を視野に入れた動きも出てきた。今回は、先の記事の続きとして「量子もつれ」について解説する。量子もつれは、量子コンピュータに高速さをもたらし、現実世界ではあり得ないような振る舞いを示す現象である。

1量子ビット

 先の記事では、量子ビットが1つの状態として

(1)    \begin{equation*} |\psi\rangle=a|0\rangle+b|1\rangle \end{equation*}

を考えた。ここで、|x\rangleは列ベクトルを表し、量子力学ではケットベクトルと呼ばれる量である。|0\rangle|1\rangle

(2)    \begin{eqnarray*} |0\rangle&=&\left( \begin{array}{c} 1 \\ 0 \end{array} \right) \nonumber \\ |1\rangle&=&\left( \begin{array}{c} 0 \\ 1 \end{array} \right) \end{eqnarray*}

で定義される。またabは確率振幅と呼ばれる量であり複素数である。量子力学では、確率振幅の絶対値の2乗が確率を表すので、式(1)は次のように解釈される。すなわち、状態|\psi\rangle|0\rangleである確率が|a|^2|1\rangleである確率が|b|^2である。確率であるから次式が成り立つ。

(3)    \begin{equation*} |a|^2+|b|^2=1 \end{equation*}

これは、状態|\psi\rangleの規格化条件である。

2量子ビット

 次に2つの量子ビットを考える。

(4)    \begin{eqnarray*} |\psi_1\rangle&=&a|0\rangle+b|1\rangle \nonumber \\ |\psi_2\rangle&=&c|0\rangle+d|1\rangle \nonumber \end{eqnarray*}

|\psi_1\rangleを左に、|\psi_2\rangleを右に置いて並べて書くと

(5)    \begin{equation*} |\psi_1\rangle\otimes |\psi_2\rangle=\left(a|0\rangle+b|1\rangle\right)\otimes\left(c|0\rangle+d|1\rangle\right) \end{equation*}

となる。ここで記号\otimesはテンソル積(直積)と呼ばれる量であり、左のビットと右のビットが独立してそれぞれの状態を取れることを意味する。この右辺を、普通の文字式同士の掛け算とみなして展開すると

(6)    \begin{equation*} |\psi_1\psi_2\rangle=ac|00\rangle+ad|01\rangle+bc|10\rangle+bd|11\rangle \end{equation*}

となる。ただし、簡単のため、|x\rangle\otimes|y\rangle|xy\rangleと書いた。上式の右辺より、2量子ビットの状態は、4つの状態|00\rangle,|01\rangle,|10\rangle,|11\rangleの線形結合で表されることが分かる。r=ac,s=ad,t=bc,u=bdと書き直すと

(7)    \begin{equation*} |\psi_1\psi_2\rangle=r|00\rangle+s|01\rangle+t|10\rangle+u|11\rangle \end{equation*}

となる。1量子ビットのときの規格化条件(3)に相当するのが次式である。

(8)    \begin{equation*} |r|^2+|s|^2+|t|^2+|u|^2=1 \end{equation*}

状態|\psi_1\psi_2\rangleが、|00\rangleとなる確率が|r|^2|01\rangleとなる確率が|s|^2|10\rangleとなる確率が|t|^2|11\rangleとなる確率が|u|^2である。(r,s,t,u)は条件(8)を満たす複素数であればどのような数でも良い。

量子もつれ

 r=ac,s=ad,t=bc,u=bdのとき、式(6)から(5)へ遡ることができるので、2量子ビット状態は左側のビット|\psi_1\rangleと右側のビット|\psi_2\rangleに分離できる。このことをもっと一般的な条件で言い換えると、ru=stが成り立つとき、2量子ビット状態は左側のビット|\psi_1\rangleと右側のビット|\psi_2\rangleに分離できる。ところで、(r,s,t,u)は条件(8)を満たす複素数であればどのような数でも良いので、ru\neq stとなる(r,s,t,u)も存在する。このとき2量子ビット状態は左右のビットに分離できない。このような状態を「量子もつれ状態」と呼ぶ。例えば次の状態は量子もつれ状態である。

(9)    \begin{equation*} |\psi_1\psi_2\rangle=\frac{1}{\sqrt{2}}|00\rangle+\frac{1}{\sqrt{2}}|11\rangle \end{equation*}

この式は最初の定義に戻れば次式のことである。

(10)    \begin{equation*} |\psi_1\psi_2\rangle=\frac{1}{\sqrt{2}}|0\rangle\otimes|0\rangle+\frac{1}{\sqrt{2}}|1\rangle\otimes|1\rangle \end{equation*}

測定

 量子コンピュータと古典的なコンピュータの間の大きな違いの1つに、測定が系に与える影響を挙げることできる。従来のコンピュータの計算結果が、計算を行う回路内の電圧や電流などの測定から影響を受けることはない。一方、量子コンピュータにおける測定は、結果に対して本質的な影響を与える。従って、量子ビットを処理する回路(量子回路と呼ぶ)には、測定という行為も1つのファクタとして組み込まれている。
 次の1量子ビット状態を考え、測定についての量子力学の約束事をまとめる。

(11)    \begin{equation*} |\psi\rangle=a|0\rangle+b|1\rangle \end{equation*}

  1. 測定を行う前は、状態 |\psi\rangle|0\rangle なのか |1\rangle なのかはわからない。
  2. 測定を行うと、状態 |\psi\rangle|0\rangle|1\rangle のいずれかになる。
  3. |0\rangle が測定される確率は |a|^2|1\rangle が測定される確率は |b|^2 である。
  4. |0\rangleが測定されれば状態は|\psi\rangle=|0\rangleに、|1\rangleが測定されれば状態は|\psi\rangle=|1\rangleに「収縮」する。

もつれた状態の測定

 さて、もつれた状態(式(10))

(12)    \begin{equation*} |\psi_1\psi_2\rangle=\frac{1}{\sqrt{2}}|0\rangle\otimes|0\rangle+\frac{1}{\sqrt{2}}|1\rangle\otimes|1\rangle \end{equation*}

を測定してみる。最初に左側のビットを測定する。式(12)の右辺第1項の左側ビットは|0\rangle、第2項の左側ビットは|1\rangleであり、これらの係数はどちらも1/\sqrt{2}であるから確率は1/2である。|0\rangleが得られるか|1\rangleが得られるかは半々の確率である。いま、|0\rangleが得られたとする。このとき、右側ビットはどうなるか。左側ビットが|0\rangleに確定した瞬間に状態|\psi_1\psi_2\rangleは以下の状態に収縮する。

(13)    \begin{equation*} |\psi_1\psi_2\rangle=|0\rangle\otimes|0\rangle \end{equation*}

すなわち、右側ビットは|0\rangleに確定してしまう。最初の測定で左側ビットが|1\rangleと測定されるなら、右側ビットは100%の確率で|1\rangleになると言い切ることができる。つまり、こう言うことである。

2量子ビットがどのような状態にあるかは測定するまで分からない。もし、2量子ビット状態がもつれた状態にあるなら、片方のビットの測定がもう片方の状態を決めてしまう。

ここまでの考察で2つの量子ビットの間の空間的な距離は考えてこなかった。実は量子もつれという現象は、2つのビットがどれだけ離れていようと成り立つことが実験的に確認されている。2017年に中国の研究チームが地上と軌道上にいる衛星との間で量子もつれを観測したと報告している。測定前は状態は分からないが、地上(衛星)で片方のビットを測定すると、もう片方のビットの状態は瞬時に確定するのである。ただし、地上(衛星)での測定結果を衛星(地上)に伝える必要があり、その速度は光速を超えないので、光速を超えて情報が伝達するわけではない。量子もつれがどのような仕組みで起きるのかを説明する理論は存在しないが、この状況を完全に記述する理論は存在する。それが量子力学である。

量子もつれのシミュレーション

 量子ビットにさまざまな処理を施す回路の部品を量子ゲートと呼ぶ。量子ゲートをPC(古典コンピュータ)上でシミュレートするPythonフレームワークのひとつにBlueqatがある。これを用いて、量子もつれ状態を作成してみる。最初に、量子もつれ状態を作るために必要な2つの量子ゲート、CNOTゲートとアダマールゲートを紹介する。

アダマールゲート

 アダマール(Hadamard)ゲートの回路図は以下の通りである。

上図において|a\rangle,|b\rangleはそれぞれ1量子ビット状態を表す。aが入力ビット、bが出力ビットである。アダマールゲートは以下のように状態を変換する。

(14)    \begin{eqnarray*} |0\rangle&\rightarrow&\frac{1}{\sqrt{2}}\left(|0\rangle+|1\rangle\right) \\ |1\rangle&\rightarrow&\frac{1}{\sqrt{2}}\left(|0\rangle-|1\rangle\right) \end{eqnarray*}

矢印の左側が|a\rangleを、右側が|b\rangleを表す。

CNOTゲート

 CNOTゲートの回路図は以下の通りである。

上図において|a\rangle,|b\rangle,|c\rangle,|d\rangleはそれぞれ1量子ビット状態を表す。左側の2つが入力であり、右側の2つが出力である。ビットaを制御ビットと呼び、塗りつぶされた円はaが制御ビットであることを表す。また、ビットbにつながる線上にある十字の丸は古典回路でも使われる排他的論理和である。CNOTゲートでは、a=1のときのみbのビットが反転する。例えば、|ab\rangle=|10\rangleのとき|cd\rangle=|11\rangleとなり、|ab\rangle=|00\rangleのとき|cd\rangle=|00\rangleとなる。aの状態はそのまま保持されcに出力されることに注意する。ここで、2つの状態

(15)    \begin{eqnarray*} |a\rangle&=&\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle) \\ |b\rangle&=&|0\rangle \end{eqnarray*}

を考える。これはテンソル積を用いて

(16)    \begin{eqnarray*} |ab\rangle&=&\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes|0\rangle \\ &=&\frac{1}{\sqrt{2}}(|00\rangle+|10\rangle) \end{eqnarray*}

と書くことができる。これはCNOTゲートにより

(17)    \begin{equation*} |cd\rangle=\frac{1}{\sqrt{2}}(|00\rangle+|11\rangle) \\ \end{equation*}

となる。上式は先に見たように2つの量子状態|c\rangle,|d\rangleが量子もつれ状態にあることを表す。従って、2つの状態のテンソル積の形(|c\rangle\otimes|d\rangle)で書くことができない。

量子もつれを作る回路

 さて、アダマールゲートとCNOTゲートを組み合わせた次の回路を使うと量子もつれを作ることができる。

入力は|ab\rangle=|00\rangleである。ビットaにアダマールゲートを作用させた後の状態(図の破線部分)は

(18)    \begin{equation*} \frac{1}{\sqrt{2}}\left(|0\rangle+|1\rangle\right)\otimes|0\rangle \end{equation*}

である。この状態にCNOTゲートを作用させた後の状態は上のCNOTゲートの説明で見たように量子もつれ状態になる。

(19)    \begin{equation*} |cd\rangle=\frac{1}{\sqrt{2}}\left(|00\rangle+|11\rangle\right) \end{equation*}

つまり、上の回路により入力|00\rangleが出力\frac{1}{\sqrt{2}}\left(|00\rangle+|11\rangle\right)に変換された。

Blueqatを用いたシミュレーション

 道具が揃ったので、Blueqatを用いて、PC上でシミュレートしてみる。コードは以下の通り。

出力は以下の通り。

状態|11\rangleが522回、状態|00\rangleが478回測定されたことを表している。ほぼ半々である。量子力学の結果は確率で与えられることをもう一度強調しておく。

まとめ

 今回は量子もつれの説明を行い、PythonフレームワークBlueqatを用いて、シミュレートしてみた。量子コンピュータを使うアルゴリズムの実装は、様々な量子ゲート(今回は2つだけ紹介した)を組み合わせて上記のように記述していく作業になる。既存の機械学習のアルゴリズムを量子回路で書き直す作業についてもいずれ紹介したい。

Kumada Seiya

Kumada Seiya

仕事であろうとなかろうと勉強し続ける、その結果”中身”を知ったエンジニアになれる

最近の記事

  • 関連記事
  • おすすめ記事
  • 特集記事

コメント

この記事へのコメントはありません。

アーカイブ

カテゴリー

PAGE TOP