Simon's algorithm
Die Seide is noch nich ibersetzt worn. Se guggen de englsche Originalversion.
Simon's algorithm is a quantum query algorithm for a problem known as Simon's problem. This is a promise problem with a flavor similar to the Deutsch-Jozsa and Bernstein-Vazirani problems, but the specifics are different.
Simon's algorithm is significant because it provides an exponential advantage of quantum over classical (including probabilistic) algorithms, and the technique it uses inspired Peter Shor's discovery of an efficient quantum algorithm for integer factorization.
Simon's problem
The input function for Simon's problem takes the form
for positive integers and We could restrict our attention to the case in the interest of simplicity, but there's little to be gained in making this assumption — Simon's algorithm and its analysis are basically the same either way.
We'll unpack the promise to better understand what it says momentarily, but first let's be clear that it requires that has a very special structure — so most functions won't satisfy this promise. It's also fitting to acknowledge that this problem isn't intended to have practical importance. Rather, it's a somewhat artificial problem tailor-made to be easy for quantum computers and hard for classical computers.
There are two main cases: the first case is that is the all-zero string and the second case is that is not the all-zero string.
-
Case 1: If is the all-zero string, then we can simplify the if and only if statement in the promise so that it reads This is equivalent to being a one-to-one function.
-
Case 2: If is not the all-zero string, then the promise being satisfied for this string implies that is two-to-one, meaning that for every possible output string of there are exactly two input strings that cause to output that string. Moreover, these two input strings must take the form and for some string
It's important to recognize that there can only be one string that works if the promise is met, so there's always a unique correct answer for functions that satisfy the promise.
Here's an example of a function taking the form that satisfies the promise for the string
There are different input strings and different output strings, each of which occurs twice — so this is a two-to-one function. Moreover, for any two different input strings that produce the same output string, we see that the bitwise XOR of these two input strings is equal to which is equivalent to saying that either one of them equals the other XORed with
Notice that the only thing that matters about the actual output strings is whether they're the same or different for different choices of input strings. For instance, in the example above, there are four strings and that appear as outputs of We could replace these four strings with different strings, so long as they're all distinct, and the correct solution would not change.
Algorithm description
Here's a quantum circuit diagram representing Simon's algorithm.
To be clear, there are qubits on the top that are acted upon by Hadamard gates and qubits on the bottom that go directly into the query gate. It looks very similar to the algorithms we've already discussed in the lesson, but this time there's no phase kickback; the bottom qubits all go into the query gate in the state
To solve Simon's problem using this circuit will actually require several independent runs of it followed by a classical post-processing step, which will be described later after the behavior of the circuit is analyzed.
Analysis
The analysis of Simon's algorithm begins along similar lines to the Deutsch-Jozsa algorithm. After the first layer of Hadamard gates is performed on the top qubits, the state becomes
When the is performed, the output of the function is XORed onto the all-zero state of the bottom qubits, so the state becomes
When the second layer of Hadamard gates is performed, we obtain the following state by using the same formula for the action of a layer of Hadamard gates as before.