Groverのアルゴリズムは、とりわけ、アイテム順不同リスト内のアイテムを検索するために使用されますの長さ。このトピックに関して多くの質問がここにありますが、私はまだポイントを逃しています。
リスト内の検索、古典的な方法
通常、この方法で検索関数を設計します
したがって、リストと必要な項目を入力として与え、位置を受け取りますリスト内のアイテムの出力として。に関する情報はオラクルゲートOを介してアルゴリズムに埋め込まれているため、関数は
\ mathrm {search} _ \ mathbf {y}([\ mathbf {x} _1、\ mathbf {X} _2、...、\ mathbf {X} _n)= I \で\ mathbb {N} \クワッド\テキスト{よう} \ mathbf {X} _i = \ mathbf {Y}
レッツメイクA実際の例。スペードのエース1 \ spadesuitを検索することを検討してください
長さのリストは。
必要な要素はです。を取得する必要があります。各カードはビットでエンコードできます。リストには要素があるため、リストをエンコードするにはビットが必要です。この場合、Oracleは次の関数を実装します:
ただし、Groverのアルゴリズムの入力はキュビットの状態ではありません。
(NB:シャッフルされたデッキのイメージはここから取られます)
グローバーとその神託
いくつかのソース(たとえば、ここで -グラフィックで説明)は、アルゴリズムの入力が異なると言っています。入力は、検索空間リストの要素の数です。各番号は、リスト内の要素の位置に対応しています。
入力 A今量子ビットベクトル探索空間内のすべてのアイテムの重ね合わせである必要があり、。
知ってる
- は対応します。
- は対応します。
- は対応します。
- は、必要な要素である対応します。
- 等々...
この場合、
しかし、この場合、オラクルは関数
オラクルを構築するには、が位置5にあることを知る必要があります。オラクルを構築するためにすでに要素を検索している場合、アルゴリズムを実行するポイントは何ですか?