1

我正在尝试在 qiskit 中实现 qiskit 教科书中的量子隐形传态协议:我从 q_0 bit = 1 开始,我希望 q_3 = 1 最后但它不起作用。

from qiskit import *

qc = QuantumCircuit(3, 3)

qc.x(0) #q -> 1
qc.barrier()

qc.h(1)
qc.cx(1, 2)
qc.barrier()
# Next, apply the teleportation protocol.
qc.cx(0, 1)
qc.h(0)
qc.barrier()
# We measure these qubits and use the classical results to perform an operation
qc.measure(0, 0)
qc.measure(1, 1)
qc.cx(1, 2)
qc.cz(0, 2)
#qc.barrier()
backend = Aer.get_backend('qasm_simulator')
job = execute(qc, backend, shots=1, memory=True).result()
result = job.get_memory()[0]
qc.measure(2, 2)
print(job.get_memory()[0]) #q = 0
4

2 回答 2

0

看起来它正在按预期工作。在教科书中,它在代码单元的末尾说:

原则上,如果隐形传输协议有效,我们有 q[2] = secret_unitary|0> 因此,我们应该能够通过应用 secret_unitary 的反转来恢复 q[2] = |0>,​​因为对于单一的 u, u^匕首 u = I。

你有你的secret_unitaryas 'x',这实际上将 Alice 的第一个 qubit 更改为 1。但是,在电路结束时,应用了 secret_unitary 的匕首,取消了secret_unitary. 您应该会看到 q[2] 为 0,因为这意味着来自 q[0](在本例中为 1)的状态已成功传送到 q[2],然后被 q[2] 的匕首带回 0 secret_unitary.

于 2020-03-31T14:04:20.960 回答
0

在此处输入图像描述

从你的代码中,我得到了电路。我认为无法正确获得 q_3 的原因。是“量子位测量后有指令”。测量后不能再进行操作。但我不确定这是否是原因。

于 2020-12-28T17:45:11.577 回答