By Martin Roetteler (Microsoft)
Why Quantum machines? Classical IT has its limits, especially in computing power. For example, modelling and understanding chemical models works on small molecules, but not on larger. Important to realize is that QM is not going to replace our own computers we use on a daily basis. QM is based on new technologiess, including Ion traps (some metals can be used to manipulate ions with lasers to make transitions, and still in a very early research stage, about 10 qubits), super conductors (classical chips, but then make them super conducting, a current flows in it to decode bits: clockwise or anti clockwise flowing, 20-50 qubits), linear optics, NV centers (for storing Qbits in a lattice-type structure, not very good for computing), Quantum dots (to couple elements, it is based on electronic spin), and Majorana zero modes (nano wires put on a super conducting material, can be shielded very well, but very hard to build). However, for a QM to work (currently), you need to cool down the machine to 0.01K (that is really close to the absolute zero-point!!!!). Programming still is quite primitive, as they use a graphical language, where each line represents a qubit. Some benchmarks show that the quality of qubits are not yet optimal. They work on small scale, but need to become more accurate.
What can we do with Quantum machines? The RSA problem can be expressed on a QM, moving down the execution time for cracking RSA from 1 billion years to a single second (with about 2K qubits). This shows that we need new cryptographic algorithms. Other speedups include computational chemistry and linear algebra.
How do we program Quantum machines? The reason why it exponentially scales has to do with the qubits: 30 qubits is something like 16 Gb, 40 qubits compares to 16 Tb, and 50 qubits corresponds to 16 Pb. An important idea is interference: useless computations are canceled out, and useful ones can be amplified. The basic idea is that a bit is replaced by a unit vector [a]*0 + [b] * 1. Computing are unitary operations. Programming is not easy, as you have all these superpositions of a qubit. From the presentation it appears that you’re programming with the logic components, as we did in the past with physics.
Quantum machines also have drawbacks. To start, one cannot clone: quantum information cannot be copied! Thus, redundancy is not possible, and error repair is very difficult. There are I/O limitations: setting the input state can be very costly, and output reading is probabilistic (you get a draw if you read out the state). And, how do you verify an algorithm?