Simon
First demonstration of exponential speedup
Last updated
First demonstration of exponential speedup
Last updated
Simon's algorithm is the first real demonstration of quantum algorithms providing an exponential speedup over classical algorithm. Both and algorithms that we have seen so far provide a linear speedup over classical algorithms going from O(n) to O(1).
We are given an unknown function f, which is guaranteed to be map exactly two inputs to every unique output, using a hidden bitstring, b, such that :
So we want to identify b.
In the worst case, we have to query the function with different inputs (n is the number of bits in the input) i.e. checking just over half of all the possible inputs until we find two cases of the same output.
The Simon oracle takes as input and returns where Perm is any fixed bitwise permutation. has the same value for two values of x that satisfy the .
Prepare 2n qubits in , i.e n input and n output qubits.
Apply Hadamard gates to all input qubits. This create a equiprobable superposition of all possible input combinations, i.e up to some normalization constant.
Query the oracle with input qubits. The oracle effectively acts on all possible input combinations at the same time. The output is written on the output qubits using CNOT gates.
Apply Hadamard gates to the input qubits. This destructively interferes for all input states where is odd and destructively interferes for all where is even.
Measure all input qubits. The result is one of the possible i.e. .
If we repeat this experiment n times, we get n different values for . Solve the linear system of equations to find s.
The classical complexity required goes from O(n) in the BV algorithm to O(2^n) in the Simon problem. In comparison, the quantum complexity goes from O(1) to O(n), making this the first demonstration of a true exponential advantage of quantum computers over classical algorithms.
While Deutsch, BV and Simon algorithm's are important form a historical and theoretical perspective, they have little practical utility since each requires the existence of a very contrived oracle function.
Simon algorithm is very similar to and algorithm. Once again we have simply changed the definition of the oracle function making it much harder to solve.