Answers:
Nielsen&Chuang的图4.10说明了一种简单的方法。
其中U可以是任何单量子位旋转(在这种情况下为X门)。
该电路的工作方式如下:仅当所有控制量子位的AND为1时,我们才想将U应用于目标量子位。正常的Toffoli给出2个量子位的AND。因此,通过链接几个Toffoli,我们可以得到c1.c2.c3.c4.c5,并且发现一些“工作”(或辅助)量子位已被引入来存储中间结果。应用最终的CU之后,我们将最终的结果存入目标。现在,我们可以通过取消中间工作量子位的计算,使它们返回| 0>状态,来清理它们。这种可逆计算的模型被称为“计算-复制-非计算”方法,由Charlie Bennett于1973年首次提出。
这是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)
产量:
我想添加一种不使用ancilla量子位的方法,但是它需要的闸门比不控制而不是更复杂。我相信这种方法是Barenco等人首先提出的。等 在本文中,引理7.5:
这是递归定义,因此控制n量子位门是根据控制n-1量子位门定义的。这将一直持续到您到达两个量子位门CNOT为止。
这种实现有点困难,但是,如果不介意收集相对相位,则存在一种更简单的实现(请参见同一篇论文的7.9引言)。
Qiskit的QuantumCircuit具有MCT方法构建多个控制Toffoli门有几种模式:基本,基本脏,附属物,先进,noancilla。例如具有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 ├
└───┘ └───┘└───┘ └───┘└───┘ └───┘└───┘ └───┘└───┘ └───┘└───┘ └───┘└───┘ └───┘