From d3b96730bd01263098bbb96c15148878e5633a04 Mon Sep 17 00:00:00 2001 From: Prefetch Date: Sat, 8 May 2021 16:08:41 +0200 Subject: Expand knowledge base, change text alignment --- .../concept/repetition-code/bit-flip-detect.png | Bin 0 -> 22335 bytes .../concept/repetition-code/bit-flip-encode.png | Bin 0 -> 11662 bytes content/know/concept/repetition-code/index.pdc | 349 +++++++++++++++++++++ .../concept/repetition-code/phase-flip-detect.png | Bin 0 -> 30334 bytes .../concept/repetition-code/phase-flip-encode.png | Bin 0 -> 14945 bytes .../concept/repetition-code/shor-code-encode.png | Bin 0 -> 37994 bytes 6 files changed, 349 insertions(+) create mode 100644 content/know/concept/repetition-code/bit-flip-detect.png create mode 100644 content/know/concept/repetition-code/bit-flip-encode.png create mode 100644 content/know/concept/repetition-code/index.pdc create mode 100644 content/know/concept/repetition-code/phase-flip-detect.png create mode 100644 content/know/concept/repetition-code/phase-flip-encode.png create mode 100644 content/know/concept/repetition-code/shor-code-encode.png (limited to 'content/know/concept/repetition-code') diff --git a/content/know/concept/repetition-code/bit-flip-detect.png b/content/know/concept/repetition-code/bit-flip-detect.png new file mode 100644 index 0000000..0532421 Binary files /dev/null and b/content/know/concept/repetition-code/bit-flip-detect.png differ diff --git a/content/know/concept/repetition-code/bit-flip-encode.png b/content/know/concept/repetition-code/bit-flip-encode.png new file mode 100644 index 0000000..7c78667 Binary files /dev/null and b/content/know/concept/repetition-code/bit-flip-encode.png differ diff --git a/content/know/concept/repetition-code/index.pdc b/content/know/concept/repetition-code/index.pdc new file mode 100644 index 0000000..7245cbc --- /dev/null +++ b/content/know/concept/repetition-code/index.pdc @@ -0,0 +1,349 @@ +--- +title: "Repetition code" +firstLetter: "R" +publishDate: 2021-05-07 +categories: +- Quantum information + +date: 2021-05-07T15:10:43+02:00 +draft: false +markup: pandoc +--- + +# Repetition code + +A **repetition code** is a simple approach to error correction: +to protect a bit $x$, make two copies: + +$$\begin{aligned} + 0 \to 000 + \qquad \quad + 1 \to 111 +\end{aligned}$$ + +If a single-bit error occurs, e.g. $000 \to 100$, +a majority vote resets the minority bit. +Clearly, this does not protect against multi-bit errors, +but that is usually not necessary. + +In quantum computing, where error correction is much more important, +repetition codes can also be used, +albeit with some complications, +as discussed below. + + +## Bit flip code + +Suppose that we want to detect errors in +the following arbitrary qubit state $\ket{\psi}$: + +$$\begin{aligned} + \ket{\psi} + = \alpha \ket{0} + \beta \ket{1} +\end{aligned}$$ + +For now, let us limit ourselves to detecting **bit flips**, +where $\alpha$ and $\beta$ get switched: + +$$\begin{aligned} + \alpha \ket{0} + \beta \ket{1} + \quad \to \boxed{\mathrm{Error}} \to \quad + \beta \ket{0} \!+\! \alpha \ket{1} +\end{aligned}$$ + +One way to defend against this is +the quantum version of a classical repetition code: + +$$\begin{aligned} + \ket{\psi} + \quad \to \boxed{\mathrm{Encoder}} \to \quad + \ket*{\overline{\psi}} + = \alpha \ket{000} + \beta \ket{111} +\end{aligned}$$ + +In other words, a *logical* $\ket{0}$ (written $\ket*{\overline{0}}$) +is represented by 3 *physical* qubits, and vice versa: + +$$\begin{aligned} + \boxed{ + \ket{0} + \to + \ket*{\overline{0}} + = \ket{000} + \qquad \quad + \ket{1} + \to + \ket*{\overline{1}} + = \ket{111} + } +\end{aligned}$$ + +Such a transformation is easy to achieve with the following sequence +of [quantum gates](/know/concept/quantum-gate/): + + + + + +So, a little while after encoding the state $\ket{\psi}$ like that, +a bit flip occurs on the 2nd qubit: + +$$\begin{aligned} + \ket*{\overline{\psi}} + \quad \to \boxed{\mathrm{Error}} \to \quad + \alpha \ket{010} + \beta \ket{101} +\end{aligned}$$ + +But now there is a problem: how do we detect this error? +We could measure the state, but that would make it collapse, +which is probably not what we want. + +The trick is to use operators called **stabilizers**, +in this case for example $ZZI = Z_1 \otimes Z_2 \otimes I_3$, +where $I$ is identity and $Z$ is the Pauli-$Z$ gate. +The 3-qubit basis states are its eigenvectors: + +$$\begin{alignedat}{2} + ZZI \ket{000} + &= + \ket{000} + \qquad + ZZI \ket{001} + &&= + \ket{001} + \\ + ZZI \ket{010} + &= - \ket{010} + \qquad + ZZI \ket{011} + &&= - \ket{011} + \\ + ZZI \ket{100} + &= - \ket{100} + \qquad + ZZI \ket{101} + &&= - \ket{101} + \\ + ZZI \ket{110} + &= + \ket{110} + \qquad + ZZI \ket{111} + &&= + \ket{111} +\end{alignedat}$$ + +We could measure $ZZI$ for $\ket*{\overline{\psi}}$, +and if the eigenvalue is $-1$, +we know that a bit flip has occurred, +whereas if the eigenvalue is $+1$, +there is *maybe* no error ($\ket{001}$ and $\ket{110}$ are false negatives). + +These false negatives are fixed by including another stabilizer $IZZ$, +with these eigenvectors: + +$$\begin{alignedat}{2} + IZZ \ket{000} + &= + \ket{000} + \qquad + IZZ \ket{001} + &&= - \ket{001} + \\ + IZZ \ket{010} + &= - \ket{010} + \qquad + IZZ \ket{011} + &&= + \ket{011} + \\ + IZZ \ket{100} + &= + \ket{100} + \qquad + IZZ \ket{101} + &&= - \ket{101} + \\ + IZZ \ket{110} + &= - \ket{110} + \qquad + IZZ \ket{111} + &&= + \ket{111} +\end{alignedat}$$ + +In which case $\ket{100}$ and $\ket{011}$ are false negatives. +In other words, $IZZ$ cannot detect if the 1st qubit was flipped, +while $ZZI$ cannot protect the 3rd qubit. +But by using both, we know exactly which qubit was flipped +thanks to the eigenvalues: + +
Error | +$ZZI$ | +$IZZ$ | +
---|---|---|
$I$ | +$+1$ | +$+1$ | +
$X_1$ | +$-1$ | +$+1$ | +
$X_2$ | +$-1$ | +$-1$ | +
$X_1$ | +$+1$ | +$-1$ | +