量子コンピューティング において、グローバーのアルゴリズム(量子探索アルゴリズムとも呼ばれる)は、非構造化探索のための量子アルゴリズムであり、特定の出力値を生成するブラックボックス関数への一意の入力を高い確率で見つける。関数の評価において、は関数の定義域の大きさです。これは1996年にインド系アメリカ人のコンピュータ科学者であるLov Groverによって考案されました。 [ 1 ]
古典計算における類似の問題はクエリ複雑度を持つ(つまり、関数を評価する必要がある)回数: すべての入力値を 1 つずつ試すより良い方法はありません。平均して、ステップ)。[ 1 ]
チャールズ・H・ベネット、イーサン・バーンスタイン、ジル・ブラッサール、ウメシュ・ヴァジラニは、この問題に対する量子解は関数を評価する必要があることを証明した。回数なので、グローバーのアルゴリズムは漸近的に最適です。[ 2 ] NP完全問題に対する古典的なアルゴリズムは指数関数的に多くのステップを必要とし、グローバーのアルゴリズムは非構造化探索の古典的な解法に対して最大で2次的な高速化しか提供しないため、グローバーのアルゴリズムだけではNP完全問題に対して多項式時間解法は提供されないことが示唆されます(指数関数の平方根は依然として指数関数であり、多項式関数ではないため)。[ 3 ]
他の量子アルゴリズムは、古典的なアルゴリズムに比べて指数関数的な高速化をもたらす可能性があるのに対し、グローバーのアルゴリズムは二次的な高速化しか提供しません。しかし、二次的な高速化であっても、は大きく、グローバーのアルゴリズムは幅広い種類のアルゴリズムの高速化に適用できます。[ 3 ]グローバーのアルゴリズムは、128 ビットの対称暗号鍵を約 2 64回、または 256 ビットの鍵を約 2 128回の総当たり攻撃で解読できます。ただし、グローバーのアルゴリズムが既存の古典的なアルゴリズムに比べて暗号化に著しくリスクを高めるとは限らないかもしれません。[ 4 ]
グローバーのアルゴリズムは、振幅増幅などの変種とともに、幅広いアルゴリズムの高速化に使用できます。[ 5 ] [ 6 ] [ 7 ]特に、サブルーチンとして網羅的探索を含むNP完全問題のアルゴリズムは、グローバーのアルゴリズムによって高速化できます。[ 6 ] 3SATに対する最悪ケースの複雑さの観点から、現在の理論上の最良アルゴリズムは、その一例です。一般的な制約充足問題も、グローバーによって2乗倍の高速化が見られます。[ 8 ]これらのアルゴリズムは、入力がオラクルの形式で与えられる必要はありません。グローバーのアルゴリズムは、ビットの集合が3SATインスタンスを満たすかどうかをチェックする関数などの明示的な関数とともに適用されるためです。ただし、グローバーのアルゴリズムがこれらの問題に対する最良の実用的なアルゴリズムを高速化できるかどうかは不明です。
グローバーのアルゴリズムは、量子クエリ複雑性におけるブラックボックス問題、例えば要素の区別[ 9 ]や衝突問題[ 10 ] (ブラッサード・ホイヤー・タップアルゴリズムで解決)に対しても、証明可能な高速化をもたらすことができる。これらのタイプの問題では、オラクル関数fをデータベースとして扱い、この関数への量子クエリの使用回数をできるだけ少なくすることが目標となる。
グローバーのアルゴリズムは、基本的に関数の逆変換の問題を解決します。大まかに言うと、関数がある場合、量子コンピュータで評価できるグローバーのアルゴリズムにより、与えられたとき結果として、グローバーのアルゴリズムは、衝突攻撃や原像攻撃など、対称鍵暗号に対する多くの種類の総当たり攻撃に対して、漸近的に大幅な高速化をもたらします。[ 11 ]しかし、例えばポラードのローアルゴリズムはグローバーのアルゴリズムよりも効率的にSHA-2の衝突を見つけることができるため、必ずしも最も効率的なアルゴリズムとは限りません。[ 12 ]
グローバーの原著論文では、このアルゴリズムをデータベース検索アルゴリズムとして記述しており、この記述は今でも一般的です。このアナロジーにおけるデータベースは、対応する入力によってインデックス付けされた、関数のすべての出力のテーブルです。ただし、このデータベースは明示的に表現されていません。代わりに、インデックスによって項目を評価するためにオラクルが呼び出されます。データベースの項目を一つずつ読み込んで、そのような表現に変換するには、グローバーの検索よりもはるかに時間がかかる場合があります。このような影響を考慮すると、グローバーのアルゴリズムは方程式を解く、または制約を満たすものとして見なすことができます。このようなアプリケーションでは、オラクルは制約をチェックする方法であり、検索アルゴリズムとは関係ありません。この分離により、通常はアルゴリズムの最適化が妨げられますが、従来の検索アルゴリズムはしばしばこのような最適化に依存し、網羅的な検索を回避します。[ 13 ]幸いなことに、多くの制約充足問題や最適化問題に対して、高速なグローバーのオラクル実装が可能です。[ 14 ]
グローバーのアルゴリズムによる高速化を実現する上での主な障壁は、達成される2次高速化が、近未来の量子コンピュータの大きなオーバーヘッドを克服するには控えめすぎるという点である。[ 15 ]しかし、ハードウェア性能が向上した後の世代のフォールトトレラント量子コンピュータは、実際のデータインスタンスに対してこれらの高速化を実現できる可能性がある。
グローバーのアルゴリズムへの入力として、関数があると仮定します。「非構造化データベース」のアナロジーでは、ドメインはデータベースのインデックスを表し、データが検索条件を満たすポイント。さらに、1 つのインデックスのみが条件を満たすと仮定します。、これをインデックスと呼びます私たちの目標は、。
アクセスできます単一演算子の形式のサブルーチン(オラクルと呼ばれることもある)を使用するそれは以下のように機能します。
これは次元状態空間これはレジスタによって供給されます量子ビット。これはしばしば次のように書かれます。
グローバーのアルゴリズムの出力少なくとも確率で使用の応用この確率は、グローバーのアルゴリズムを複数回実行することで任意に大きくすることができます。グローバーのアルゴリズムを発見されたが、予想される申請数はまだ平均して2回しか実行されないため。
このセクションでは上記のオラクルを比較します神託と共に。
関数の標準的な量子オラクルとは異なるこの標準オラクルは、ここでは次のように表記されます。補助量子ビットシステムを使用する。この操作は、補助システムからのf ( x )の値によって条件付けられた、メインシステムに対する反転(NOTゲート)を表す。
または簡単に言うと、
これらのオラクルは通常、非計算を用いて実現される。
もし私たちに与えられたらオラクルとして実装することもできます、 以来は補助量子ビットが状態にあるとき:
したがって、グローバーのアルゴリズムは、どのオラクルが与えられても実行できます。[ 3 ]が与えられた場合、状態に追加の量子ビットを維持する必要がありますそして適用するの代わりに。

グローバーのアルゴリズムの手順は以下のとおりです。
正しく選択された値の場合出力は次のようになりますN ≫ 1の場合、確率は 1 に近づきます。分析によると、最終的な値は次のようになります。満たす。
このアルゴリズムの手順を実装するには、量子ビット数に比例する数のゲートを使用できます。[ 3 ]したがって、このアルゴリズムのゲート複雑度は次のようになります。、 または反復ごとに。

グローバーのアルゴリズムには幾何学的な解釈があり、これはグローバーのアルゴリズムの量子状態が各ステップ後に2次元部分空間に留まるという観察に基づいています。 によって張られる平面を考えてみましょう。そして; 同様に、によって張られる平面そして垂直ケット。
グローバーのアルゴリズムは、最初のケットから始まります。部分空間に含まれる演算子は、に直交する超平面での反射である。によって張られる平面内のベクトルについてそしてつまり、それは反射として作用するこれは、次のように書くことで確認できます。世帯主の視点からの考察という形で:
オペレーター反射両オペレーターそしてによって張られる平面上の状態を取るそして平面上の状態へ移行する。したがって、グローバーのアルゴリズムは、アルゴリズム全体を通してこの平面上に留まる。
オペレーターを確認するのは簡単です各グローバー反復ステップで、状態ベクトルを角度だけ回転させます。したがって、十分な反復回数を経れば、初期状態から回転させることができる。目的の出力状態へ初期ケットは、に直交する状態に近い。:
幾何学的に言えば、角度間そしては
状態ベクトルが近くを通過するときに停止する必要があります;その後、後続の反復処理では状態ベクトルを回転させて正解が得られる確率は低下します。正解を測定する正確な確率は
ここで、rはグローバー反復の(整数)回数である。したがって、ほぼ最適な測定値が得られる最も早い時刻は。
代数解析を完了するには、繰り返し適用したときに何が起こるかを調べる必要があります。これを行う自然な方法は、行列の固有値解析です。計算全体を通して、アルゴリズムの状態は、次の線形結合であることに注意してください。そして. アクションを書くことができますそして空間に広がるとして:
つまり基本は(直交でも全空間の基底でもない)アクション適用するに続く行列によって与えられる
この行列は、非常に便利なジョルダン形式を持っています。それは
どこ
したがって、行列のr乗 ( r回反復に対応) は次のようになる。
この形式を使用すると、前のセクションで述べたr回の反復後にω を観測する確率を計算するために三角関数の恒等式を使用できます。
あるいは、2 rtと −2 rt の角度が可能な限り離れているときが、ほぼ最適な区別のタイミングであると合理的に想像できる。これは、、 またはするとシステムは次の状態になります
簡単な計算により、観測値は誤差を伴う正しい答えωを与えることがわかる。。
一致するエントリが 1 つではなくk個ある場合、同じアルゴリズムが機能しますが、反復回数はの代わりに。
kが未知の場合の処理方法はいくつかあります。[ 16 ]単純な解決策は定数係数まで最適に動作します。例えば、k = N、N /2、N /4、...、などと、kの値をどんどん小さくして Grover のアルゴリズムを繰り返し実行します。一致するエントリが見つかるまで、t回繰り返します。
十分な確率で、反復によってマークされたエントリが見つかるある定数cに対して。したがって、実行された反復の総数は最大で
kが未知の場合の別のアプローチとしては、量子計数アルゴリズムを用いて事前にkを導出する方法がある。
もし(または、実行時にグローバーのアルゴリズムとマークされた従来のもの)) アルゴリズムは増幅を提供しません。、kを増やすと、解を得るために必要な反復回数が増え始めます。[ 17 ]一方、単一のランダムな入力に対してチェックオラクルを古典的に実行すれば、ほとんどの場合、正しい解が得られるでしょう。
このアルゴリズムのバージョンは、衝突問題を解決するために使用されます。[ 18 ] [ 19 ]
グローバーのアルゴリズムの改良版である量子部分探索は、2004 年にグローバーとラダクリシュナンによって記述されました。 [ 20 ]部分探索では、対象アイテムの正確なアドレスを見つけることには関心がなく、アドレスの最初の数桁だけを知りたいのです。言い換えれば、探索空間をブロックに「チャンク化」し、「対象アイテムはどのブロックにあるのか?」と尋ねることと同じです。多くのアプリケーションでは、対象アドレスに目的の情報が含まれていれば、このような探索で十分な情報が得られます。たとえば、LK グローバーが挙げた例を使うと、クラス順位で整理された学生のリストがある場合、学生が下位 25%、25~50%、50~75%、または 75~100% のパーセンタイルに属しているかどうかだけに興味があるかもしれません。
部分検索を説明するために、データベースを以下のように分割することを考えます。ブロック、それぞれのサイズは部分探索問題はより簡単です。古典的なアプローチを考えてみましょう。1つのブロックをランダムに選択し、残りのブロック(集合論の言葉で言えば補集合)に対して通常の探索を実行します。目的のブロックが見つからない場合は、探索していないブロックにあることがわかります。平均反復回数は、に。
グローバーのアルゴリズムは反復回数。部分検索は、ブロック数に依存する数値係数だけ高速になります。部分検索はグローバルな反復とローカル反復。グローバルなグローバー演算子は次のように指定されます。地元のグローバーオペレーターが指定されています。
グローバルなグローバー演算子はブロックに対して作用します。基本的には、次のように定義されます。
最適な値そしてグローバーとラダクリシュナンの論文では、この点について議論されている。また、異なる「解像度」レベルで連続的に部分探索を行った場合に何が起こるのか疑問に思うかもしれない。このアイデアはウラジーミル・コレピンと徐によって詳細に研究され、彼らはそれをバイナリ量子探索と呼んだ。彼らは、実際には単一の部分探索を実行するよりも高速ではないことを証明した。
グローバーのアルゴリズムは、定数以下の係数を除いて最適です。つまり、演算子U ωのみを使用してデータベースにアクセスするアルゴリズムは、少なくともU ωを適用する必要があります。グローバーのアルゴリズムの何倍もの分数である。[ 21 ]グローバーのアルゴリズムをk個のマッチングエントリに拡張したπ ( N / k ) 1/2/4も最適である。[ 18 ]この結果は量子計算の限界を理解する上で重要である。
グローバーの探索問題がU ωのlog c N回の適用で解けるとすれば、 NP の問題をグローバー型の探索問題に変換することで、 NPがBQPに含まれることになる。グローバーのアルゴリズムの最適性は、量子コンピュータがNP 完全問題を多項式時間で解くことができないことを示唆しており、したがって NP は BQP に含まれない。
非局所隠れ変数量子コンピュータの一種が、-アイテムデータベースは最大ステップ。これは、グローバーのアルゴリズムによって実行されるステップ。[ 22 ]
{{cite book}}: CS1 メンテナンス: その他 (リンク)に実装。