Superdense Coding
What You'll Learn: How to send 2 classical bits of information by transmitting only 1 qubit — using a pre-shared entangled pair to double the classical capacity of a quantum channel.
Level: Beginner | Time: 15 minutes | Qubits: 2 | Framework: Qiskit
Prerequisites: Bell State
The Idea
Normally, one physical bit (classical or quantum) can carry one bit of information. But if Alice and Bob share an entangled Bell pair beforehand, Alice can encode two classical bits into her single qubit by choosing which of four gates to apply. When Bob receives Alice's qubit, he performs a Bell measurement on both qubits and recovers the full 2-bit message.
This is called "superdense" because the information density exceeds what's classically possible: 2 bits of information per qubit transmitted. The extra capacity comes from the pre-shared entanglement — you can think of it as a one-time resource that "upgrades" the channel.
Superdense coding is the exact dual of quantum teleportation:
| Teleportation | Superdense Coding | |
|---|---|---|
| Sends | 1 qubit state | 2 classical bits |
| Uses | 1 Bell pair + 2 cbits | 1 Bell pair + 1 qubit |
| Direction | Quantum → Classical → Quantum | Classical → Quantum → Classical |
How It Works
The Circuit
CODE┌───┐ ┌─────────┐ ┌───┐ q_0: ┤ H ├──■──┤ encode ├──■──┤ H ├── M └───┘┌─┴─┐└─────────┘┌─┴─┐└───┘ q_1: ─────┤ X ├───────────┤ X ├──────── M └───┘ └───┘
Step 1: Share a Bell Pair
PYTHONqc.h(0) # Superposition on qubit 0 qc.cx(0, 1) # Entangle: |Φ+⟩ = (|00⟩ + |11⟩)/√2
Alice takes qubit 0, Bob takes qubit 1. They separate — potentially to different locations.
Step 2: Alice Encodes Her Message
Alice applies one of four single-qubit gates to her qubit, transforming the shared Bell state into one of the four Bell states:
| Message | Gate | Bell State | Action |
|---|---|---|---|
| 00 | I (nothing) | |Φ+⟩ = ( | 00⟩ + |
| 01 | X (bit flip) | |Ψ+⟩ = ( | 01⟩ + |
| 10 | Z (phase flip) | |Φ-⟩ = ( | 00⟩ - |
| 11 | XZ (both) | |Ψ-⟩ = ( | 01⟩ - |
Step 3: Bob Decodes
Alice sends her qubit to Bob. Now Bob has both qubits and performs the reverse Bell circuit (CNOT then H) to map each Bell state back to a unique computational basis state:
PYTHONqc.cx(0, 1) # Reverse CNOT qc.h(0) # Reverse Hadamard qc.measure([0, 1], [0, 1])
| Bell State | After Decode | Bob Reads |
|---|---|---|
| |Φ+⟩ | |00⟩ | 00 |
| |Ψ+⟩ | |01⟩ | 01 |
| |Φ-⟩ | |10⟩ | 10 |
| |Ψ-⟩ | |11⟩ | 11 |
Bob always recovers the exact 2-bit message — deterministically, with no errors.
The Math
Encoding
Starting from the shared Bell state |Φ+⟩ = (|00⟩ + |11⟩)/√2:
- I ⊗ I: (|00⟩ + |11⟩)/√2 = |Φ+⟩
- X ⊗ I: (|10⟩ + |01⟩)/√2 = |Ψ+⟩
- Z ⊗ I: (|00⟩ − |11⟩)/√2 = |Φ-⟩
- XZ ⊗ I: (|10⟩ − |01⟩)/√2 = −|Ψ-⟩
Decoding
The reverse Bell circuit maps:
- CNOT: |Φ+⟩ → (|00⟩ + |10⟩)/√2 = |+0⟩
- H: |+0⟩ → |00⟩
For each Bell state, this produces a unique 2-bit outcome, which is exactly Alice's message.
Why It Works
The four Bell states form a complete orthonormal basis for two-qubit systems. Since they're orthogonal, Bob can perfectly distinguish them with a single measurement. Alice's single-qubit gate rotates through this 4-element basis, encoding log₂(4) = 2 bits of information.
Expected Output
Each message decodes deterministically with probability 1:
| Sent | Decoded | Probability |
|---|---|---|
| 00 | 00 | 100% |
| 01 | 01 | 100% |
| 10 | 10 | 100% |
| 11 | 11 | 100% |
On real hardware: Gate errors reduce the decoding fidelity. The fraction of correctly decoded messages is a measure of the channel quality.
Running the Circuit
PYTHONfrom circuit import run_circuit, verify_superdense_coding # Send a specific message counts = run_circuit(message="10", shots=1024) print(counts) # {'10': 1024} # Verify all four messages result = verify_superdense_coding(shots=4096) for check in result["checks"]: print(f" {check['name']}: {check['detail']}")
Try It Yourself
-
Send all four messages: Run the circuit with each of "00", "01", "10", "11" and verify Bob always decodes correctly.
-
Remove the Bell pair: Delete the H and CX that create the entangled pair. Can Alice still send 2 bits with 1 qubit? (No — without entanglement, 1 qubit carries at most 1 bit.)
-
Add noise: Use Qiskit's noise model to simulate depolarizing errors. Which messages are most affected?
-
Compare with teleportation: Run both protocols side by side and observe their dual structure.
What's Next
- Quantum Teleportation — The dual protocol: send 1 qubit using 2 classical bits + entanglement
- Bell State — Review the entangled pair that enables superdense coding
- Deutsch-Jozsa — Your first quantum algorithm: solve a problem exponentially faster than any classical approach
Applications
| Application | How Superdense Coding Is Used |
|---|---|
| Quantum Communication | Double the classical capacity of a quantum channel |
| Quantum Networks | Efficient classical data transfer over quantum links |
| Entanglement-Assisted Codes | Foundation for quantum error-correcting codes that use pre-shared entanglement |
| Quantum Complexity Theory | Proves communication complexity separations between quantum and classical |
References
- Bennett, C.H. & Wiesner, S.J. (1992). "Communication via One- and Two-Particle Operators on Einstein-Podolsky-Rosen States." Physical Review Letters 69(20), 2881-2884. DOI: 10.1103/PhysRevLett.69.2881
- Mattle, K. et al. (1996). "Dense Coding in Experimental Quantum Communication." Physical Review Letters 76(25), 4656-4659.
- Nielsen, M.A. & Chuang, I.L. Quantum Computation and Quantum Information, Section 2.3.