GroverのアルゴリズムのためのOracle Construction


16

MikeとIkeの「量子計算と量子情報」で、Groverのアルゴリズムが詳細に説明されています。しかし、本では、そして私がGroverのアルゴリズムについてオンラインで見つけたすべての説明で、GroverのOracleがどのように構築されているかについての言及はないようです。アルゴリズム。具体的には、私の質問は次のとおりです。あるx値に対してf(x)= 1であるが、他のすべてに対してf(x)= 0であるようなf(x)が与えられた場合、初期の任意の状態| x> | y>から| x> | y + f(x)>?可能な限り明示的な詳細(おそらく例?)をいただければ幸いです。アダマール、パウリ、またはその他の標準的な量子ゲートを使用して、任意の関数のそのような構成が可能であれば、


「GrooverのOracleがどのように構築されているかについては、どの状態を探しているかがわからない限り、アルゴリズムの目的に反しているようです。」...「GroverのOracle」は解決すべき問題です。あなたはそれを構築しません。あなたは(オラクルへのアクセス)それを与えられ、値を明らかにするために計算を実行するように求められます。それが役立ったら、が神託構築するふりをして、問題を解決するように頼みます。(また、アイテムのデータベースの読み取り/書き込み/準備には、GroverのN時間アルゴリズム。)N
ダニエルアポン

2
しかし、オラクルが与えられる代わりに、f(x)が与えられるとしたらどうでしょう?3-SAT問題を解決し、Groverを使用してソリューションを高速化することを考えてみてください。問題のf(x)(3-SATの真理句)はわかっていますが、3-SATに接続したときにどのビット文字列xが真の結果をもたらすかは必ずしもわかりません。正しいビット文字列を見つけるために、3-SAT関数からオラクルを構築する方法はないのですか?他の人が提供するものがなく、提案されているとおりであれば、Groverのアルゴリズムはむしろ人工的なものであり、単にあなたに与えられた演習です。
ウィル

回答:


20

オラクルは基本的に、満足のいくソリューションを検索したい述語の単なる実装です。

たとえば、3-sat問題があるとします。

(¬x1 ∨ ¬x3 ∨ ¬x4) ∧
    (x2 ∨ x3 ∨ ¬x4) ∧
    (x1 ∨ ¬x2 ∨ x4) ∧
    (x1 ∨ x3 ∨ x4) ∧
    (¬x1 ∨ x2 ∨ ¬x3)

または、各行が3節である表形式では、xは「この変数false」を意味し、oは「この変数true」を意味し、スペースは「節にない」を意味します。

1 2 3 4
-------
x   x x
  o o x
o x   o
x o x

次のように、入力が解であるかどうかを計算する回路を作成します。

ソリューションチェッカー

さて、回路をオラクルにするには、Zゲートで出力ビットをヒットし、作成したガベージの計算を解除します(つまり、計算回路を逆の順序で実行します)。

オラクル回路

これですべてです。述語を計算し、Zで結果をヒットし、述語を計算解除します。それは神託です。

オラクルのステップで拡散ステップを反復すると、グローバー検索ができます

グローバー検索

...おそらく、より少ないソリューションの例を選択する必要がありますので、進捗状況は緩やかです(私の例のように、ステップごとに90度以上、start-state-solution-state平面に沿って回転するのではなく)。


おかげで、これは非常に役に立ちました。信じられないほど明確で、私が尋ねたすべてに答えました(そして、一般的な量子ゲートを使用しました!) >アダマールを介した状態キュービット(つまり、これには利点がありますか?)また、それはあなたの拡散ステップにとってどのような操作ですか?制御されたXのように見えますが、コントロールとして| 1>または| 0>を使用していますか?
ウィル

(12|012|1)n

素晴らしい回答、およびalgassert.com/quirkへのリンクに感謝します!
フレデリックグロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.