解析
では、グローバーのアルゴリズムを分析し、その仕組みを理解しよう。 私たちはまず、グローバー演算( )が特定の状態に対してどのように作用するかを計算する、 記号的解析とでも言うべきものから始める。そして、この記号的解析を、アルゴリズムがどのように機能するかを視覚化するのに役立つ幾何学的な図と結びつける。
解決策と非解決策
まず、2組の文字列を定義することから始めよう。
集合 には、検索問題のすべての解が含まれており、一方、集合 には、解ではない文字列が含まれています(便宜上、これらを「 非解 」と呼ぶこともできます)。 これら2つの集合は、 および を満たしており、つまり、これは の二分分割である。
次に、解と非解の集合に対する一様な重ね合わせを表す2つの単位ベクトルを定義する。
形式的に言えば、これらの各ベクトルは、対応する集合が空でない場合にのみ定義されるが、以下では、 も も空でない場合に焦点を当てる。 、 。
余談ですが、ここで使用されている表記法は一般的なものです。有限かつ非空な集合 がある場合、 と書くことで、 の要素全体にわたって一様である量子状態ベクトルを表すことができます。
また、 を、すべての -bit文字列にわたる一様な量子状態と定義しよう:
そうすると
また、 であるため、 は、グローバーのアルゴリズムのステップ1での初期化後のレジスタ の状態を表します。
これは、ステップ2で の反復が行われる直前に、 の状態が、 および によって張られる2次元ベクトル空間に含まれており、さらにこれらのベクトルの係数が実数であることを意味する。 後で見るように、ステップ2における演算 を何度繰り返しても、状態 は常にこれらの性質を持つことになります。つまり、この状態は および の実数による線形結合であるということです。
グローバー作戦に関する所見
次にグローバーの作戦に注目しよう
という興味深い見解から始まった。
ひとまず、関数 を、 と NOT 関数の合成、つまり の出力ビットを反転させた関数に置き換えたと想像してみてください。 この新しい関数を と呼び、記号を用いていくつかの異なる方法で表現することができます。
そうすると
すべての文字列 について、したがって
つまり、関数 を関数 に置き換えたとしても、グローバーのアルゴリズムの動作に何の違いも生じないということになる。なぜなら、どちらの場合でも、このアルゴリズムから得られる状態は、全相位を除けば必然的に等価であるからである。
これは問題ない! 直感的に言えば、アルゴリズムはどの文字列が解でどの文字列が非解であるかを気にしません。正しく動作するために解と非解を区別できれば十分です。
グローバー作戦の行動
それでは、量子状態ベクトル および に対する の作用について考えてみましょう。
まず、演算 が、 および に対して非常に単純な作用を持つことに注目しましょう。
次に、演算 があります。 演算 は次のように定義されます。
同様に、すべての文字列 について、この操作を表す便利な別の方法は次のようになります:
この式が の定義と一致していることを確認する簡単な方法は、標準的な基底状態に対する作用を評価することである。
したがって、 :
上記で、すべての ビット文字列にわたる一様な重ね合わせについて用いたのと同じ表記、 を用いる。
これで、 が および に及ぼす作用を計算するために必要なものが揃いました。 まず、 が に及ぼす作用を計算してみましょう。
次に、 が に及ぼす作用を計算してみましょう。
どちらの場合も、次の方程式を使う
という表現とともに
その後に続く。
要約すると
すでに述べたように、ステップ2の直前の の状態は、 と によって張られる2次元空間に含まれており、また、 がこの空間内の任意のベクトルを、同じ空間内の別のベクトルに写像することを、先ほど示したばかりである。 つまり、解析を行う上で、この部分空間のみに注目すればよいということになる。
この2次元空間の中で起こっていることをよりよく理解するために、この空間に対する の作用を行列として表現してみよう、
その1行目および2行目/1列目および2列目は、それぞれ および に対応しています。 このシリーズではこれまで、行列の行や列を常に系の古典的な状態と結びつけてきましたが、行列は、ここにあるように、異なる基底に対する線形写像の作用を表すためにも用いることができます。
一見しただけではまったくわからないが、行列 は、より単純に見える行列を 2乗することで得られるものである。
マトリックス
は回転行列である
の場合
この角度( )は、この後の分析で非常に重要な役割を果たすことになるので、ここで初めてその重要性を強調しておきたい。
このマトリックスの表現に照らし合わせると、次のようになる
これは、角度 で 2 回回転することは、角度 で回転することと等価だからです。 これを理解する別の方法として、次の別の式を利用することができます。
を三角法の二重角度の公式と合わせて使う:
要約すると、ステップ2の開始時のレジスタ の状態は次のようになる
また、この状態に を適用すると、 と によって張られる空間内で、角度 だけ回転することになります。 したがって、例えば、次のような式が得られます。
そして一般的に
幾何学的な絵
それでは、先ほど行った分析を幾何学的な図と結びつけてみましょう。 基本的な考え方は、操作は、2 つの鏡映操作との積であるということです。そして、2 つの鏡映操作を実行することで、回転操作が実行されます。
まずは から見ていきましょう。 すでに前述したように、次のような式があります。
とによって張られる 2 次元ベクトル空間内では、これはに平行な直線 (これをと呼びます) に関する鏡映です。以下は、この鏡映が仮想的な単位ベクトルに及ぼす作用を示す図です。この単位ベクトルは、 との実数線形結合であると仮定しています。
次に、 という演算があります。これは、すでに説明したように、次のように書き表すことができます
これもまた反射ですが、今回はベクトル に平行な直線 についてです。 以下に、単位ベクトル に対するこの反射の作用を示した図を示します。
これらの2つの反射を合成すると、この図が示すように、反射線間の角度の2倍の回転が得られる。
これは、幾何学的な観点から、グローバー演算の効果が、 および の線形結合を の角度だけ回転させるものである理由を説明している。