👻

ブロッホ球について

2025/01/31に公開

ブロッホ球についてのレイサマリーです。
ディープラーニングの学習の時に、バックプロパゲーションの理解が初学者の関門になる気がするのですが、量子コンピュータの理解に置いてはこのブロッホ球が理解できるかどうかが初期のハードルになるのではないかと、個人的には思っています。(私も思いっきり初学者ですが。。)

What(どの様なものなのか)

  • 量子ビット(二準位系の量子状態)の状態を以下の様な球面上の点の位置に置き換えたモデル
  • 量子ビットの状態は \ket{\psi} = \alpha \ket{0} + \beta \ket{1} という式(波動関数)で表すことが出来る (| \alpha |^2 + | \beta |^2 = 1\alpha\beta は複素数)
  • 上記の波動関数は、式変形により \ket{\psi} = e^{i\delta}(\cos \frac{\theta}{2}\ket{0} + \sin\frac{\theta}{2} e^{i\phi}\ket{1}) という形に置き換えることが可能であり、これは先ほどの球体の図の表面上の点の位置を表す
  • つまり、波動関数というイメージ化が難しい概念を、極座標表現の球面上の点の位置という直感的にも理解しやすい形で表すことが出来る
  • なぜこのような表現が成立するかについては、量子ビットの状態は複素数を用いて記述されるが、式変形により2つのパラメータ((\theta) と (\phi))で完全に表現することができるためである
  • 例えば、Z軸方向の値は\thetaに応じて変わり、それぞれの状態(\ket{0}\ket{1})の観測確率を表す(北極の時\ket{\psi} = \ket{0}で状態0が観測される可能性が100%、南極の時\ket{\psi} = \ket{1}で状態0が観測される可能性が100%になる。XY平面上にあるときは、両方の確率が半々)
  • XY平面(複素数平面)上の位置は\phiに応じて変わり、位相(物理的な状態)の変化をあらわすが、Z軸方向の値については一定なので、位相の変化は観測確率には影響しない

Why(何が嬉しいのか)

  • 量子ビットの状態(波動関数)を幾何的なモデルに置き換えることで、物理的な状態変化(波動関数の変化)をブロッホ球面上の幾何的な変化(点の位置の操作)に置き換えることができる
  • ブロッホ球上の位置をある一定のルールで変化させる(x,y,zの各軸の回転など)演算が定められていて、それらを量子ゲートと呼び、古典ゲートでいうNANDなどの論理ゲートに対応する概念である
  • 量子ゲートは量子ビットの状態を操作するものであり、量子ゲートの組み合わせにより特定の目的に応じた量子回路を形成する(量子回路のパターンを量子アルゴリズムという)
  • 量子ゲートは極座標上の点の移動を定めた式で、実体は回転行列である
  • つまり、ブロッホ球の考えを導入することで、量子ゲートを定義することができるのである

How(どのように導出するか)

  • 量子ビットの波動関数の式をブロッホ球の式に変換するまでの過程を記す

  • 量子ビットの波動関数(1つの量子ビットの状態を表す)

    • \ket{\psi} = \alpha \ket{0} + \beta \ket{1} …(1)
      • | \alpha |^2 + | \beta |^2 = 1 …(2)
      • \alpha\beta は複素数
      • \alpha\beta は確率振幅を表し、その絶対値の2乗は状態0および状態1の確率を意味する
  • ブロッホ球の式

    • \ket{\psi} = e^{i\delta}(\cos \frac{\theta}{2}\ket{0} + \sin\frac{\theta}{2} e^{i\phi}\ket{1}) …(3)
  • 式(2)の各複素数(\alpha, \beta)を極座表で表すと

    • \alpha = r_\alpha e^{i\theta_\alpha}, \beta = r_\beta e^{i\theta_\beta} (| \alpha | = r_\alpha, | \beta | = r_\beta )となる …(4)
  • よって以下が成立する

    • \ket{\psi} = r_\alpha e^{i\theta_\alpha} \ket{0} + r_\beta e^{i\theta_\beta} \ket{1} …(1)'
    • r_\alpha^2 + r_\beta^2 = 1 …(2)'
  • (1)'を変形(e^{i\theta_\alpha}を外に出す)して

    • \ket{\psi} = e^{i\theta_\alpha}(r_\alpha \ket{0} + r_\beta e^{i(\theta_\beta-\theta_\alpha)} \ket{1}) …(1)''
    • \theta_\beta-\theta_\alpha = \phi ,\theta_\alpha = \delta として
    • \ket{\psi} = e^{i\delta}(r_\alpha \ket{0} + r_\beta e^{i\phi} \ket{1}) …(1)'''
    • (2)' と \sin^2\theta + \cos^2\theta = 1 の関係より r_\alpha = \cos\theta , r_\beta = \sin\theta と置き替えても規格化条件は満たせそう。よって
    • \ket{\psi} = e^{i\delta}(\cos\theta \ket{0} + \sin\theta e^{i\phi} \ket{1}) …(1)''''
    • これは、\ket{\psi}は以下の様な極座標の球面上の点として表せることを意味する
    • ただし、\theta = \piの時に、図上では南極の位置に来て欲しい(\ket{\psi}=\ket{1}になって欲しい)ため、\theta → \frac{\theta}{2}と正規化する。
    • こうすることで、\theta = \piの時に、\cos \frac{\theta}{2} = \cos \frac{\pi}{2} = 0, \sin \frac{\theta}{2} = \sin \frac{\pi}{2} = 1 であることから \ket{\psi}=e^{i\delta}e^{i\phi}\ket{1}=\ket{1}となる (波動関数全体に位相をかけたものは、物理的には同意の状態を示すため)
    • \theta → \frac{\theta}{2}とすることについては、(2)'式(r_\alpha^2 + r_\beta^2 = 1)を満たすために r_\alpha = \cos\theta , r_\beta = \sin\theta と置き換えたところ(\sin^2\theta + \cos^2\theta = 1なので)を、r_\alpha = \cos\frac{\theta}{2}, r_\beta = \sin\frac{\theta}{2} に変更しただけなので、物理的な意味としては問題無い(\sin^2\frac{\theta}{2} + \cos^2\frac{\theta}{2} = 1でも条件を満たすため)

Appendix

  • ブロッホ球を描画するpythonコード
# 必要なモジュールをインポート  
from qiskit import QuantumCircuit  
from qiskit.visualization import plot_bloch_multivector  
from qiskit.quantum_info import Statevector  
import matplotlib.pyplot as plt  
import numpy as np
  
# 量子回路の作成(1量子ビット)  
qc = QuantumCircuit(1)  
  
# パラメータを設定(
theta = np.pi / 3  
phi = np.pi / 4  

# U3ゲートを使用して任意の状態を設定  
qc.u(theta, phi, 0, 0)  
  
# 状態ベクトルを取得  
state = Statevector.from_instruction(qc)  
  
# ブロッホ球を描画  
plot_bloch_multivector(state)  
  
# プロットを表示  
plt.show()  


こんな感じで描けます(360度自由に回せます)

参考文献

https://eman-physics.net/quantum/bloch_sphere.html

ヘッドウォータース

Discussion