Today we talked about reversible computation. The Toffoli gate, passes the first two bits unchanged and does a controlled controlled NOT to the third.
[x, y, z] ⇒ [x, y, z ⊕ (x ∧ y)]where ⊕ is XOR and ∧ is AND. This gate is computationally universal. We proved that if there is a non-reversible circuit with n gates which takes a bitstring x to a bitstring y = f(x), then there is a circuit made of O(n) Toffoli gates which takes
x ⋅ 0a1b ⇒ x ⋅ f(x) ⋅ 0a'1b'Here, ⋅ is the concatenation operator. Thus, if you can compute f efficiently, you can compute f efficiently with a reversible circult as long as you keep the input around. In this construction, there is no "garbage." That is, at both the start and end of the computation, the work bits (the ones that are not involved in the input or the output) are fixed, so we can take them to be 0a1b for some numbers a and b that do not depend on the input.
Further, if there is a non-reversible circuit for f with n gates, and for f -1 with n' gates, then there is a circuit made of O(n+n') Toffoli gates which takes
x ⋅ 0a1b ⇒ f(x) ⋅ 0a'1b',so if you can do both f and f -1 efficiently, you can take x to f(x) efficiently without keeping the input around.
We then introduced the axioms of quantum mechanics, In a quantum state space, states are represented by unit-length vectors, and orthogonal vectors represent perfectly distinguishable states. We talked about bra and ket notation, which represents a vector x by | x 〉 and the conjugate transpose of x by &lang x |. We introduced qubits, which are two-dimensional quantum state spaces. Both the polarization of a photon and a spin-½ particle are two well-known qubit systems. We defined the Bloch sphere, and showed how the spin-½ particle states map onto it. Isolated quantum systems evolve linearly, which in the finite-dimensional case translates to the action of a unitary matrix on the system. We gave two examples of unitary action on qubits, both of which translated into rotations of the Bloch sphere around some axis.