3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

量子コンピュータ:任意方向の回転ゲートの公式導出

Last updated at Posted at 2022-08-01

はじめに

みなさん、量子コンピュータの勉強は捗ってますか?
今回は、「数式なしも分かる量子コンピュータ!」の真反対な内容で、ゴリゴリ数式を使って量子コンピュータの入門書に出てくる公式を証明しようという試みです。

私は大学時代に物理を学んでいたのですが、量子コンピュータの基礎部分に出てくる公式やスピンとか難しくない!?って思います。

情報系や他の分野の方々からは、どう見えてるのでしょうか...?
(量子コンピュータ入門のために量子力学から真面目に勉強する猛者なんてそうそういないですよね...?)

本投稿では、任意方向の回転ゲートの公式を導出したいと思います。

それではいってみましょう!

表記のルール

と、そのまえに、最初に表記のルールをいくつか決めておきます。

  • 角括弧の行列と太字は3次元ベクトル空間上の行列またはベクトルを表します。
    例)
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
\boldsymbol{n},
\boldsymbol{R},
\begin{bmatrix}
1 &          0 &           0 \\
0 & \cos\theta & -\sin\theta \\
0 & \sin\theta &  \cos\theta
\end{bmatrix},
\begin{bmatrix}
r_x \\
r_y \\
r_z
\end{bmatrix},
\left[ n_x, n_y, n_z \right]^T
  • 丸括弧の行列とハット付文字は演算子を表していて、スピンの各成分に作用します。
    例)
\hat R,
\begin{pmatrix}
0 & -i \\
i & 0
\end{pmatrix},
\begin{pmatrix}
\psi_1  \\
\psi_2
\end{pmatrix},
\left(\psi_1, \psi_2 \right)^T
  • ブロッホ球による波動関数の表現は定義より以下のようになります。
\ket{\psi} 
= e^{i\Phi} \left(\cos{\frac{\theta}{2}}\ket{0} + e^{i\phi} \sin{\frac{\theta}{2}}\ket{1} \right)
= e^{i\Phi} \begin{pmatrix}
\cos{\frac{\theta}{2}} \\
e^{i\phi} \sin{\frac{\theta}{2}}
\end{pmatrix}
  • 行列の指数関数は以下を意味しています(参考)。
e^{X} = \sum_{n=0}^{\infty} \frac{1}{k!} X^k
  • $[A, B]$はAとBの交換関係を意味します。
[A, B] = AB - BA

任意方向の回転ゲートの公式

まずは導出したいゴールを明確にしましょう。ブロッホ球上で単位ベクトル$\boldsymbol{n}$を軸として、$\theta$だけ回転させる操作$\hat{R}_\boldsymbol{n}(\theta)$は以下のようになります。

\hat{R}_\boldsymbol{n}(\theta) = \exp\left(-\frac{1}{2}i \theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma}\right) \tag{1}

ここで、$\boldsymbol{\hat\sigma}=[\hat\sigma_1, \hat\sigma_2, \hat\sigma_3]^T$はパウリ行列(パウリゲート)です。なお、各パウリ行列は、

\hat\sigma_1 = 
\begin{pmatrix}
0 & 1 \\
1 & 0
\end{pmatrix},

\hat\sigma_2 = 
\begin{pmatrix}
0 & -i \\
i & 0
\end{pmatrix},

\hat\sigma_3 = 
\begin{pmatrix}
1 & 0 \\
0 & -1
\end{pmatrix}

\tag{2}

です。ここで、注意すべき点として、ブロッホ球がある3次元空間とベクトルや行列とスピンの成分を表すベクトルや行列は別ものです。

任意方向の回転ゲート$\hat{R}_\boldsymbol{n}(\theta)$によるブロッホ球上の変換 $\boldsymbol{r}\mapsto\boldsymbol{r'}$ は以下の図のようなイメージになります。

bloch.drawio.png

入門書などでは式(1)をもとに他のx軸回転ゲートやz軸回転ゲートを導出しています。
しかし、式(1)がどこから来たかまで説明している本はなかなか見かけません。

量子力学を学んだことがある人なら、なんとなくスピン演算子(パウリ行列に$\hbar/2$を掛けたもの)をイメージし、式(1)にも見覚えがあるかもしれませんが、そうでない方にとってはかなり唐突に感じると思います。

式(1)を導出するためにはいくつか手順を踏みますが、主なポイントは以下の3つです。

  • 3次元ベクトル空間における微小の回転操作を考える
  • 波動関数とブロッホ球による表現を数式的に紐づける
  • 微小の回転操作から通常の回転操作を求める

まずは3次元のベクトル空間について

まずは、波動関数のことは忘れて、純粋に3次元ベクトル空間における回転操作を考えます。
3次元ベクトル空間における回転行列は以下の式で表されます。

\boldsymbol{R}_x(\theta) = 
\begin{bmatrix}
1 &          0 &           0 \\
0 & \cos\theta & -\sin\theta \\
0 & \sin\theta &  \cos\theta
\end{bmatrix},

\boldsymbol{R}_y(\theta) = 
\begin{bmatrix}
\cos\theta  &  0 & \sin\theta \\
         0  &  1 &          0 \\
-\sin\theta &  0 & \cos\theta
\end{bmatrix},

\boldsymbol{R}_z(\theta) = 
\begin{bmatrix}
\cos\theta & -\sin\theta & 0 \\
\sin\theta &  \cos\theta & 0 \\
         0 &          0  & 1 
\end{bmatrix}

\tag{3}

ここで、$\boldsymbol{R}_x, \boldsymbol{R}_y, \boldsymbol{R}_z$はそれぞれ、x軸, y軸, z軸まわりの回転を表しています。
回転角が十分小さい場合、$\sin(\delta\theta) \simeq \delta\theta, \cos(\delta\theta) \simeq 1$より式(3)は、

\boldsymbol{R}_x(\delta\theta) = 
\begin{bmatrix}
1 &  0 & 0 \\
0 & 1 & -\delta\theta \\
0 & \delta\theta & 1
\end{bmatrix},

\boldsymbol{R}_y(\delta\theta) = 
\begin{bmatrix}
1  & 0 & \delta\theta \\
0  & 1 & 0 \\
-\delta\theta & 0 & 1
\end{bmatrix},

\boldsymbol{R}_z(\delta\theta) = 
\begin{bmatrix}
1 & -\delta\theta & 0 \\
\delta\theta & 1 & 0 \\
0 & 0  & 1 
\end{bmatrix}

\tag{4}

となります。これは無限小回転と呼ばれています(そのまんま)。

一般的に回転操作というのは非可換です。つまり、x軸周りに回転させた後、y軸周りに回転させるのと、y軸周りに回転させた後、x軸周りに回転させるのとはでは別の操作となってしまいます(試しに、x軸上の点がどう動くかを考えてみるとわかると思います)。

しかし、$\delta\theta$が十分小さい場合においては、回転操作は可換になります。
これは、とってもうれしい性質です。ここでは、証明は割愛しますが、気になる方は式(4)で$\boldsymbol{R}_x$と$\boldsymbol{R}_y$の交換関係

$$[\boldsymbol{R}_x, \boldsymbol{R}_y] = \boldsymbol{R}_x \boldsymbol{R}_y - \boldsymbol{R}_y \boldsymbol{R}_x$$

を計算してみてください。ただし、$\delta\theta$の2次の項は無視します。

回転操作が可換といことは、どの軸から回転させても同じになるということです。
毎回、軸ごとの回転行列を掛けるのは大変なので、式(4)を1つの行列にまとめてしまいます。すなわち、

\boldsymbol{R}(\delta\theta_x, \delta\theta_y, \delta\theta_z) 
= \boldsymbol{R}_x(\delta\theta_x)\boldsymbol{R}_y(\delta\theta_y)\boldsymbol{R}_z(\delta\theta_z)
\simeq \begin{bmatrix}
1 & -\delta\theta_z & \delta\theta_y \\
\delta\theta_z & 1 & -\delta\theta_x \\
-\delta\theta_y & \delta\theta_x & 1
\end{bmatrix}

\tag{5}

$\delta\theta$の2次の項は無視しています。

ところで、$\delta\theta_x, \delta\theta_y, \delta\theta_z$ってなんだかベクトルの要素っぽくって、$\boldsymbol{\delta\theta} = [\delta\theta_x, \delta\theta_y, \delta\theta_z]^T$とおきたくなりますよね!?(圧)
そこで、このようにおいた$\boldsymbol{\delta\theta}$の性質を考えてみます。

式(5)より任意のベクトル$\boldsymbol{r} \mapsto \boldsymbol{r'}$の変換は、

\boldsymbol{r'} = \boldsymbol{R}(\boldsymbol{\delta\theta}) \boldsymbol{r}
= \begin{bmatrix}
1 & -\delta\theta_z & \delta\theta_y \\
\delta\theta_z & 1 & -\delta\theta_x \\
-\delta\theta_y & \delta\theta_x & 1
\end{bmatrix}
\begin{bmatrix}
x \\
y \\
z
\end{bmatrix}
= \begin{bmatrix}
x + \delta\theta_y z -  \delta\theta_z y \\
y + \delta\theta_z x -  \delta\theta_x z \\
z + \delta\theta_x y -  \delta\theta_y x
\end{bmatrix}

この形どこかで見覚えありますね。そう、外積です!(圧)
そこで、試しに上記を以下のように分解します。

\begin{bmatrix}
x + \delta\theta_y z -  \delta\theta_z y \\
y + \delta\theta_z x -  \delta\theta_x z \\
z + \delta\theta_x y -  \delta\theta_y x
\end{bmatrix}
= \begin{bmatrix}
x \\
y \\
z
\end{bmatrix}
+ \begin{bmatrix}
\delta\theta_y z -  \delta\theta_z y \\
\delta\theta_z x -  \delta\theta_x z \\
\delta\theta_x y -  \delta\theta_y x
\end{bmatrix}
= \boldsymbol{r} + \boldsymbol{\delta\theta} \times \boldsymbol{r}
\therefore \boldsymbol{r'} - \boldsymbol{r} = \boldsymbol{\delta\theta} \times \boldsymbol{r}

これは、直感的にも理解しやすいのではないでしょうか?
つまり、微小角だけ回転させる操作は、$\boldsymbol{\delta\theta}$に対し垂直方向に移動させる操作になるのです。

図にすると以下のようにイメージです。

rotation.drawio.png

さらに、回転する弧の長さは、

| \vec{RR'} | = | \boldsymbol{\delta\theta} \times \vec{OR} | = |\vec{OR}| \delta \theta

ここで、$\delta \theta := \sqrt (\delta\theta_x^2 + \delta\theta_y^2 + \delta\theta_z^2)$としました。これは、式(5)によって中心角を$\delta \theta$だけ回転させていることがわかります。つまり、$\boldsymbol{R}(\boldsymbol{\delta\theta})$は、

\boldsymbol{\delta\theta} = \delta \theta \boldsymbol{n} \tag{6}

とおくと、$\boldsymbol{n}$を軸として$\delta\theta$だけ回転させる変換といえます。
なんだか、まどろこしい説明になってしまった気もしますが、xyz軸それぞれの微小回転を合成した結果が、あるベクトルを軸に微小回転させたのと同じ結果になるといえます。

これは、まさに式(1)で考えていた変換の微小版になります!

波動関数とブロッホ球(3次元ベクトル空間)を紐づけよう!

回転操作の行列を得ることはできましたが、これを波動関数と紐づけるには工夫が必要です。
なぜこれが難しいかというと、波動関数にブロッホ球上の点が出てこないためです。

そこで、密度行列を導入しブロッホ球上の座標が現れるようにします。

密度行列$\hat\rho$は、$\hat\rho = \ket{\psi}\bra{\psi}$で定義されるため、波動関数を代入すると、

\begin{align}

\hat\rho = \ket{\psi}\bra{\psi}
&= e^{-i\phi} \begin{pmatrix}
\cos{\frac{\theta}{2}} \\
e^{i\phi} \sin{\frac{\theta}{2}}
\end{pmatrix}
e^{-i\phi} \begin{pmatrix}
\cos{\frac{\theta}{2}} & e^{-i\phi} \sin{\frac{\theta}{2}}
\end{pmatrix} \\
&= \frac{1}{2} \begin{pmatrix}
1 + \cos{\theta} & \sin{\theta}\cos{\phi} - i\sin{\theta}\sin{\phi} \\
\sin{\theta}\cos{\phi} + i\sin{\theta}\sin{\phi} & 1 - \cos{\theta}
\end{pmatrix} \\
&= \frac{1}{2} \left\{ \hat{I} + (\sin{\theta}\cos{\phi})\hat\sigma_1  + (\sin{\theta}\sin{\phi})\hat\sigma_2 + (\cos\theta) \hat\sigma_3 \right\} \\
&= \frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} \right)

\tag{7}
\end{align}

最後の変形にはブロッホ球上の点が$\boldsymbol{r} = [\sin{\theta}\cos{\phi}, \sin{\theta}\sin{\phi}, \cos\theta]^T$と表されることを利用しました。$\boldsymbol{r}$が出てきてくれたおかげで、前章でやった微小回転の操作を波動関数に反映させることができそうです!

密度行列を無限小回転

さて、計算の準備は整ったので無限小回転を表すユニタリ変換を求めていきましょう。

\hat\rho(\boldsymbol{r'}) 
= \hat\rho\left(\boldsymbol{R}(\boldsymbol{\delta\theta}) \boldsymbol{r}\right) 
= \frac{1}{2} \left( \hat{I} + \boldsymbol{R}(\boldsymbol{\delta\theta}) \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} \right) \tag{8}

式(8)を計算することで、以下を得ます。

\hat\rho(\boldsymbol{r'}) 
= \left( \hat I - \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right) \hat\rho(\boldsymbol{r}) \left( \hat I + \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right)
\tag{9}

おそらく、この計算が今回最も難しい部分になるかと思います。計算がそこそこ長いので、興味のある方は展開して見てみてください。

式(9)の計算

計算のためにいくつか公式を導入します。

\hat{a} + [\hat{a}, \delta \hat q] = (1 - \delta \hat q) \hat{a} (1 + \delta \hat q)
\tag{9.1}

$\hat a$は任意の演算子、$\delta \hat q$は微小量の演算子を表しています。実際に、右辺を展開し2次の項を無視することで、同じ結果になることが分かると思います。

[\hat \sigma_i, \hat \sigma_j] = 2i\sum_k \epsilon_{ijk} \hat \sigma_k
\tag{9.2}

パウリ行列の交換関係ですね。$\epsilon_{ijk}$は完全反対称テンソルと呼ばれるもので、$i, j, k$の順番によって$0, \pm1$のいずれかを取ります。これは、行列式の計算や外積で現れる符号の変化をうまく表現していて重宝します。

あと、いくつかの交換関係の公式を使います。

k[\hat A, \hat B] = [k \hat A, \hat B] = [\hat A, k \hat B]
\tag{9.3}
[\hat A, \hat B + \hat C] = [\hat A, \hat B] + [\hat A, \hat C] 
\tag{9.4}

特に、$\hat A$と$\hat C$が可換な場合は、

[\hat A, \hat B + \hat C] = [\hat A, \hat B]
\tag{9.5}

さらに、計算をしやすくするために、式(5)を以下のように変形します。

R_{ij} = \delta_{ij} - \sum_k \epsilon_{ijk} \delta \theta_k
\tag{9.6}

$\delta_{ij}$はクロネッカーのデルタです。

さて、ようやく準備が整ったので式(9)の計算をしていきましょう。

\begin{align}

\hat\rho(\boldsymbol{r'})  
&= \frac{1}{2} \left( \hat{I} + \boldsymbol{R}(\boldsymbol{\delta\theta}) \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} \right) \\

&= \frac{1}{2} \left( \hat{I} + \sum_{i} \sum_{j} R_{ij} r_j \hat\sigma_i \right) \\

&= \frac{1}{2} \left( \hat{I} + \sum_{i} \sum_{j} \left( \delta_{ij} - \sum_k \epsilon_{ijk} \delta \theta_k \right) r_j \hat\sigma_i \right) (\because (9.6)) \\

&= \frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} - \sum_{j} \sum_k r_j \delta \theta_k \sum_{i} \epsilon_{jki} \hat\sigma_i \right) (\because  \epsilon_{ijk} = -\epsilon_{jki} ) \\

&= \frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} + \frac{1}{2}i\sum_{j} \sum_k r_j \delta \theta_k [\hat\sigma_j, \hat\sigma_k] \right) (\because  (9.2)) \\

&= \frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} + \frac{1}{2}i\sum_{j} \sum_k [r_j \hat\sigma_j, \delta \theta_k \hat\sigma_k] \right) (\because  (9.3)) \\

&= \frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} + \frac{1}{2}i \left [\sum_{j} r_j \hat\sigma_j, \sum_k \delta \theta_k \hat\sigma_k \right] \right) (\because  (9.4)) \\

&= \frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} + \frac{1}{2}i \left [\boldsymbol{r} \cdot \boldsymbol{\hat \sigma}, \boldsymbol{\delta \theta} \cdot \boldsymbol{\hat\sigma} \right] \right) \\

&= \frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} \right) +  \left [\frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} \right), \frac{1}{2}i \boldsymbol{\delta \theta} \cdot \boldsymbol{\hat\sigma} \right] (\because (9.5)) \\

&= \left( \hat I - \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right) \frac{1}{2} \left( \hat{I} + \boldsymbol{r} \cdot \boldsymbol{\hat\sigma} \right) \left( \hat I + \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right) (\because (6)) \\

&= \left( \hat I - \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right) \hat\rho(\boldsymbol{r}) \left( \hat I + \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right)

\end{align}

無事、式(9)の形が出ましたね!
できるだけ、行間を飛ばさないように書いたためやや冗長ですが、式変形の参考になれば幸いです。

ここで、密度行列の定義である$\hat\rho = \ket{\psi}\bra{\psi}$と

\left( \hat I - \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right)^{\dagger} = \left( \hat I + \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right)

であることに注意すると、$\boldsymbol{n}$を軸とした無限小回転のユニタリ変換$\hat R_{\boldsymbol{n}}(\delta\theta)$は、

\hat R_{\boldsymbol{n}}(\delta\theta)
=  \hat I - \frac{1}{2}i\delta\theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} 
\tag{10}

となります。言い換えれば、式(10)は微小角の回転ゲートともいえます。
ここまでの計算はすべてこれを求めるためだったのです!

すでにチェックメイトだ!

微小角の回転ゲートしか求まってないので、まだ道のりが長そうに見えますがご安心ください。物理において微小変化時のふるまいが求まるのは、その系の運動が求まるのとほぼ同義なのです!(言い過ぎ?)

それでは、最後の締めといきましょう。
まず、回転操作の要請より以下が満たされるはずです。

\hat R_{\boldsymbol{n}}(\theta + \delta\theta) = \hat R_{\boldsymbol{n}}(\theta)\hat R_{\boldsymbol{n}}(\delta\theta)
\tag{11}
\hat R_{\boldsymbol{n}}(0) = \hat I
\tag{12}

式(11)は回転操作は1度に回しても2度に分けて回しても同じ結果になるべきなので、当然の要請といえます。式(12)も回さない場合は恒等演算子となるのは当然といえますね。

ここで、微分の定義より、

\begin{align}

\frac{d\hat R_{\boldsymbol{n}}(\theta)}{d\theta}
&= \lim_{\delta\theta \to 0} \frac{\hat R_{\boldsymbol{n}}(\theta + \delta\theta) - \hat R_{\boldsymbol{n}}(\theta)}{\delta\theta} \\

&= \hat R_{\boldsymbol{n}}(\theta)\lim_{\delta\theta \to 0} \frac{\hat R_{\boldsymbol{n}}(\delta\theta) - \hat I}{\delta\theta} (\because (11)) \\

&= \hat R_{\boldsymbol{n}}(\theta)\left( - \frac{1}{2}i \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right) (\because (10)) \\

\to \hat R_{\boldsymbol{n}}(\theta)
&= \exp\left(-\frac{1}{2}i \theta \boldsymbol{n} \cdot \boldsymbol{\hat\sigma} \right)

\end{align}

出ました!求めたかった公式です!
最後の変形については、よく見る微分方程式の行列版ですね。

まとめ

今回は以下の3つのステップで、任意方向の回転ゲートの公式を導出しました。

  • 3次元ベクトル空間における微小の回転操作を考える
  • 波動関数とブロッホ球による表現を数式的に紐づける
  • 微小の回転操作から通常の回転操作を求める

基本的に用いた仮定は回転操作に対する要請くらいで、あとはブロッホ球の定義から淡々と計算できるようにしたつもりです。
入門書の公式を深堀したい人の参考になれば幸いです!

参考

以下の文献を参考にさせていただきました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?