GroverのアルゴリズムでOracleキュービットが必要なのはなぜですか?


10

GroverのアルゴリズムでのOracleキュービットの必要性について少し混乱しています。

私の質問は、オラクルのキュービットが必要かどうかは、オラクルの実装方法に依存しますか?または、それはオラクルキュービットの何らかの理由がありますか?(例えば、オラクルキュビットなしでは解決できないいくつかの問題が存在する、またはオラクルキュビットの問題について考える方が簡単である、またはそれが慣習であるなど)

多くのリソースがオラクルキュービットを使用したGroverのアルゴリズムを紹介していますが、オラクルキュービットが不要な場合もあります。

たとえば、IBM QシミュレーターでのGroverのアルゴリズムの2つの実装を次に示します。1つはOracleキュービットを使用しており、もう1つは使用していません。どちらの場合も、| 00>、| 01>、| 10>、| 11>のスペースから| 11>を検索します。どちらの場合も、Oracleは| 11>を-| 11>に正常に切り替えます。

・オラクルキュービット付き(IBM Qシミュレーターへリンクここに画像の説明を入力してください

・オラクルキュービットなし(IBM Qシミュレーターへのリンクここに画像の説明を入力してください

回答:


5

量子回路を定義するという観点からは、オラクルのキュービットは厳密には必要ありません。たとえば、グローバーの検索では、通常、オラクルのアクションをとして定義できます ここで、は1を返しますはマークされたアイテムです。ただし、これは常に特定の方法で使用し、オラクルキュービットにします。これは、マークされたアイテムにフェーズを実装するだけの最終的な効果があります。言い換えると、これは新しい単一のの実装と完全に同等です。 F X X | 0 - | 1 /

U|x|y=|x|yf(x),
f(x)xU | X=-1、F X | X(|0|1)/2
U~|x=(1)f(x)|x

しかし、それが違いを生むのは実際の現実です。アイテムを検索するには、実際にはの入力に基づいて、マークされたアイテムを認識するある種の回路が必要になります。その時点で、オラクルキュービットを使用せずに位相を与えるユニタリーを直接構築するよりも、オラクルビットに答えを出力することを考える方がはるかに簡単です。確かに、ジェネリックバージョンを設計するように依頼した場合、ソリューションとして追加のキュービットを思い付くと思います。U UxU~U


オラクルの計算中にワークスペースとして使用されない場合、余分なキュービットを回避することは実際には非常に簡単です。追加のキュービットにCNOTを見つけ、それらをCゲートのコントロールのZゲートに置き換えます。同様に、CCNOTの2つのコントロール間のCZで追加のキュービットにCCNOTを置き換えます。その他
クレイグギ

@CraigGidneyそれは公平な点ですが、あなたのステートメントにはより多くの仮定が組み込まれていると思います(私たちが知っている大多数のケースがそれらを満たしているとしても、それを非ジェネリックにします):(1)中間のアンシラ関数評価; (2)オラクルの回路は、オラクシのキュービットに作用するマルチキュービットゲートのみが、オラクルのキュービットをターゲットとする(マルチ)制御ノットであるゲートセットに分解する必要があります。(3)オラクルキュービットに他のゲートが作用することはありません(つまり、入力と出力にアダマールを使用することで、c-notを逆に動作させることはできません)。
DaftWullie

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