いいえ、ありません。
「オラクルグローバーのアルゴリズムでは、」任意の要素与えられた、という機能ですかどうか、チェックが我々が探している要素である、と言う。これを行うために、オラクルはデータベースにある他のすべての要素知識を必要としません。x k x ターゲットx jxkxkxtargetxj
より具体的な例を検討すると役立ちます。 4桁の電話番号のデータベースがあり、がこのデータベースの番目の要素を示しているとします。データベース内のどの位置が要素対応するかを知りたいとします。データベースの要素10000が唯一のそのような要素、つまり、すべてのに対しておよびであるとます。x k k 1234 x 10000 = 1234 x k ≠ 1234 k ≠ 1000020000xkk1234x10000=1234xk≠1234k≠10000
古典的なケースでは、データベースはソートされていないため、データベース内のすべての要素を調べて、それぞれをターゲットと照合するよりも良い方法はありません。これを行うには、あなただけ与えられ、そのアルゴリズム持っている必要が、リターン場合とそう。この問題を説明する同等の方法は、ペアのリスト、が必要です。したがって、このケースでは、が返すアルゴリズムが必要です。x k はいx k = 1234 いいえ { (k 、x k)} 20000 k = 1 x k { (k 、x k)} 20000 k = 1(10000 、x 10000 = 1234 )x k1234xkyesxk=1234no{(k,xk)}20000k=1xk{(k,xk)}20000k=1(10000,x10000=1234)。これは、各ペアをチェックする関数は、状態の一部、つまりパーツの機能のみをチェックすることを意味することに注意してください。実際、これが当てはまらない場合、情報を回復することはできないため、全体が無意味になります。xk
この問題の最後のフレーミングは、グローバーのアルゴリズムについて考えるときに心に留めておくべきものです。
量子の場合、ペア は量子状態(または単に)になり、oracular関数は、はターゲットに一致します。プロシージャの出力は、状態です。今、私たちはすでに知っているこの状態の一部がOracleにハードコードされたため、:私たちは中に符号化された情報の第二部があることを知っているある(k,xk)|ψk⟩|k⟩|ψk⟩|ψ10000⟩|ψ10000⟩1234なぜなら、それはそもそも探していたものであり、オラクル自体にエンコードされた情報だからです。
ただし、状態も追加情報、つまりデータベース内の位置ます。
この情報はoracleの構築には使用されませんでした。これは、アルゴリズムを実行することによって得られる情報です。|ψ10000⟩ 10000
最後に、オラクルはデータベース全体の内容について何も知らないことに注意してください。ターゲットに対して単一の状態 をチェックする関数を一貫して実装しますただし、このゲートが首尾一貫して機能するという事実は、このチェッカー関数にデータベースの多くの(場合によってはすべての)要素の重ね合わせを入力し、データベース内のすべての要素に関するグローバル情報を含む出力を取得できることを意味します。|ψk⟩