Quantum computing is a fairly new and fairly old field at the same time. The ideas and concepts used to achieve quantum computing (such as quantum mechanical superposition and entanglement) have been around for almost a century and the field of quantum information science was founded almost 40 years ago. Early explorers, such as Peter Shor and Lov Grover, produced quantum computing algorithms (Shor's algorithm and Grover's algorithm) that are now starting to become as well known as foundational physics concepts such as E=mc2. For details, see the references at the end of the chapter.
At the same time, real quantum computers that utilize these effects are a relatively recent invention. The requirements for building one were outlined by DiVincenzo in the 1990, and IBM opened up its IBM Quantum Experience® and Qiskit® in 2016, effectively the first time anyone outside of a research lab could start exploring this...
The recipes that we discuss in this chapter can be found here: https://github.com/PacktPublishing/Quantum-Computing-in-Practice-with-Qiskit-and-IBM-Quantum-Experience/tree/master/Chapter02.
For more information about how to get the recipe sample code, refer to the Downloading the code samples section in Chapter 1, Preparing Your Environment.
Comparing a bit and a qubit
An intuitive feeling that we have says that a bit is something that is either zero (0) or one (1). By putting many bits together, you can create bytes as well as arbitrary large binary numbers, and with those, build the most amazing computer programs, encode digital images, encrypt your love letters and bank transactions, and more.
In a classical computer, a bit is realized by using low or high voltages over the transistors that make up the logic board, typically something such as 0 V and 5 V. In a hard drive, the bit might be a region magnetized in a certain way to represent 0 and the other way for 1, and so on.
In books about quantum computing, the important point to drive home is that a classical bit can only be a 0 or a 1; it can never be anything else. In the computer example, you can imagine a box with...
Visualizing a qubit in Python
In this recipe, we will use generic Python with NumPy to create a vector and visual representation of a bit and show how it can be in only two states, 0 and 1. We will also introduce our first, smallish foray into the Qiskit® world by showing how a qubit can not only be in the unique 0 and 1 states but also in a superposition of these states. The way to do this is to take the vector form of the qubit and project it on the so-called Bloch sphere, for which there is a Qiskit® method. Let's get to work!
In the preceding recipe, we defined our qubits with the help of two complex parameters—a and b. This meant that our qubits could take values other than the 0 and 1 of a classical bit. But it is hard to visualize a qubit halfway between 0 and 1, even if you know a and b.
However, with a little mathematical trickery, it turns out that you can also describe a qubit using two angles—theta () and phi ()—and visualize the...
A quick introduction to quantum gates
Now that we have sorted out the difference between bits and qubits, and have also understood how to visualize the qubit as a Bloch sphere, we know all that there is to know about qubits, correct? Well, not quite. A qubit, or for that matter, hundreds or thousands of qubits, is not the only thing you need to make a quantum computer! You need to perform logical operations on and with the qubits. For this, just like a classical computer, we need logical gates.
I will not go into any great detail on how logical gates work, but suffice to say that a quantum gate, operates on the input of one or more qubits and outputs a result.
In this recipe, we will work our way through the mathematical interpretation of few quantum gates by using matrix multiplication of single- and multi-qubit gates. Don't worry, we will not dig deep, just a little to scratch the surface. You will find a deeper look quantum gates in Chapter 6, Understanding the Qiskit...