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

Qiskit実装

このレッスンでは、量子もつれの応用レッスンで紹介したアイデアの一部をQiskitを使って実装します。

# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-aer
from qiskit import __version__

print(__version__)
2.1.1
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram, array_to_latex
from qiskit.result import marginal_distribution
from qiskit.circuit.library import UGate
from numpy import pi, random

テレポーテーションプロトコルの量子Circuit実装を以下に示します。

qubit = QuantumRegister(1, "Q")
ebit0 = QuantumRegister(1, "A")
ebit1 = QuantumRegister(1, "B")
a = ClassicalRegister(1, "a")
b = ClassicalRegister(1, "b")

protocol = QuantumCircuit(qubit, ebit0, ebit1, a, b)

# Prepare ebit used for teleportation
protocol.h(ebit0)
protocol.cx(ebit0, ebit1)
protocol.barrier()

# Alice's operations
protocol.cx(qubit, ebit0)
protocol.h(qubit)
protocol.barrier()

# Alice measures and sends classical bits to Bob
protocol.measure(ebit0, a)
protocol.measure(qubit, b)
protocol.barrier()

# Bob uses the classical bits to conditionally apply gates
with protocol.if_test((a, 1)):
protocol.x(ebit1)
with protocol.if_test((b, 1)):
protocol.z(ebit1)

display(protocol.draw(output="mpl"))

Output of the previous code cell

このCircuitでは、前のレッスンで扱っていないQiskitのいくつかの機能を使用しています。具体的には barrier 関数と if_test 関数です。 barrier 関数は視覚的な区切りを作ってCircuit図を読みやすくするとともに、実際のハードウェア上でCircuitを実行する際のコンパイル時に、Qiskitがバリアをまたいだ各種の簡略化・最適化を行うのを防ぎます。 if_test 関数は、古典ビットまたはレジスタの値に応じて条件付きで操作を適用します。

このCircuitはまず (A,B)(\mathsf{A},\mathsf{B})ϕ+\vert \phi^+\rangle 状態に初期化し(これ自体はプロトコルの一部ではありません)、次にアリスの操作、その後測定、最後にボブの操作を行います。 プロトコルが正しく動作することを確認するために、Q\mathsf{Q} の初期化された 0\vert 0\rangle 状態にランダムに生成した1Qubit Gateを適用し、テレポートする乱数状態ベクトルを得ます。プロトコル実行後にそのGateの逆演算(すなわち共役転置)を B\mathsf{B} に適用することで、状態が 0\vert 0\rangle に戻ったかどうかを測定してテレポーテーションを検証できます。

まず、ランダムなユニタリ1Qubit Gateを選択します。

random_gate = UGate(
theta=random.random() * 2 * pi,
phi=random.random() * 2 * pi,
lam=random.random() * 2 * pi,
)

display(array_to_latex(random_gate.to_matrix()))
[0.98972121580.01950801030.141673401i0.0603319186+0.1296609988i0.8319925233+0.5360378028i] \begin{bmatrix} 0.9897212158 & -0.0195080103 - 0.141673401 i \\ 0.0603319186 + 0.1296609988 i & -0.8319925233 + 0.5360378028 i \\ \end{bmatrix}

次に、新しいテスト用Circuitを作成します。このCircuitはまず Q\mathsf{Q} にランダムなGateを適用し、テレポーテーションCircuitを実行し、最後にランダムなGateの逆演算をQubit B\mathsf{B} に適用して測定します。 結果は確実に 00 になるはずです。

# Create a new circuit including the same bits and qubits used in the
# teleportation protocol.

test = QuantumCircuit(qubit, ebit0, ebit1, a, b)

# Start with the randomly selected gate on Q

test.append(random_gate, qubit)
test.barrier()

# Append the entire teleportation protocol from above.

test = test.compose(protocol)
test.barrier()

# Finally, apply the inverse of the random unitary to B and measure.

test.append(random_gate.inverse(), ebit1)
result = ClassicalRegister(1, "Result")
test.add_register(result)
test.measure(ebit1, result)

display(test.draw(output="mpl"))

Output of the previous code cell

では、このCircuitに対してAerシミュレーターを実行し、出力のヒストグラムをプロットしてみましょう。 3つの古典ビットすべての統計が表示されます。一番下(左端)のビットは常に 00 となり、Qubit Q\mathsf{Q}B\mathsf{B} に正常にテレポートされたことを示します。一方、残りの2つのビットはほぼ一様に分布するはずです。

result = AerSimulator().run(test).result()
statistics = result.get_counts()
display(plot_histogram(statistics))

Output of the previous code cell

必要に応じて、テスト結果のQubitのみに絞って統計をフィルタリングすることもできます。

filtered_statistics = marginal_distribution(statistics, [2])
display(plot_histogram(filtered_statistics))

Output of the previous code cell

超高密度符号化

超高密度符号化(Superdense coding)は、ある意味でテレポーテーションと相補的な目的を達成するプロトコルです。 テレポーテーションが2古典ビットの通信を用いて1Qubitを送信できる(1 e-bitのもつれコストあり)のに対し、超高密度符号化では1Qubitの量子通信を用いて2古典ビットを送信できます(こちらも1 e-bitのもつれコストあり)。

より詳しく説明すると、送信者(アリス)と受信者(ボブ)が1 e-bitのもつれを共有しています。 レッスン内の規約に従い、アリスはQubit A\mathsf{A} を、ボブはQubit B\mathsf{B} を持ち、ペア (A,B)(\mathsf{A},\mathsf{B}) は状態 ϕ+\vert\phi^+\rangle にあります。 アリスは ccdd で表される2つの古典ビットをボブに送りたいと考えており、1つのQubitを送ることでこれを実現します。

この成果は、テレポーテーションが達成するものほど興味深くないと見なすこともできます。 当面の間、Qubitを送ることは古典ビットを送ることよりはるかに困難になると思われるため、e-bitのコストを払ってまで1Qubitの量子通信を2ビットの古典通信と交換することは、ほとんど割に合わないように思えます。 しかし、だからといって超高密度符号化が興味深くないということにはなりません。これは非常に興味深いプロトコルです。

レッスンのテーマに即して言えば、超高密度符号化が興味深い理由の一つは、もつれの具体的かつ(情報理論の文脈では)かなり印象的な利用例を示しているからです。 Holevoの定理として知られる量子情報理論の有名な定理によると、共有されたもつれ状態を使わない場合、1Qubitを送ることで送信できる古典情報量は1ビットを超えることができません。 (Holevoの定理はこれよりも一般的です。正確な表現は技術的であり説明が必要ですが、これはその一つの帰結です。) つまり、超高密度符号化により、共有もつれはQubitを送ることで伝達できる古典情報容量を実質的に2倍にすることができます。

プロトコル

次の量子Circuit図は超高密度符号化プロトコルを描写しています。

Superdense coding circuit

アリスの操作を言葉で説明すると以下の通りです。

  1. d=1d=1 の場合、アリスは自分のQubit A\mathsf{A}ZZ Gateを適用します(d=0d=0 の場合は何もしません)。

  2. c=1c=1 の場合、アリスは自分のQubit A\mathsf{A}XX Gateを適用します(c=0c=0 の場合は何もしません)。

アリスはその後、自分のQubit A\mathsf{A} をボブに送ります。

ボブはQubit A\mathsf{A} を受け取ると、まず A\mathsf{A} を制御、B\mathsf{B} をターゲットとする制御NOTゲートを適用し、続いて A\mathsf{A} にアダマールゲートを適用します。 その後、B\mathsf{B} を測定して cc を、A\mathsf{A} を測定して dd を得ます。いずれも標準基底測定です。

解析

このプロトコルの考え方はシンプルです。 アリスはボブと共有したいベル状態を実質的に選択し、 自分のQubitをボブに送ります。ボブはどのベル状態をアリスが選んだかを測定で判定します。

つまり、はじめに ϕ+\vert\phi^+\rangle を共有している状態から、ビット ccdd の値に応じて、アリスは自分のQubit A\mathsf{A}I\mathbb{I}XXZZ、または XZXZ を適用することで、この状態をそのままにするか他のベル状態に変換します。

(II)ϕ+=ϕ+(IZ)ϕ+=ϕ(IX)ϕ+=ψ+(IXZ)ϕ+=ψ\begin{aligned} (\mathbb{I} \otimes \mathbb{I}) \vert \phi^+ \rangle & = \vert \phi^+\rangle \\ (\mathbb{I} \otimes Z) \vert \phi^+ \rangle & = \vert \phi^-\rangle \\ (\mathbb{I} \otimes X) \vert \phi^+ \rangle & = \vert \psi^+\rangle \\ (\mathbb{I} \otimes XZ) \vert \phi^+ \rangle & = \vert \psi^-\rangle \end{aligned}

ボブの操作は4つのベル状態に対して次の効果をもたらします。

ϕ+00ϕ01ψ+10ψ11\begin{aligned} \vert \phi^+\rangle & \mapsto \vert 00\rangle\\ \vert \phi^-\rangle & \mapsto \vert 01\rangle\\ \vert \psi^+\rangle & \mapsto \vert 10\rangle\\ \vert \psi^-\rangle & \mapsto -\vert 11\rangle\\ \end{aligned}

これは各状態に対してボブの操作の結果を直接計算することで確認できます。

したがって、ボブが測定を行うと、アリスがどのベル状態を選んだかを判定できます。 プロトコルが正しく動作することを確認するには、各ケースを個別に検証します。

  • cd=00cd = 00 の場合、ボブが A\mathsf{A} を受け取った時点での (B,A)(\mathsf{B},\mathsf{A}) の状態は ϕ+\vert \phi^+\rangle です。ボブはこの状態を 00\vert 00\rangle に変換し、cd=00cd = 00 を得ます。

  • cd=01cd = 01 の場合、ボブが A\mathsf{A} を受け取った時点での (B,A)(\mathsf{B},\mathsf{A}) の状態は ϕ\vert \phi^-\rangle です。ボブはこの状態を 01\vert 01\rangle に変換し、cd=01cd = 01 を得ます。

  • cd=10cd = 10 の場合、ボブが A\mathsf{A} を受け取った時点での (B,A)(\mathsf{B},\mathsf{A}) の状態は ψ+\vert \psi^+\rangle です。ボブはこの状態を 10\vert 10\rangle に変換し、cd=10cd = 10 を得ます。

  • cd=11cd = 11 の場合、ボブが A\mathsf{A} を受け取った時点での (B,A)(\mathsf{B},\mathsf{A}) の状態は ψ\vert \psi^-\rangle です。ボブはこの状態を 11-\vert 11\rangle に変換し、cd=11cd = 11 を得ます。(マイナス1の位相因子はここでは影響しません。)

超高密度符号化の実装

以下は超高密度符号化の簡単な実装です。送信するビットに応じてCircuitを構成します。まず送信する2ビットを選択します(後ほどランダムに選びますが、ここではとりあえず任意の値を設定します)。

c = "1"
d = "0"

次に、それに応じてCircuitを構築します。ここではQiskitのデフォルト名をQubitに使用します。上のQubitが q0\mathsf{q}_0、下のQubitが q1\mathsf{q}_1 となります。

protocol = QuantumCircuit(2)

# Prepare ebit used for superdense coding
protocol.h(0)
protocol.cx(0, 1)
protocol.barrier()

# Alice's operations
if d == "1":
protocol.z(0)
if c == "1":
protocol.x(0)
protocol.barrier()

# Bob's actions
protocol.cx(0, 1)
protocol.h(0)
protocol.measure_all()

display(protocol.draw(output="mpl"))

Output of the previous code cell

新しい点としては measure_all 関数があります。これはすべてのQubitを測定し、結果を1つの古典レジスタに格納します(この場合は2ビットになります)。

Aerシミュレーターを実行すると、期待通りの出力が得られます。

result = AerSimulator().run(protocol).result()
statistics = result.get_counts()

for outcome, frequency in statistics.items():
print(f"Measured {outcome} with frequency {frequency}")

display(plot_histogram(statistics))
Measured 10 with frequency 1024

Output of the previous code cell

次に、追加のQubitをランダムビット生成器として使用しましょう。これはコインを公平に投げることに相当します。これを使って ccdd をランダムに選択し、超高密度符号化プロトコルを実行します。

rbg = QuantumRegister(1, "coin")
ebit0 = QuantumRegister(1, "A")
ebit1 = QuantumRegister(1, "B")

Alice_c = ClassicalRegister(1, "Alice c")
Alice_d = ClassicalRegister(1, "Alice d")

test = QuantumCircuit(rbg, ebit0, ebit1, Alice_d, Alice_c)

# Initialize the ebit
test.h(ebit0)
test.cx(ebit0, ebit1)
test.barrier()

# Use the 'coin' qubit twice to generate Alice's bits c and d.
test.h(rbg)
test.measure(rbg, Alice_c)
test.h(rbg)
test.measure(rbg, Alice_d)
test.barrier()

# Now the protocol runs, starting with Alice's actions, which depend
# on her bits.
with test.if_test((Alice_d, 1), label="Z"):
test.z(ebit0)
with test.if_test((Alice_c, 1), label="X"):
test.x(ebit0)
test.barrier()

# Bob's actions
test.cx(ebit0, ebit1)
test.h(ebit0)
test.barrier()

Bob_c = ClassicalRegister(1, "Bob c")
Bob_d = ClassicalRegister(1, "Bob d")
test.add_register(Bob_d)
test.add_register(Bob_c)
test.measure(ebit0, Bob_d)
test.measure(ebit1, Bob_c)

display(test.draw(output="mpl"))

Output of the previous code cell

Aerシミュレーターを実行すると、アリスとボブの古典ビットが常に一致していることが確認できます。

result = AerSimulator().run(test).result()
statistics = result.get_counts()
display(plot_histogram(statistics))

Output of the previous code cell

CHSHゲーム

このレッスンで扱う最後の例はプロトコルではなく、CHSHゲームと呼ばれるゲームです。

ここでの「ゲーム」とは、楽しみやスポーツのために行うものではなく、ゲーム理論の意味での数学的抽象概念を指します。 ゲームの数学的抽象化は、例えば経済学やコンピューターサイエンスで研究されており、非常に魅力的かつ有用なものです。

CHSHの文字は著者たち — ジョン・クローザー(John Clauser)、マイケル・ホーン(Michael Horne)、アブナー・シモニー(Abner Shimony)、リチャード・ホルト(Richard Holt) — の名前に由来しており、1969年の論文でこの例が初めて記述されました。 彼らはこの例をゲームとしてではなく、実験として記述しました。 しかし、ゲームとしての説明は自然かつ直感的です。

CHSHゲームは非局所ゲームとして知られるゲームのクラスに属します。 非局所ゲームは非常に興味深く、物理学、コンピューターサイエンス、数学と深い関わりがあり、今なお未解決の謎を秘めています。 このセクションでは、非局所ゲームとは何かを説明した後、CHSHゲームとその興味深い点に焦点を当てます。

非局所ゲーム

非局所ゲームとは、アリスとボブという2人のプレイヤーが協力して特定の結果を目指す協力ゲームです。 ゲームは審判によって進行され、審判はアリスとボブに事前に知らされている厳格なルールに従って行動します。

アリスとボブはゲーム開始前に好きな方法で準備できますが、ゲームが始まると彼らは通信を禁じられます。 これは、審判が探偵の役を担い、アリスとボブが別々の部屋で尋問される容疑者であるかのような、ある種の厳重な施設でゲームが行われているとイメージできます。 また別の見方をすれば、アリスとボブは遠く離れた場所にいて、ゲームの進行時間内では光速では間に合わないため通信が禁止されているとも考えられます。 つまり、アリスがボブにメッセージを送ろうとしても、それが届く頃にはゲームが終わっているという状況です。逆も同様です。

非局所ゲームの仕組みは次のとおりです。まず審判がアリスとボブにそれぞれ1つずつ質問をします。 アリスへの質問を xx、ボブへの質問を yy と呼ぶことにします。 ここでは xxyy は古典的な状態と考えており、CHSHゲームでは xxyy はビットです。

審判は乱数を使ってこれらの質問を選びます。 具体的には、質問のペア (x,y)(x,y) の各組み合わせに対して確率 p(x,y)p(x,y) が定まっており、審判はゲーム当日にこの確率に従ってランダムに質問を選ぶと誓約しています。 アリスとボブを含む全員がこれらの確率を知っていますが、ゲームが始まるまで具体的にどのペア (x,y)(x,y) が選ばれるかは誰にもわかりません。

アリスとボブが質問を受け取った後、それぞれ答えを返さなければなりません。アリスの答えを aa、ボブの答えを bb とします。 これらも一般には古典的な状態であり、CHSHゲームではビットです。

この時点で審判が判定を下します。答えのペア (a,b)(a,b) が質問のペア (x,y)(x,y) に対して所定のルールに従って正解であるかどうかにより、アリスとボブは勝ち負けかが決まります。 ルールが異なれば別のゲームになり、CHSHゲームのルールについては次のセクションで説明します。 すでに述べたように、ルールは全員に公開されています。

以下の図は、この相互作用を視覚的に表したものです。

非局所ゲーム

どの質問が出るかわからないこと、特に各プレイヤーが相手の質問を知らないことが、アリスとボブにとって非局所ゲームを難しくしている要因です。ちょうど別々の部屋で取り調べを受ける共犯者が口裏を合わせようとするのに似ています。

審判の厳密な定義が非局所ゲームのインスタンスを決定します。 これには、各質問ペアの確率 p(x,y)p(x,y) の指定と、各質問ペア (x,y)(x,y) に対して答えのペア (a,b)(a,b) が勝ちか負けかを決めるルールが含まれます。

もう少し後でCHSHゲームを見ていきますが、その前に、他の非局所ゲームを考察することも非常に興味深いと触れておきましょう。 実際、非常に興味深いです。アリスとボブがエンタングルメントを使ってどれほどうまくプレイできるか、現在でも解明されていない比較的シンプルな非局所ゲームが存在します。 設定はシンプルですが、そこには複雑さが潜んでいます。ゲームによっては、アリスとボブの最善あるいは最善に近い戦略を計算することが不可能なほど難しい場合もあります。 これが非局所ゲームモデルの直感に反する驚くべき性質です。

CHSHゲームの説明

以下はCHSHゲームの正確な説明です。上述のとおり、xx はアリスの質問、yy はボブの質問、aa はアリスの答え、bb はボブの答えです。

  • 質問と答えはすべてビットです:x,y,a,b{0,1}.x,y,a,b\in\{0,1\}.

  • 審判は質問 (x,y)(x,y)一様にランダムに選びます。つまり、(0,0),(0,0), (0,1),(0,1), (1,0),(1,0), (1,1)(1,1) の4つの可能性のそれぞれが確率 1/41/4 で選ばれます。

  • 答えのペア (a,b)(a,b) が質問ペア (x,y)(x,y) に対して勝ちとなるのは ab=xya\oplus b = x\wedge y のときで、それ以外は負けです。以下の表は、各質問ペア (x,y)(x,y) に対する答え (a,b)(a,b) の勝ち負けの条件を表しています。

(x,y)winlose(0,0)a=bab(0,1)a=bab(1,0)a=bab(1,1)aba=b\begin{array}{ccc} (x,y) & \text{win} & \text{lose} \\[1mm]\hline \rule{0mm}{4mm}(0,0) & a = b & a \neq b \\[1mm] (0,1) & a = b & a \neq b \\[1mm] (1,0) & a = b & a \neq b \\[1mm] (1,1) & a \neq b & a = b \end{array}

古典的戦略の限界

では、古典的戦略から始めて、CHSHゲームにおけるアリスとボブの戦略を考えてみましょう。

決定論的戦略

まず決定論的戦略から始めます。この場合、アリスの答え aa は受け取った質問 xx の関数であり、ボブの答え bb も受け取った質問 yy の関数となります。 たとえば、a(0)a(0) はアリスの質問が 00 のときの答えを、a(1)a(1) はアリスの質問が 11 のときの答えを表します。

どんな決定論的戦略も、毎回CHSHゲームに勝つことはできません。 これを理解する一つの方法は、考えられるすべての決定論的戦略を一つひとつ調べて、どれも4つの質問ペアのうち少なくとも1つで負けることを確認することです。 アリスとボブはそれぞれ、1ビットから1ビットへの4種類の関数(単一システムのレッスンで登場した関数)から選ぶことができるため、確認すべき決定論的戦略は合計 1616 通りあります。

解析的に理由を考えることもできます。 アリスとボブの戦略が (x,y)=(0,0)(x,y) = (0,0) で勝つならば a(0)=b(0)a(0) = b(0) でなければなりません。 (x,y)=(0,1)(x,y) = (0,1) で勝つならば a(0)=b(1)a(0) = b(1) であり、同様に (x,y)=(1,0)(x,y) = (1,0) で勝つならば a(1)=b(0)a(1) = b(0) です。 3つすべてで勝つ戦略であるならば、

b(1)=a(0)=b(0)=a(1).b(1) = a(0) = b(0) = a(1).

これは最後のケース (x,y)=(1,1)(x,y) = (1,1) では戦略が負けることを意味します。このケースで勝つには a(1)b(1)a(1) \neq b(1) が必要だからです。 したがって、毎回勝てる決定論的戦略は存在しません。

一方、4つのうち3つのケースで勝つ決定論的戦略は簡単に見つかります。例えば a(0)=a(1)=b(0)=b(1)=0a(0)=a(1)=b(0)=b(1)=0 がそれです。 このことから、決定論的戦略を使ったアリスとボブの最大勝率は 3/43/4 であると結論づけられます。

確率的戦略

先ほど結論づけたように、アリスとボブは決定論的戦略ではCHSHゲームを75%より高い確率で勝つことができません。 では確率的戦略ならどうでしょうか? 乱数を使うこと、特に選択が相関した共有乱数を使うことは、アリスとボブの役に立つのでしょうか?

実はどんな確率的戦略も、勝率を上げるためには全く役に立ちません。 これは、すべての確率的戦略が決定論的戦略をランダムに選択することとして見なせるためです。これは、単一システムのレッスンで触れたように、確率的な操作が決定論的な操作のランダムな選択として見なせることと同様です。 平均は最大値を超えることはないため、確率的戦略は全体の勝率という観点では何の優位性もないということになります。

したがって、決定論的か確率的かを問わず、古典的な戦略では勝率 3/43/4 がアリスとボブにとって最善です。

CHSHゲームの戦略

ここで自然に浮かぶ疑問は、アリスとボブが量子的戦略を使えばもっとうまくできるかどうかです。 特に、以下の図のようにエンタングルした量子状態を共有していた場合(ゲーム前に用意しておいたもの)、勝率を上げることができるでしょうか?

エンタングルメントを使った非局所ゲーム

答えはイエスです。これがこの例の核心であり、非常に興味深い理由です。 では、アリスとボブがエンタングルメントを使ってこのゲームでいかに優れた結果を出せるか、具体的に見ていきましょう。

必要なベクトルと行列

まず、実数 θ\theta(ラジアン単位の角度と考えます)ごとに、Qubitの状態ベクトル ψθ\vert \psi_{\theta}\rangle を次のように定義します。

ψθ=cos(θ)0+sin(θ)1\vert\psi_{\theta}\rangle = \cos(\theta)\vert 0\rangle + \sin(\theta) \vert 1\rangle

簡単な例をいくつか示します:

ψ0=0ψπ/2=1ψπ/4=+ψπ/4=\begin{aligned} \vert\psi_{0}\rangle & = \vert 0\rangle \\ \vert\psi_{\pi/2}\rangle & = \vert 1\rangle \\ \vert\psi_{\pi/4}\rangle & = \vert + \rangle \\ \vert\psi_{-\pi/4}\rangle & = \vert - \rangle \end{aligned}

以下は、この後の解析で現れる例です:

ψπ/8=2+2202221ψπ/8=2+220+2221ψ3π/8=2220+2+221ψ5π/8=2220+2+221\begin{aligned} \vert\psi_{-\pi/8}\rangle & = \frac{\sqrt{2 + \sqrt{2}}}{2}\vert 0\rangle -\frac{\sqrt{2 - \sqrt{2}}}{2}\vert 1\rangle \\[1mm] \vert\psi_{\pi/8}\rangle & = \frac{\sqrt{2 + \sqrt{2}}}{2}\vert 0\rangle + \frac{\sqrt{2 - \sqrt{2}}}{2}\vert 1\rangle \\[1mm] \vert\psi_{3\pi/8}\rangle & = \frac{\sqrt{2 - \sqrt{2}}}{2}\vert 0\rangle + \frac{\sqrt{2 + \sqrt{2}}}{2}\vert 1\rangle \\[1mm] \vert\psi_{5\pi/8}\rangle & = -\frac{\sqrt{2 - \sqrt{2}}}{2}\vert 0\rangle + \frac{\sqrt{2 + \sqrt{2}}}{2}\vert 1\rangle \end{aligned}

一般形を見ると、これらのベクトルの任意の2つの内積は次の公式で表せることがわかります:

ψαψβ=cos(α)cos(β)+sin(α)sin(β)=cos(αβ).(3)\langle \psi_{\alpha} \vert \psi_{\beta} \rangle = \cos(\alpha)\cos(\beta) + \sin(\alpha)\sin(\beta) = \cos(\alpha-\beta). \tag{3}

詳しく言うと、これらのベクトルの成分はすべて実数なので、複素共役を気にする必要はありません。内積はコサインの積とサインの積の和になります。 三角関数の加法定理を使うと、上記の簡略化が得られます。 この公式は、実数単位ベクトルの内積の幾何学的な解釈として、2つのベクトル間の角度のコサインを表していることを示しています。

これらのベクトルの任意の2つのテンソル積ϕ+\vert \phi^+\rangle 状態の内積を計算すると、分母に 2\sqrt{2} がある点を除いて似た表現が得られます:

ψαψβϕ+=cos(α)cos(β)+sin(α)sin(β)2=cos(αβ)2.(4)\langle \psi_{\alpha} \otimes \psi_{\beta} \vert \phi^+ \rangle = \frac{\cos(\alpha)\cos(\beta) + \sin(\alpha)\sin(\beta)}{\sqrt{2}} = \frac{\cos(\alpha-\beta)}{\sqrt{2}}. \tag{4}

この特定の内積への関心はすぐに明らかになりますが、今はこれを公式として観察するだけにとどめます。

次に、各角度 θ\theta に対してユニタリ行列 UθU_{\theta} を次のように定義します。

Uθ=0ψθ+1ψθ+π/2U_{\theta} = \vert 0 \rangle \langle \psi_{\theta} \vert + \vert 1\rangle\langle \psi_{\theta+\pi/2} \vert

直感的には、この行列は ψθ\vert\psi_{\theta}\rangle0\vert 0\rangle に、ψθ+π/2\vert \psi_{\theta + \pi/2}\rangle1\vert 1\rangle に変換します。 これがユニタリ行列であることを確認するための重要な観察は、任意の角度 θ\theta に対してベクトル ψθ\vert\psi_{\theta}\rangleψθ+π/2\vert\psi_{\theta + \pi/2}\rangle が直交しているという点です:

ψθψθ+π/2=cos(π/2)=0.\langle \psi_{\theta} \vert \psi_{\theta + \pi/2} \rangle = \cos(\pi/2) = 0.

これより、

UθUθ=(0ψθ+1ψθ+π/2)(ψθ0+ψθ+π/21)=0ψθψθ0+0ψθψθ+π/21+1ψθ+π/2ψθ0+1ψθ+π/2ψθ+π/21=00+11=I.\begin{aligned} U_{\theta} U_{\theta}^{\dagger} & = \bigl(\vert 0 \rangle \langle \psi_{\theta} \vert + \vert 1\rangle\langle \psi_{\theta+\pi/2} \vert\bigr) \bigl(\vert \psi_{\theta} \rangle \langle 0 \vert + \vert \psi_{\theta+\pi/2}\rangle\langle 1 \vert\bigr) \\[1mm] & = \vert 0 \rangle \langle \psi_{\theta} \vert \psi_{\theta} \rangle \langle 0 \vert + \vert 0 \rangle \langle \psi_{\theta} \vert \psi_{\theta+\pi/2} \rangle \langle 1 \vert + \vert 1 \rangle \langle \psi_{\theta+\pi/2} \vert \psi_{\theta} \rangle \langle 0 \vert + \vert 1 \rangle \langle \psi_{\theta+\pi/2} \vert \psi_{\theta+\pi/2} \rangle \langle 1 \vert \\[1mm] & = \vert 0 \rangle \langle 0 \vert + \vert 1 \rangle \langle 1 \vert\\[1mm] & = \mathbb{I}. \end{aligned}

この行列を明示的に書くと次のようになります:

Uθ=(cos(θ)sin(θ)cos(θ+π/2)sin(θ+π/2))=(cos(θ)sin(θ)sin(θ)cos(θ)).U_{\theta} = \begin{pmatrix} \cos(\theta) & \sin(\theta)\\[1mm] \cos(\theta+ \pi/2) & \sin(\theta + \pi/2) \end{pmatrix} = \begin{pmatrix} \cos(\theta) & \sin(\theta)\\[1mm] -\sin(\theta) & \cos(\theta) \end{pmatrix}.

これは回転行列の一例であり、具体的には実数成分の2次元ベクトルを原点の周りに θ-\theta だけ回転させます。 回転の命名と媒介変数化に標準的な規則を使うと、Uθ=Ry(2θ)U_{\theta} = R_y(-2\theta) となり、

Ry(θ)=(cos(θ/2)sin(θ/2)sin(θ/2)cos(θ/2)).R_y(\theta) = \begin{pmatrix} \cos(\theta/2) & -\sin(\theta/2)\\[1mm] \sin(\theta/2) & \cos(\theta/2) \end{pmatrix}.

戦略の説明

これで量子的戦略を説明できます。

  • セットアップ: アリスとボブはゲーム開始時に1つのeビットを共有しています。アリスはQubit A\mathsf{A} を、ボブはQubit B\mathsf{B} を保持しており、2つのQubit (X,Y)(\mathsf{X},\mathsf{Y}) は合わせて ϕ+\vert\phi^+\rangle 状態にあります。

  • アリスの行動:

    • アリスが質問 x=0x=0 を受け取った場合、彼女はQubit A\mathsf{A}U0U_{0} を適用します。
    • アリスが質問 x=1x=1 を受け取った場合、彼女はQubit A\mathsf{A}Uπ/4U_{\pi/4} を適用します。

    アリスが A\mathsf{A} に行う操作は次のようにも表せます:

    {U0if x=0Uπ/4if x=1\begin{cases} U_0 & \text{if $x = 0$}\\ U_{\pi/4} & \text{if $x = 1$} \end{cases}

    この操作を適用した後、アリスは標準基底測定で A\mathsf{A} を測定し、測定結果を答え aa とします。

  • ボブの行動:

    • ボブが質問 y=0y=0 を受け取った場合、彼はQubit B\mathsf{B}Uπ/8U_{\pi/8} を適用します。
    • ボブが質問 y=1y=1 を受け取った場合、彼はQubit B\mathsf{B}Uπ/8U_{-\pi/8} を適用します。

    アリスと同様に、ボブが B\mathsf{B} に行う操作は次のように表せます:

    {Uπ/8if y=0Uπ/8if y=1\begin{cases} U_{\pi/8} & \text{if $y = 0$}\\ U_{-\pi/8} & \text{if $y = 1$} \end{cases}

    この操作を適用した後、ボブは標準基底測定で B\mathsf{B} を測定し、測定結果を答え bb とします。

以下は、この戦略を表す量子Circuit図です:

CHSHゲームCircuit

この図では、上段に Uπ/8U_{-\pi/8}、下段に Uπ/4U_{\pi/4} の通常の制御Gateが2つあります。 また、上段に Uπ/8U_{\pi/8}、下段に U0U_{0} の制御Gateのように見えるGateが2つありますが、制御を表す円が塗りつぶされていません。 これは異なるタイプの制御Gateを示しており、制御Qubitが 00(通常の制御Gateのように 11 ではなく)のときにGateが実行されます。 つまり実質的に、ボブは y=0y=0 のとき Uπ/8U_{\pi/8}y=1y=1 のとき Uπ/8U_{-\pi/8} を自分のQubitに適用し、アリスは x=0x=0 のとき U0U_0x=1x=1 のとき Uπ/4U_{\pi/4} を適用します。これは上記の文章による説明と一致しています。

あとはこのアリスとボブの戦略がどれほどうまく機能するかを確認します。 4つの質問ペアそれぞれについて個別に検討していきましょう。

ケースごとの分析

  • ケース1:(x,y)=(0,0).(x,y) = (0,0).

    この場合、アリスは自分のQubitに U0U_{0} を、ボブは Uπ/8U_{\pi/8} を適用するため、操作後の2つのQubit (A,B)(\mathsf{A},\mathsf{B}) の状態は次のようになります:

    (U0Uπ/8)ϕ+=00ψ0ψπ/8ϕ++01ψ0ψ5π/8ϕ++10ψπ/2ψπ/8ϕ++11ψπ/2ψ5π/8ϕ+=cos(π8)00+cos(5π8)01+cos(3π8)10+cos(π8)112.\begin{aligned} \bigl(U_0 \otimes U_{\pi/8}\bigr) \vert \phi^+\rangle & = \vert 00 \rangle \langle \psi_0 \otimes \psi_{\pi/8}\vert \phi^+\rangle + \vert 01 \rangle \langle \psi_0 \otimes\psi_{5\pi/8}\vert \phi^+\rangle \\ & \qquad + \vert 10 \rangle \langle \psi_{\pi/2} \otimes \psi_{\pi/8}\vert \phi^+\rangle + \vert 11 \rangle \langle \psi_{\pi/2} \otimes \psi_{5\pi/8}\vert \phi^+\rangle\\[2mm] & = \frac{ \cos\bigl(-\frac{\pi}{8}\bigr) \vert 00\rangle + \cos\bigl(-\frac{5\pi}{8}\bigr) \vert 01\rangle + \cos\bigl(\frac{3\pi}{8}\bigr) \vert 10\rangle + \cos\bigl(-\frac{\pi}{8}\bigr) \vert 11\rangle}{\sqrt{2}}. \end{aligned}

    4つの答えペア (a,b)(a,b) の確率はそれぞれ次のとおりです。

    Pr((a,b)=(0,0))=12cos2(π8)=2+28Pr((a,b)=(0,1))=12cos2(5π8)=228Pr((a,b)=(1,0))=12cos2(3π8)=228Pr((a,b)=(1,1))=12cos2(π8)=2+28\begin{aligned} \operatorname{Pr}\bigl((a,b)=(0,0)\bigr) & = \frac{1}{2}\cos^2\Bigl(-\frac{\pi}{8}\Bigr) = \frac{2+\sqrt{2}}{8} \\[2mm] \operatorname{Pr}\bigl((a,b)=(0,1)\bigr) & = \frac{1}{2}\cos^2\Bigl(-\frac{5\pi}{8}\Bigr) = \frac{2-\sqrt{2}}{8}\\[2mm] \operatorname{Pr}\bigl((a,b)=(1,0)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{3\pi}{8}\Bigr) = \frac{2-\sqrt{2}}{8}\\[2mm] \operatorname{Pr}\bigl((a,b)=(1,1)\bigr) & = \frac{1}{2}\cos^2\Bigl(-\frac{\pi}{8}\Bigr) = \frac{2+\sqrt{2}}{8} \end{aligned}

    これらを足し合わせることで、a=ba=baba\neq b の確率を求めます。

    Pr(a=b)=2+24Pr(ab)=224\begin{aligned} \operatorname{Pr}(a = b) & = \frac{2 + \sqrt{2}}{4}\\[2mm] \operatorname{Pr}(a \neq b) & = \frac{2 - \sqrt{2}}{4} \end{aligned}

    質問ペア (0,0)(0,0) では a=ba=b のときアリスとボブが勝つため、このケースでの勝率は

    2+24.\frac{2 + \sqrt{2}}{4}.
  • ケース2:(x,y)=(0,1).(x,y) = (0,1).

    この場合、アリスは自分のQubitに U0U_{0} を、ボブは Uπ/8U_{-\pi/8} を適用するため、操作後の2つのQubit (A,B)(\mathsf{A},\mathsf{B}) の状態は次のようになります:

    (U0Uπ/8)ϕ+=00ψ0ψπ/8ϕ++01ψ0ψ3π/8ϕ++10ψπ/2ψπ/8ϕ++11ψπ/2ψ3π/8ϕ+=cos(π8)00+cos(3π8)01+cos(5π8)10+cos(π8)112.\begin{aligned} \bigl(U_0 \otimes U_{-\pi/8}\bigr) \vert \phi^+\rangle & = \vert 00 \rangle \langle \psi_0 \otimes \psi_{-\pi/8}\vert \phi^+\rangle + \vert 01 \rangle \langle \psi_0 \otimes\psi_{3\pi/8}\vert \phi^+\rangle \\ & \qquad + \vert 10 \rangle \langle \psi_{\pi/2} \otimes \psi_{-\pi/8}\vert \phi^+\rangle + \vert 11 \rangle \langle \psi_{\pi/2} \otimes \psi_{3\pi/8}\vert \phi^+\rangle\\[2mm] & = \frac{ \cos\bigl(\frac{\pi}{8}\bigr) \vert 00\rangle + \cos\bigl(-\frac{3\pi}{8}\bigr) \vert 01\rangle + \cos\bigl(\frac{5\pi}{8}\bigr) \vert 10\rangle + \cos\bigl(\frac{\pi}{8}\bigr) \vert 11\rangle}{\sqrt{2}}. \end{aligned}

    4つの答えペア (a,b)(a,b) の確率はそれぞれ次のとおりです。

    Pr((a,b)=(0,0))=12cos2(π8)=2+28Pr((a,b)=(0,1))=12cos2(3π8)=228Pr((a,b)=(1,0))=12cos2(5π8)=228Pr((a,b)=(1,1))=12cos2(π8)=2+28\begin{aligned} \operatorname{Pr}\bigl((a,b)=(0,0)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2+\sqrt{2}}{8} \\[2mm] \operatorname{Pr}\bigl((a,b)=(0,1)\bigr) & = \frac{1}{2}\cos^2\Bigl(-\frac{3\pi}{8}\Bigr) = \frac{2-\sqrt{2}}{8}\\[2mm] \operatorname{Pr}\bigl((a,b)=(1,0)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{5\pi}{8}\Bigr) = \frac{2-\sqrt{2}}{8}\\[2mm] \operatorname{Pr}\bigl((a,b)=(1,1)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2+\sqrt{2}}{8} \end{aligned}

    同様に、これらを足し合わせることで a=ba=baba\neq b の確率を求めます。

    Pr(a=b)=2+24Pr(ab)=224\begin{aligned} \operatorname{Pr}(a = b) & = \frac{2 + \sqrt{2}}{4}\\[2mm] \operatorname{Pr}(a \neq b) & = \frac{2 - \sqrt{2}}{4} \end{aligned}

    質問ペア (0,1)(0,1) では a=ba=b のときアリスとボブが勝つため、このケースでの勝率は

    2+24.\frac{2 + \sqrt{2}}{4}.
  • ケース3:(x,y)=(1,0).(x,y) = (1,0).

    この場合、アリスは自分のQubitに Uπ/4U_{\pi/4} を、ボブは Uπ/8U_{\pi/8} を適用するため、操作後の2つのQubit (A,B)(\mathsf{A},\mathsf{B}) の状態は次のようになります:

    (Uπ/4Uπ/8)ϕ+=00ψπ/4ψπ/8ϕ++01ψπ/4ψ5π/8ϕ++10ψ3π/4ψπ/8ϕ++11ψ3π/4ψ5π/8ϕ+=cos(π8)00+cos(3π8)01+cos(5π8)10+cos(π8)112.\begin{aligned} \bigl(U_{\pi/4} \otimes U_{\pi/8}\bigr) \vert \phi^+\rangle & = \vert 00 \rangle \langle \psi_{\pi/4} \otimes \psi_{\pi/8}\vert \phi^+\rangle + \vert 01 \rangle \langle \psi_{\pi/4} \otimes\psi_{5\pi/8}\vert \phi^+\rangle \\ & \qquad + \vert 10 \rangle \langle \psi_{3\pi/4} \otimes \psi_{\pi/8}\vert \phi^+\rangle + \vert 11 \rangle \langle \psi_{3\pi/4} \otimes \psi_{5\pi/8}\vert \phi^+\rangle\\[2mm] & = \frac{ \cos\bigl(\frac{\pi}{8}\bigr) \vert 00\rangle + \cos\bigl(-\frac{3\pi}{8}\bigr) \vert 01\rangle + \cos\bigl(\frac{5\pi}{8}\bigr) \vert 10\rangle + \cos\bigl(\frac{\pi}{8}\bigr) \vert 11\rangle}{\sqrt{2}}. \end{aligned}

    4つの答えペア (a,b)(a,b) の確率はそれぞれ次のとおりです。

    Pr((a,b)=(0,0))=12cos2(π8)=2+28Pr((a,b)=(0,1))=12cos2(3π8)=228Pr((a,b)=(1,0))=12cos2(5π8)=228Pr((a,b)=(1,1))=12cos2(π8)=2+28\begin{aligned} \operatorname{Pr}\bigl((a,b)=(0,0)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2+\sqrt{2}}{8} \\[2mm] \operatorname{Pr}\bigl((a,b)=(0,1)\bigr) & = \frac{1}{2}\cos^2\Bigl(-\frac{3\pi}{8}\Bigr) = \frac{2-\sqrt{2}}{8}\\[2mm] \operatorname{Pr}\bigl((a,b)=(1,0)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{5\pi}{8}\Bigr) = \frac{2-\sqrt{2}}{8}\\[2mm] \operatorname{Pr}\bigl((a,b)=(1,1)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2+\sqrt{2}}{8} \end{aligned}

    再び、a=ba=baba\neq b の確率は次のとおりです。

    Pr(a=b)=2+24Pr(ab)=224\begin{aligned} \operatorname{Pr}(a = b) & = \frac{2 + \sqrt{2}}{4}\\[2mm] \operatorname{Pr}(a \neq b) & = \frac{2 - \sqrt{2}}{4} \end{aligned}

    質問ペア (1,0)(1,0) では a=ba=b のときアリスとボブが勝つため、このケースでの勝率は

    2+24.\frac{2 + \sqrt{2}}{4}.
  • ケース4:(x,y)=(1,1).(x,y) = (1,1).

    最後のケースは少し異なります。勝利条件が異なるため、そうなることは予想できるでしょう。xxyy がともに 11 のとき、アリスとボブは aabb異なるときに勝ちます。この場合、アリスは自分のQubitに Uπ/4U_{\pi/4} を、ボブは Uπ/8U_{-\pi/8} を適用するため、操作後の2つのQubit (A,B)(\mathsf{A},\mathsf{B}) の状態は次のようになります:

    (Uπ/4Uπ/8)ϕ+=00ψπ/4ψπ/8ϕ++01ψπ/4ψ3π/8ϕ++10ψ3π/4ψπ/8ϕ++11ψ3π/4ψ3π/8ϕ+=cos(3π8)00+cos(π8)01+cos(7π8)10+cos(3π8)112.\begin{aligned} \bigl(U_{\pi/4} \otimes U_{-\pi/8}\bigr) \vert \phi^+\rangle & = \vert 00 \rangle \langle \psi_{\pi/4} \otimes \psi_{-\pi/8}\vert \phi^+\rangle + \vert 01 \rangle \langle \psi_{\pi/4} \otimes\psi_{3\pi/8}\vert \phi^+\rangle \\ & \qquad + \vert 10 \rangle \langle \psi_{3\pi/4} \otimes \psi_{-\pi/8}\vert \phi^+\rangle + \vert 11 \rangle \langle \psi_{3\pi/4} \otimes \psi_{3\pi/8}\vert \phi^+\rangle\\[2mm] & = \frac{ \cos\bigl(\frac{3\pi}{8}\bigr) \vert 00\rangle + \cos\bigl(-\frac{\pi}{8}\bigr) \vert 01\rangle + \cos\bigl(\frac{7\pi}{8}\bigr) \vert 10\rangle + \cos\bigl(\frac{3\pi}{8}\bigr) \vert 11\rangle}{\sqrt{2}}. \end{aligned}

    4つの答えペア (a,b)(a,b) の確率はそれぞれ次のとおりです。

    Pr((a,b)=(0,0))=12cos2(3π8)=228Pr((a,b)=(0,1))=12cos2(π8)=2+28Pr((a,b)=(1,0))=12cos2(7π8)=2+28Pr((a,b)=(1,1))=12cos2(3π8)=228\begin{aligned} \operatorname{Pr}\bigl((a,b)=(0,0)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{3\pi}{8}\Bigr) = \frac{2-\sqrt{2}}{8} \\[2mm] \operatorname{Pr}\bigl((a,b)=(0,1)\bigr) & = \frac{1}{2}\cos^2\Bigl(-\frac{\pi}{8}\Bigr) = \frac{2+\sqrt{2}}{8}\\[2mm] \operatorname{Pr}\bigl((a,b)=(1,0)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{7\pi}{8}\Bigr) = \frac{2+\sqrt{2}}{8}\\[2mm] \operatorname{Pr}\bigl((a,b)=(1,1)\bigr) & = \frac{1}{2}\cos^2\Bigl(\frac{3\pi}{8}\Bigr) = \frac{2-\sqrt{2}}{8} \end{aligned}

    確率は他の3つのケースから実質的に入れ替わっています。 a=ba=baba\neq b の確率を足し合わせると次のようになります。

    Pr(a=b)=224Pr(ab)=2+24\begin{aligned} \operatorname{Pr}(a = b) & = \frac{2 - \sqrt{2}}{4}\\[2mm] \operatorname{Pr}(a \neq b) & = \frac{2 + \sqrt{2}}{4} \end{aligned}

    質問ペア (1,1)(1,1) では aba\neq b のときアリスとボブが勝つため、このケースでの勝率は

    2+24.\frac{2 + \sqrt{2}}{4}.

すべてのケースで同じ確率で勝ちます:

2+240.85. \frac{2 + \sqrt{2}}{4} \approx 0.85.

したがって、これが全体の勝率です。 これはこのゲームで古典的な戦略が達成できる最高値よりも大幅に優れています。古典的戦略の勝率は 3/43/4 で上限が定まっています。だからこそ、これは非常に興味深い例なのです。

これは量子的戦略における最適な勝率です。どんなエンタングル状態や測定を選んでも、これ以上は改善できません。 この事実はツィレルソンの不等式として知られており、最初にこれを証明し、またCHSH実験をゲームとして最初に記述したボリス・ツィレルソンにちなんで命名されています。

幾何学的な見方

上述の戦略を幾何学的に考えることが可能です。これにより、アリスとボブの操作に選択されたさまざまな角度の関係を理解するのに役立つかもしれません。

アリスが実質的に行うことは、質問 xx に応じて角度 α\alpha を選び、自分のQubitに UαU_{\alpha} を適用して測定することです。 同様に、ボブは yy に応じて角度 β\beta を選び、自分のQubitに UβU_{\beta} を適用して測定します。 α\alphaβ\beta の選び方は次のとおりです:

α={0x=0π/4x=1β={π/8y=0π/8y=1\begin{aligned} \alpha & = \begin{cases} 0 & x=0\\ \pi/4 & x=1 \end{cases}\\[4mm] \beta & = \begin{cases} \pi/8 & y = 0\\ -\pi/8 & y = 1 \end{cases} \end{aligned}

しかし今は α\alphaβ\beta を任意の値として考えましょう。 α\alpha を選ぶことで、アリスは実質的に次のような正規直交基底を定義します:

アリスの基底

ボブも同様ですが、角度は β\beta になります:

ボブの基底

ベクトルの色はアリスとボブの答えに対応しています。青は 00、赤は 11 を表します。

(3)(3)(4)(4) を組み合わせると、次の公式が得られます:

ψαψβϕ+=12ψαψβ;\langle \psi_{\alpha} \otimes\psi_{\beta} \vert \phi^+ \rangle = \frac{1}{\sqrt{2}} \langle \psi_{\alpha} \vert \psi_{\beta} \rangle;

これはすべての実数 α\alphaβ\beta に対して成り立ちます。

α\alphaβ\beta を変数として上記と同様の分析を行うと、次のようになります:

(UαUβ)ϕ+=00ψαψβϕ++01ψαψβ+π/2ϕ++10ψα+π/2ψβϕ++11ψα+π/2ψβ+π/2ϕ+=ψαψβ00+ψαψβ+π/201+ψα+π/2ψβ10+ψα+π/2ψβ+π/2112. \begin{aligned} & \bigl(U_{\alpha} \otimes U_{\beta}\bigr) \vert \phi^+\rangle\\[1mm] & \qquad = \vert 00 \rangle \langle \psi_{\alpha} \otimes \psi_{\beta}\vert \phi^+\rangle + \vert 01 \rangle \langle \psi_{\alpha} \otimes\psi_{\beta + \pi/2}\vert \phi^+\rangle \\ & \qquad \qquad + \vert 10 \rangle \langle \psi_{\alpha+\pi/2} \otimes \psi_{\beta}\vert \phi^+\rangle + \vert 11 \rangle \langle \psi_{\alpha+\pi/2} \otimes \psi_{\beta+\pi/2}\vert \phi^+\rangle\\[2mm] & \qquad = \frac{ \langle \psi_\alpha \vert \psi_\beta \rangle \vert 00\rangle + \langle \psi_\alpha \vert \psi_{\beta+\pi/2} \rangle \vert 01\rangle + \langle \psi_{\alpha+\pi/2} \vert \psi_\beta \rangle \vert 10\rangle + \langle \psi_{\alpha+\pi/2} \vert \psi_{\beta+\pi/2} \rangle \vert 11\rangle }{\sqrt{2}}. \end{aligned}

次の2つの公式が導かれます:

Pr(a=b)=12ψαψβ2+12ψα+π/2ψβ+π/22=cos2(αβ)Pr(ab)=12ψαψβ+π/22+12ψα+π/2ψβ2=sin2(αβ).\begin{aligned} \operatorname{Pr}(a = b) & = \frac{1}{2} \vert \langle \psi_\alpha \vert \psi_\beta \rangle \vert^2 + \frac{1}{2} \vert \langle \psi_{\alpha+\pi/2} \vert \psi_{\beta+\pi/2} \rangle \vert^2 = \cos^2(\alpha - \beta)\\[2mm] \operatorname{Pr}(a \neq b) & = \frac{1}{2} \vert \langle \psi_\alpha \vert \psi_{\beta+\pi/2} \rangle \vert^2 + \frac{1}{2} \vert \langle \psi_{\alpha+\pi/2} \vert \psi_\beta \rangle \vert^2 = \sin^2(\alpha - \beta). \end{aligned}

これらの式は、アリスとボブが選んだ基底を重ね合わせることで、上の図と結びつけることができます。

戦略の探索

(x,y)=(0,0)(x,y) = (0,0) のとき、アリスとボブは α=0\alpha = 0β=π/8\beta = \pi/8 を選び、基底を重ね合わせると次の図が得られます:

アリスとボブの基底ケース1

赤いベクトル間の角度は π/8\pi/8 で、これは2つの青いベクトル間の角度と同じです。 アリスとボブの測定結果が一致する確率はこの角度のコサインの2乗であり、

cos2(π8)=2+24,\cos^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2 + \sqrt{2}}{4},

一致しない確率はこの角度のサインの2乗です:

sin2(π8)=224.\sin^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2 - \sqrt{2}}{4}.

(x,y)=(0,1)(x,y) = (0,1) のとき、アリスとボブは α=0\alpha = 0β=π/8\beta = -\pi/8 を選び、基底を重ね合わせると次の図が得られます:

アリスとボブの基底ケース1

赤いベクトル間の角度は再び π/8\pi/8 であり、青いベクトル間の角度も同様です。 アリスとボブの測定結果が一致する確率は再びこの角度のコサインの2乗であり、

cos2(π8)=2+24,\cos^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2 + \sqrt{2}}{4},

一致しない確率はこの角度のサインの2乗です:

sin2(π8)=224.\sin^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2 - \sqrt{2}}{4}.

(x,y)=(1,0)(x,y) = (1,0) のとき、アリスとボブは α=π/4\alpha = \pi/4β=π/8\beta = \pi/8 を選び、基底を重ね合わせると次の図が得られます:

アリスとボブの基底ケース1

基底は変わりましたが角度は変わっていません。同じ色のベクトル間の角度は再び π/8\pi/8 です。 アリスとボブの測定結果が一致する確率は

cos2(π8)=2+24,\cos^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2 + \sqrt{2}}{4},

一致しない確率は

sin2(π8)=224.\sin^2\Bigl(\frac{\pi}{8}\Bigr) = \frac{2 - \sqrt{2}}{4}.

(x,y)=(1,1)(x,y) = (1,1) のとき、アリスとボブは α=π/4\alpha = \pi/4β=π/8\beta = -\pi/8 を選びます。基底を重ね合わせると、何か違うことが起きていることがわかります:

アリスとボブの基底ケース1

角度の選び方により、今回は同じ色のベクトル間の角度が π/8\pi/8 ではなく 3π/83\pi/8 になっています。 アリスとボブの測定結果が一致する確率はやはりこの角度のコサインの2乗ですが、今回の値は

cos2(3π8)=224.\cos^2\Bigl(\frac{3\pi}{8}\Bigr) = \frac{2 - \sqrt{2}}{4}.

測定結果が一致しない確率はこの角度のサインの2乗であり、この場合は次のようになります:

sin2(3π8)=2+24.\sin^2\Bigl(\frac{3\pi}{8}\Bigr) = \frac{2 + \sqrt{2}}{4}.

補足

CHSHゲームのような実験において、量子もつれが純粋に古典的な推論では説明できない統計的結果をもたらすという基本的なアイデアは、ベル状態の名前の由来となったジョン・ベルによるものです。 このような理由から、この種の実験はしばしばベルテストと呼ばれます。 またベルの定理が言及されることもあります。これはさまざまな形で定式化できますが、その本質は「量子力学はいわゆる局所隠れ変数理論と両立しない」というものです。 CHSHゲームはベルテストの特に明快でシンプルな例であり、ベルの定理の証明または実証として捉えることができます。

CHSHゲームは量子情報理論を実験的に検証するための手段を提供します。 CHSHゲームを実装した実験を行い、上述の量子もつれに基づく戦略の有効性を検証することができます。 これにより、量子もつれが実在するという高い確信が得られます。量子もつれを説明する際に用いられることのある曖昧または比喩的な表現とは異なり、CHSHゲームは量子もつれを観測するための具体的かつ検証可能な方法を提供します。 2022年のノーベル物理学賞は、この分野の研究の重要性を認めるものであり、量子もつれ光子に対するベルテストを通じて量子もつれを観測したアラン・アスペ、ジョン・クラウザー(CHSHのC)、アントン・ツァイリンガーの3名に授与されました。

Qiskitによる実装

CHSHゲームと上記で定義した量子戦略をQiskitで次のように実装できます。

まず、ゲーム自体の定義です。任意の戦略を引数として渡せるようになっています。

def chsh_game(strategy):
# This function runs the CHSH game, using the strategy (a function
# from two bits to two bits), returning 1 for a win and 0 for a loss.

# Choose x and y randomly
x, y = random.randint(0, 1), random.randint(0, 1)

# Use the strategy to determine a and b
a, b = strategy(x, y)

# Decide if the strategy wins or loses
if (a != b) == (x & y):
return 1 # Win
return 0 # Lose

次に、アリスとボブへの質問に応じたCircuitを出力する関数を作成します。簡単のためQubitにはデフォルトの名前を使い、アリスとボブの操作には組み込みの Ry(θ)R_y(\theta) ゲートを使用します。

def chsh_circuit(x, y):
# This function creates a `QuantumCircuit` implementing the quantum
# strategy described above (including the e-bit preparation).

qc = QuantumCircuit(2, 2)

# Prepare an e-bit
qc.h(0)
qc.cx(0, 1)
qc.barrier()

# Alice's actions
if x == 0:
qc.ry(0, 0)
else:
qc.ry(-pi / 2, 0)
qc.measure(0, 0)

# Bob's actions
if y == 0:
qc.ry(-pi / 4, 1)
else:
qc.ry(pi / 4, 1)
qc.measure(1, 1)

return qc

以下は、質問の組み合わせに応じた4つの可能なCircuitです。

# Draw the four possible circuits

print("(x,y) = (0,0)")
display(chsh_circuit(0, 0).draw(output="mpl"))

print("(x,y) = (0,1)")
display(chsh_circuit(0, 1).draw(output="mpl"))

print("(x,y) = (1,0)")
display(chsh_circuit(1, 0).draw(output="mpl"))

print("(x,y) = (1,1)")
display(chsh_circuit(1, 1).draw(output="mpl"))
(x,y) = (0,0)

Output of the previous code cell

(x,y) = (0,1)

Output of the previous code cell

(x,y) = (1,0)

Output of the previous code cell

(x,y) = (1,1)

Output of the previous code cell

次に、Aerシミュレーターを使用して、与えられた入力のペア (x,y)(x,y) に対してCircuitを1回実行するジョブを作成します。

def quantum_strategy(x, y):
# This function runs the appropriate quantum circuit defined above
# one time and returns the measurement results

# Setting `shots=1` to run the circuit once
result = AerSimulator().run(chsh_circuit(x, y), shots=1).result()
statistics = result.get_counts()

# Determine the output bits and return them
bits = list(statistics.keys())[0]
a, b = bits[0], bits[1]
return a, b

最後に、ゲームを1000回プレイして、この戦略の勝率を計算します。

NUM_GAMES = 1000
TOTAL_SCORE = 0

for _ in range(NUM_GAMES):
TOTAL_SCORE += chsh_game(quantum_strategy)

print("Fraction of games won:", TOTAL_SCORE / NUM_GAMES)
Fraction of games won: 0.867

古典的な戦略も定義して、その性能を確認してみましょう。 これは数ある戦略の一例に過ぎませんが、コードを変更すれば他の戦略もテストできます。なお、これは最適な古典的戦略のひとつです。

def classical_strategy(x, y):
# This function implements just one example of an optimal classical
# strategy for the CHSH game. Other classical strategies can be
# implemented by changing the bit values assigned to a and b.

# Alice's answer
if x == 0:
a = 0
elif x == 1:
a = 1

# Bob's answer
if y == 0:
b = 1
elif y == 1:
b = 0

return a, b

こちらもゲームを1000回プレイして、勝率を確認してみましょう。

NUM_GAMES = 1000
TOTAL_SCORE = 0

for _ in range(NUM_GAMES):
TOTAL_SCORE += chsh_game(classical_strategy)

print("Fraction of games won:", TOTAL_SCORE / NUM_GAMES)
Fraction of games won: 0.747

ランダム性が伴うものの、1000回の試行後に統計が大きくずれる可能性はほとんどありません。量子戦略は約85%の確率で勝利する一方、古典的な戦略では約75%を超えることができません。