n- 비트 Toffoli 게이트를 어떻게 구현할 수 있습니까?


답변:


19

이를 수행하는 간단한 방법은 Nielsen & Chuang의 그림 4.10에 설명되어 있습니다. 엔-

여기서 U는 단일 큐 비트 회전 (이 경우 X 게이트) 일 수 있습니다.

이 회로는 다음과 같이 작동합니다. 모든 제어 큐 비트의 AND가 1 인 경우에만 대상 큐 비트에 U를 적용하려고합니다. 일반 Toffoli는 우리에게 2 큐 비트의 AND를 제공합니다. 따라서 몇 개의 Toffolis를 연결함으로써 c1.c2.c3.c4.c5를 얻을 수 있습니다. 중간 결과를 저장하기 위해 일부 "작업"(또는 ancilla) 큐 비트가 도입되었습니다. 최종 CU를 적용한 후 최종 결과를 목표로 얻습니다. 이제 계산을 취소하고 | 0> 상태로 되돌려 중간 작업 큐 비트를 정리할 수 있습니다. 이 가역적 계산 모델은 "컴퓨팅 복사 미 계산"방법으로 알려져 있으며 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 생성 회로


8

ancilla qubits를 사용하지 않지만 제어되지 않는 것보다 더 복잡한 게이트가 필요한 방법을 추가하고 싶습니다. 나는이 방법이 Barenco et. 알. 이 백서에서 , Lemma 7.5 : 여기에 이미지 설명을 입력하십시오

어디 V2=. 이 경우에는V2=엑스따라서

V=12(1+나는1나는1나는1+나는) .

이것은 재귀 적 정의이므로, 제어 n 큐 비트 게이트는 제어 n-1 큐 비트 게이트의 관점에서 정의된다. 이것은 두 큐 비트 게이트 CNOT에 도달 할 때까지 계속됩니다.

이 구현은 조금 어렵지만, 상대적 단계를 모으는 것이 마음에 들지 않으면 더 간단한 방법이 존재합니다 (같은 논문의 Lemma 7.9 참조).

다음과 같은 게이트를 구현하려면 VQISKIT에서는 고급 단일 큐 비트 게이트 를 사용해야합니다 .


Cirq에서이 게이트를 구현 한 사람이 있습니까?
Enrique Segura 1

5

Qiskit의 QuantumCircuit 에는 기본, 기본-더러운-아나 실라, 고급, 노난 실라 등 여러 모드로 다중 제어 토 포리 게이트를 구축하는 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.