← Quantum Store · Guides · Lessons · Glossary · Packages · About · Türkçe

Communication and cryptography course: teleportation, BB84 and post-quantum encryption · Lesson 2 / 5 · 12 min

Quantum teleportation: moving a state with entanglement

The state of a qubit can be transferred to another qubit without sending the qubit itself. All it takes is a Bell pair and two classical bits. Build the teleportation circuit step by step and verify it with Qiskit.

The idea

Alice holds an unknown qubit state and wants to get it to Bob, who is far away. She cannot copy it, and measuring it would destroy it. The solution Bennett and colleagues found in 1993: Alice and Bob share a Bell pair in advance, Alice measures her two qubits together and tells Bob the result, two classical bits, over the phone.

Depending on these two bits Bob applies X and Z corrections to his qubit, and it turns into Alice’s original state. The original state in Alice’s hands is destroyed by the measurement; this is a move, not a copy.

The circuit

q0 holds the state to teleport, q1 holds Alice’s half of the Bell pair and q2 Bob’s. Alice first applies CNOT(q0 → q1) and H(q0), then measures q0 and q1. If q1 gives 1 Bob applies X; if q0 gives 1 he applies Z.

Measuring and then applying a gate depending on the result gives the same outcome as postponing the measurement to the end and making the corrections with controlled gates. That is why the code below and the playground circuit use a CNOT and a CZ instead of measurements. In the end the state of q2 is exactly the initial state of q0.

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector, partial_trace, state_fidelity

original = QuantumCircuit(1)
original.ry(1.0, 0)                 # the "unknown" state to teleport

qc = QuantumCircuit(3)
qc.ry(1.0, 0)
qc.h(1)
qc.cx(1, 2)                         # Bell pair between q1 and q2
qc.cx(0, 1)
qc.h(0)                             # Alice's Bell measurement
qc.cx(1, 2)                         # X correction if q1 gave 1
qc.cz(0, 2)                         # Z correction if q0 gave 1

bob = partial_trace(Statevector(qc), [0, 1])     # q2 only
print(round(state_fidelity(bob, Statevector(original)), 6))   # 1.0

Not faster than light

Teleportation does not send information faster than light: if Bob looks at his qubit before he receives Alice’s two classical bits, he only sees random results. And the classical bits travel at most at the speed of light.

Teleportation was demonstrated with photons in 1997. In 2017 China’s Micius satellite received photon states teleported from a ground station up to 1,400 km away. Today teleportation is seen as one of the basic operations of a quantum internet that will connect quantum computers.

Try it yourself

The |1⟩ state of q0 was teleported to q2: the leftmost bit is always 1. Remove the X on q0 so that |0⟩ is teleported: the leftmost bit is always 0. Then put the X back and remove the first CNOT between q1 and q2: without the Bell pair teleportation breaks down.

Open the circuit in your browser

The circuit playground is in Turkish. Button guide: “1000 kez ölç” = measure 1000 times, “Durum vektörünü göster” = show the state vector, “Bu devrenin Qiskit kodu” = this circuit’s Qiskit code, “Geri al” = undo, “Temizle” = clear. Click a gate in the circuit to remove it.

Key points

Test yourself

What does Bob need to receive from Alice to correct his qubit in quantum teleportation?

Show the answer

Two classical bits. Alice’s measurement result is two classical bits; Bob applies the X and Z corrections depending on them.

← The no-cloning theorem: why quantum information cannot be copied · Superdense coding: two bits with one qubit →

Share: X · LinkedIn