ワークスペースなしで、シングルキュービット、Toffoli、およびCNOTゲートからより大きな制御されたノットを作成する


8

NielsenとChuangによるQuantum ComputationとQuantum Informationの演習4.29 は私を困らせました。

作業キュービットを使用せずに、ゲート()を実装する Toffoli、CNOT、および単一キュービットゲートを含む回路を見つけます。O2Cバツ>

これは古典的には実行できないことを理解しました。

私は指数関数的に正確なゲートを使用してそれを行う方法を理解しましたそれ自体の内部に、二重制御から単一制御および平方根の操作構造を回ネストします)。O22

上記の構造を一般化して、制御された操作の線形結合を蓄積することを試みました。たとえば、A、B、Cという3つのコントロールがあり、さまざまなケースのベクトル[0、A、B、C、AB、BC、AC、ABC]を作成すると、次のようになります。

  • 操作を無条件に適用すると、[1、1、1、1、1、1、1、1]が追加されます
  • Aの操作を制御すると、[0、1、0、0、1、1、0、1]が追加されます
  • AをCにXorし、Cの操作を制御すると(xorを元に戻す)、[0、1、0、1、1、1、0、0]が追加されます。
  • toffoliゲートを介してCにXoring(AおよびB)し、Cの操作を制御すると、[0、0、0、1、1、1、1、1、0]が追加されます。

次に、結果が[0、0、0、0、0、0、0、N]となるまで作成できるさまざまなベクトルを加算(Xのルートを適用)および減算(逆平方根を適用)しようとします。 。

しかし、私はさまざまな壁にぶつかり続けます。たとえば、最終的に大きな倍数になるソリューション(つまり、使用しているゲートが指数関数的に正確になり、これはノーノーだと思います)や、システム間の相互作用のためにシステムを解決できないだけです。 AND / XORを使用して要素を生成し、次に+ / *を非標準として解決するか、または指数のゲート数を作成します。

他に試してみる方法は何ですか?

回答:


5

O

  1. 大規模な制御されたNotの構築(通常、補助装置を使用)

  2. 大きな増分の構築(通常、補助装置を使用)

  3. アンシラビットの代わりに量子ゲートを使用する

もちろん、これから20年経ってから、私のWebサイトがなくなってしまった場合は、簡単に説明できます。そのため、基本的な手順は、簡単に説明される画像形式で実行されます。

1.借用可能な補助ビットをブートストラップする

平方根とその逆数を使用して、コントロールの最大数を1つ減らし、各操作に関与しないワイヤーを作成します。次に、Not以外の操作からコントロールを繰り返し移動し、大きなインクリメントゲートと単一キュービットフェーズゲートになるクリフトを再配置します。

Ancillaビットのブートストラップ

2.単一の補助ビットを使用して操作を半分に削減

大規模な操作ごとに、関与していないワイヤーを借用した補助ビットとして使用します。それを使用して、巨大な増分と制御されたゲートを、それぞれがワイヤの約半分が関与しない小さな操作に変換します。次のステップで十分な作業スペースを確保する必要がある場合は、2回繰り返します。

AncillaでControlled-Notのサイズを半分にする

Ancillaでインクリメンターのサイズを半分にする

3.多くの補助ビットを使用して終了する

それでも大きすぎる操作ごとに、関与しない多くのワイヤーを補助ビットとして借ります。それらを使用して、Toffoli以下のゲートまで到達します。

Toffolisに制御されないを削減します。

インクリメンターをToffolisに減らす

これらの3つのステップにより、完全に制御されたものから直線的に多くのToffoli、CNOT、および単一キュービットゲートまで、すべてが得られます。コントロールをインクリメントゲートにマージする方法など、いくつかの暗黙の要素がありますが、それらは非常に単純です。

(図の一貫性のないスタイルについては申し訳ありません。)

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