Lab 9 Quantum Simulation as a Search Algorithm を解いてみたい。
1. Build a quantum circuit for a given Hamiltonian.
ステップA:
単純計算で
$$
\begin{align*}
e^{-i\theta|0\rangle\langle0|} &= I + (e^{-i \theta} - 1) |0\rangle\langle0| \\
&= \begin{bmatrix}
e^{-i \theta} & 0 \\
0 & 1
\end{bmatrix} = e^{-i \theta} \begin{bmatrix}
1 & 0 \\
0 & e^{i \theta}
\end{bmatrix} = e^{i \theta} P(\theta)
\end{align*}
$$
となるので、
$$
\begin{align*}
CX_{0,1} P(\theta)_1 CX_{0,1} (|\psi\rangle \otimes |0\rangle) = (P(\theta) |\psi\rangle) \otimes |0\rangle
\end{align*}
$$
を踏まえると回路の実装の意味がわかる。$\theta = \frac{\pi}{9}$ とした時がゲート H1
の実装である。
ステップB:
単純計算で
$$
\begin{align*}
e^{-i\theta|+\rangle\langle+|} &= I + \frac{1}{2} (e^{-i \theta} - 1) \begin{bmatrix}
1 & 1 \\
1 & 1
\end{bmatrix} \\
&= e^{-i \frac{\theta}{2}} \begin{bmatrix}
\cos \frac{\theta}{2} & -i \sin \frac{\theta}{2} \\
-i \sin \frac{\theta}{2} & \cos \frac{\theta}{2}
\end{bmatrix} = e^{-i \frac{\theta}{2}} R_x(\theta)
\end{align*}
$$
であるので、
h2 = QuantumCircuit(2, name='H2') h2.rx(np.pi/9, 0) H2 = h2.to_gate() h2.draw()
でゲート H2
が実装できる。行列の指数関数の計算が多少面倒くさいが、適当に scipy.linalg.expm
で検証しながら計算すれば、後はダイレクトに実装できる形になっている。
ハミルトニアンを $H = \ket{0}\bra{0} + \ket{+}\bra{+}$ とする時、ユニタリプロパゲータ $U(t) = e^{-i t H}$ の離散的なシミュレーションができる準備ができた。
実際には $\ket{0}\bra{0}$ と $\ket{+}\bra{+}$ は非可換なので上記のゲート H1
と H2
の合成でハミルトニアンの時間発展は記述てきない。一方、Trotter 展開を使うと $\left( e^{-itA/n}e^{-itB/n} \right)^n \approx e^{-it (A+B)}$ という近似ができるので、ちょっとずつ時間発展させることで近似ができる。
$e^{-i t (\ket{0}\bra{0} + \ket{+}\bra{+})} \ket{+}$ は概ね $t \approx 0.7 \pi$ で$\ket{1}$ の確率振幅がほぼ 0 になる。つまり、$e^{-0.7 \pi i H} \ket{+} \approx \ket{0}$ となる。シミュレーションでは 6 回目の時間発展で概ね $\ket{0}$ になっているが、$6/0.7 = 8.57 \approx 9$ を考慮すると、Trotter 展開より
$$
\begin{align*}
(e^{-i \frac{\pi}{9} \ket{0}\bra{0}} e^{-i \frac{\pi}{9} \ket{+}\bra{+}})^6 \approx (e^{-i \frac{0.7}{6} \pi \ket{0}\bra{0}} e^{-i \frac{0.7}{6} \pi \ket{+}\bra{+}})^6 \approx e^{-0.7 \pi i (\ket{0}\bra{0} + \ket{+}\bra{+})}
\end{align*}
$$
なので概ね納得いく結果ということになる。そういうわけで、可視化においては、ブロッホ球の上を $\ket{+}$ から $\ket{0}$ に向かう形で時間発展がシミュレーションされる。