0904.2557
0904.2557
Daniel Gottesman
Abstract. Quantum states are very delicate, so it is likely some sort of quan-
tum error correction will be necessary to build reliable quantum computers.
The theory of quantum error-correcting codes has some close ties to and some
striking differences from the theory of classical error-correcting codes. Many
quantum codes can be described in terms of the stabilizer of the codewords.
The stabilizer is a finite Abelian group, and allows a straightforward character-
ization of the error-correcting properties of the code. The stabilizer formalism
for quantum codes also illustrates the relationships to classical coding theory,
particularly classical codes over GF(4), the finite field with four elements. To
build a quantum computer which behaves correctly in the presence of errors, we
also need a theory of fault-tolerant quantum computation, instructing us how
to perform quantum gates on qubits which are encoded in a quantum error-
correcting code. The threshold theorem states that it is possible to create a
quantum computer to perform an arbitrary quantum computation provided
the error rate per physical gate or time step is below some constant threshold
value.
1
2 DANIEL GOTTESMAN
about this, the small errors will build up over the course of the computation, and
eventually will become a big error.
Furthermore, quantum states are intrinsically delicate: looking at one collapses
it. α|0i + β|1i becomes |0i with probability |α|2 and |1i with probability |β|2 . The
environment is constantly trying to look at the state, a process called decoherence.
One goal of quantum error correction will be to prevent the environment from
looking at the data.
There is a well-developed theory of classical error-correcting codes, but it
doesn’t apply here, at least not directly. For one thing, we need to keep the phase
correct as well as correcting bit flips. There is another problem, too. Consider the
simplest classical code, the repetition code:
(1) 0 → 000
(2) 1 → 111
It will correct a state such as 010 to the majority value (becoming 000 in this case).1
We might try a quantum repetition code:
(3) |ψi → |ψi ⊗ |ψi ⊗ |ψi
However, no such code exists because of the No-Cloning theorem [17, 54]:
Theorem 1 (No-Cloning). There is no quantum operation that takes a state
|ψi to |ψi ⊗ |ψi for all states |ψi.
Proof. This fact is a simple consequence of the linearity of quantum mechan-
ics. Suppose we had such an operation and |ψi and |φi are distinct. Then, by the
definition of the operation,
(4) |ψi → |ψi|ψi
(5) |φi → |φi|φi
(6) |ψi + |φi → (|ψi + |φi) (|ψi + |φi) .
(Here, and frequently below, I omit normalization, which is generally unimportant.)
But by linearity,
(7) |ψi + |φi → |ψi|ψi + |φi|φi.
This differs from (6) by the crossterm
(8) |ψi|φi + |φi|ψi.
1Actually, a classical digital computer is using a repetition code – each bit is encoded in
many electrons (the repetition), and after each time step, it is returned to the value held by the
majority of the electrons (the error correction).
QUANTUM ERROR CORRECTION 3
1 0
Identity I= I|ai = |ai
0 1
0 1
Bit Flip X= X|ai = |a ⊕ 1i
1 0
1 0
Phase Flip Z= Z|ai = (−1)a |ai
0 −1
0 −i
Bit & Phase Y = = iXZ Y |ai = i(−1)a |a ⊕ 1i
i 0
Table 1. The Pauli matrices
Note that this does not violate the No-Cloning theorem, since an arbitrary
codeword will be a linear superposition of these two states
⊗3
(11) α|0i + β|1i =
6 [α(|000i + |111i) + β(|000i − |111i)] .
The superposition is linear in α and β. The complete set of codewords for this (or
any other) quantum code form a linear subspace of the Hilbert space, the coding
space.
The inner layer of this code corrects bit flip errors: We take the majority within
each set of three, so
(12) |010i ± |101i → |000i ± |111i.
The outer layer corrects phase flip errors: We take the majority of the three signs,
so
(13) (|·i + |·i)(|·i − |·i)(|·i + |·i) → (|·i + |·i)(|·i + |·i)(|·i + |·i).
Since these two error correction steps are independent, the code also works if there
is both a bit flip error and a phase flip error.
Note that in both cases, we must be careful to measure just what we want to
know and no more, or we would collapse the superposition used in the code. I’ll
discuss this in more detail in section 2.3.
The bit flip, phase flip, and combined bit and phase flip errors are important, so
let’s take a short digression to discuss them. We’ll also throw in the identity matrix,
which is what we get if no error occurs. The definitions of these four operators are
given in table 1. The factor of i in the definition of Y has little practical significance
— overall phases in quantum mechanics are physically meaningless — but it makes
some manipulations easier later. It also makes some manipulations harder, so either
is a potentially reasonable convention.
The group generated by tensor products of these 4 operators is called the Pauli
group. X, Y , and Z anticommute: XZ = −ZX (also written {X, Z} = 0). Sim-
ilarly, {X, Y } = 0 and {Y, Z} = 0. Thus, the n-qubit Pauli group Pn consists of
the 4n tensor products of I, X, Y , and Z, and an overall phase of ±1 or ±i, for
a total of 4n+1 elements. The phase of the operators used is generally not very
important, but we can’t discard it completely. For one thing, the fact that this is
not an Abelian group is quite important, and we would lose that if we dropped the
phase!
Pn is useful because of its nice algebraic properties. Any pair of elements of
Pn either commute or anticommute. Also, the square of any element of Pn is ±1.
We shall only need to work with the elements with square +1, which are tensor
4 DANIEL GOTTESMAN
products of I, X, Y , and Z with an overall sign ±1; the phase i is only necessary
to make Pn a group. Define the weight wt(Q) of an operator Q ∈ Pn to be the
number of tensor factors which are not I. Thus, X ⊗ Y ⊗ I has weight 2.
Another reason the Pauli matrices are important is that they span the space
of 2 × 2 matrices, and the n-qubit Pauli group spans the space of 2n × 2n matrices.
For instance, if we have a general phase error
−iθ/2
1 0 iθ/2 e 0
(14) Rθ/2 = =e
0 eiθ 0 eiθ/2
(again, the overall phase does not matter), we can write it as
θ θ
(15) Rθ/2 = cos I − i sin Z.
2 2
It turns out that our earlier error correction procedure will also correct this
error, without any additional effort. For instance, the earlier procedure might use
some extra qubits (ancilla qubits) that are initialized to |0i and record what type
of error occurred. Then we look at the ancilla and invert the error it tells us:
(16) Z α|0i + β|1i ⊗ |0ianc → Z α|0i + β|1i ⊗ |Zianc
(17) → α|0i + β|1i ⊗ |Zianc
(18) I α|0i + β|1i ⊗ |0ianc → I α|0i + β|1i ⊗ |no errorianc
(19) → α|0i + β|1i ⊗ |no errorianc
When the actual error is Rθ/2 , recording the error in the ancilla gives us a
superposition:
θ θ
(20) cos I α|0i + β|1i ⊗ |no errorianc − i sin Z α|0i + β|1i ⊗ |Zianc
2 2
Then we measure the ancilla, which with probability sin2 θ/2 gives us
(21) Z α|0i + β|1i ⊗ |Zianc ,
and with probability cos2 θ/2 gives us
(22) I α|0i + β|1i ⊗ |no errorianc .
In each case, inverting the error indicated in the ancilla restores the original state.
It is easy to see this argument works for any linear combination of errors [43,
46]:
Theorem 2. If a quantum code corrects errors A and B, it also corrects any
linear combination of A and B. In particular, if it corrects all weight t Pauli errors,
then the code corrects all t-qubit errors.
So far, we have only considered individual unitary errors that occur on the
code. But we can easily add in all possible quantum errors. The most general
quantum operation, including decoherence, interacts the quantum state with some
extra qubits via a unitary operation, then discards some qubits. This process can
turn pure quantum states into mixed quantum states, which are normally described
using density matrices. We can write the most general operation as a transformation
on density matrices
X
(23) ρ→ Ei ρEi† ,
i
QUANTUM ERROR CORRECTION 5
P †
where the Ei s are normalized so Ei Ei = I. The density matrix ρ can be con-
sidered to represent an ensemble of pure quantum states |ψi, each of which, in
this case, should be in the coding space of the code. Then this operation simply
performs the following operation on each |ψi:
(24) |ψi → Ei |ψi with probability |Ei |ψi|2 .
If we can correct each of the individual errors Ei , then we can correct this general
error as well. For instance, for quantum operations that only affect a single qubit
of the code, Ei will necessarily be in the linear span of I, X, Y , and Z, so we can
correct it. Thus, in the statement of theorem 2, “all t-qubit errors” really does
apply to all t-qubit errors, not just unitary ones.
We can go even further. It is not unreasonable to expect that every qubit in
our nine-qubit code will be undergoing some small error. For instance, qubit i
experiences the error I + ǫEi , where Ei is some single-qubit error. Then the overall
error is
O
(I + ǫEi ) = I + ǫ E1 ⊗ I ⊗8 + I ⊗ E2 ⊗ I ⊗7 + . . . + O(ǫ2 )
(25)
That is, to order ǫ, the actual error is the sum of single-qubit errors, which we
know the nine-qubit code can correct. That means that after the error correction
procedure, the state will be correct to O(ǫ2 ) (when the two-qubit error terms begin
to become important). While the code cannot completely correct this error, it still
produces a significant improvement over not doing error correction when ǫ is small.
A code correcting more errors would do even better.
2.2. General properties of quantum error-correcting codes. Let us
try to understand what properties are essential to the success of the nine-qubit
code, and derive conditions for a subspace to form a quantum error-correcting code
(QECC).
One useful feature was linearity, which will be true of any quantum code. We
only need to correct a basis of errors (I, X, Y , and Z in the one-qubit case), and
all other errors will follow, as per theorem 2.
In any code, we must never confuse |0i with |1i, even in the presence of errors.
That is, E|0i is orthogonal to F |1i:
(26) h0|E † F |1i = 0.
It is sufficient to distinguish error E from error F when they act on |0i and |1i.
Then a measurement will tell us exactly what the error is and we can correct it:
(27) h0|E † F |0i = h1|E † F |1i = 0
for E 6= F .
But (27) is not necessary: in the nine-qubit code, we cannot distinguish between
Z1 and Z2 , but that is OK, since we can correct either one with a single operation.
To understand the necessary condition, it is helpful to look at the operators F1 =
(Z1 + Z2 )/2 and F2 = (Z1 − Z2 )/2 instead of Z1 and Z2 . F1 and F2 span the same
space as Z1 and Z2 , so Shor’s code certainly corrects them; let us try to understand
how. When we use the F s as the basis errors, now equation (27) is satisfied. That
means we can make a measurement and learn what the error is. We also have to
invert it, and this is a potential problem, since F1 and F2 are not unitary. However,
F1 acts the same way as Z1 on the coding space, so Z1† suffices to invert F1 on the
states of interest. F2 acts the same way as the 0 operator on the coding space. We
6 DANIEL GOTTESMAN
can’t invert this, but we don’t need to — since F2 annihilates codewords, it can
never contribute a component to the actual state of the system.
The requirement to invert the errors produces a third condition:
(28) h0|E † E|0i = h1|E † E|1i.
Either this value is nonzero, as for F1 , in which case some unitary operator will act
the same way as E on the coding space, or it will be zero, as for F2 , in which case
E annihilates codewords and never arises.
These arguments show that if there is some basis for the space of errors for
which equations (26), (27), and (28) hold, then the states |0i and |1i span a quantum
error-correcting code. Massaging these three equations together and generalizing
to multiple encoded qubits, we get the following theorem [8, 31]:
Theorem 3. Suppose E is a linear space of errors acting on the Hilbert space
H. Then a subspace C of H forms a quantum error-correcting code correcting the
errors E iff
(29) hψ|E † E|ψi = C(E)
for all E ∈ E. The function C(E) does not depend on the state |ψi.
Proof. Suppose {Ea } is a basis for E and {|ψi i} is a basis for C. By setting
E and |ψi equal to the basis elements and to the sum and difference of two basis
elements (with or without a phase factor i), we can see that (29) is equivalent to
(30) hψi |Ea† Eb |ψj i = Cab δij ,
where Cab is a Hermitian matrix independent of i and j.
Suppose equation (30) holds. We can diagonalize Cab . This involves choosing
a new basis {Fa } for E, and the result is equations (26), (27), and (28). The
arguments before the theorem show that we can measure the error, determine it
uniquely (in the new basis), and invert it (on the coding space). Thus, we have a
quantum error-correcting code.
Now suppose we have a quantum error-correcting code, and let |ψi and |φi be
two distinct codewords. Then we must have
(31) hψ|E † E|ψi = hφ|E † E|φi
for all E. That is, (29) must hold. If not, E changes the relative size of |ψi and
|φi. Both |ψi + |φi and |ψi + c|φi are valid codewords, and
(32) E(|ψi + |φi) = N (|ψi + c|φi),
where N is a normalization factor and
(33) c = hψ|E † E|ψi/hφ|E † E|φi.
The error E will actually change the encoded state, which is a failure of the code,
unless c = 1.
even further, and only use Pauli operators as Ea and Eb , since they will span the
space of t-qubit errors. This leads us to a third variation of the condition:
(34) hψ|E|ψi = C ′ (E),
where E is now any operator acting on 2t qubits (that is, it replaces Ea† Eb in (30)).
This can be easily interpreted as saying that no measurement on 2t qubits can learn
information about the codeword. Alternatively, it says we can detect up to 2t errors
on the code without necessarily being able to say what those errors are. That is,
we can distinguish those errors from the identity.
If the matrix Cab in (30) has maximum rank, the code is called nondegenerate.
If not, as for the nine-qubit code, the code is degenerate. In a degenerate code,
different errors look the same when acting on the coding subspace.
For a nondegenerate code, we can set a simple bound on the parameters of
the code simply by counting states. Each error E acting on each basis codeword
|ψi i produces a linearly independent state. All of these states must fit in the full
Hilbert space of n qubits, which has dimension 2n . If the code encodes k qubits,
and corrects errors on up to t qubits, then
t
X n
(35) 3j 2k ≤ 2n .
j=0
j
The quantity in parentheses is the number of errors of weight t or less: that is, the
number of tensor products of I, X, Y , and Z that are the identity in all but t or
fewer places. This inequality is called the quantum Hamming bound. While the
quantum Hamming bound only applies to nondegenerate codes, we do not know of
any codes that beat it.
For t = 1, k = 1, the quantum Hamming bound tells us n ≥ 5. In fact, there
is a code with n = 5, which you will see later. A code that corrects t errors is said
to have distance 2t + 1, because it takes 2t + 1 single-qubit changes to get from
one codeword to another. We can also define distance as the minimum weight of
an operator E that violates equation (34) (a definition which also allows codes of
even distance). A quantum code using n qubits to encode k qubits with distance d
is written as an [[n, k, d]] code (the double brackets distinguish it from a classical
code). Thus, the nine-qubit code is a [[9, 1, 3]] code, and the five-qubit code is a
[[5, 1, 3]] code.
We can also set a lower bound telling us when codes exist. I will not prove this
here, but an [[n, k, d]] code exists when
d−1
X n
(36) 3j 2k ≤ 2n
j=0
j
(known as the quantum Gilbert-Varshamov bound [12]). This differs from the
quantum Hamming bound in that the sum goes up to d − 1 (which is equal to 2t)
rather than stopping at t.
Theorem 4. A quantum [[n, k, d]] code exists when (36) holds. Any nondegen-
erate [[n, k, d]] code must satisfy (35). For large n, R = k/n and p = d/2n fixed,
the best nondegenerate quantum codes satisfy
(37) 1 − 2p log2 3 − H(2p) ≤ R ≤ 1 − p log2 3 − H(p),
8 DANIEL GOTTESMAN
2.3. Stabilizer codes. Now let us return to the nine-qubit code, and examine
precisely what we need to do to correct errors.
First, we must determine if the first three qubits are all the same, and if not,
which is different. We can do this by measuring the parity of the first two qubits
and the parity of the second and third qubits. That is, we measure
(39) Z ⊗ Z ⊗ I and I ⊗ Z ⊗ Z.
The first tells us if an X error has occurred on qubits one or two, and the second
tells us if an X error has occurred on qubits two or three. Note that the error
detected in both cases anticommutes with the error measured. Combining the two
pieces of information tells us precisely where the error is.
We do the same thing for the other two sets of three. That gives us four more
operators to measure. Note that measuring Z ⊗ Z gives us just the information we
want and no more. This is crucial so that we do not collapse the superpositions
used in the code. We can do this by bringing in an ancilla qubit. We start it in the
state |0i + |1i and perform controlled-Z operations to the first and second qubits
of the code:
X X
cabc |0i|abci + (−1)a⊕b |1i|abci
(40) (|0i + |1i) cabc |abci →
abc abc
X
(41) = cabc |0i + (−1)parity(a,b) |1i |abci.
abc
At this point, measuring the ancilla in the basis |0i ± |1i will tell us the eigenvalue
of Z ⊗ Z ⊗ I, but nothing else about the data.
Second, we must check if the three signs are the same or different. We do this
by measuring
(42) X ⊗X ⊗X ⊗X ⊗X ⊗X ⊗I ⊗I ⊗I
QUANTUM ERROR CORRECTION 9
Z Z I I I I I I I
I Z Z I I I I I I
I I I Z Z I I I I
I I I I Z Z I I I
I I I I I I Z Z I
I I I I I I I Z Z
X X X X X X I I I
I I I X X X X X X
Table 2. The stabilizer for the nine-qubit code. Each column
represents a different qubit.
and
(43) I ⊗ I ⊗ I ⊗ X ⊗ X ⊗ X ⊗ X ⊗ X ⊗ X.
This gives us a total of 8 operators to measure. These two measurements detect
Z errors on the first six and last six qubits, correspondingly. Again note that the
error detected anticommutes with the operator measured.
This is no coincidence: in each case, we are measuring an operator M which
should have eigenvalue +1 for any codeword:
(44) M |ψi = |ψi.
If an error E which anticommutes with M has occurred, then the true state is E|ψi,
and
(45) M (E|ψi) = −EM |ψi = −E|ψi.
That is, the new state has eigenvalue −1 instead of +1. We use this fact to correct
errors: each single-qubit error E anticommutes with a particular set of operators
{M }; which set, exactly, tells us what E is.
In the case of the nine-qubit code, we cannot tell exactly what E is, but it does
not matter. For instance, we cannot distinguish Z1 and Z2 because
(46) Z1 Z2 |ψi = |ψi ⇐⇒ Z1 |ψi = Z2 |ψi.
This is an example of the fact that the nine-qubit code is degenerate.
Table 2 summarizes the operators we measured. These 8 operators generate an
Abelian group called the stabilizer of the nine-qubit code. The stabilizer contains
all operators M in the Pauli group for which M |ψi = |ψi for all |ψi in the code.
Conversely, given an Abelian subgroup S of the Pauli group Pn (which, if you
recall, consists of tensor products of I, X, Y , and Z with an overall phase of ±1, ±i),
we can define a quantum code T (S) as the set of states |ψi for which M |ψi = |ψi
for all M ∈ S. S must be Abelian and cannot contain −1, or the code is trivial: If
M, N ∈ S,
(47) M N |ψi = M |ψi = |ψi
(48) N M |ψi = N |ψi = |ψi
so
(49) [M, N ]|ψi = M N |ψi − N M |ψi = 0.
Since elements of the Pauli group either commute or anticommute, [M, N ] = 0.
Clearly, if M = −1 ∈ S, there is no nontrivial |ψi for which M |ψi = |ψi.
10 DANIEL GOTTESMAN
Z Z Z Z I I I
Z Z I I Z Z I
Z I Z I Z I Z
X X X X I I I
X X I I X X I
X I X I X I X
Table 3. Stabilizer for the seven-qubit code.
2In fact, the true distance of the code could be larger than expected because of the possibility
of degeneracy, which would not have been a factor for the classical codes.
12 DANIEL GOTTESMAN
X Z Z X I
I X Z Z X
X I X Z Z
Z X I X Z
Table 4. The stabilizer for the five-qubit code.
on each qubit of the code, we switch the Z basis with the X basis, and C1 with C2 ,
so the codewords are now
X
(54) |u + wi (u ∈ C2 ).
w∈C1⊥
Thus, to correct errors for a CSS code, we can measure the parities of C1 in the Z
basis, and the parities of C2 in the X basis.
Another even smaller quantum code is the [[5, 1, 3]] code I promised earlier [8,
34]. Its stabilizer is given in table 4. I leave it to you to verify that it commutes
and actually does have distance 3. You can also work out the codewords. Since
multiplication by M ∈ S merely rearranges elements of the group S, the sum
!
X
(55) M |φi
M∈S
is in the code for any state |φi. You only need find two states |φi for which (55) is
nonzero. Note that as well as telling us about the error-correcting properties of the
code, the stabilizer provides a more compact notation for the coding subspace than
listing the basis codewords.
A representation of stabilizers that is often useful is as a pair of binary matrices,
frequently written adjacent with a line between them [12]. The first matrix has a
1 everywhere the stabilizer has an X or a Y , and a 0 elsewhere; the second matrix
has a 1 where the stabilizer has a Y or a Z. Multiplying together Pauli operators
corresponds to adding the two rows for both matrices. Two operators M and
N commute iff their binary vector representations (a1 |b1 ), (a2 , b2 ) are orthogonal
under a symplectic inner product: a1 b2 + b1 a2 = 0. For instance, the stabilizer for
the five-qubit code becomes the matrix
1 0 0 1 0 0 1 1 0 0
0 1 0 0 1 0 0 1 1 0
(56)
1 0 1 0 0
.
0 0 0 1 1
0 1 0 1 0 1 0 0 0 1
As an example of an application of this representation, let us prove a fact used
above:
Lemma 1. Given any stabilizer S, there is always at least one error with any
given error syndrome.
Proof. Suppose S has a generators. The error syndrome of a Pauli operator
E can be defined as an a-component binary vector with the ith entry indicating
whether the ith generator of S commutes with E (the ith bit is 0) or anticommutes
(the ith bit is 1). Thus, if xi is the binary vector representing the ith generator
of S and e is the binary vector representing E, then E has error syndrome v iff
xi ⊙ e = vi , where ⊙ is the symplectic inner product. The generators of S give
QUANTUM ERROR CORRECTION 13
Stabilizers GF(4)
I 0
Z 1
X ω
Y ω2
tensor products vectors
multiplication addition
[M, N ] = 0 tr(M · N ) = 0
N (S) dual
Table 5. Connections between stabilizer codes and codes over GF(4).
likely, this will include control techniques like dynamical decoupling as a first layer
of defense, perhaps followed by specialized error-correcting codes such as a DFS or a
phase QECC to handle certain dominant error types, with a more general quantum
error-correcting code as the final protection to deal with any kinds of errors not
eliminated by the first two layers. However, everything we do — every qubit we
add, every additional gate we perform — will have errors in it too, so additional
specialized layers of protection come with a cost, not just in additional overhead,
but also in additional errors that will need to be cleaned up by the final QECC. It
can become a difficult balancing act to judge precisely which protections are useful
and which cause more trouble than they are worth.
3.4. The logical Pauli group. The group N (S) has already played an im-
portant role in analyzing a code’s ability to correct errors, and it will be nearly as
important later when we discuss fault-tolerant quantum computation. Therefore,
it is helpful to pause briefly to further consider its structure.
The elements of N (S) are those Pauli operators which commute with everything
in the stabilizer. Consider how E ∈ N (S) acts on a codeword of the stabilizer code.
Let M ∈ S; then
(62) M (E|ψi) = EM |ψi = E|ψi.
This is true ∀M ∈ S, so E|ψi ∈ T (S). That is, E takes valid codewords to valid
codewords. Now, if E ∈ S itself, that is unsurprising: In that case, it takes valid
codewords to themselves. If E 6∈ S, this cannot be true — it must take at least one
codeword to a different codeword. It is a logical operation, acting on the encoded
state without interfering with the encoding.3 In general, I will indicate a logical
operation by drawing a line over it. E.g., X is a bit flip on an individual physical
qubit, and X is a logical bit flip, which changes an encoded qubit.
Notice that if F = EM , with M ∈ S, then F ∈ N (S) as well and F |ψi =
EM |ψi = E|ψi for all |ψi ∈ T (S). Thus, two Pauli operators in the same coset of
S in N (S) act the same way, so the different logical operations in N (S) are actually
the elements of N (S)/S. Similarly, note that two Pauli operators E and F have
the same error syndrome iff E and F are in the same coset of N (S) in Pn . There
is always at least one error with any given error syndrome, and |Pn | = 4n+1 , so
|N (S)| = 4 · 2n+k and |N (S)/S| = 4k+1 for an [[n, k, d]] code.
We can in fact identify N (S)/S with the logical Pauli group Pk . You can choose
any maximal Abelian subgroup R of N (S)/S to represent the logical Z operators
(including tensor products of Zs and Is). The size of a maximal Abelian subgroup
is 4 · 2k , since an Abelian subgroup of N (S)/S corresponds to an Abelian subgroup
of Pn which is larger by a factor |S| = 2n−k . By choosing elements of N (S)/S that
have various syndromes with respect to R, you can also identify logical X operators.
Of course, in order to make all this work, you need to choose the basis codewords
appropriately. For instance, the encoded |00 . . . 0i state should be a +1-eigenstate
of every element of R.
3.5. The Clifford group. When working with stabilizer codes, a certain
group of quantum gates shows up very often. These gates are sufficient to en-
code and decode stabilizer codes, and play an important role in the theory of
3Incidentally, this proves that the distance d of a stabilizer code is not accidentally higher
than the distance given in Theorem 5.
16 DANIEL GOTTESMAN
fault-tolerance. The group is most often known as the Clifford group (although its
relationship to Clifford algebras is tenuous), and is defined as
(63) Cn = {U ∈ U (2n ) | U P U † ∈ Pn ∀P ∈ Pn }.
That is, the Clifford group is the normalizer of Pn in the unitary group U (2n ).
Besides being important in the theory of stabilizer codes, the Clifford group is
interesting in its own right. For one thing, it contains some very common quantum
gates. The Hadamard transform H, π/4 phase rotation P , and CNOT gate are all
in the Clifford group:
1 0 0 0
1 1 1 1 0 0 1 0 0
(64) H= √ , P = , CN OT = 0 0 0 1 .
2 1 −1 0 i
0 0 1 0
We can work out how each of these gates acts on the Pauli group by conjugation.
For instance, the Hadamard gate performs the following transformation:
(65) X 7→ Z
Z 7→ X.
There is no need to specify the action of H on Y , since conjugation is a group
homomorphism and Y = iXZ. We can therefore immediately determine that
Y 7→ iZX = −Y . In fact, it turns out that the Clifford group is generated by H,
P , and CNOT.
In general, to specify a Clifford group operator U , it is sufficient to indicate its
action on a generating set for the Pauli group, such as X and Z acting on each of
the n qubits. This is true because the Pauli group forms a basis for the 2n × 2n
matrices, allowing us to learn the action of U on any projector. However, there is
one remaining ambiguity, since if U = eiθ U ′ , then U and U ′ have the same action by
conjugation. Since this sort of global phase has no physical significance, however,
this is not a very harmful ambiguity.
The Clifford group has a binary matrix representation just like stabilizers do.
Based on the argument of the last paragraph, we can specify a Clifford group ele-
ment (up to global phase) by specifying its action on the binary vectors correspond-
ing to the Pauli operators. Since Clifford group elements preserve commutation and
anti-commutation, they correspond to symplectic matrices over the 2n-dimensional
binary vector space. In fact, we can say more. The Pauli group Pn is, by definition,
a normal subgroup of Cn , and because Pauli operators either commute or anticom-
mute, Pauli operators in Cn correspond to the identity symplectic matrix. The
center Z(Cn ) consists of just the diagonal matrices eiφ I, and those also correspond
to the identity symplectic matrix. Let Pn′ = Z(Cn )Pn (that is, the Pauli group, but
with arbitrary phases, not just ±1, ±i). Then Pn′ is the kernal of the map from
the Clifford group to the group Sp(2n, Z2 ) of 2n × 2n binary symplectic matrices.
That is, Cn /Pn′ ∼= Sp(2n, Z2 ), which says that if we only care about the action of
the Clifford group up to phases, the Clifford group is effectively just the group of
symplectic matrices.
As a consequence of this equivalence, there is an efficient classical simulation
of any circuit of Clifford group operators acting on an initial stabilizer state with
final Pauli measurements [22]. Even though the overall action of the circuit is a
QUANTUM ERROR CORRECTION 17
4. Fault-tolerant gates
4.1. The need for fault tolerance. There is still a major hurdle before
we reach the goal of making quantum computers resistant to errors. We must
also understand how to perform operations on a state encoded in a quantum code
without losing the code’s protection against errors, and how to safely perform error
correction when the gates used are themselves noisy. A protocol which performs
these tasks is called fault tolerant (FT for short). Shor presented the first protocols
for fault-tolerant quantum computation [44], but there have been some substantial
improvements since then. Now we know that, provided that the physical error rate
per gate and per time step is below some constant threshold value, it is possible
to make the logical quantum computation we wish to perform arbitrarily close to
correct with overhead that is polylogarithmic in the length of the computation [1,
28, 32].
Our goal is to produce protocols which continue to produce the correct answer
even though any individual component of the circuit may fail. The basic compo-
nents which we need to create a universal quantum computer are
(1) Preparation: Operations which prepare a new qubit in some standard
state. It is sufficient to have just one type of preparation that prepares
a |0i state, although we will actually use a number of different prepared
states.
(2) Quantum Gates: A universal set of quantum gates. To have a universal
set, it is sufficient
to use
the gates H, CNOT, and the π/8 phase rota-
1 0
tion Rπ/8 = . This set of gates generates a group dense in
0 eiπ/4
U (2n ) [9].
(3) Measurement: Measurement of qubits. It is is sufficient to be able to
measure individual qubits in the standard basis |0i, |1i.
(4) Wait: In order to synchronize the operation of gates, we may sometimes
need to have qubits wait around without performing any action on them.
The individual qubits making up our quantum error-correcting code are called
physical qubits, and each of these actions is a physical action (e.g., a physical gate).
Each instantiation of one of these components is called a physical location (or more
often just location). The number of locations in a circuit is then at most the total
number of qubits used times the total number of time steps used. The number of
locations will frequently be less than the maximum, as we will often prepare new
qubits during the computation and measure qubits, which can then be discarded,
before the computation is completed. Note that wait steps count as locations, but
that operations on classical data (in particular, measurement results) do not, as we
will assume that classical computation is perfect. Depending on the precise model
we are using, we may wish to simplify by assuming that modest amounts of classical
computation take no time, but this is not essential.
18 DANIEL GOTTESMAN
Any location can fail, including a wait step. We assume that when a location
fails, it results in an error that can affect all of the qubits involved in the action. In
the case of preparation, a single-qubit quantum gate, measurement, or wait, that
is just a single qubit. For a two-qubit quantum gate such as CNOT, we allow an
arbitrary error acting on the two qubits involved in the gate, including errors which
entangle the two qubits. The actual error should be considered to be the action of
the failed component times the inverse of the desired component in that location.
Thus, if we wish to perform Z, but instead perform Y , the error is Y Z = iX. The
goal of fault tolerance is to take a quantum circuit which is designed to work in the
absence of errors and modify it to produce a new circuit which produces the same
output as the original circuit, but with the weaker assumption that the number of
failed locations is not too large. The precise rules for the probability of locations
failing and the type of errors produced when a location fails will be discussed in
section 5. I will sometimes refer to a location with an error in it as a faulty location.
The biggest obstacle which we must overcome in order to create a fault-tolerant
protocol is that of error propagation. Even if the gates we perform are themselves
perfect, the action of those gates on the state can alter any errors that have already
occurred and cause them to spread:
(66) U E|ψi = (U EU † )U |ψi.
That is, a pre-existing error E on a state |ψi followed by a correct gate U is
equivalent to the correct state (U |ψi), but with an error U EU † . When U is a
single-qubit gate, this is not a very serious problem, since the weight of E does not
change, although the exact type of error may now be different. For instance, an X
error will become a Z error under the action of a Hadamard gate. The troublesome
case is when U is a two-qubit gate, in which case a single-qubit error E will often
become a two-qubit error. For instance, notice that CNOT can propagate an X
error from the first qubit to the second, and can propagate Z from the second qubit
to the first:
(67) CN OT : X ⊗ I 7→ X ⊗ X, I ⊗ Z 7→ Z ⊗ Z.
This is a problem because it can increase the weight of an error. For instance, if
we are using a distance 3 code, it can handle a single-qubit error, but if we then
perform a CNOT, even if the CNOT itself is perfect, that single-qubit error can
become a two-qubit error, and our distance 3 code cannot necessarily correct that.
Since we are not going to be able to make a universal quantum computer using
only single-qubit gates, clearly we are going to have be very careful as to how we
use two-qubit gates.
There is, of course, a solution to this problem, which I will discuss in the
remainder of the chapter. Fault-tolerant circuits will be designed in such a way as
to make sure error propagation does not get out of hand. Even though errors may
spread somewhat, we can still correct the resulting errors, provided there are not
too many to start with. Our eventual goal is to produce fault-tolerant versions of
all the types of physical location. I will refer to each such construction as a gadget
for the particular operation. For instance, we will have fault-tolerant gates for each
member of a universal set of quantum gates. Each of these gadgets will simulate
the behavior of the corresponding non-fault-tolerant action, but instead of doing
so on one or two physical qubits, it will perform the action on the logical qubits
encoded in a quantum error-correcting code. When we are given a quantum circuit
QUANTUM ERROR CORRECTION 19
which we would like to perform, we replace each of the locations in the original
circuit with the corresponding fault-tolerant gadget.
Generally, we assume that the original circuit takes no input: all qubits used
in it must be prepared using preparation locations. This still allows us to perform
arbitrary quantum computations, since we can modify the quantum circuit based
on the classical description of the problem we wish to solve. (For instance, if we
wish to factor a number N , we could tailor the exact quantum circuit to work with
N .) Then the final fault-tolerant measurement gadgets will produce classical infor-
mation which should, if the fault-tolerant circuit has done its work properly, give
the same outcome as the original circuit would have if we could have implemented
it without error.
@
r
r-Filter Ideal Decoder
The horizontal lines represent a single block of a QECC, except for the one on
the right end of the ideal decoder symbol, which is a single unencoded qubit. We
will focus on the case where the code we use is an [[n, 1, 2t + 1]] code. That is,
there is just one encoded qubit per block, the code can correct t errors, and the
thick horizontal lines in the diagrams represent n qubits. It is also possible to
achieve fault-tolerance with multiple qubits encoded per block [21], but matters
are somewhat more complicated then.
20 DANIEL GOTTESMAN
Measurement EC Error Correction
As before, the thick horizontal lines represent a block of an [[n, 1, 2t + 1]] QECC.
In the case of the encoded gate, if it is a two-qubit logical gate, the horizontal lines
represent two blocks of the QECC, each containing one logical qubit involved in the
gate. The s in each diagram represents the maximum number of faulty locations
that may be involved in the circuit represented by the graphic. For simplicity, let
us restrict attention to cases where the error associated to each fault is a Pauli
operator. A slight generalization of Theorem 2 will allow us to consider other sorts
of errors by looking at linear combinations of diagrams with specific Pauli errors.
If I draw a similar diagram but with thin lines and no indication of the number
of errors, that means the diagram represents an idealized unencoded version of the
same operation.
Now we can say rigorously what it means for these gadgets to be fault tolerant.
The following definitions will involve t, the number of errors the code can correct,
and the ideal decoder for the code. We only need to guarantee the behavior of the
system when the total number of errors involved is less than t, since we expect the
constructions to fail no matter what we do when there are more errors than the
code can correct.
That is, if the total number of errors in the incoming state and measurement
gadget is at most t, then we should get the same result out of the real gadget as
if we had performed ideal decoding on the incoming state and measured the de-
coded qubit. By “the same result,” I mean not only that the various measurement
outcomes have the same probability in both cases, but that the remainder of the
computer is left in the same relative state, conditioned on the measurement out-
come, for either diagram. Really, we are comparing two operations, each of which
transforms a quantum state of the whole computer into a quantum state for the
QUANTUM ERROR CORRECTION 21
computer minus one encoded block, plus a classical measurement outcome. The
two operations are the same when the measurement gadget is fault tolerant.
Definition 3 (Fault-Tolerant Preparation). A preparation gadget is fault tol-
erant if it satisfies the following two properties:
s
s s
Prep A: = when s ≤ t.
s
@
Prep B: = when s ≤ t.
That is, a fault-tolerant preparation step with s ≤ t errors should output a
state that is within s errors of a properly encoded state, and that furthermore,
the state should decode to the correct state under an ideal decoder. In the above
diagram equation for Prep A, and in many of the equations below, when we have
a fault-tolerant gadget on both the left and right side of the equation, assume the
faults on both sides are in the same locations and of the same type.
The definitions for a fault-tolerant gate are slightly more complicated, but of
much the same form:
Definition 4. A gate gadget is fault tolerant if it satisfies the following two
properties:
ri
s ri
s s+ i ri
P
U U
P
Gate A: = when s + i ri ≤ t.
ri
ri
@ @
s
U U
P
Gate B: = when s + i ri ≤ t.
In all of these diagrams, a separate filter is applied to each input block when
U is a multiple-qubit gate. Input block i gets an ri -filter. In propertyPGate A, a
separate filter is applied to each output block, but in all cases it is an s+ i ri -filter.
In property Gate B, an ideal decoder is applied separately to each block.
Property Gate A says that errors should not propagate too badly: it is OK (and
unavoidable) for errors to propagate from one block to another, but they should not
spread within a block. Thus, the final number of errors on the outgoing state of each
block should be no more than the total number of errors on the incoming states,
plus the number of errors that occurred during the gate gadget. As before, this only
needs to apply when the total number of errors is less than t. Property Gate B says
that if there are not too many errors in the incoming blocks and gadget combined,
then the fault-tolerant gate gadget should perform the right encoded gate. Gate B
almost says that we can create a commutative diagram with the ideal decoder, the
FT gate gadget, and the unencoded ideal gate gadget, but the commutation only
need hold when the incoming states have few total errors.
Finally, we must define fault-tolerant error correction:
Definition 5. An error correction (EC) gadget is fault tolerant if it satisfies
the following two properties:
s s s
EC A: EC = EC when s ≤ t.
22 DANIEL GOTTESMAN
r
EC
s
@ r
@
EC B: = when r + s ≤ t.
That is, after an error correction step with at most s faulty locations, the state
is at most s errors away from some encoded state. Note that this must apply no
matter how many errors were in the incoming state. This does not necessarily mean
those errors were dealt with properly, only that the final state is near a codeword.
It might be the wrong codeword, but it is still a valid codeword. Property EC B
does say that if the total number of incoming errors and errors during the FT EC
step is less than t, the state has been corrected, in the sense that the logical state
after the EC step is the same as the logical state before it.
4.3. Transversal gates. Now we must try to find constructions that fulfill
these definitions. Let us start with gate gadgets. Indeed, we have already seen a
construction of fault-tolerant gates: Recall that for an [[n, k, d]] stabilizer code with
stabilizer S, N (S)/S ∼ = Pk , the logical Pauli group on the k encoded qubits. Thus,
in the absence of any errors, we can perform a logical Z, for instance, by choosing
a representative Q of the appropriate coset in N (S)/S. Q ∈ Pn , so to perform it,
we simply need to perform some Pauli matrix (or the identity) on each of the n
physical qubits in the code. Observe that this construction satisfies properties Gate
A and Gate B: Since we are performing single-qubit gates, there is no opportunity
for errors to propagate to different qubits, so property Gate A is clearly satisfied
for any number of errors (even if it is greater than t). Property Gate B follows from
this fact as well (although in this case, we really do need to specify that the number
of errors is at most t). If you want to prove more formally that these properties are
satisfied, the key step is to note that we can rearrange the errors to all come after
the logical gate. Moving errors through the Pauli operator Q may change their
identity — we conjugate by Q — but does not change their weight.
Of course, the reason this is true is that Q is a tensor product of single-qubit
gates. For many codes, we can find additional gates that can be performed this way.
For instance, for the 7-qubit code, you can check that performing the Hadamard
on all 7 qubits, H ⊗7 , performs the logical Hadamard H. This construction of
H is automatically fault-tolerant, again because conjugating an error by H does
not change the weight of the error. Similarly, for the 7-qubit code, one can fault-
tolerantly perform P (the π/4 rotation) by performing P † on each of the 7 physical
qubits in the code [44].
If we wish to generalize to multiple-qubit gates — and we need to do that
somehow to get universal quantum computation — we can no longer assume that
conjugating by U will leave the weight of an error unchanged. However, if we
make sure that any increase in the number of errors is spread out between multiple
blocks of the code, we can ensure that each block is not overwhelmed with errors.
In particular, suppose we consider a gate (which N may act on m blocks of the code)
which is constructed as a tensor product U = Ui , where Ui acts on the ith qubit
of each block. The Ui s can do whatever they like to the m qubits they act on; we
don’t even make the constraint that all the Ui s be the same. A gate constructed
this way is called a transversal gate, and it will automatically be fault tolerant.
When Ui conjugates any number of errors on the m ith qubits, we can get an error
that acts only on those m qubits. In particular, Ui will only ever propagate a single
QUANTUM ERROR CORRECTION 23
error into at most one qubit per block. Therefore, properties Gate A and Gate B
will also hold for transversal gates.
Note that we insist in the definition of transversal that the ith qubit of one
block only interacts with the ith qubit of another block, and not some different
qubit in the second block. If this were not true, the gate would still be fault tolerant
provided each qubit in one block interacted with only a single qubit in a different
block. However, such a construction could cause problems if we attempted to put
two of them together. For instance, if we have a gate that interacts qubit i of block
1 with qubit j 6= i of block 2, and then follow it by a traditional transversal gate,
an initial error on qubit i of block 1 could propagate to qubit j of block 2 and then
back to qubit j of block 1, leaving us with two errors in the first block. The product
of two transversal gates is again transversal, and thus fault-tolerant, but this would
not be true if we changed the definition of transversal to allow permutations of the
qubits in a block.
As an example of a transversal two-qubit gate, consider again the 7-qubit code.
Performing CNOT⊗7 — a transversal CNOT between corresponding qubits of the
two blocks — implements the logical CNOT [44]. We sometimes use the terminol-
ogy “transversal U ” for the transversal gate U ⊗n . Even though transversal does not
necessarily mean that all the tensor components are the same, the most common
examples have this property, so the phrase is often used as a shorthand.
In fact, the transversal CNOT performs the logical CNOT for any CSS code,
not just the 7-qubit code. This fact is one reason that CSS codes are particularly
favorable for fault tolerance. (We shall see another in the following section.) The
7-qubit code is particularly good. As I noted above, for the 7-qubit code, we have
transversal implementations of H, P , and CNOT. Since products of transversal
gates are again transversal, this implies that the whole logical Clifford group can
be implemented transversally as well. However, the Clifford group is not universal
for quantum computation (it can even be efficiently simulated classically), and
unfortunately, there are no other transversal logical gates for the 7-qubit code, so
we will have to resort to another type of construction to complete a universal set
of logical gates. One might hope to avoid this by finding a better code, but in fact,
no code allows a universal set of transversal gates [18].
Thus, by measuring each qubit of the ancilla in the Hadamard basis and taking
the parity, we can learn the eigenvalue of U . Now the ith qubit of the data only
interacts with the ith qubit of the ancilla, so there is no chance of catastrophic error
propagation. Errors can only propagate between a single qubit of the ancilla and
a single qubit of the data. For simplicity, I described the cat state as an n-qubit
state, but of course, it only need be as large as the weight of U , since any additional
qubits in the ancilla will not interact with the data at all.
Still, this construction does not yet give us a fault-tolerant error correction
gadget. There are two remaining problems. First, we have not specified how to
create the ancilla cat state yet. Second, if even a single qubit of the ancilla has an
error, the measurement result could have the wrong parity, giving us an incorrect
syndrome bit. The solution to the second problem is tedious but straightforward:
after measuring every bit of the error syndrome to get a candidate error syndrome,
we repeat the process. If we repeat enough times, and the number of errors in the
course of process is not too large, we can eventually be confident in the outcome,
as a single faulty location can only cause a single measurement outcome to be
incorrect. Actually, there are some additional complications due to the possibility
QUANTUM ERROR CORRECTION 25
u H
@
|0 . . . 0i+ u H Eigenvalue
|1 . . . 1i @
u H
@
U1
U2
U3
Figure 2. A component
N of a fault-tolerant implementation of the
measurement of U = Ui , which has eigenvalues ±1.
of errors occurring in the data qubits — which can cause the true error syndrome
to change — in the middle of the correction process, but these too can be handled
by sufficient repetition of the measurement.
To create a cat state, we must be somewhat careful. The obvious circuits to
do it are not fault-tolerant. For instance, we could put a single qubit in the state
|0i + |1i, and then perform CNOTs to the other n − 1 qubits, which are initially
in the |0i state. However, an error halfway through this procedure could give us a
state such as |0011i + |1100i, which effectively has two bit flip errors on it. When
we interact with the data as in figure 2, the two bit flip errors will propagate into
the data block, resulting in a state with 2 errors in it. To avoid this, after creating
the cat state, we must verify it. One way to do so is to take pairs of qubits from the
cat state and CNOT them both to an additional ancilla qubit which is initialized to
|0i. Then we measure the additional ancilla, and if it is |1i, we know that the two
qubits being tested are different, and we discard the cat state and try again. Even
though this verification procedure is not transversal, it is still going to allow us to
fault-tolerantly verify the state due the nature of error propagation in a CNOT.
The ancilla qubit is the target of both CNOT operations, which means only phase
errors can propagate from it into the cat state. A single phase error can already
ruin our cat state, giving us the wrong syndrome bit as the outcome — that is why
we must repeat the measurement — so two phase errors are no worse. If we do
sufficient verification steps, we can be confident that either the ancilla cat state is
correct, with possibly s errors on it, or there were more than s faulty locations in
total during the preparation and verification step for the cat state. That is enough
to ensure that the error correction procedure, taken as a whole, is fault tolerant.
To summarize, we must first create many cat states. We do this via some
non-fault-tolerant procedure followed by verifying pairs of qubits within the cat
state to see if they are the same. We use each cat state to measure one bit of
the error syndrome, and repeat the measurement of the full syndrome a number
of times. In the end, we deduce a consensus error syndrome and from it an error
which we believe occurred on the data, and then correct that error. The above
procedure is known as Shor error correction [44], and it works for any stabilizer
code. A similar procedure can be used for measuring a logical Pauli operation on a
stabilizer code, although in that case, we must be careful to perform error correction
26 DANIEL GOTTESMAN
before repeating our measurement attempt, as an uncorrected error on the data can
cause the measurement outcome to be incorrect even if the measurement procedure
itself is completely free of errors. I have been somewhat cavalier about some of the
details above partially because they are complicated and partly because Shor error
correction is rather laborious, requiring many extra gates and a low physical error
rate to work well. There are some much more efficient schemes for fault-tolerant
error correction available, so Shor error correction is rarely used.
The first such improved scheme is Steane error correction [48]. Steane error
correction works only on CSS codes. (There is a more complicated version that
works on general stabilizer codes, but it is not usually used; the version in Steane’s
paper
P has an error.) Recall that the codewords of a CSS code are of the form
w∈C2 |u + wi where C2 is a classical linear code, and u ∈ C1 . u tells us the
⊥
data k u
|0i + |1i k
@ Error syndrome
|0i u H
@
Figure 3. Steane Error Correction. Each horizontal line repre-
sents a full n-qubit block of the code, and each gate or measurement
represents a transversal implementation of that operation.
Suppose the phase ancilla, after its preparation is complete, has errors whose
locations can be summarized by a binary vector fP , and the bit flip ancilla has
errors that can be summarized by a binary vector fB . Let us summarize the
faults in CNOT gate locations by gP and gB . (Note that each such faulty gate
location can affect both the corresponding data qubit and ancilla qubit, and not
necessarily with the same sort of error.) Finally, assume that during the Hadamard
and measurement of the phase ancilla block, there are faults whose locations are
summarized together by a vector hP , and during the measurement of the bit flip
ancilla block, there are faults summarized by hB . For hP and hB , we will only
count errors that show up in the measurement result, since there is no possibility
of these errors propagating into the data block except via the measurement result.
For the other sorts of errors (other than those in the incoming data block), we will
make no restrictions as to the types of errors. We will ignore errors that occur
during the final correction step where we fix the error deduced from the syndrome
measurement, since the correction step itself can be done transversally. Errors that
occur then count, of course, but each error during the final correction step can only
cause one qubit to go wrong, so they can never cause EC A or EC B to fail.
To prove EC A, we assume that s = wt(fP ) + wt(fB ) + wt(gP ) + wt(gB ) +
wt(hP ) + wt(hB ) ≤ t, and we wish to show that the final state after correcting the
measured error is at most s errors away from a valid codeword of some sort. In
fact, I claim the following:
Claim 1. The final state will have errors only on qubits from fP ∨ fB ∨ gP ∨
gB ∨ hP ∨ hB , where ∨ represents the bitwise OR.
That is, the only qubits in the final state that have errors will be in a location
corresponding to one of the faults that occurred during the EC circuit, and there
are at most s of those. By “corresponding location,” I mean that if a fault occurs
in the ith qubit of one of the ancilla blocks, there could be a fault in the ith qubit
of the data block.
(i) (i) (i)
Proof. In the following proof, the fx , gx , and hx (x = P, B) will be vectors
which indicate subsets of fx , gx , and hx . The content of the (i) superscripts has no
particular meaning except to label potentially different subsets.
(1)
The error measured by the phase part of the error correction will be eP + fP +
(1) (1)
gP + hP . However, note that, since we are making no restriction on wt(eP ), it is
(1) (1) (1)
possible that wt(eP + fP + gP + hP ) > t2 , where the phase code C2 corrects t2
errors. In that case, the classical decoding procedure for C2 will instead deduce some
error d which might be different from the actual accumulated error. Still, d must
(1) (1) (1) (1) (1) (1)
have the same syndrome as eP +fP +gP +hP , so v = d+eP +fP +gP +hP ∈ C2 .
Since the X generators of the CSS code are given by vectors of C2⊥ , it follows that
the operator Zv with Zs on all the qubits indicated by v ∈ C2 commutes with
every X generator, and therefore Zv ∈ N (S), and it maps any logical codeword to
another (potentially different) logical codeword.
After interacting with the two ancilla blocks, but before we correct any errors,
(2) (2) (2)
the data will have phase errors on qubits indicated by the set eP + gP + gB + fB .
When we apply phase error correction to fix the errors on the qubits indicated
(2) (2) (2)
by d, we therefore get the net phase error d + eP + gP + gB + fB . Now, we
(1) (1) (1)
know that d + eP = v + fP + gP + hP , so we can rewrite the net phase error
QUANTUM ERROR CORRECTION 29
effort into verifying that they are correct, which we could not do directly for the
unknown data state.
for any Q ∈ P1 . For instance, the π/8 rotation Rπ/8 has this property:
† 0 e−iπ/4
(70) Rπ/8 XRπ/8 = iπ/4 = eiπ/4 XP †
e 0
†
(71) Rπ/8 ZRπ/8 =Z
We sometimes call the set of unitary operators with this property, of conjugating
Pauli operators into Clifford group operators, C3 . C1 is the Pauli group Pn , and C2
is the Clifford group C1 .4 One can define a set Ck = {U |U QU † ∈ Ck−1 ∀Q ∈ C1 },
and the teleportation construction tells us how, given appropriate ancilla states, to
perform a gate from Ck once we know how to perform gates from Ck−1 . Note that
the sets Ck are not closed under multiplication.
This gives us an indication of how to perform a universal set of fault-tolerant
gates. For the 7-qubit code, and some similar CSS codes, we already know how to
perform all logical Clifford group operations. The Bell measurement is a Clifford
group operation (plus measurement, which we also know how to do fault-tolerantly),
†
and now we have seen that Rπ/8 QRπ/8 is also a Clifford group operation for Q ∈ P.
Thus, if we can just prepare the special ancilla state (I ⊗ Rπ/8 )(|00i + |11i) fault-
tolerantly, we can do the complete gate teleportation procedure for the 7-qubit code
to implement a fault-tolerant Rπ/8 gate. Since the Clifford group plus Rπ/8 form a
universal set of gates, that gives us a universal fault-tolerant gate set for the 7-qubit
code.
It is perhaps worth saying as an aside a few words about the nature of this
universal set of gates. Note that for a fixed number of (logical) qubits, it contains a
finite set of gates. These gates do not commute with each other, and if we look at
the group generated by these gates, we find that it is an infinite group. However,
the unitary group is uncountable, so we will not be able to exactly implement all
unitary gates. We can, however, get arbitrarily close to any gate we wish, and
the approximation procedure can be done quite efficiently as a consequence of the
Solovay-Kitaev theorem [27, 45]. For any gate U , to approximate U to within a
distance ǫ, we need only use polylog(1/ǫ) gates.
Now back to fault tolerance. I have described the construction above for single-
qubit gates U , but that is in no way essential. For a multiple-qubit gate U , we simply
need, as an ancilla, a state composed of multiple encoded EPR pairs with U applied
jointly on the second half of all of them. For instance, we can perform the CNOT in
this way using a four-qubit ancilla. If we take any stabilizer code with stabilizer S,
we can perform the Bell measurement as part of Knill error correction, and N (S)
gives us transversal implementations of the logical Pauli group. Thus, using gate
teleportation, given an appropriate ancilla, we get a fault-tolerant implementation
for any Clifford group gate on S. Then we can use gate teleportation again to
get a universal set of gates. Thus, we can perform a universal set of gates for any
stabilizer code [21].
For certain gates, even simpler constructions are available that take advantage
of special properties of the gate [9, 44, 55]. For instance, Rπ/8 is a diagonal gate,
and that lets us use the construction in figure 6. The more efficient construction
only involves a single encoded block as ancilla, which is somewhat easier to create.
4I apologize for the similar appearance of C and C . C will not appear outside this
n k k
paragraph.
32 DANIEL GOTTESMAN
data k 1 cbit
@
?
|0i + e iπ/4
|1i u I or XP †
For gate teleportation, we need more complicated ancillas. I will not go into
the details, but simply mention some of the main methods used in preparing such
states. For the ancillas needed to teleport Clifford group gates, we can use the
method based on Shor EC or similar verification procedures to those for |0i or
|0i + |1i. We have the same two options for other gates such as Rπ/8 , but both
methods become more complicated. The ancilla states used for Rπ/8 and similar
gates are eigenstates of Clifford group operators, and can be uniquely specified by
this fact. For instance, the state |0i + eiπ/4 |1i is the unique codeword which is a +1
eigenstate of eiπ/4 XP † . Thus, if we measure the eigenvalues of XP † , which we can
do using a Shor-like method involving a cat state and repetition, we can determine
if the ancilla state is correct or not [44].
There is also a method for verifying this state and some other related ancilla
states which involves comparing a number of copies of the state to test if any have
errors on them. As before, we imagine using some non-fault-tolerant procedure to
create candidate ancilla states, and then we put them through this verification pro-
cedure and discard any states that fail. The states that come out of the procedure
are more likely to be error-free (or at least less likely to have errors dating from
the non-fault-tolerant encoding part of the protocol). We can then take a pool
of previously-tested states and iterate the verification procedure to purify them
further. For details, see [10].
s1 s3
s5 s6
s8 s10
s11
EC EC H EC
s2 s4
CNOT
s7
s9
EC EC
s1
s2 s3 s1
@ @
(72) EC U EC = EC U
s1
s2 s1
@
(74) EC = EC
s1
s2 s3
@
EC U EC
s1 s1
s2 s3
= @ by EC A
(75) EC U EC
s1 s1
s2 s1 +s2 s3
= @ by Gate A
(76) EC U EC
s1 s1
s2 s1 +s2
= @ by EC B
(77) EC U
36 DANIEL GOTTESMAN
s1 s1
s2
= @ by Gate A
(78) EC U
s1 s1
= EC @ U by Gate B
(79)
s1
(80) = EC @ U by EC A
5.2. Level reduction. Now let us consider the case of a complete fault-
tolerant circuit. Suppose all the extended rectangles in the circuit are good. Then
by applying theorem 6 repeatedly, we can create ideal decoders using the correct-
ness property for the measurement locations, push the ideal decoders all the way
to the left using correctness for the gate and wait locations, and then eliminate
the ideal decoders using correctness for the preparation locations. We are left, as
desired, with the original circuit C which the fault-tolerant circuit is supposed to
simulate.
Theorem 7. Suppose a fault-tolerant circuit for C contains only good extended
rectangles. Then the output distribution of the fault-tolerant protocol is the same
as the output distribution of C.
That’s precisely the result we wanted, but unfortunately it only applies when
all the extended rectangles are good. In a little bit, once we talk more concretely
about the model of errors, you will see that this result is enough to say that a fault-
tolerant protocol helps protect against errors, in that, for sufficiently low error rate,
the probability of having only good ExRecs in the complete fault-tolerant circuit is
greater than the probability of getting through the original circuit C without any
errors. Unfortunately, when C is large, it is still unlikely we can make it all the
way through even a fault-tolerant circuit without having a bad extended rectangle
unless we go to codes which can correct many errors. But if we do use codes with
large t, we will need a special family of codes, since otherwise we have no good way
to make the large ancillas we need for fault-tolerant gate constructions and fault-
tolerant error correction. Luckily, there are two known families of codes for which
we can solve this problem, giving a threshold theorem. One of them is based on
topological constructions [16]. I will consider the other, which is somewhat simpler
to analyze: the family of concatenated codes.
The logic behind a concatenated code is quite straightforward. We have shown
(up to a question of defining the right error model) that we can take any circuit
C and create a fault-tolerant circuit C ′ that gives the same result and is more
reliable than C. Why not, therefore, take C ′ and create a fault-tolerant circuit
C ′′ simulating it? Surely that should be even more reliable. And if that is not
enough, we can do it again and again until the circuit is robust enough to give
us the right answer, even if the original circuit C is very large. And indeed, this
strategy works. We can create a sequence of circuits C (k) , k = 1, . . . , L, where each
C (k) is a fault-tolerant simulation of C (k−1) , with C (0) = C. When C is large, it is
not very likely that C (L) contains only good extended rectangles, but it will be true
QUANTUM ERROR CORRECTION 37
that it simulates a C (L−1) which contains (with high probability, when the error
rate is low enough, . . . ) fewer bad extended rectangles than C (L) , and so on, until,
with very high probability, C (1) does contain only good extended rectangles, and
thus gives us a nearly perfect simulation of C.
In order to prove this, however, we will need to understand what happens to
a bad extended rectangle when we push an ideal decoder through it from right to
left. We would like to say that a bad extended rectangle simulates a faulty location
in the original circuit, and this is almost true. In particular, we would like for the
following to be true when s1 + s2 + s3 > t, for some erroneous gate U ′ :
s1
s2 s3 s1
@ @ U′
(81) EC U EC = EC
Unfortunately, we cannot easily make any such statement. The problem is that
the error that occurs on the physical gate after the ideal decoder can depend not
only on the faults in the gate gadget and trailing EC, but also on the faults in the
leading EC and even the carryover error from the previous ExRec, so there is no
way to define U ′ without looking at the larger context. To handle this problem,
we introduce an alternate ideal decoder, a *-decoder, which keeps track of the error
syndrome:
@ *-Decoder
The line dropping out the bottom of the *-decoder contains the information about
the error syndrome of the state input on the left. Consequently, the *-decoder is a
unitary operation. To replace (81), we thus can write:
s1
s2 s3
@ @
(82) EC U EC = U′
The erroneous gate U ′ uses the error syndrome as a control to tell it what sort of
error to apply to the decoded qubit. Notice that we have pushed the *-decoder all
the way through the ExRec, eliminating the leading EC as well as the gate gadget
and trailing EC. This is needed so that bad ExRecs do not overlap, since that could
produce correlated errors in the circuit being simulated. I shall return to this point
shortly.
Correctness is defined using *-decoders in a way that is essentially identical
to using regular ideal decoders. The only difference is that we must account for
what happens to the error syndrome. Even if we move a *-decoder through a
gadget with no faults, the error syndrome produced will generally change to account
for any gates performed on the erroneous physical qubits. For instance, if we
perform a transversal Hadamard, pre-existing physical X errors will change to
physical Z errors, which have a different error syndrome. For this reason, we can
define correctness for *-decoders using identical diagrams to those for regular ideal
decoders, but with the error syndrome changed in some way, which we do not need
38 DANIEL GOTTESMAN
s1
s2 s3 s1
@ @
(83) EC U EC = EC U
V
for some operation V on the error syndrome. (V of course depends on the errors
in the original ExRec as well as the gate U .) The definitions for preparation and
measurement ExRecs are similar; for the preparation ExRec, the error syndrome is
brought in as a separate input on the RHS of the definition, and for the measurement
ExRec, the error syndrome is discarded immediately after being produced. We then
get the following lemma:
Lemma 2. If an ExRec is correct for an ideal decoder, it is correct for a *-
decoder.
Proof. Note that the ideal decoder is just the *-decoder with the error syn-
drome discarded. The definition of correctness for an ideal decoder must apply for
all input states, including superpositions and parts of entangled states. This could
not hold if the error syndrome output of the *-decoder had any further interaction
with the data block after the action of the *-decoder.
Thus, we also know that good extended rectangles are correct for *-decoders.
We are almost ready to revise theorem 7 to take into account bad ExRecs as well as
good ones, but there is one more complication. We would like to replace decoders
with *-decoders in the proof of theorem 7 and push the *-decoders all the way
through the circuit. However, I have declared that a *-decoder should get pushed
all the way through a bad ExRec to eliminate the leading EC step. That means
that if we push a *-decoder backwards through a bad ExRec, the previous ExRec
will be left without a trailing EC, and will no longer be an ExRec.
Definition 10. An ExRec missing one or more trailing ECs (in the case of a
multiple-qubit gate ExRec) is called a truncated ExRec. A truncated ExRec is good
if it contains at most t faulty locations and is bad if it is not good. Within a larger
circuit, determine whether an ExRec should be good or bad and full or truncated
by the following procedure: Start from the end of the circuit, with measurement
ExRecs, and determine whether they are good or bad. For each other ExRec in the
circuit, truncate it by eliminating a trailing EC step if that EC step participates as
a leading EC in a bad ExRec (full or truncated). Once we know whether the ExRec
is truncated (on all its output blocks, if there is more than one), determine whether
it is good or bad. We can then determine recursively the nature of all ExRecs in
the circuit.
It is straightforward to define correctness for both regular ideal decoders and
*-decoders for truncated ExRecs by just removing the trailing EC step from each
diagram.
Lemma 3. A good truncated ExRec is correct for both ideal decoders and *-
decoders.
Proof. Since the ideal decoder is supposed to incorporate a perfect error cor-
rection, we could insert an EC gadget with 0 errors before any ideal decoder without
QUANTUM ERROR CORRECTION 39
changing the ouput at all. (We cannot do this before a *-decoder since the perfect
EC gadget would clear the error syndrome.) Therefore, the correctness diagram for
ideal decoders is effectively the same for full and truncated ExRecs, and it follows
that a good truncated ExRec is correct for ideal decoders. Then, applying lemma 2
(which also works for truncated ExRecs), we find that a good truncated ExRec is
correct for *-decoders as well.
That leads us to the following improvement of theorem 7:
Theorem 8. Suppose we have a fault-tolerant circuit C ′ for C. Assign good
and bad extended rectangles to C ′ , and produce a circuit C̃ as follows: If the ExRec
for Ci is good, include Ci unchanged in C̃. If the ExRec for Ci is bad, replace
Ci by the erroneous gate U ′ from eq. (82) or the corresponding equation for the
correct type of location. The circuit C̃ uses ancilla registers to control the types of
U ′ errors. Then the output distribution of C ′ is the same as the output distribution
of C̃.
That is, C ′ simulates a version of C with errors in place of the bad extended
rectangles. We prove this theorem in the same way as theorem 7, by creating *-
decoders at the right end of the circuit and pushing them back to the left using
the correctness conditions and eq. (82). The ancilla registers used to determine the
type of errors are the error syndrome registers produced by the *-decoders.
Finally, we are ready to talk about a concrete error model and to prove that
fault tolerance reduces the error rate.
Definition 11. An uncorrelated error model assumes that each location Ci
is faulty with probability pi , independently for different locations, and if there is
an error at location Ci , it is chosen from some distribution Ei independent of the
other locations. In an uncorrelated Pauli error model, if a location has a fault, there
is probability pQi of Pauli error Q acting on the qubit(s) involved in the location
(relative to the correct operation for that location). Usually, we assume that pi
and pQi only depend on what type of location Ci is, and nothing else about it.
Often, we assume that pi = p for all i. An uncorrelated depolarizing error model is
a special case of the uncorrelated Pauli error model where pQi does not depend on
Q (except for Q = I, no error, which can be different).
Uncorrelated Pauli error models, and particularly uncorrelated depolarizing er-
ror models, are very convenient if one is doing simulations of fault-tolerant protocols
to analyze their behavior and error tolerance. One reason for this is that EC steps
for CSS and general stabilizer codes can be performed using only Clifford group
gates, and thus the behavior of Pauli errors on a fault-tolerant circuit involving
only logical Clifford group gates can be efficiently simulated on a classical com-
puter. Under more general errors, the simulations quickly become unwieldy after
only a few steps.
However, any kind of uncorrelated error model is not going to be quite enough
for us. The reason is that in theorem 8, even if the errors in C are uncorrelated,
the location of good and bad ExRecs is somewhat correlated (because the ExRecs
overlap, and whether an ExRec is truncated or not depends on whether the following
ExRec(s) are good or bad). Furthermore, the type of errors in C̃ are even more
correlated, even entangled, because the type of error on a location C̃i of C̃ depends
on the persistent error syndrome register produced by the *-decoder. Therefore,
40 DANIEL GOTTESMAN
even if C ′ has a simple uncorrelated error model, Pauli or otherwise, C̃ will not.
Instead, we have to go to a slightly more complicated type of error model.
As before, we usually consider the case where pi only depends on the type of
location Ci , and often specialize to the case where pi = p for all i. In that case,
the probability of having errors on all of a specified set of r locations is at most pr .
Note that for this condition, we do not care what happens to locations outside the
set R — some may have errors, others may not. In addition, we make no constraint
on the type of error that occurs at any given location Ci with i ∈ R. Often, we
imagine that the type of error is chosen by an adversary who is determined to make
our lives as difficult as possible. The adversary can choose errors that entangle
different faulty locations; she may even choose to turn off the errors at some subset
of locations if that will cause more trouble than leaving them on. However, the
adversary is restricted to choose a strategy that has the probability of error on any
given set of locations decreasing exponentially with the size of the set; it is in this
sense that the error model is “local.” There is another important restriction which
is implicit in the above definition — we have assumed that the locations of the
faults are chosen randomly, which is why it is a “stochastic” error model. This is
not the most general possibility. We could have had a superposition of faults in
different sets of locations, perhaps entangled with some environment qubits with
persistent memory. It is possible to generalize the threshold theorem (theorem 10)
to that case, but the details are somewhat complicated [3].
An uncorrelated error model will automatically be a local stochastic error
model, with the same pi . However, as noted above, if C ′ is subject to an un-
correlated error model, then it does not generally follow that C̃ will experience an
uncorrelated error model as well. That is the advantage of generalizing to a local
stochastic model: If C ′ is subject to a local stochastic error model, then C̃ will also
experience a local stochastic error model.
The sum over R is taken over sets R of locations which are included in the ExRec
for location Ci and with |R| = t + 1. (Recall that t is the number of errors the
QUANTUM ERROR CORRECTION 41
To be more explicit, we can choose a particular [[n, 1, 2t + 1]] QECC and fault-
tolerant protocol, and for that protocol determine A in equation (85). Then the
threshold for that protocol is at least pT = 1/A1/t . By choosing a different code
or protocol, or a different method of analysis, we might get a higher threshold,
and the true threshold pT is the supremum over all possible choices. If we use
the 7-qubit code and are careful counting malignant sets of errors, we find pT ≥
2.73 × 10−5 [3, 41]. People have studied a variety of different codes and fault-
tolerant protocols [11]. So far the best claimed thresholds have come in simulations
by Knill [30], who has used elaborate ancilla preparation techniques to achieve a
threshold pT of as high as 5%, depending on the details of the error model. The
current best rigorous lower bound on the threshold, using those same techniques,
gives a threshold of 10−3 [4, 42].
QUANTUM ERROR CORRECTION 43
References
[1] D. Aharonov and M. Ben-Or, Fault-tolerant quantum computation with constant error, Proc.
29th Ann. ACM Symp. on Theory of Computation (ACM, New York, 1998), 176–188;
arXiv:quant-ph/9611025; D. Aharonov and M. Ben-Or, Fault-tolerant quantum computation
with constant error rate, SIAM J. Comput. 38 (2008), 1207–1282; arXiv:quant-ph/9906129.
[2] D. Aharonov, M. Ben-Or, R. Impagliazzo, N. Nisan, Limitations of Noisy Reversible Com-
putation, arXiv:quant-ph/9611028 (1996).
[3] P. Aliferis, D. Gottesman, and J. Preskill, Quantum accuracy threshold for concatenated
distance-3 codes, Quant. Info. Comp. 6 (2006), 97–165; arXiv:quant-ph/0504218.
[4] , Accuracy threshold for postselected quantum computation, Quant. Info. Comp. 8
(2008), 181–244; arXiv:quant-ph/0703264.
44 DANIEL GOTTESMAN
[5] P. Aliferis and J. Preskill, Fault-tolerant quantum computation against biased noise, Phys.
Rev. A 78 (2008), 052331; arXiv:0710.1301 [quant-ph].
[6] , The Fibonacci scheme for fault-tolerant quantum computation, Phys. Rev. A 79
(2009), 012332; arXiv:0809.5063 [quant-ph].
[7] A. Ashikhmin, E. Knill, Nonbinary Quantum Stabilizer Codes, IEEE Trans. Info. Theory 47
(2001), 3065–3072; arXiv:quant-ph/0005008.
[8] C. Bennett, D. DiVincenzo, J. Smolin, and W. Wootters, Mixed state entanglement and
quantum error correction, Phys. Rev. A 54 (1996), 3824–3851; arXiv:quant-ph/9604024.
[9] P. O. Boykin, T. Mor, M. Pulver, V. Roychowdhury, and F. Vatan, On Universal and Fault-
Tolerant Quantum Computing, Proc. 40th Ann. Symp. on Found. of Comp. Sci. (IEEE, New
York, 1999), 486–494; arXiv:quant-ph/9906054.
[10] S. Bravyi, A. Kitaev, Universal Quantum Computation with ideal Clifford gates and noisy
ancillas, Phys. Rev. A 71 (2005), 022316; arXiv:quant-ph/0403025.
[11] A. W. Cross, D. P. DiVincenzo, B. M. Terhal, A comparative code study for quantum fault-
tolerance, arXiv:0711.1556 [quant-ph] (2007).
[12] A. R. Calderbank, E. M. Rains, P. W. Shor, and N. J. A. Sloane, Quantum error correction
and orthogonal geometry, Phys. Rev. Lett. 78 (1997), 405–408; arXiv:quant-ph/9605005.
[13] , Quantum error correction via codes over GF(4), IEEE Trans. Inform. Theory 44
(1998), 1369–1387; arXiv:quant-ph/9605005.
[14] A. R. Calderbank and P. W. Shor, Good quantum error-correcting codes exist, Phys. Rev. A
54 (1996), 1098–1105; arXiv:quant-ph/9512032.
[15] A. Cross, G. Smith, J. A. Smolin, B. Zeng, Codeword Stabilized Quantum Codes, IEEE Trans.
Info. Theory 55 (2009), 433–438; arXiv:0708.1021 [quant-ph].
[16] E. Dennis, A. Kitaev, A. Landahl, J. Preskill, Topological quantum memory, J. Math. Phys.
43 (2002), 4452–4505; arXiv:quant-ph/0110143.
[17] D. Dieks, Communication by EPR devices, Phys. Lett. A 92 (1982), 271–272.
[18] B. Eastin, E. Knill, Restrictions on Transversal Encoded Quantum Gate Sets, arXiv:
0811.4262 [quant-ph] (2008).
[19] Z. W. E. Evans, A. M. Stephens, Optimal decoding in fault-tolerant concatenated quantum
error correction, arXiv:0902.4506v1 [quant-ph] (2009).
[20] D. Gottesman, Class of quantum error-correcting codes saturating the quantum Hamming
bound, Phys. Rev. A 54 (1996), 1862–1868; arXiv:quant-ph/9604038.
[21] , Theory of fault-tolerant quantum computation, Phys. Rev. A 57 (1998), 127–137;
arXiv:quant-ph/9702029.
[22] , The Heisenberg Representation of Quantum Computers, in Group22: Proceedings of
the XXII International Colloquium on Group Theoretical Methods in Physics (International
Press, Cambridge, MA, 1999), eds. S. P. Corney, R. Delbourgo, and P. D. Jarvis, 32–43;
arXiv:quant-ph/9807006.
[23] , Fault-Tolerant Quantum Computation with Local Gates, J. Modern Optics 47 (2000),
333–345; arXiv:quant-ph/9903099.
[24] , An Introduction to Quantum Error Correction, in Quantum Computation: A
Grand Mathematical Challenge for the Twenty-First Century and the Millennium, ed.
S. J. Lomonaco, Jr. (American Mathematical Society, Providence, Rhode Island, 2002), 221–
235; arXiv:quant-ph/0004072.
[25] M. Grassl, T. Beth, and T. Pellizzari, Codes for the quantum erasure channel, Phys. Rev. A
56 (1997), 33–38; arXiv:quant-ph/9610042.
[26] A. Ketkar, A. Klappenecker, S. Kumar, P. K. Sarvepalli, Nonbinary stabilizer codes over
finite fields, IEEE Trans. Info. Theory 52 (2006), 4892–4914; arXiv:quant-ph/0508070.
[27] A. Y. Kitaev, A. H. Shen, and M. N. Vyalyi, Classical and Quantum Computation (AMS,
Providence, RI, 2002).
[28] A. Y. Kitaev, Quantum error correction with imperfect gates, Quantum Communication,
Computing, and Measurement (Proc. 3rd Int. Conf. of Quantum Communication and Mea-
surement) (Plenum Press, New York, 1997), p. 181–188.
[29] E. Knill, Non-binary Unitary Error Bases and Quantum Codes, arXiv:quant-ph/9608048
(1996).
[30] , Quantum Computing with Realistically Noisy Devices, Nature 434 (2005),
39–44; E. Knill, Fault-tolerant Postselected Quantum Computation: Schemes, arXiv:
quant-ph/0402171.
QUANTUM ERROR CORRECTION 45
[31] E. Knill and R. Laflamme, A theory of quantum error-correcting codes, Phys. Rev. A 55
(1997), 900–911; arXiv:quant-ph/9604034.
[32] E. Knill, R. Laflamme, and W. H. Zurek, Threshold accuracy for quantum computation,
arXiv:quant-ph/9610011; E. Knill, R. Laflamme, and W. H. Zurek, Resilient quantum com-
putation, Science 279 (1998), 342–345; E. Knill, R. Laflamme, and W. H. Zurek, Resilient
quantum computation: error models and thresholds, Proc. Royal Soc. London A 454 (1998),
365–384, arXiv:quant-ph/9702058.
[33] D. W. Kribs, R. Laflamme, D. Poulin, M. Lesosky, Operator quantum error correction, Quant.
Inf. Comp. 6 (2006), 383–399; arXiv:quant-ph/0504189.
[34] R. Laflamme, C. Miquel, J. P. Paz, and W. Zurek, Perfect quantum error correction code,
Phys. Rev. Lett. 77 (1996), 198–201; arXiv:quant-ph/9602019.
[35] D. A. Lidar and K. B. Whaley, Decoherence-Free Subspaces and Subsystems, in Irreversible
Quantum Dynamics (Springer Lecture Notes in Physics 622, Berlin, 2003), eds. F. Benatti
and R. Floreanini, 83–120; arXiv:quant-ph/0301032.
[36] D. Poulin, Stabilizer Formalism for Operator Quantum Error Correction, Phys. Rev. Lett.
95 (2005), 230504; arXiv:quant-ph/0508131.
[37] , Optimal and Efficient Decoding of Concatenated Quantum Block Codes, Phys. Rev.
A 74 (2006), 052333; arXiv:quant-ph/0606126.
[38] R. Raussendorf, J. Harrington, Fault-tolerant quantum computation with high thresh-
old in two dimensions, Phys. Rev. Lett. 98 (2007), 190504; arXiv:quant-ph/0610082;
R. Raussendorf, J. Harrington, K. Goyal, Topological fault-tolerance in cluster state quantum
computation, New J. Phys. 9 (2007), 199; arXiv: quant-ph/0703143.
[39] B. W. Reichardt, Improved ancilla preparation scheme increases fault-tolerant threshold,
arXiv:quant-ph/0406025.
[40] , Improved magic states distillation for quantum universality, Quant. Inf. Proc. 4
(2005), 251–264; arXiv:quant-ph/0411036.
[41] , Fault-tolerance threshold for a distance-three quantum code, arXiv:quant-ph/0509203
(2005).
[42] , Error-Detection-Based Quantum Fault Tolerance Against Discrete Pauli Noise,
Berkeley Ph.D. thesis (1996); arXiv:quant-ph/0612004.
[43] P. W. Shor, Scheme for reducing decoherence in quantum memory, Phys. Rev. A 52 (1995),
2493–2496.
[44] , Fault-tolerant quantum computation, Proc. 35th Ann. Symp. on Foundations of
Computer Science (IEEE Press, Los Alamitos, 1996), pp. 56–65; arXiv:quant-ph/9605011.
[45] R. Solovay, unpublished.
[46] A. M. Steane, Error correcting codes in quantum theory, Phys. Rev. Lett. 77 (1996), 793–797.
[47] , Multiple particle interference and quantum error correction, Proc. Roy. Soc. London
A 452 (1996), 2551–2577; arXiv:quant-ph/9601029.
[48] , Active stabilization, quantum computation, and quantum state synthesis, Phys. Rev.
Lett. 78 (1997), 2252; arXiv:quan-ph/9611027.
[49] , Overhead and noise threshold of fault-tolerant quantum error correction, Phys. Rev.
A 68 (2003), 042322 [19 pages]; arXiv:quant-ph/0207119.
[50] A. M. Stephens, A. G. Fowler, L. C. L. Hollenberg, Universal fault tolerant quan-
tum computation on bilinear nearest neighbor arrays, Quant. Info. Comp. 8 (2008), 330;
arXiv:quant-ph/0702201.
[51] K. M. Svore, D. P. DiVincenzo, B. M. Terhal, Noise Threshold for a Fault-
Tolerant Two-Dimensional Lattice Architecture, Quant. Inf. Comp. 7 (2007), 297–318;
arXiv:quant-ph/0604090.
[52] B. M. Terhal and G. Burkard, Fault-tolerant quantum computation for local non-Markovian
noise, Phys. Rev. A 71 (2005), 012336; arXiv:quant-ph/0402104.
[53] L. Viola, E. Knill, S. Lloyd, Dynamical Decoupling of Open Quantum Systems, Phys. Rev.
Lett. 82 (1999), 2417–2421; arXiv:quant-ph/9809071.
[54] W. K. Wooters and W. H. Zurek, A single quantum cannot be cloned, Nature 299 (1982),
802–803.
[55] X. Zhou, D. W. Leung, I. L. Chuang, Methodology for quantum logic gate constructions,
Phys. Rev. A 62 (2000), 052316; arXiv:quant-ph/0002039.
46 DANIEL GOTTESMAN