Universal Gate Set

All computers, whether classical or quantum, should be able to perform arbitrary computations. Given an algorithm, the computer should be able to break or compile the algorithm down into smaller and smaller, simpler pieces. These small, simple pieces are the instruction set or “gate set” that the computer can execute. A gate set that is able to perform any algorithm has a special name: a universal gate set. For example, if one wants to calculate 32, rather than calculating the exponent directly, we can first break it down into multiplication: 32 = 3*3. We can then further break this down into addition: 3*3 = (3+3+3). To calculate the square of three, we only need to understand how to break this equation down (compiling) and perform simple addition (native instructions).