Supposedly I am supposed to be explaining why the set of quantum gates with CNOTS and 1-qubit gates is computationally universal in these notes, as well as how a discrete set of gates can be universal and the Kitaev-Solovay theorem. I am falling behind on these notes, and I'm going to very sketchy for this lecture, as it is pulled fairly directly from the textbook Nielsen and Chuang.
What does it mean for a restricted set S of quantum gates to be computationally universal? There probably isn't a unaminous agreement on the meaning of this. While we won't state the definition precisely, it is roughly that one can start with a description of a circuit for a quantum computer using some canonical set of gates (say all two-qubit gates) and then produce, using a polynomial-time classical algorithm, a computationally equivalent circuit for a quantum computer using only gates from S, such that the new circuit is at most polynomially larger than the original circuit. Here, computationally equivalent means that the output probability distribution does not differ much between the old and new quantum circuits. (It was pointed out in class that if the classical computer outputs the new circuit in a reasonable format, the requirement that the classical algorithm is in P means that the number of gates can't be more than polynomial. I still think it is worth emphasizing the point that the number of gates cannot increase more than polynomially.)
One way of showing that a set of quantum gates is computationally universal is by showing that the new circuit applies exactly the same unitary transformation in SU(2n) as the original circuit. It is just as good to show that it applies a unitary transformation that is very close to it (so the probability distribution is not changed much). This is a stricter requirement than computational universality; let's call it unitary universality. This is the definition given in the textbook. We will show that CNOTs and one-qubit gates are universal in this stricter sense; that is, that for fixed k, any k-qubit gate can be composed out of a fairly small number of CNOTs and one-qubit gates.
We showed this theorem by essentially following the proof in Nielsen and Chuang. I went over the elements of this proof in a different order in class, which was a mistake, so I will fix the order in these notes. First, we can that any two-qubit controlled U gate could be made up of two CNOT gates and three single-qubit gates (Fig. 4.6 in NC). We next considered a gate on three qubits, with two control qubits, and one target qubit, which applies U to the target bit if both control qubits are | 1 〉, and the identity otherwise. We can show how to make it out of five controlled two-qubit gates (Fig. 4.8 in NC). We next considered a gate on n qubits with n−1 control qubits and one target qubit. This gate could be made up using a linear number of Toffoli gates (controlled controlled σx gates), and one controlled U gate, using a linear number of work qubits (Fig. 4.10 in NC).
The next step was to show that CNOTS and one-qubit gates could be used to make up any two-level gate, and that enough two-level gates could be used to make any unitary transformation. For SU(m), this last piece requires c m2 two-level, making it inefficient if m = 2n, as we have with n qubits. Thus, not all unitary transformations on n qubits are constructible with this method in polynomial time. This is to be expected; a simple counting argument shows that there are too many unitary transformations to be constructed efficiently from components with only a small number of degrees of freedom. However, these arguments show that any circuit made of k-qubit gates, for fixed k, can be simulated with 1-qubit gates and CNOTs, with only a linear increase in the number of gates. The multiplicative factor in this linear increase grows exponentially in k, but that is unavoidable.
Finally, I tlaked about the Solovay-Kitaev theorem, which says that if you have a finite set of gates that generates a set of unitary transformations dense in SU(2), you can quickly approximate any unitary transformation in SU(2) within ε with only O(logc 1/ε) gates. This shows that any finite set of gates which doesn't live in a subgroup of SU(2) is efficiently useable for quantum computation.