Quantum Computation and Quantum Communication by Mladen Pavicic