A Survey on Quantum Computation