#はじめに
そういえば量子コンピュータのRxゲート(を含む回転ゲート)ってよく理解してないかも。
ゆっくり見てみよう。
#Rxゲート
MDR株式会社がBlueqatというOSSのPython用量子コンピュータライブラリを公開している。チュートリアルが豊富で、その中にRxゲートの説明もあるのでそれを元にする。
上記リンク先直下の「チュートリアル」の「007 任意回転ゲート」(*1)の中に説明がある。
*1: 2020/5/24時点。最近ページを改善しているようなので、番号や名前は変わる可能性がある。
Rx,Ry,Rzゲートは「ビットを各軸周りに回転させるゲートです。」とのこと。
動きはIBM Quantum ExperienceのRxゲートのアニメーションがわかりやすい。
#行列
Rxゲートの行列は以下のようだ。
Rx(\theta) = \left(\begin{matrix}
\cos(\frac{\theta}{2}) & -i\sin(\frac{\theta}{2}) \\
-i\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2})
\end{matrix}\right)
##わかったこと
- 対称行列である。ユニタリ行列である。エルミート行列ではない。
- パラメータは一つ、$\theta$。回転角のようだ。行列内の三角関数の回転角が$\frac{\theta}{2}$になってるのはなぜだろう?
#ベクトルに行列をかける
Z基底のベクトル$\{|0\rangle, |1\rangle\}$にゲートをかけてみる。
Rx(\theta)|0\rangle = cos(\frac{\theta}{2})|0\rangle
-i\sin(\frac{\theta}{2})|1\rangle \\
Rx(\theta)|1\rangle = cos(\frac{\theta}{2})|1\rangle
-i\sin(\frac{\theta}{2})|0\rangle \\
$Rx(\theta)|1\rangle$は意図的に$|1\rangle, |0\rangle$の順に書いた。
##わかったこと
- $Rx(\theta)|1\rangle$の式の形は$Rx(\theta)|0\rangle$と同じだが、$|0\rangle, |1\rangle$が反転している。つまり以下の関係になっている。
Rx(\theta)|1\rangle (= Rx(\theta)X|0\rangle) = XRx(\theta)|0\rangle
えーっと、
$|1\rangle = X|0\rangle$なわけだが、ぞれぞれのビットに$Rx(\theta)$をかけても$Rx(\theta)|1\rangle = XRx(\theta)|0\rangle$となり、反転(X)関係は変わらない。
要するにブロッホ球自体を回転させるような感じだろうか?
- $|0\rangle$が$|0\rangle$と$|1\rangle$の重ね合わせに変わる。確率振幅は$\theta$によって変わるようだ。
- 重ね合わせ状態では元の基底と反転した基底の位相は$-i$ずれている。
位相差$-i$は、えっと...
-i = 0 + i(-1) = \cos(-\frac{\pi}{2}) + i\sin(-\frac{\pi}{2}) = e^{-\frac{\pi}{2}i}
角度で$-\frac{\pi}{2}$だ。
#具体的に計算
式だけではイメージできないので具体的な角度で計算してみる。
$\theta$ | Rxゲート | $|0\rangle$ | $|1\rangle$ |
---|---|---|---|
0 | $\left(\begin{matrix}1 & 0\\0 & 1\end{matrix}\right)$ | $|0\rangle$ | $|1\rangle$ |
$\frac{\pi}{2}$ | $\frac{1}{\sqrt{2}}\left(\begin{matrix}1 & -i\\-i & 1\end{matrix}\right)$ | $\frac{1}{\sqrt{2}}(|0\rangle - i|1\rangle)$ | $-i\frac{1}{\sqrt{2}}(|0\rangle + i|1\rangle)$ |
$\pi$ | $\left(\begin{matrix}0 & -i\\-i & 0\end{matrix}\right)$ | $-i|1\rangle$ | $-i|0\rangle$ |
$\frac{3}{2}\pi$ | $\frac{1}{\sqrt{2}}\left(\begin{matrix}-1 & -i\\-i & -1\end{matrix}\right)$ | $-\frac{1}{\sqrt{2}}(|0\rangle + i|1\rangle)$ | $-i\frac{1}{\sqrt{2}}(|0\rangle - i|1\rangle)$ |
グローバル位相を無視して考えると、ビットは角度が$\frac{\pi}{2}$変わるごとに次のように変わるようだ。
(無視して考えていいのかはよくわかっていない)
|0\rangle \rightarrow |-i\rangle \rightarrow |1\rangle \rightarrow |+i\rangle \\
|1\rangle \rightarrow |+i\rangle \rightarrow |0\rangle \rightarrow |-i\rangle \\
ここで$|-i\rangle, |+i\rangle$は次のものとする。
|-i\rangle = \frac{1}{\sqrt{2}}(|0\rangle - i|1\rangle),
|+i\rangle = \frac{1}{\sqrt{2}}(|0\rangle + i|1\rangle)
##わかったこと
- $|0\rangle, |1\rangle$に対して$\theta$を+方向に変えることは、ビットをブロッホ球のZY平面の大きさ1の円上で回転させることに相当するようだ。
これはX軸を中心に$|+\rangle$方向を上として右回りに$\theta$回転させることに相当する。 - $\theta =\pi$のとき、グローバル位相を無視すれば、ビットはブロッホ球上で丁度反転(=$\pi$回転)する。行列の三角関数の中が$\frac{\theta}{2}$になっているのは、この関係を実現するためのようだ。
#演算子
行列をゲートの演算に書き直してみる。
\begin{align}
Rx(\theta)
& = \left(\begin{matrix}
\cos(\frac{\theta}{2}) & -i\sin(\frac{\theta}{2}) \\
-i\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2})
\end{matrix}\right) \\
& = \cos(\frac{\theta}{2})\left(\begin{matrix}1 & 0\\0 & 1\end{matrix}\right) -i\sin(\frac{\theta}{2})\left(\begin{matrix}0 & 1\\1 & 0\end{matrix}\right)\\
& = \cos(\frac{\theta}{2})I -i\sin(\frac{\theta}{2})X \\
& = \cos(\frac{\theta}{2})(|0\rangle\langle0| + |1\rangle\langle1|) -i\sin(\frac{\theta}{2})(|1\rangle\langle0| + |0\rangle\langle1|)
\end{align}
##わかったこと
- 4番目の式だと、ブラケット計算で$|0\rangle$から$|0\rangle, |1\rangle$の重ね合わせになるのがわかりやすい。
- 3番目の式は「ビットを反転(Xゲート)して位相を$-i$ずらしたものとの重ね合わせにする」と読める。
- 今頃になって式の読み方がすこし分かった(笑)。
#他のゲートで実現
$Rx(\frac{\pi}{2})$がビットをX軸周りに右回りで$\frac{\pi}{2}$回転させるならば、$H$ゲート + $S^\dagger$ゲートでも同じ状態になるのでは?
\begin{align}
Rx(\frac{\pi}{2}) & = \left(\begin{matrix}
\cos(\frac{\pi}{4}) & -i\sin(\frac{\pi}{4}) \\
-i\sin(\frac{\pi}{4}) & \cos(\frac{\pi}{4})
\end{matrix}\right) \\
& = \frac{1}{\sqrt{2}}\left(\begin{matrix}1 & -i\\-i & 1\end{matrix}\right) \\
S^\dagger H & = \left(\begin{matrix}1 & 0\\0 & -i\end{matrix}\right) \frac{1}{\sqrt{2}}\left(\begin{matrix}1 & 1\\1 & -1\end{matrix}\right) \\
& = \frac{1}{\sqrt{2}}\left(\begin{matrix}1 & 1\\-i & i\end{matrix}\right)
\end{align}
##わかったこと
- $|0\rangle$は、両方とも同じ$\frac{1}{\sqrt{2}}(|0\rangle -i|1\rangle$になった。
- $|1\rangle$は形が違う…。が、$Rx(\frac{\pi}{2})$の方から$-i$をグローバル位相として外に出せば、状態は$\frac{1}{\sqrt{2}}(|0\rangle +i|1\rangle$で同じになる。(この考え方でいいんだろうか?)
- 重ね合わせ状態で$|0\rangle$に位相が付くとよくわからなくなる。
#最後に
回転ゲートの見方がちょっとわかった。
- $\theta$に$0, \frac{\pi}{2}, \pi$を入れてみてどんな行列になるのか見る。
- 基底が$\theta$によってブロッホ球のどの位置に移動するのかを見る。
- 演算子で書いてみて動きをイメージする。
- ケットで計算するときは、$|0\rangle$の位相が1になるように変換するとわかりやすいかもしれない。