Groverの検索アルゴリズムのオラクルはどのように実装されていますか?


27

Groverの検索アルゴリズムは、ソートされていないデータベース検索の証明可能な2次の高速化を提供します。アルゴリズムは通常、次の量子回路で表されます。

ほとんどの表現では、プロトコルの重要な部分は「オラクルゲート」であり、「魔法のように」操作ます。しかし、そのようなゲートを実際に実現するのがどれほど難しいかは、よく言われていません。実際、この「オラクル」の使用は、カーペットの下にある困難を一掃する方法にすぎないように思えるかもしれません。Uω|x(1)f(x)|x

このような眼球手術が実際に実現可能かどうかをどのようにして知ることができますか?もしそうなら、その複雑さは何ですか(例えば、ゲート分解の複雑さに関して)?


5
それも私が疑問に思ったものです。では、この実験例について、彼らはハードワイヤービット私に浮気のような味のOracleへの溶液、...
M.スターン

この質問に対する別の素晴らしい回答は、CS Theory SEのこの回答で提供されています
glS

回答:


20

関数は、ビット文字列の任意のブール関数です。[1][2]、または[3]などの暗号を破るアプリケーションの場合、これは実際には「データベースルックアップ」ではなく、何らかの方法でデータベース全体を量子回路として保存する必要がありますが、ff:{0,1}n{0,1}

x{1,if SHA-256(x)=y;0,otherwise,

固定場合、たとえば関数とは異なり、古典的な検索に利用できる構造はありませんy

x{1,if 2xy(mod220481942289),0,otherwise,

これは、古典的なコンピューター上でさえ、より速くそれを逆にするために悪用されることができる構造を持っています。

特定のコストの問題は、が任意の回路になる可能性があるため、一般的に答えることができません。これは、古典的な回路から量子回路作成するだけの問題です。しかし、通常、上記の例のように、関数は古典的なコンピューターで評価するのに非常に安価です。したがって、Groverのアルゴリズムに関する他のすべてが予算内にある量子コンピューターに特に面倒な負担をかけるべきではありません。ff

上の唯一の一般的なコストは、追加の条件付きNOTゲートここで、はxorであり、追加の補助キュービットです。特に、回路がある場合はおよびの回路から構築され、それを最初に状態の補助キュービットとともにに適用した場合ここでf

C:|a|b|a|ab
F:|x|a|junk|x|af(x)|junk
Cf|x|=H|1=(1/2)(|0|1)H アダマールゲートです

F|x||junk=12(F|x|0|junkF|x|1|junk)=12(|x|f(x)|junk|x|1f(x)|junk).

場合次いで、私たちは得る単純化によって、場合に対し、次いで、にしたがって一般的にf(x)=01f(x)=1

F|x||junk=|x||junk,
f(x)=11f(x)=0
F|x||junk=|x||junk,
F|x||junk=(1)f(x)|x||junk.


5

グローバーの元の論文「量子力学は干し草の山で針を探すのに役立ちます」と明確に述べており、C(S)を一定の時間で評価できると仮定しています。Groverの検索は、実装可能性ではなく、クエリの複雑さ(古典的なデータベースのようにOracleに問い合わせる回数)の多項式の削減を懸念しています。

実際、コンピューティングにおけるオラクルの概念は、アランチューリングによって提案されており、UTMの記述が実現可能でないかもしれない構造を記述しています(Wikipedia)。これは、あるいくつかの意味の魔法で。

しかし、もちろん、質問に戻って、Grover検索(または任意の口頭)アルゴリズムの回路を実際にどのように作成するのですか?結果を検索するために、事前に答えを知る必要がありますか?まあ、何らかの意味であなたがする必要があります。それこそが、Grover検索の巧妙な改良が取り組んでいるものであり、正確な答えを事前に知る必要はなく、そのいくつかの特性を知る必要があります。例で説明しましょう。

Groverの検索を使用したパターン認識の問題で、2つのキュービット(00、01、10、11)に4つのパターンがあり、11をマークして増幅したい場合、オラクルユニタリーの対角線は(1,1,1 、-1)ソリューションのパイ位相シフトを処理します。したがって、この単純な実装では、ユニタリを構築するために、事前に完全な答えを知る必要があります。

MateasとOmarの論文「Quantum pattern matching」に記載されている場合、パターン補完の巧妙な改善。本質的には、セットに含まれるアルファベットと同じ数の固定された神託を構築します。したがって、バイナリストリングには、すべて1をマークするオラクルと、すべて0をマークするオラクルがあります。オラクルは、検索対象に基づいて条件付きで呼び出されます。11を検索する場合は、LSqubitでoracle 1を呼び出し、MSqubitでoracle 1を再度呼び出します。最初のオラクルでは、状態(01、11)、つまりLSQが1の状態を増幅し、2回目の呼び出しでは(10、11)を増幅します。したがって、ご覧のとおり、11が2回増幅された唯一の状態であり、最後に測定確率が高くなります。コンパイルされた量子回路は、入力された検索パターンに基づいて変化しますが、量子アルゴリズムの高レベルの説明は同じままです。オラクルは、検索文字列の各文字に対して呼び出されるアルファベットセットの大文字と小文字の区別に基づいた関数呼び出しと考えることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.