LoginSignup
6
5

More than 3 years have passed since last update.

VQEのansatzに使うUnitary Coupled Cluster 法を再現する回路の例

Last updated at Posted at 2019-12-23

VQEの論文では,天下り的にansatzを作る回路が書かれていることが多いので,どうやって一から作ればいいのか考えてみる.

参考

準備

Pauli行列と単位行列

$\sigma_{x,y,z}$: Pauli行列,
$I$: 2×2の単位行列
$O$: 2×2のゼロ行列
https://ja.wikipedia.org/wiki/パウリ行列

X0, X1の行列表現

$\otimes$ : テンソル積( http://enakai00.hatenablog.com/entry/2018/06/03/165815 )
リンク先の「フラットな積」を使って計算を行う.

X_0 = \sigma_x \otimes I = \begin{pmatrix}
0 & 1 \\
1 & 0
\end{pmatrix} \otimes
\begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix}
= \begin{pmatrix}
O & I \\
I & O
\end{pmatrix}
= \begin{pmatrix}
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1 \\
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 
\end{pmatrix}
X_1 = I \otimes \sigma_x = \begin{pmatrix}
\sigma_x & O \\
O & \sigma_x 
\end{pmatrix}

$Y, Z$に関しても $\sigma_x \rightarrow \sigma_{y,z}$ に置き換えれば良い.

Coupled-Cluster

Wikipedia: https://ja.wikipedia.org/wiki/%E7%B5%90%E5%90%88%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E6%B3%95

Unitary Coupled-Cluster (UCC) 法

Variational Quantum Eigensolver (VQE) [参考: https://qiita.com/YuichiroMinato/items/62444351b712743d83b7] の計算を行う際に,初期状態 (ansatz) を準備する.
その一例としてUCC ansatzが用いられている.

簡単な例として$ T(\theta) = \theta a_0^{\dagger}a_1 $を考える.
UCC ansatzの定義に従うと,
$$\begin{align*}
U(\theta) &= \exp[ \theta(a_0^{\dagger}a_1 - a_1^{\dagger}a_0) ] \;. \\
&= \exp[ i(\theta/2) (X_0Y_1 - X_1Y_0) ]
\end{align*}
$$
とかける.ここでジョルダンーウィグナー ( Jordan-Wigner ) 変換を用いた.

U(θ)を回路で

$\exp[i(θ/2)Z_0Z_1]$を回路で表してから,それを使って$\exp[ i(\theta/2) (X_0Y_1 - X_1Y_0) ]$を示す.

exp[i(θ/2)Z0Z1]

回路は以下のようにかける
2q48g.png
これは回路を行列表現して書き下すと,$\exp[i(θ/2)Z_0Z_1]$と一致していることがわかる.

補足

回路の演算子は以下の行列でかける.回路は以下の行列の掛け算である。

Controlled NOT gate

\rm{C}_{\rm{NOT}} = \begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & 1 & 0
\end{pmatrix}

$R_z$のgate

I \otimes R_z(\theta) = \begin{pmatrix}
e^{-i\theta/2} & 0 & 0 & 0 \\
0 & e^{i\theta/2} & 0 & 0 \\
0 & 0 & e^{-i\theta/2} & 0 \\
0 & 0 & 0 & e^{i\theta/2}
\end{pmatrix}

ここで1-qubit系の$R_z$はここを参照( https://qiita.com/skiing_LAL10/items/a9ededf64a3991bee191 )

exp[ i(θ/2) (X0Y1 - X1Y0) ]

次に,$\exp[ i(\theta/2) (X_0Y_1 - X_1Y_0) ]$の変換を回路で実現したい.
回転行列を使うと,$R_y(-\pi/2)$はX軸回転からZ軸回転に変更,$R_x(\pi/2)$はY軸回転からZ軸回転に変更できる.

つまり$\exp[ i(θ/2) (X_0Y_1 ) ]$は,上記の$\exp[i(θ/2)Z_0Z_1]$の回路に対し,
1-qubit目に$R_y(-\pi/2)$と$R_y(\pi/2)$を挟み,
2-qubit目に$R_x(\pi/2)$と$R_y(-\pi/2)$を挟めば良い.

ScreenShot 2019-12-23 16.00.00.png

同様に,$\exp[ -i(θ/2) (X_1Y_0 ) ]$も作れる.

結局,$\exp[ i(\theta/2) (X_0Y_1 - X_1Y_0) ]$はScreenShot 2019-12-23 16.02.47.png
とかける.

別の表記

$\exp[ i(\theta/2) (X_0Y_1 - X_1Y_0) ]$の演算子は結局,$|00\rangle$から$\cos(\theta/2)|00\rangle + \sin(\theta/2)|11>$を作る演算子である.つまり

ScreenShot 2019-12-23 16.10.58.png

で十分.

6
5
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
6
5