Index: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Home > Shor's algorithm
Shor's algorithm is a quantum algorithm for factoring a number N in O((log N)3) time and O(log N) space, named after Peter Shor.Many public key cryptosystems, such as RSA, will become obsolete if Shor's algorithm is ever implemented in a practical quantum computer. A message encrypted with RSA can be deciphered by factoring the public key N, which is the product of two prime numbers. Known classical algorithms cannot do this in time O((log N)k) for any k, so they quickly become infeasible as N is increased. By contrast, Shor's algorithm can crack RSA in polynomial time. It has also been extended to attack many other public key cryptosystems.
Like all quantum computer algorithms, Shor's algorithm is probabilistic: it gives the correct answer with high probability, and the probability of failure can be decreased by repeating the algorithm.
Shor's algorithm was demonstrated in 2001 by a group at IBM, which factored 15 into 3 and 5, using a quantum computer with 7 qubits.
1 Procedure
The problem we are trying to solve is that, given an integer N, we try to find another integer p between 1 and N that divides N.
Shor's algorithm consists of two parts:
- A reduction of the factoring problem to the problem of order-finding, which can be done on a classical computer.
- A quantum algorithm to solve the order-finding problem.
1.1 Classical part
- Pick a pseudo-random number a < N
- Compute gcd(a, N). This may be done using the Euclidean algorithm.
- If gcd(a, N) ≠ 1, then it is a nontrivial factor of N, so we are done.
- Otherwise, use the period-finding subroutine (below) to find r, the period of the following function:
- ,
i.e. the smallest integer r for which
.
- If r is odd, go back to step 1.
- If a r/2 ≡ -1 (mod N), go back to step 1.
- The factors of N are gcd(ar/2 ± 1, N). We are done.
1.2 Quantum part: Period-finding subroutine:
- Start with a pair of input and output qubit registers with log2N qubits each, and initialize them to
-
where x runs from 0 to N - 1.
- Construct f(x) as a quantum function and apply it to the above state, to obtain
-
- Apply the quantum Fourier transform on the input register. The
quantum Fourier transform on N points is defined by:
-
This leaves us in the following state:
-
- Perform a measurement.
We obtain some outcome y in the input register and in the output register.
Since f is periodic, the probability to measure some y is given by
-
Analysis now shows that this probability is higher, the closer yr/N is to an integer.
- Turn y/N into an irreducible fractionAn irreducible fraction is a fraction a ''b where the numerator a is an integer and the denominator b is a positive integer, such that there is not another fraction c ''d with c smaller in absolute value than a and 0 d ''b and c and d are integers, that r, and extract the denominator r′, which is a candidate for r.
- Check if f(x) = f(x + r′). If so, we are done.
- Otherwise, obtain more candidates for r by using values near y, or multiples of r′. If any candidate works, we are done.
- Otherwise, go back to step 1 of the subroutine.
Read more »