This project extends your work in Week 21 to implement, simulate, and analyze the first ever error correction code proposed that can handle any single qubit errors (bit-flips, phase-flips, or others) using the Shor code (Sho95).
The Shor code is a natural extension of the Bit- and Phase- flip codes that avoid syndrome measurements where:
- A bit-flip error means
$|0\rangle$ unintentionally turning into$|1\rangle$ or vice versa. - A phase-flip error means
$|+\rangle$ unintentionally turning into$|-\rangle$ or vice versa.
This code can be viewed as two levels of quantum error correction where:
- The logical qubits are first encoded into a 3-qubit phase-flip code.
- Each of the resulting physical qubits are encoded into a 3-qubit bit-flip code.
In this project, you will answer the following questions:
-
How does using the Shor code compare to using no error correction? Are there any trends you notice?
-
When using the Shor code, how does the average fidelity change with increasing probability of errors? Why is this?
-
Are there any unexpected patterns in the average fidelity? Why do you think they might be happening if so?
This project is broken into 3 parts:
Part 1: Defining the Components
Part 1.1: The Phase-Flip Code
Part 1.2: The Bit-Flip Code
Part 2: Implementing the Shor Code
Part 3: Analyzing the Shor Code
Wrapping Up
- Week 21 Lab Solutions (Bit-Flip Code and Noise Models)
- Week 21 Homework Solutions (Phase-Flip Code)
- Qiskit's
circuit.compose(...)
function documentation - Qiskit's
Statevector(...)
documentation - Quantum Error Correction for Beginners
- Scheme for reducing decoherence in quantum computer memory: The original paper from by Shor proposing this code (behind a paywall)