3つのキュービットを使用したIBM QでのGroverのアルゴリズムのオラクルの実装


10

3キュービットのGroverのアルゴリズムを実装することでIBM Qに慣れるようにしていますが、オラクルの実装が困難です。

その方法を示したり、IBM Q回路プログラミングに慣れるための優れたリソースを提案したりできますか?

私がしたいのは、オラクルが行うことになっているようにその記号を反転させることによって任意の状態をマークすることです。

たとえば、私は持っています

1/8(|000+|001+|010+|011+|100+|101+|110+|111)

記号を反転してをマークしたいと思います。CCZゲートで問題が解決することはどういうわけか理解していますが、IBM QにはCCZゲートがありません。いくつかのゲートの組み合わせはCCZと同じように機能しますが、その方法はまだわかりません。また、だけでなく、他の場合にも苦労しています。|111|111|111

2つのキュービットのケースは私が実装するのに十分簡単ですが、3つのキュービットのケアはまだ私を混乱させます。


1
ドキュメントにはGroverのアルゴリズムのいくつかの例が含まれていますが、検索スペースの大きさは覚えていません。
Norrius

コメントをありがとう。はい、このページ(quantumexperience.ng.bluemix.net/proxy/tutorial/full-user-guide/…)では、2つのキュービットGroverのアルゴリズム実装について説明しています。
Bick

回答:


4

私は私の質問に答えています。いくつかのグーグル検索の後、私はCNOT、Tダガー、TゲートによるCCZゲートを示すこの画像を見つけました。これをIBM Qで試してみましたが、うまくいきました。なぜ機能するのか調べたいのですが、それはまた別の話です。

興味のある人のために、ここに1回の反復でグローバーのアルゴリズムが| 111>を見つける私の量子回路があります。

Groverのアルゴリズムによる1回の反復による| 111>の発見


1
制御された制御されたNOTゲート(Toffoliとも呼ばれます)の標準回路を検索したい場合 これは、私のバージョンのNielsen&Chuangの図4.9です。制御された制御された位相ゲートに変換するには、アダマールをターゲットキュービットの前後に貼り付けます(または、両端に既にアダマールがある場合は、削除します)。
DaftWullie

0

ここで qiskitを使用して複数のキュービットに同じ問題を実装しまし

あなたが提示した3キュービットの状態では、ここにあるようなオラクルを使用できます(リアルタイムで振幅を表示するためだけに癖を使用しています)。最初の3つのアダマール(の前のアダマール...)は、オラクルへのランダム入力をシミュレートするためだけにあり、オラクル自体の一部ではないことに注意してください。いずれの場合も、回路の最後の振幅からわかるように、状態のみが反転され、他のすべての状態は変更されません。|111

一般的には、CCXゲートに続いてターゲットビットにアダマールを使用し、次にターゲットビットに別のアダマールを使用して、CCZゲートをシミュレーションするという考え方です。

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