dmitry | Jan. 3, 2021, 11:43 p.m.
I've been interested in quantum topics since I read a section dedicated to quantum cryptography in Simon Singh's book The Code Book. That's a book I read fairly recently, but quantum as a field is not something I deal with on a regular basis, so I was keen to hear about CERN putting on a number of virtual lectures relating to quantum computing in November and December of 2020. This blog entry will cover the first lecture in the series (out of a total of 7).
Quantum computing is fascinating of course because it utilizes quantum properties to do calculations in a fundamentally different way to a classical computer, meaning we have more computational resources for a given problem (rather than being able to solve problems that are considered unsolvable). As I listened to this lecture, it's clear that the technology is still in the early days in terms of mainstream adoption (seeing a photo of the IBM Q and learning that most of it is still actually intended to support the extremely low temperature of the superconducting qubits in the 2cm x 2cm microprocessor in isolation of the outside environment was surprising).
The qubits are important because they are they are quantum's version of 0/1 binary data. They can take infinitely many values (100% 1, 100% 0, 50% 1 and 50% 0 and anything in between), as long as the magnitude of the sum of the coefficient amplitudes of the 0 and 1 components is equal to 1 (α + β = 1, where quantum state ψ = α|0> + β|1>, please forgive the unorthodox notation). The tricky part is when we try to measure the qubit, so we know what the value is. The measurement permanently alters (destroys) the state and gives us either a 1 or a 0 (classical bit of information), with the probability of 0 being |α|2 and the probability of 1 being |β|2 (modulus of either α or β squared). In addition, if we do not know the state of a qubit, we cannot make a copy of that qubit.
Most of the quantum programming frameworks are built to specify quantum circuits. These quantum circuits are what allow for operations (unitary quantum transformations such as X/NOT or Z gates) to be completed on the qubits, before we take a measurement of the qubits. These operations are reversible (however anything that is possible in classical, non-reversible computation is possible in reversible computation as well, with the added potential that no energy is necessary to complete reversible computation) and every gate in the quantum circuit has the same number of inputs and outputs.
A type of quantum operation I have not seen in classical computing is the Z gate which preserves 0 as 0 and changes a 1 to -1 and the H gate (0:(|0>+|1>)/sqrt2, 1:(|0>-|1>)/sqrt2) (this is interesting because it forms a superposition of partial state 0 and partial state 1).
Quantum circuits can be built using online tools such as Quirk and the IBM Quantum Experience. The IBM Quantum Experience is more comprehensive, allowing you to create circuits using a GUI interface, programmatically and then actually being able to run your quantum circuits on quantum computers (and then running the circuits a number of times to get a probabilistic calculation of the qubit state).
I find answers for questions nobody else has time to answer and to help me remember, I write them dowm here!