nビットToffoliゲートを実装するにはどうすればよいですか?


回答:


18

これを行う簡単な方法は、Nielsen&Chuangの図4.10に示されています。 n-

Uは任意の単一キュービット回転(この場合はXゲート)です。

この回路は次のように機能します。すべての制御キュービットのANDが1の場合にのみ、ターゲットキュービットにUを適用します。通常のToffoliは、2キュービットのANDを返します。そのため、いくつかのToffolisを連鎖させると、中間結果を保存するために「作業」(または補助)量子ビットが導入されたというキャッチとともに、c1.c2.c3.c4.c5を取得できます。最終的なCUを適用した後、ターゲットで最終結果を取得します。これで、計算を元に戻し、| 0>状態に戻すことにより、中間作業キュービットをクリーンアップできます。この可逆計算のモデルは、「compute-copy-uncompute」メソッドとして知られており、1973年にCharlie Bennettによって最初に提案されました

以下は、回路を構築して視覚化するQISKitコードです。

from qiskit import QuantumRegister, QuantumCircuit

n = 5  # must be >= 2

ctrl = QuantumRegister(n, 'ctrl')
anc = QuantumRegister(n-1, 'anc')
tgt = QuantumRegister(1, 'tgt')

circ = QuantumCircuit(ctrl, anc, tgt)

# compute
circ.ccx(ctrl[0], ctrl[1], anc[0])
for i in range(2, n):
    circ.ccx(ctrl[i], anc[i-2], anc[i-1])

# copy
circ.cx(anc[n-2], tgt[0])

# uncompute
for i in range(n-1, 1, -1):
    circ.ccx(ctrl[i], anc[i-2], anc[i-1])
circ.ccx(ctrl[0], ctrl[1], anc[0])    

from qiskit.tools.visualization import circuit_drawer
circuit_drawer(circ)

利回り:

qiskitが生成した回路


7

補助量子ビットを使用しないが、単なる制御ではなくゲートよりも複雑なメソッドを追加したい。この方法はBarencoらによって最初に提示されたと思います。等 この論文では、補題7.5: ここに画像の説明を入力してください

V2=うんV2=バツ

V=121+111+ 

これは再帰的な定義であるため、コントロールnキュービットゲートはコントロールn-1キュービットゲートに関して定義されます。これは、2つのキュービットゲートCNOTに到達するまで続きます。

この実装は少し難しいですが、相対的なフェーズの収集を気にしない場合は、より単純な実装が存在します(同じ論文の補題7.9を参照)。

などのゲートを実装するにはVQISKITでするには、高度なシングルキュービットゲートを使用する必要があります


Cirqでこのゲートの実装に取り​​組んだ人はいますか?
エンリケセグラ

5

QiskitのQuantumCircuitは、複数のモード(基本、基本、ダーティアンシーラ、アドバンスト、ノアンシーラ)でマルチコントロールToffoliゲートを構築するmctメソッドがあります。たとえば、3つの制御キュービットを持つToffoliゲート:

from qiskit import QuantumCircuit, QuantumRegister

controls = QuantumRegister(3, "c_qb")
target = QuantumRegister(1, "t_qb")
circuit = QuantumCircuit(controls, target)

circuit.mct(controls, target[0], None, mode='advanced')

print(circuit)

出力:

c_qb_0: |0>──────■────────■────────────────■──────────────────────────────────■──────────────────────────────────■────────────────────
                 │      ┌─┴─┐            ┌─┴─┐                                │                                  │                    
c_qb_1: |0>──────┼──────┤ X ├──────■─────┤ X ├──────■────────■────────────────┼─────────────────■────────────────┼────────────────────
                 │      └───┘      │     └───┘      │      ┌─┴─┐            ┌─┴─┐             ┌─┴─┐            ┌─┴─┐                  
c_qb_2: |0>──────┼─────────────────┼────────────────┼──────┤ X ├──────■─────┤ X ├──────■──────┤ X ├──────■─────┤ X ├──────■───────────
           ┌───┐ │-pi/4 ┌───┐┌───┐ │pi/4 ┌───┐┌───┐ │-pi/4 ├───┤┌───┐ │pi/4 ├───┤┌───┐ │-pi/4 ├───┤┌───┐ │pi/4 ├───┤┌───┐ │-pi/4 ┌───┐
t_qb_0: |0>┤ H ├─■──────┤ H ├┤ H ├─■─────┤ H ├┤ H ├─■──────┤ H ├┤ H ├─■─────┤ H ├┤ H ├─■──────┤ H ├┤ H ├─■─────┤ H ├┤ H ├─■──────┤ H ├
           └───┘        └───┘└───┘       └───┘└───┘        └───┘└───┘       └───┘└───┘        └───┘└───┘       └───┘└───┘        └───┘
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.