首页 > 解决方案 > 在 qiskit 中实现量子隐形传态

问题描述

我正在尝试在 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

标签: quantum-computingqiskit

解决方案


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

原则上,如果隐形传输协议有效,我们有 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.


推荐阅读