The No-Cloning Theorem

Get introduced to the concept of the no-cloning theorem.

We'll cover the following...

Quantum computing is fundamentally different from classical computing. To master quantum computing, you must unlearn what you have learned.

It starts with the quantum superposition. Unlike a classical bit, a quantum bit (qubit) is not 0 or 1. Unless we measure it, the qubit is in a complex linear combination of 0 and 1. But when we measure it, the quantum superposition collapses, and the qubit is either 0 or 1, as a classical bit.

It continues with quantum entanglement. Two qubits can share a state of superposition. Once we measure one qubit, its entangled fellow instantly jumps to a different state of superposition. Even if it’s light-years away, it seems to know a measurement has taken place and takes on a state that acknowledges the measured value.

When starting with quantum computing, it can be tempting to focus on the possibilities that arise from superposition and entanglement. But quantum computing does not simply add new features we can use. Instead, it is a fundamentally different way of computing and requires different kinds of programs.

Classically, we think about input, transformational boolean logic, and output, but this line of thought isn’t the most helpful when it comes to quantum computing.

Let’s take one of the simplest operators in classical computing, the assignment.

Copying a variable

Press + to interact
my_var = 1
copy_of_my_var = my_var
print (my_var, copy_of_my_var)

We can use the assignment operator to create a copy of a variable. The value of the variable doesn’t matter. We can create a copy of it.

In a classical program, we frequently rely on this ability to copy data. In a classical circuit, this is the fan-out operation. In electrical engineering, we have wires. If there is a voltage at a particular time, we interpret it as 1. If there is no voltage, it is 0. We can connect another wire to it. We will receive the same output at both ends.

Copying data is helpful in manifold ways. First, we can use copies as inputs to different operators. For instance, in the half-adder, we copy the input to use it in two other operators.

Secondly, we can use the copies to evaluate the state at different program parts at other times. This would be particularly useful in quantum computing.

In the lesson Gamble with Quantum Computing, we learned how to change a qubit’s measurement probabilities by rotating it around the y-axis. We got to know the angle θ\theta, which controls the probability of measuring the qubit as 0 or 1 but we struggled with the problem that θ ...