グローバーのアルゴリズムを解析して、その仕組みを理解しましょう。
まず、記号的解析と呼べるものから始めます。ここではグローバー操作 G がある状態にどのように作用するかを計算し、その後、この記号的解析をアルゴリズムの動作を視覚化するのに役立つ幾何学的な図と結び付けます。
解と非解
まず、2 つの文字列の集合を定義します。
A0A1={x∈Σn:f(x)=0}={x∈Σn:f(x)=1}
集合 A1 は探索問題のすべての解を含み、A0 は解でない文字列(便宜上非解と呼ぶことがあります)を含みます。
これら 2 つの集合は A0∩A1=∅ および A0∪A1=Σn を満たします。すなわち、これは Σn の二分割です。
次に、解の集合と非解の集合それぞれの上の一様重ね合わせを表す 2 つの単位ベクトルを定義します。
∣A0⟩∣A1⟩=∣A0∣1x∈A0∑∣x⟩=∣A1∣1x∈A1∑∣x⟩
正確に言えば、これらのベクトルはそれぞれ対応する集合が空でない場合にのみ定義されますが、以降では A0 も A1 も空でない場合に焦点を当てます。
A0=∅ および A1=∅ の場合は別途容易に処理できるため、後ほど取り上げます。
なお、ここで使用している記法は一般的なものです。有限で空でない集合 S があれば、∣S⟩ と書いて S の要素上で一様な量子状態ベクトルを表すことができます。
また、∣u⟩ をすべての n ビット文字列上の一様量子状態として定義します。
∣u⟩=N1x∈Σn∑∣x⟩.
次の等式が成り立つことに注意してください。
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩.
また、∣u⟩=H⊗n∣0n⟩ が成り立つため、∣u⟩ はグローバーのアルゴリズムのステップ 1 における初期化後のレジスタ Q の状態を表します。
これは、ステップ 2 で G の反復が始まる直前において、Q の状態が ∣A0⟩ と ∣A1⟩ によって張られる 2 次元ベクトル空間に含まれており、さらにこれらのベクトルの係数が実数であることを意味します。
これから分かるように、ステップ 2 の操作 G を何回反復した後でも、Q の状態は常にこれらの性質を持ちます。すなわち、状態は ∣A0⟩ と ∣A1⟩ の実線形結合です。
グローバー操作についての観察
次に、グローバー操作
G=H⊗nZORH⊗nZf,
に注目し、その興味深い性質から始めましょう。
関数 f を f と NOT 関数の合成、すなわち f の出力ビットを反転させた関数に置き換えたとします。
この新しい関数を g と呼び、いくつかの記法で表すことができます。
g(x)=¬f(x)=1⊕f(x)=1−f(x)={10f(x)=0f(x)=1
すべての文字列 x∈Σn に対して
(−1)g(x)=(−1)1⊕f(x)=−(−1)f(x)
が成り立つことに注意してください。したがって
Zg=−Zf.
つまり、関数 f を関数 g に置き換えてもグローバーのアルゴリズムは何も変わりません。なぜなら、2 つの場合においてアルゴリズムから得られる状態は必然的に全体位相の違いを除いて同等だからです。
これは問題ありません!
直感的に言えば、アルゴリズムはどの文字列が解でどの文字列が非解かを気にする必要はなく、正しく動作するために解と非解を区別できれば十分です。
グローバー操作の作用
では、量子状態ベクトル ∣A0⟩ と ∣A1⟩ に対する G の作用を考えましょう。
まず、操作 Zf が ∣A0⟩ と ∣A1⟩ に非常に単純な作用をすることを観察します。
Zf∣A0⟩Zf∣A1⟩=∣A0⟩=−∣A1⟩
次に、操作 H⊗nZORH⊗n を考えます。
操作 ZOR は次のように定義されます。
ZOR∣x⟩=⎩⎨⎧∣x⟩−∣x⟩x=0nx=0n,
ここでも x∈Σn のすべての文字列について成り立ちます。この操作を表す便利な別の書き方は次の通りです。
ZOR=2∣0n⟩⟨0n∣−I.
この式が ZOR の定義と一致することを確認するには、標準基底状態への作用を評価すれば十分です。
したがって、操作 H⊗nZORH⊗n は次のように書けます。
H⊗nZORH⊗n=2H⊗n∣0n⟩⟨0n∣H⊗n−I=2∣u⟩⟨u∣−I,
ここで、∣u⟩ はすべての n ビット文字列上の一様重ね合わせを表す上記の記法と同じです。
これで ∣A0⟩ と ∣A1⟩ に対する G の作用を計算する準備が整いました。
まず、G の ∣A0⟩ への作用を計算します。
G∣A0⟩=(2∣u⟩⟨u∣−I)Zf∣A0⟩=(2∣u⟩⟨u∣−I)∣A0⟩=2N∣A0∣∣u⟩−∣A0⟩=2N∣A0∣(N∣A0∣∣A0⟩+N∣A1∣∣A1⟩)−∣A0⟩=(N2∣A0∣−1)∣A0⟩+N2∣A0∣⋅∣A1∣∣A1⟩=N∣A0∣−∣A1∣∣A0⟩+N2∣A0∣⋅∣A1∣∣A1⟩
次に、G の ∣A1⟩ への作用を計算します。
G∣A1⟩=(2∣u⟩⟨u∣−I)Zf∣A1⟩=−(2∣u⟩⟨u∣−I)∣A1⟩=−2N∣A1∣∣u⟩+∣A1⟩=−2N∣A1∣(N∣A0∣∣A0⟩+N∣A1∣∣A1⟩)+∣A1⟩=−N2∣A1∣⋅∣A0∣∣A0⟩+(1−N2∣A1∣)∣A1⟩=−N2∣A1∣⋅∣A0∣∣A0⟩+N∣A0∣−∣A1∣∣A1⟩
どちらの計算でも、次の等式
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩
と、そこから導かれる
⟨u∣A0⟩=N∣A0∣and⟨u∣A1⟩=N∣A1∣
を使用しています。
まとめると、次が成り立ちます。
G∣A0⟩G∣A1⟩=N∣A0∣−∣A1∣∣A0⟩+N2∣A0∣⋅∣A1∣∣A1⟩=−N2∣A1∣⋅∣A0∣∣A0⟩+N∣A0∣−∣A1∣∣A1⟩.
既に述べたように、ステップ 2 の直前における Q の状態は ∣A0⟩ と ∣A1⟩ によって張られる 2 次元空間に含まれており、G がこの空間内の任意のベクトルを同じ空間内の別のベクトルに写すことを確認しました。
したがって、解析の目的上、この部分空間だけに注目すれば十分です。
この 2 次元空間内で何が起きているかをより深く理解するために、この空間における G の作用を行列として表します。
M=N∣A0∣−∣A1∣N2∣A0∣⋅∣A1∣−N2∣A1∣⋅∣A0∣N∣A0∣−∣A1∣,
ここで行と列の 1 番目と 2 番目はそれぞれ ∣A0⟩ と ∣A1⟩ に対応します。
このシリーズのこれまでの部分では、行列の行と列は常にシステムの古典状態と関連付けてきましたが、行列はここで示しているように異なる基底上の線形写像の作用を記述するためにも使用できます。
一見すると全く明らかではありませんが、行列 M はより単純な形の行列を2 乗することで得られます。
N∣A0∣N∣A1∣−N∣A1∣N∣A0∣2=N∣A0∣−∣A1∣N2∣A0∣⋅∣A1∣−N2∣A1∣⋅∣A0∣N∣A0∣−∣A1∣=M
この行列
N∣A0∣N∣A1∣−N∣A1∣N∣A0∣
は回転行列であり、次のように表すこともできます。
N∣A0∣N∣A1∣−N∣A1∣N∣A0∣=(cos(θ)sin(θ)−sin(θ)cos(θ))
ここで
θ=sin−1(N∣A1∣).
この角度 θ は以降の解析において非常に重要な役割を果たすため、初めて登場するここでその重要性を強調しておきます。
この行列の表現に照らして、次が観察されます。
M=(cos(θ)sin(θ)−sin(θ)cos(θ))2=(cos(2θ)sin(2θ)−sin(2θ)cos(2θ)).
これは、角度 θ による回転を 2 回行うことが角度 2θ による回転と同等であるためです。
別の見方としては、
θ=cos−1(N∣A0∣),
という別の表現と、三角法の倍角公式を利用することもできます。
cos(2θ)sin(2θ)=cos2(θ)−sin2(θ)=2sin(θ)cos(θ).
まとめると、ステップ 2 の開始時におけるレジスタ Q の状態は
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩=cos(θ)∣A0⟩+sin(θ)∣A1⟩,
であり、この状態に G を適用する効果は、∣A0⟩ と ∣A1⟩ によって張られる空間内でその状態を角度 2θ だけ回転させることです。
たとえば、次が成り立ちます。
G∣u⟩G2∣u⟩G3∣u⟩=cos(3θ)∣A0⟩+sin(3θ)∣A1⟩=cos(5θ)∣A0⟩+sin(5θ)∣A1⟩=cos(7θ)∣A0⟩+sin(7θ)∣A1⟩
一般には
Gt∣u⟩=cos((2t+1)θ)∣A0⟩+sin((2t+1)θ)∣A1⟩.
幾何学的な図
ここで、先ほどの解析を幾何学的な図と結び付けましょう。
操作 G は 2 つの反射、すなわち Zf と H⊗nZORH⊗n の積です。
そして 2 つの反射を合成した正味の効果は回転を行うことです。
まず Zf から始めます。
先ほど観察したように、次が成り立ちます。
Zf∣A0⟩Zf∣A1⟩=∣A0⟩=−∣A1⟩.
∣A0⟩ と ∣A1⟩ によって張られる 2 次元ベクトル空間内において、これは ∣A0⟩ に平行な直線 L1 についての反射です。
次の図は、∣A0⟩ と ∣A1⟩ の実線形結合と仮定した仮想的な単位ベクトル ∣ψ⟩ に対するこの反射の作用を示しています。

次に操作 H⊗nZORH⊗n を考えます。これは既に次のように書けることを見ました。
H⊗nZORH⊗n=2∣u⟩⟨u∣−I.
これもまた反射であり、今度はベクトル ∣u⟩ に平行な直線 L2 についての反射です。
次の図は単位ベクトル ∣ψ⟩ に対するこの反射の作用を示しています。

これら 2 つの反射を合成すると回転が得られます。回転角は反射の軸の間の角度の 2 倍です。これを次の図が示しています。

これにより、グローバー操作の効果が ∣A0⟩ と ∣A1⟩ の線形結合を角度 2θ だけ回転させることである理由が幾何学的な観点から説明されます。