10. Quantum Computing
Note: these notes are fairly short and do not comprehensively discuss the background behind quantum computing. This is because I had prior knowledge regarding quantum computing, and wasn't particularly interested in writing a whole essay here about it since I already knew... sorry :(
That said, I do recommend books like Quantum Mechanics: The Theoretical Minimum (Susskind and Friedman) or Quantum Computation and Quantum Information (Nielsen and Chung) for learning the basics (and perhaps even more!)
Quantum Complexity
is the class of all problems efficiently solvable by a quantum computer. It is believed that , but and . In other words, there are problems within that are not efficiently verifiable (e.g. how do you verify a physics simulation?) and there are problems within that are probably not efficiently solvable by a quantum computer.
Elitzur-Vaidman Bomb
Consider a box that may or may not contain a bomb, that interacts as follows with a qubit:
- If it is empty, and we send , nothing happens and is returned.
- If it has a bomb, and we send as before, the bomb measures in the basis. If the outcome is , is returned. Otherwise, the bomb explodes.
We want to determine a way to distinguish if the box has a bomb or not without causing an explosion if the box has a bomb.
In the classical world, there exists no such algorithm for this. Sending does not confirm anything, and sending will cause the bomb to explode if it exists. However, in the quantum world, we can create an opportunity to determine if a bomb exists without causing an explosion!
Let initially. Then, apply a (45°) rotation to to produce . Then, we send through the box.
- If there is a bomb, it has an explosion probability of 50%.
- Alternatively, if there is no bomb, will be returned.
Finally, we rotate the output of the box by again and measure .
- If is observed, we output "bomb."
- If is observed, we output "not sure."
Let's walk through the possible outcomes to see why this is the case.
- If there is no bomb, will be output by the box, which a degree rotation will then bring to .
- If there is a bomb, but no explosion, will be output by the box, which a degree rotation will then bring to . Measuring has a chance of measuring and a chance of measuring .
- If there is a bomb, but an explosion, it doesn't matter—we know there's a bomb, but we haven't accomplished our goal.
So, if there isn't a bomb, we'll always receive "not sure." After running this test times, there is a probability that the box has a bomb.
If there is a bomb, there is a 50% chance that the bomb's measurement results in , an explosion. Otherwise, there is an addition 50/50 between returning "bomb" and returning "not sure." Thus, there is a chance of an explosion, a chance of returning "bomb," and a chance of returning "not sure."
However, is still a high chance—we can do better!
As before, let initially. However, our rotation angle now changes to , where is some chosen parameter. Then, for , we perform the same procedure.
- Rotate by .
- Send through the box. Let be the value returned by the box.
Then, at the end, measure . If , return "bomb." Otherwise, return "empty."
Note that, in this procedure, the sent into the box changes between rounds.
Let's analyze the possibilities again.
Empty:
The box will output each time. After iterations, will have rotated the full radians. Thus, at the end.
Bomb:
Each time passes through the box, if the bomb doesn't explode, is returned. If there is never an explosion, and at the end, we know there is a bomb in the box. (Since empty implies should be ). But then, what's the probability of the bomb exploding? Well, the probability of the bomb exploding at is . The probability of the bomb exploding at some is
since the events are all disjoint. Thus,
For small , , so
Thus, for this algorithm, if the box is empty, it will output "empty" with a probability of . If there is a bomb, the box will explode with probability , and otherwise output "bomb." The time complexity, meanwhile, is .
is known as the safety level—if avoiding an explosion is extremely important (especially if it's an actual bomb...), increasing will decrease the explosion probability, but increase the time complexity.