Groverのアルゴリズムのオラクルには、データベース全体に関する情報を含める必要がありますか?


8

Groverのアルゴリズムは、時間でデータベース検索する方法として説明されることがよくあります。これを使用するには、が答えにような関数を表すオラクルゲートが必要です。しかし、実際にこのような「データベースオラクル」を作成するにはどうすればよいでしょうか。ff11O(N)ff1(1)

私は数字の配列があるとし含ま正確に一度だけ、私が見つける必要があるのインデックスを。従来のコンピューターでは、配列をメモリに読み込み、見つかるまで配列を繰り返し処理しました。w w wawww

たとえば、および場合、答えとして2(または1インデックスで3)が返されると期待しています。、W = 0a=[3,2,0,1,2,3]w=0

この配列を量子コンピューターでどのように表現し、いくつかのを返すゲートを作成するのですか? xaxx

特に、量子メモリ内に「データベース」全体を持っている必要がありますか(量子ゲートから従来のレジスタにアクセスする方法がいくつかあると想定しています)?


回答:


5

いいえ、ありません。

オラクルグローバーのアルゴリズムでは、」任意の要素与えられた、という機能ですかどうか、チェックが我々が探している要素である、と言う。これを行うために、オラクルはデータベースにある他のすべての要素知識を必要としませんx k x ターゲットx jxkxkxtargetxj

より具体的な例を検討すると役立ちます。 4桁の電話番号のデータベースがあり、がこのデータベースの番目の要素を示しているとします。データベース内のどの位置が要素対応するかを知りたいとします。データベースの要素10000が唯一のそのような要素、つまり、すべてのに対しておよびであるとます。x k k 1234 x 10000 = 1234 x k1234 k 1000020000xkk1234x10000=1234xk1234k10000

古典的なケースでは、データベースはソートされていないため、データベース内のすべての要素を調べて、それぞれをターゲットと照合するよりも良い方法はありません。これを行うには、あなただけ与えられ、そのアルゴリズム持っている必要が、リターン場合とそう。この問題を説明する同等の方法は、ペアのリスト、が必要です。したがって、このケースでは、が返すアルゴリズムが必要です。x k はいx k = 1234 いいえ { k x k} 20000 k = 1 x k { k x k} 20000 k = 110000 x 10000 = 1234 x k1234xkyesxk=1234no{(k,xk)}k=120000xk{(k,xk)}k=120000(10000,x10000=1234)。これは、各ペアをチェックする関数は、状態の一部、つまりパーツの機能のみをチェックすることを意味することに注意してください。実際、これが当てはまらない場合、情報を回復することはできないため、全体が無意味になります。xk

この問題の最後のフレーミングは、グローバーのアルゴリズムについて考えるときに心に留めておくべきものです。

量子の場合、ペア は量子状態(または単に)になり、oracular関数は、はターゲットに一致します。プロシージャの出力は、状態です。今、私たちはすでに知っているこの状態の一部がOracleにハードコードされたため、:私たちは中に符号化された情報の第二部があることを知っているある(k,xk)|ψk|k|ψk|ψ10000|ψ100001234なぜなら、それはそもそも探していたものであり、オラクル自体にエンコードされた情報だからです。 ただし、状態も追加情報、つまりデータベース内の位置ます。 この情報はoracleの構築には使用されませんでした。これは、アルゴリズムを実行することによって得られる情報です。|ψ10000 10000

最後に、オラクルはデータベース全体の内容について何も知らないことに注意してください。ターゲットに対して単一の状態 をチェックする関数を一貫して実装しますただし、このゲートが首尾一貫して機能するという事実は、このチェッカー関数にデータベースの多くの(場合によってはすべての)要素の重ね合わせを入力し、データベース内のすべての要素に関するグローバル情報を含む出力を取得できることを意味します。|ψk


1

最初に配列の番目の項目にアクセスし、次にそれをと比較するような関数を作成します。実際の実装では、追加の(パラメーター)入力キュービットでエンコードされた配列に、あたかもビットであるかのようにアクセスする場合があります。ff(x)xw


それを回路または演算子行列または他のより具体的な形式で表す方法はありますか?特定の入力にアクセスさせる方法について少し混乱しています。
Norrius

入力は古典的な情報(量子ビットではなくビットであり、量子ビットとしてエンコードされている)なので、CNOTを使用して単純に「コピー」できます。それは本当のコピーではなく、もつれたものですが、これで十分です。コピーの計算を解除すること(これもCNOTを使用)が重要です。そうしないと、グローバーのアルゴリズムが機能しません。
ピラミッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.