Tech Blog

勉強したことをまとめます。

振幅エンコーディング

はじめに

 振幅エンコーディングの手順を示す。規格化されたベクトル{\bf v}=(v_0,\cdots,v_{N-1})の各成分を量子状態の振幅に埋め込み

{\displaystyle
\begin{equation}
\sum_{i=0}^{N-1}v_i|i\rangle
\end{equation}
}


を作ることが目的である。

1. 初期状態

 最初に次の初期状態を用意する。

{\displaystyle
\begin{equation}
\dfrac{1}{\sqrt{N}}\sum_{i=0}^{N-1}|i\rangle_A\;|0\rangle_B\;|0\rangle_C
\end{equation}
}


ここで、ABをつけたケットベクトルはn個の量子ビットから構成されるレジスタCをつけたケットベクトルはm個の量子ビットから構成されるレジスタである。また、N=2^nである。AレジスタにはQRAMから取り出すデータのアドレスが格納されている。

2. QRAM

 上の初期状態を用いてQRAMからデータ{\bf v}=(v_0,\cdots,v_{N-1})を取り出す。{\bf v}は規格化されているとする。データの取り出しは基底エンコーディングにより行われBレジスタに格納される。

{\displaystyle
\begin{equation}
\dfrac{1}{\sqrt{N}}\sum_{i=0}^{N-1}|i\rangle_A\;|b(v_i)\rangle_B\;|0\rangle_C
\end{equation}
}


ここで、b(x)xを2進数表記した0,1の並びである。従って、その精度はnビットで表現できる範囲のものであることに注意する。

3. 算術演算

 Bレジスタに入力した値v_iを引数とする関数\;f(v_i)=\dfrac{1}{\pi}\cos^{-1}{v_i}の値を算術演算によりCレジスタに入力する。

{\displaystyle
\begin{equation}
\dfrac{1}{\sqrt{N}}\sum_{i=0}^{N-1}|i\rangle_A\;|b(v_i)\rangle_B\;|b\left(\dfrac{1}{\pi}\cos^{-1}{v_i}\right)\rangle_C
\end{equation}
}


{\bf v}は規格化されているので0\le v_i\le 1である。これより

{\displaystyle
\begin{align}
0\le\dfrac{1}{\pi}\cos^{-1}{v_i}\le\dfrac{1}{2}
\label{eq2}
\end{align}
}

である。従って\dfrac{1}{\pi}\cos^{-1}{v_i}の2進数表記は

{\displaystyle
\begin{align}
\dfrac{1}{\pi}\cos^{-1}{v_i}
&=\sum_{k=0}^{m-1}2^{-k-1}a_k\nonumber \\
&=\dfrac{1}{2}a_0+\left(\dfrac{1}{2}\right)^2a_1+\cdots+\left(\dfrac{1}{2}\right)^m a_{m-1}
\label{eq1}
\end{align}
}

で定義されるa_kを用いて

{\displaystyle
\begin{equation}
b\left(\dfrac{1}{\pi}\cos^{-1}{v_i}\right)=0.a_0a_1\cdots a_{m-1}
\end{equation}
}


と書くことができる。ここで、a_kは0か1のどちらかの値を取る整数である。この表記を用いるとCレジスタ

{\displaystyle
\begin{equation}
|b\left(\dfrac{1}{\pi}\cos^{-1}{v_i}\right)\rangle_C=|a_0a_1\cdots a_{m-1}\rangle_C
\end{equation}
}


と書くことができる。ここまでの処理で得られる全状態は次式である。

{\displaystyle
\begin{equation}
\dfrac{1}{\sqrt{N}}\sum_{i=0}^{N-1}|i\rangle_A\;|b(v_i)\rangle_B\;|a_0a_1\cdots a_{m-1}\rangle_C
\end{equation}
}

4. 回転ゲートの適用

 最初に1ビットからなる4つ目のレジスタDレジスタ)を追加する。

{\displaystyle
\begin{equation}
\dfrac{1}{\sqrt{N}}\sum_{i=0}^{N-1}|i\rangle_A\;|b(v_i)\rangle_B\;|a_0a_1\cdots a_{m-1}\rangle_C\;|0\rangle_D
\end{equation}
}


次にCレジスタの各ビットを制御ビットとしてDレジスタに回転ゲートR_y(\pi 2^{-k})を作用させる。

{\displaystyle
\begin{align*}
&\dfrac{1}{\sqrt{N}}\sum_{i=0}^{N-1}|i\rangle_A\;|b(v_i)\rangle_B\;|a_0a_1\cdots a_{m-1}\rangle_C\;\prod_{k=0}^{m-1}R_y(a_k\pi 2^{-k})|0\rangle_D\\
&=\dfrac{1}{\sqrt{N}}\sum_{i=0}^{N-1}|i\rangle_A\;|b(v_i)\rangle_B\;|a_0a_1\cdots a_{m-1}\rangle_C\;R_y\left(\pi\sum_{k=0}^{m-1}a_k2^{-k}\right)|0\rangle_D
\end{align*}
}


ここで、式(\ref{eq1})を用いると

{\displaystyle
\begin{align*}
R_y\left(\pi\sum_{k=0}^{m-1}a_k2^{-k}\right)
&=R_y\left(\pi\dfrac{2}{\pi}\cos^{-1}{v_i})\right)\\
&=R_y\left(2\cos^{-1}{v_i})\right)
\end{align*}
}


を得る。さらに

{\displaystyle
\begin{equation}
R_y\left(\theta\right)|0\rangle=\cos{\dfrac{\theta}{2}}|0\rangle+\sin{\dfrac{\theta}{2}}|1\rangle
\end{equation}
}


であるから

{\displaystyle
\begin{align*}
R_y\left(2\cos^{-1}{v_i})\right)|0\rangle_D
&=\cos{\left(\cos^{-1}{v_i}\right)}|0\rangle_D+\sin{\left(\cos^{-1}{v_i}\right)}|1\rangle_D\\
&=v_i|0\rangle_D+\sqrt{1-v_i^2}|1\rangle_D
\end{align*}
}


を得る。式(\ref{eq2})より\sin{\left(\cos^{-1}{v_i}\right)}>0であることに注意する。ここまでをまとめると

{\displaystyle
\begin{align}
\dfrac{1}{\sqrt{N}}\sum_{i=0}^{N-1}|i\rangle_A\;|b(v_i)\rangle_B\;|a_0a_1\cdots a_{m-1}\rangle_C\;\left(v_i|0\rangle_D+\sqrt{1-v_i^2}|1\rangle_D\right)\tag{3}
\label{eq3}
\end{align}
}


である。

5. Dレジスタの測定

 Dレジスタを構成する1ビットを測定する。0が測定されるまで繰り返す。0が測定されたとき全状態は次の状態に収縮する。

{\displaystyle
\begin{align*}
\dfrac{1}{\|{\bf v}\|}\sum_{i=0}^{N-1}v_i|i\rangle_A\;|b(v_i)\rangle_B\;|a_0a_1\cdots a_{m-1}\rangle_C\;|0\rangle_D
\end{align*}
}


\|{\bf v}\|=1と仮定したから

{\displaystyle
\begin{align*}
\sum_{i=0}^{N-1}v_i|i\rangle_A\;|b(v_i)\rangle_B\;|a_0a_1\cdots a_{m-1}\rangle_C\;|0\rangle_D
\end{align*}
}


である。

6. Cレジスタの初期化

 Cレジスタに逆演算を施して初期化する。

{\displaystyle
\begin{align*}
\sum_{i=0}^{N-1}v_i|i\rangle_A\;|b(v_i)\rangle_B\;|0\rangle_C\;|0\rangle_D
\end{align*}
}


7. Bレジスタの初期化

 Bレジスタに逆演算を施して初期化する。

{\displaystyle
\begin{align*}
\sum_{i=0}^{N-1}v_i|i\rangle_A\;|0\rangle_B\;|0\rangle_C\;|0\rangle_D
\end{align*}
}


8. 振幅エンコーディングの完成

 Aレジスタに望みの振幅エンコーディングができている。

{\displaystyle
\begin{align*}
\sum_{i=0}^{N-1}v_i|i\rangle_A
\end{align*}
}


備考

 式(\ref{eq3})よりDレジスタ(1量子ビット)が0になる確率は

{\displaystyle
\begin{align*}
P=\dfrac{1}{N}\sum_{i=0}^{N-1}v_i^2\tag{4}
\end{align*}
}


である。効率よく振幅エンコーディングを行うにはPが大きいことが望ましい。

参考文献