はじめに
今回は量子振幅増幅と呼ばれる手法を解説し、その応用例としてグローバーのアルゴリズムを紹介する。グローバーのアルゴリズムは、ソートされていないデータベースから特定のデータを探索する手法であり、個のデータに対し回の問い合わせで目的とするデータを発見できる。古典コンピュータの場合、ソートされていないデータベースから目的のデータを見つけるには線形探索するしかなく、その問い合わせ回数はである。したがって量子コンピュータを用いることで検索速度を加速させることができる。
量子振幅増幅
本節では量子振幅増幅について説明する。グローバーのアルゴリズムについては次節で解説する。
個の量子ビットからなる量子状態が次式で与えられているとする。
(1)
ここで、振幅は複素数である。に対しては次の規格化条件が成り立っている。
(2)
(3)
式(3)の2行目の式に見るように量子状態は2進数で表されることに注意する。いまの場合は2ビットの2進数である。また、式(2)より
(4)
が成り立つ。量子状態を測定したとき、が測定される確率がとなるのが量子力学の原理であった。
さて、ある2値関数が定義されているとき、となる量子状態を検索したい。それを行うため、式(1)の右辺を、を満たす状態とを満たす状態に分ける。
(5)
ここで
(6)
とした。いま
(7)
とし、さらに式(2)から
(8)
(9)
と書くことができる。2つのベクトルとに対し
(10)
が成り立つことから(は2つのベクトルの内積を表す)、2つのベクトルが張る2次元ベクトル空間でアルゴリズムを考えることができる。ここでは
(11)
と置いて考える。いま見つけたいのはとなる状態である。つまり、の軸成分であるを増幅させれば良い。増幅の手順は以下の通り(下図参照)。
- (赤いベクトル)を軸に関して反転し、(緑のベクトル)を作る。
- (緑のベクトル)を軸に関して反転し、(青いベクトル)を作る。
この手順を経るとはに増えるので振幅もに増えることになる。具体的に、演算の中身を見ていく。
の導出:軸に関する反転なので、の軸成分が反転すればよい。したがって
(12)
が成り立てばよい。すなわち
(13)
である。
(14)
(15)
と一般化できる(上式においてとおけば式(14)を得る)。いま
(16)
としたから
(17)
となる。天下り的であるが、求めるべき行列は次式となる。
(18)
はの単位行列、は列ベクトルと行ベクトルの積なので行列である。
以上でが求まったので青色のベクトルは
(19)
となる。ここで
(20)
である。ここまでの手順を繰り返すことによりさらに振幅を増幅させる。回繰り返した結果は
(21)
となる(計算は面倒ですが線形代数の基本問題です)。増幅前の状態は
(22)
であったから、の成分がからに増幅されたことが分かる。以上が量子振幅増幅のアルゴリズムである。
グローバーのアルゴリズム
上で説明した量子振幅増幅を使い、グローバーのアルゴリズムを説明する。考える問題は以下である。
(23)
ここで、である。式(23)の右辺は、桁の2進数からまでの状態の重ね合わせである。ある関数が定義されており、を満たすがただ1つ存在する。ほかのについてはである。状態を見つけよ。
式(23)の右辺を変形すると
(24)
(25)
である。がになるまで増幅を行えば、式(24)の右辺の第1項の振幅は0(=)、第2項の振幅は1(=)になる。増幅回数は以下のように見積もることができる。式(21)より
(26)
したがって
(27)
となる。いまビット数が十分大きいとき、も十分大きくなる。このとき、式(25)の2つ目の式よりは十分小さくなり、としてよい。したがって、と置けるから、となる。すなわち、の手間で検索を行うことができる。以上がグローバーのアルゴリズムの内容である。
まとめ
今回は量子振幅増幅と呼ばれる手法を解説し、その応用例としてグローバーのアルゴリズムを紹介した。グローバーのアルゴリズムは、ソートされていないデータベースから特定のデータを探索する手法であり、個のデータに対し回の問い合わせで目的とするデータを発見できる。古典コンピュータの場合、問い合わせ回数はであるから、量子コンピュータを用いることで検索速度を加速させることができる。
グローバーのアルゴリズムは、誤り耐性あり量子コンピュータ(FTQC)向けのアルゴリズムである。FTQCの実用化にはまだ多くの時間が必要であり、このアルゴリズムがすぐに実用化されることはないことを付記しておく。