振幅エンコーディング
はじめに
振幅エンコーディングの手順を示す。規格化されたベクトルの各成分を量子状態の振幅に埋め込み
を作ることが目的である。
1. 初期状態
最初に次の初期状態を用意する。
ここで、とをつけたケットベクトルは個の量子ビットから構成されるレジスタ、をつけたケットベクトルは個の量子ビットから構成されるレジスタである。また、である。レジスタにはQRAMから取り出すデータのアドレスが格納されている。
2. QRAM
上の初期状態を用いてQRAMからデータを取り出す。は規格化されているとする。データの取り出しは基底エンコーディングにより行われレジスタに格納される。
ここで、はを2進数表記した0,1の並びである。従って、その精度はビットで表現できる範囲のものであることに注意する。
3. 算術演算
レジスタに入力した値を引数とする関数の値を算術演算によりレジスタに入力する。
は規格化されているのでである。これより
である。従っての2進数表記は
で定義されるを用いて
と書くことができる。ここで、は0か1のどちらかの値を取る整数である。この表記を用いるとレジスタは
と書くことができる。ここまでの処理で得られる全状態は次式である。
4. 回転ゲートの適用
最初に1ビットからなる4つ目のレジスタ(レジスタ)を追加する。
次にレジスタの各ビットを制御ビットとしてレジスタに回転ゲートを作用させる。
ここで、式(\ref{eq1})を用いると
を得る。さらに
であるから
を得る。式(\ref{eq2})よりであることに注意する。ここまでをまとめると
である。
5. レジスタの測定
レジスタを構成する1ビットを測定する。0が測定されるまで繰り返す。0が測定されたとき全状態は次の状態に収縮する。
と仮定したから
である。
6. レジスタの初期化
レジスタに逆演算を施して初期化する。
7. レジスタの初期化
レジスタに逆演算を施して初期化する。
8. 振幅エンコーディングの完成
備考
式(\ref{eq3})よりレジスタ(1量子ビット)が0になる確率は
である。効率よく振幅エンコーディングを行うにはが大きいことが望ましい。