🔬

[量子現象] 遅延選択実験のレビューとデモ

2023/02/19に公開

この記事でやること

この記事では、量子の基本的な特性である「粒子と波の二重性」の検証実験である遅延選択実験を紹介し、量子プログラミング言語Qiskitでエミュレートすることでその理解を深めます。
この記事は2020年のP.D. Chandarana[1]らの論文を参考にしています。

粒子と波の二重性

電子や光子といった非常に小さなモノ、量子は粒子的な性質と波的な性質の両方を持ち合わせる事で知られています。このことは日立製作所の外村彰さんが行った電子の二重スリット実験を見れば明らかでしょう。

https://www.hitachi.co.jp/rd/research/materials/quantum/doubleslit/index.html

電子一つ一つはスクリーンに点として映されますが(=粒子的性質)、たくさん打ち込むと、縞模様が浮かび上がります(=波的性質)。「粒子であり、波である、、、どゆこと?」となってしまいますが、分かりやすいように以下のように考えてはどうでしょうか。

この説明では、量子は常に波と粒子のどちらかになっているという仮定をしているため、メカニズムは分からないとしても解釈としては受け入れやすいのではないでしょうか。

ところが現実はこの解釈よりも奇妙なことになっている...というのが遅延選択実験ではっきりと分かってしまったのです。

遅延選択実験

遅延選択実験の原案

遅延選択実験の原案は1978年ごろにJohn Archibald Wheelerによって考案されました。こちらは電子ではなく光子の実験ですが、量子性を示すという点では同じです。次図のようマッハ・ツェンダー干渉計(MZ干渉計)を考えます。

  • 左上に光源(laser)を置き、MZ干渉計にレーザーを入射します。
  • ビームスプリッターBS1、BS2の透過率と反射率はいずれも50%です。
  • BS1で二つのパス分かれた光はBS2上で位置で合流し、下流のphoto detector D0,D1で光が検出されます。
  • delay-line上の二つのミラーを動かすことで、下のパスの長さを変化させることができます。
  • BS2は取り除くこともできます。

BS2を挿入した状態で適当な強度のレーザー光をMZ干渉計に入射すると、上のパスを通ってきた光と下のパスを通ってきた光がBS2で干渉するので、delay lineを前後させることで二つのパスを通る光の位相がずれ、D0,D1で観測される光は強くなったり弱くなったりします。

ではレーザーが1光子だけ出す場合はどうなるでしょうか。先ほどの解釈1で考えれば、

  • BS2有りの時はMZ干渉計中(BS1~BS2)を電子が通過している間は光子は波で、\ket{0}の経路と\ket{1}の経路両方を通る。そしてBS2表面で干渉。位相のずれに基づいた確率で光子はD0方面D1表面どちらに飛んでいくかが決まる。

となります。BS2無しの場合はどうなるかというと、エネルギー保存から検出される光子はD0,D1で一つになるはずなので、BS1よりも下流では波として考えることはできず(BS1下流でも波として考えるとD0,D1どちらも検出しない、D0,D1どちらも検出する、という状況があり得てしまう)、

  • BS2無しの時は、BS1透過/反射の時点で光は粒子となり、D0方面D1表面どちらに飛んでいくか決まる。反射率、透過率は50%なので、D0,D1で検出される確率はどちらも50%。

となります。

実際に実験してみると、BS2ありの時は位相依存、BS2なしのときは位相に依存せず、という結果が得られます。ということでMZ干渉計でも解釈1いけそうじゃん!と思うかもしれませんが、ここで少し意地悪な操作をしてみましょう。光がBS1通過したあとに、人間がBS2の有無を決定します。光からしたらMZ干渉計に入って波として振舞うつもりが急にBSを取り除かれ、粒子として振舞うように強いられてしまうわけですから、非常に困るはずです。このように粒子と波の二重性とは何か?に迫った実験がWheelerの遅延選択実験です。

Qiskitで検証するにあたっての問題点

遅延選択実験はここで述べるように量子回路に翻訳できるので、Qiskitを使って検証が可能です。まずは以下のように翻訳をします。

光学実験 Qiskit(量子回路)
経路を量子ビットとする 超伝導量子回路によって作られる2準位系を量子ビットとする
BS1で重ね合わせ状態を作る Hゲートで重ね合わせ状態を作る
delay lineで\ket{1}の位相を\thetaずらす P(\theta)ゲートで\ket{1}の位相を\thetaずらす
BS2で入ってきた\ket{0},\ket{1}それぞれを重ね合わせ状態にする Hゲートで\ket{0},\ket{1}それぞれを重ね合わせ状態にする

ここで分かりにくいのがBS1,2で作られた重ね合わせ状態の符号です。上の表ではHゲートを使い、

H\ket{0} = \frac{\ket{0}+\ket{1}}{\sqrt{2}}, H\ket{1} = \frac{\ket{0}-\ket{1}}{\sqrt{2}}

と、\ket{1}にHゲートが作用した後の\ket{1}の符号だけマイナスにしていますが、これには物理的な考察が含まれます。気になる人は下記を参照してください。

補足:BSでの位相反転

BSへの入射光の電場と反射光の電場を考えると、下図電場E_1~E_4のうち一つは位相が反転していないといけないことをすぐに示せます。

r^2を反射率、t^2を透過率とします。

  • 全て位相が同じ場合を仮定する
E_3 = r E_1 + t E_2 \\ E_4 = t E_1 + r E_2 \\

とすると、入射光のエネルギーは

|E_3|^2 + |E_4|^2 = |E_1|^2 + |E_2|^2 + 4rt E_1 E_2

となるので、出力光のエネルギーと一致しないことがわかります。

  • 一つだけ位相が反転している(\piずれている)場合を仮定する
E_3 = r E_1 + t E_2 \\ E_4 = t E_1 - r E_2 \\

とすると、入射光のエネルギーは

|E_3|^2 + |E_4|^2 = |E_1|^2 + |E_2|^2

となるので、出力光のエネルギーと一致します。よってこちらが正しいとわかります。

透過率と反射率が等しいBSを考えているので、r=t= 1/\sqrt{2}です。よって

\begin{bmatrix} E_3\\ E_4 \end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1\\ 1 & -1 \end{bmatrix} \begin{bmatrix} E_1\\ E_2 \end{bmatrix} = H \begin{bmatrix} E_1\\ E_2 \end{bmatrix}

電場をqubitに直すためには電場の量子化をしなければなりませんが、この時電場同士をつないでいる行列Hは変化を受けません。よって、BSはHゲートであらわすことができます。

以上より、等価回路は次図のようになります。

では後はこれをシミュレーションして...と行きたいところですが、一つ問題があります。それは「遅延」測定になっていないことです。Qiskitでは最初から最終Hゲートの有無が決まっているので、このままではただの1光子版MZ干渉計のテストにすぎません。

現実の光学実験では2006年のV.Jacquesら[2]が行ったように、量子乱数発生器(QRNG)で乱数を発生させ、BS2の役割をするEOM(電気光学変調器)に掛ける電圧を乱数を元に決めることでBS2の有無を、光がBS1通過後に瞬時に決定しています。これに対応する仕組みを量子回路で実装する必要があります。

量子版遅延選択実験

BS2の有無を量子回路上で指定する方法は2011年にR.Ionicioiu, D.R.Ternoによって提案されています[3]

実装のアイデアはとてもシンプルでBS2の有無を選択するためのAncilla と呼ばれる補助qubitを追加するだけです。図1に示した通り、Controlled-Hゲートを使って、Ancillaのqubitを重ね合わせ状態にしておき、測定で0を得ればBSなし、1を得ればBSありにする、と決めます。このようにすることでAncillaのqubitを完全な乱数生成器として使うことができます。Qiskitでは測定値に基づいたゲートの有無の決定はできないので、さらにDeferred Measurement Principle(遅延測定原理)に基づいて測定と演算を入れ替えます(図2)。ということで、量子回路図2で遅延選択実験が可能となります。

Qiskit を使った実証

それではこの回路をQiskitで実装していきましょう。最終的に見たいのは、Ancillaの測定結果が\ket{0}および\ket{1}の時の、Main qubitの測定結果の\theta依存性なので、以下のような実装にします。

  1. \theta=0で量子回路図2でMianとAncillaの測定を多数回行う
  2. Ancillaの測定結果が0の場合(=最終Hゲートなし=BS2なし)の場合と0の場合(=最終Hゲートあり=BS2あり)の場合で場合分けし、各々でMainが0を取る確率と1を取る確率を求める。
  3. \thetaを0から2\piの間で変化させつつ、1と2の実験を繰り返す。

実験用のコードは記事の最後に載せます。結果は下記のとおりです。

  • Ancillaの測定結果が0の場合(=最終Hゲートなし=BS2なし)、大きな角度依存性は見られず、約50%50%の確率でMainは0,1をランダムに取ることが見て取れます。つまり、粒子的な性質を示していると言えます。

  • Ancillaの測定結果が1の場合(=最終Hゲートあり=BS2あり)、検出確率は位相のずれ\thetaに大きく依存することがわかります。つまり、位相に依存する干渉を引き起こしていることから波的な性質を示していると言えます。

結果は予めBS2の有無を決めて行った実験と同じとなってしまいます。この結果と解釈1を両立しようとすると「検出時の性質(波or粒子)と矛盾がなくなるよう、過去であるMZ干渉計中での光の性質が決定される」という過去改変の性質を認めざるを得なくなってしまいます。

本当にそうだったら面白いですが、実際はそんな過去改変はされません...というのを次の定量的な説明で見ていきましょう。

定量的な説明

先ず、Main qubitの量子の状態推移を調べます。

\begin{align} \ket{0} &\xrightarrow{H} \frac{1}{\sqrt{2}}\ket{0}+\frac{1}{\sqrt{2}}\ket{1}\\ & \xrightarrow{P(\theta)} \frac{1}{\sqrt{2}}\ket{0}+\frac{e^{i\theta}}{\sqrt{2}}\ket{1} := \ket{particle}\\ &\xrightarrow{H} \frac{1}{\sqrt{2}}\left( \frac{1}{\sqrt{2}}\ket{0}+\frac{1}{\sqrt{2}}\ket{1} \right) +\frac{e^{i\theta}}{\sqrt{2}} \left( \frac{1}{\sqrt{2}}\ket{0}-\frac{1}{\sqrt{2}}\ket{1} \right) \\ &= e^{i\frac{\theta}{2}} \left( \cos \frac{\theta}{2}\ket{0} -i \sin \frac{\theta}{2}\ket{1} \right) :=\ket{wave} \end{align}

最後のイコールでは1+e^{i\theta} = 2\cos\frac{\theta}{2}e^{i\frac{\theta}{2}},1-e^{i\theta} = -2i\sin\frac{\theta}{2}e^{i\frac{\theta}{2}}を使っています。
式からわかる通り、BS2がない状態では(2)の状態を射影測定しているため、D0,D1での検出確率はそれぞれ50%になります(各係数の絶対値の二乗)。結果が\thetaに依存しない粒子的ふるまいをしているとして\ket{particle}と定義しておきます。

BS2を入れると、(3)=(4)の状態が測定されるため、検出確率は位相のずれに依存します。分かりやすい例として、\theta=\piの位相ずれの時を考えましょう。このとき、BS2を通った後の状態は

(3) =\frac{1}{\sqrt{2}}\left( \underset{BS1,2ともに透過}{\frac{1}{\sqrt{2}}\ket{0}} + \underset{BS1で透過,BS2で反射}{\frac{1}{\sqrt{2}}\ket{1}}\right) +\frac{-1}{\sqrt{2}}\left( \underset{BS1,2ともに反射}{\frac{1}{\sqrt{2}}\ket{0}} - \underset{BS1で反射,BS2で透過}{\frac{1}{\sqrt{2}}\ket{1}} \right) = \ket{1}

となり、光子がBS1,2ともに透過したパターン(世界)とBS1,2ともに反射したパターン(世界)が干渉して打ち消しあうことがわかります。波で見られる干渉の性質を示しているので、この量子状態を\ket{wave}と定義しましょう。

Ancillaで最後のHゲートをかけるか掛けないかを決める場合も同様に計算します。

\begin{align} \ket{0} \otimes \ket{0} \xrightarrow{P(\theta)_M H_M, H_A}&\frac{\ket{0}+\ket{1}}{\sqrt{2}} \otimes \left(\frac{1}{\sqrt{2}}\ket{0}+\frac{e^{i\theta}}{\sqrt{2}}\ket{1}\right)\\ =& \frac{\ket{0}}{\sqrt{2}}\otimes \left(\frac{1}{\sqrt{2}}\ket{0}+\frac{e^{i\theta}}{\sqrt{2}}\ket{1}\right) + \frac{\ket{1}}{\sqrt{2}}\otimes \left(\frac{1}{\sqrt{2}}\ket{0}+\frac{e^{i\theta}}{\sqrt{2}}\ket{1}\right)\\ \xrightarrow{CH}& \frac{\ket{0}}{\sqrt{2}}\otimes \left(\frac{1}{\sqrt{2}}\ket{0}+\frac{e^{i\theta}}{\sqrt{2}}\ket{1}\right) + \frac{\ket{1}}{\sqrt{2}}\otimes \left(\frac{1}{\sqrt{2}}\frac{\ket{0}+\ket{1}}{\sqrt{2}} +\frac{e^{i\theta}}{\sqrt{2}}\frac{\ket{0}-\ket{1}}{\sqrt{2}} \right)\\ =&\frac{\ket{0}\ket{particle}+\ket{1}\ket{wave}}{\sqrt{2}} \end{align}

エンタングルメント状態であることがわかります。
Qiskitで測定していた\thetaへの測定確率依存性を求めましょう。最終状態を次のように式変形します。

\ket{\psi} = \frac{\ket{0}\ket{particle}+\ket{1}\ket{wave}}{\sqrt{2}} = \frac{1}{2}\ket{0_A 0_M} + \frac{e^{i\theta}}{2}\ket{0_A 1_M} + \frac{1+e^{i\theta}}{2\sqrt{2}}\ket{1_A 0_M} + \frac{1-e^{i\theta}}{2\sqrt{2}}\ket{1_A 1_M}

よって、Ancillaが\ket{0}の時

D_0の検出確率は\frac{1}{2}, D_1の検出確率は\frac{1}{2}

Ancillaが\ket{1}の時

D_0の検出確率は\frac{1+\cos \theta}{2}, D_1の検出確率は\frac{1-\cos \theta}{2}

となります。これはQiskitで検証結果と確かに一致しています。

以上より、

ということがわかります。「結局、粒子と波の二重性って何なんだよ...」という質問には答えられない解答となりますが、これが量子力学であり、解釈1がもっともらしく感じる古典的な描像とは大きく異なることがよくわかると思います。

ちなみに、Ancillaの量子を\frac{\ket{0}+\ket{1}}{\sqrt{2}}ではなく、より一般的な\cos \alpha \ket{0} + \sin \alpha \ket{1}にすることで、最終状態は\cos \alpha\ket{0}\ket{particle}+\sin \alpha\ket{1}\ket{wave}となり、Mainの量子の持つ粒子的性質と波的性質の重みづけを変化させられることもわかります。

まとめ

この記事では、遅延選択実験のレビューと検証を行い、量子は波と光のどちらかの状態に都合よくなっていると考えると、過去改変などというおかしい結論になってしまうことを見ました。量子力学はこのような古典的な考え方をせずに、「どちらか」ではなく「どちらの」性質も非観測時は持っており、観測時にどちらになるかが決定されるという考え方をします。これにより遅延選択実験の結果は合理的に説明されます。さらに、非測定時の波と粒子の度合いは人為的にコントロールが可能であるということもわかりました。

一点注意しなければならないのは、そもそもの前提である粒子と波の二重性が何であるかは量子力学は答えてくれないということです。非観測時の状態は観測できない以上、非観測時の状態を議論するのはもはや自然科学ではなく、哲学になってしまいます。

Appendix:Wave-Particle Entanglement

量子版遅延測定を応用すると量子力学の基本的な特性である、粒子と波の二重性とエンタングルメント状態を同時にもつ

\ket{\psi} = \frac{\ket{wave}_A \ket{wave}_B + \ket{particle}_A \ket{particle}_B }{\sqrt{2}}

という状態を作成できることが2017年に示されました。[4]

ここでは行いませんが、4 qubitsを使うことで、Qiskitでもこの状態を作ることができます。

Appendix:量子版遅延選択実験のコード

import qiskit
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, transpile, Aer, IBMQ
from qiskit.tools.visualization import circuit_drawer
from qiskit.tools.monitor import job_monitor, backend_monitor, backend_overview
from qiskit.providers.aer import noise

#import python stuff
import matplotlib.pyplot as plt
import numpy as np
import time

#マニラの実機を使います
IBMQ.load_account()
provider = IBMQ.get_provider('ibm-q')
quito = provider.get_backend('ibmq_manila')

#θを変えながら測定するので、量子回路は配列に詰めておきます
def make_wheeler_circuit(theta_vec):
    wheeler_circuits = []
    for theta in theta_vec:
        circuit = QuantumCircuit(2)
        circuit.h(0)
        circuit.p(theta,0)
        circuit.h(1)
        circuit.ch(1,0)
        circuit.measure_all()
        wheeler_circuits.append(circuit)  
    return wheeler_circuits
    
#0から2πまで16等分して測定します。.draw()で回路図が表示されます。
    number_of_thetas = 16 
theta_vec = np.linspace(0,2*np.pi,number_of_thetas)
my_wheeler_circuits = make_wheeler_circuit(theta_vec) 
my_wheeler_circuits[1].draw()

#測定開始
tic = time.time()

transpiled_circuits = transpile(my_wheeler_circuits, quito)
job = quito.run(transpiled_circuits, shots = 8192)
job_monitor(job)
result = job.result()

toc = time.time()

print(toc-tic)

#測定結果を配列に詰めて、Ancillaの測定値0,1それぞれに対してmainが0,1を取る確率を求めます。
wheeler_hist = []
Particle0_hist = []
Wave0_hist = []
Particle1_hist = []
Wave1_hist = []

for i in range(0,16):
    wheeler_hist = result.get_counts(i)
    Particle0_hist.append(wheeler_hist.get('00'))
    Particle1_hist.append(wheeler_hist.get('01'))
    Wave0_hist.append(wheeler_hist.get('10'))
    Wave1_hist.append(wheeler_hist.get('11'))
    
Particle0_array = np.array(Particle0_hist)
np.putmask(Particle0_array,Particle0_array==None,0)
Particle1_array = np.array(Particle1_hist)
np.putmask(Particle1_array,Particle1_array==None,0)
Wave0_array = np.array(Wave0_hist)
np.putmask(Wave0_array,Wave0_array==None,0)
Wave1_array = np.array(Wave1_hist)
np.putmask(Wave1_array,Wave1_array==None,0)

Particle0_P = Particle0_array/(Particle0_array+Particle1_array)
Particle1_P = Particle1_array/(Particle0_array+Particle1_array)
Wave0_P = Wave0_array/(Wave0_array+Wave1_array)
Wave1_P = Wave1_array/(Wave0_array+Wave1_array)

#グラフを描画します。
plt.figure(figsize=(12,8))
plt.rcParams.update({'font.size': 22})
plt.plot(theta_vec,Particle0_P,'o-',label = 'D0 detected')
plt.plot(theta_vec,Particle1_P,'o-',label = 'D1 detected')

plt.grid(which='major',axis='both')
plt.rcParams.update({'font.size': 16})
plt.legend(loc='lower center', bbox_to_anchor=(0.5, -0.3))
plt.ylim(0, 1)

plt.title('Ancila=|0>')
plt.xlabel('Theta')
plt.ylabel('Probability')

plt.figure(figsize=(12,8))
plt.rcParams.update({'font.size': 22})
plt.plot(theta_vec,Wave0_P,'o-',label = 'D0 detected')
plt.plot(theta_vec,Wave1_P,'o-',label = 'D1 detected')

plt.grid(which='major',axis='both')
plt.rcParams.update({'font.size': 16})
plt.legend(loc='lower center', bbox_to_anchor=(0.5, -0.3))
plt.ylim(0, 1)
plt.title('Ancila=|1>')
plt.xlabel('Theta')
plt.ylabel('Probability')
脚注
  1. Chandarana, Pranav D. et al. “Demonstration of quantum delayed-choice experiment on a quantum computer.” arXiv: Quantum Physics (2020): n. pag. ↩︎

  2. Jacques, Vincent et al. “Experimental Realization of Wheeler's Delayed-Choice Gedanken Experiment.” Science 315 (2006): 966 - 968. ↩︎

  3. Ionicioiu, Radu and Daniel R. Terno. “Proposal for a quantum delayed-choice experiment.” Physical review letters 107 23 (2011): 230406 . ↩︎

  4. Rab, Adil S. et al. “Entanglement of photons in their dual wave-particle nature.” Nature Communications 8 (2017): n. pag. ↩︎

Discussion