Quantum Computation and Quantum Information (Cambridge Series on Information and the Natural Sciences)