# Quantum Fourier transform

In quantum computing, the quantum Fourier transform is a linear transformation on quantum bits, and is the quantum analogue of the discrete Fourier transform. The quantum Fourier transform is a part of many quantum algorithms, notably Shor's algorithm for factoring and computing the discrete logarithm, the quantum phase estimation algorithm for estimating the eigenvalues of a unitary operator, and algorithms for the hidden subgroup problem.

The quantum Fourier transform can be performed efficiently on a quantum computer, with a particular decomposition into a product of simpler unitary matrices. Using a simple decomposition, the discrete Fourier transform can be implemented as a quantum circuit consisting of only $O(n^2)$ Hadamard gates and controlled phase shift gates, where $n$ is the number of qubits.[1] This can be compared with the classical discrete Fourier transform, which takes $O(n2^n)$ gates (where $n$ is the number of bits), which is exponentially more than $O(n^2)$. However, the quantum Fourier transform acts on a quantum state, whereas the classical Fourier transform acts on a vector, so not every task that uses the classical Fourier transform can take advantage of this exponential speedup.

The best quantum Fourier transform algorithms known today require only $O(n \log n)$ gates to achieve an efficient approximation.[2]

## Definition

The quantum Fourier transform is the classical discrete Fourier transform applied to the vector of amplitudes of a quantum state. The classical (unitary) Fourier transform acts on a vector in $\mathbb{C}^N$, (x0, ..., xN−1) and maps it to the vector (y0, ..., yN−1) according to the formula:

$y_k = \frac{1}{\sqrt{N}} \sum_{j=0}^{N-1} x_j \omega^{jk}$

where $\omega = e^{\frac{2 \pi i}{N}}$ is a primitive Nth root of unity.

Similarly, the quantum Fourier transform acts on a quantum state $\sum_{i=0}^{N-1} x_i |i\rangle$ and maps it to a quantum state $\sum_{i=0}^{N-1} y_i |i\rangle$ according to the formula:

$y_k = \frac{1}{\sqrt{N}} \sum_{j=0}^{N-1} x_j \omega^{jk}.$

This can also be expressed as the map

$|j\rangle \mapsto \frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} \omega^{jk} |k\rangle.$

Equivalently, the quantum Fourier transform can be viewed as a unitary matrix acting on quantum state vectors, where the unitary matrix $F_N$ is given by

$F_N = \frac{1}{\sqrt{N}} \begin{bmatrix} 1&1&1&1&\cdots &1 \\ 1&\omega&\omega^2&\omega^3&\cdots&\omega^{N-1} \\ 1&\omega^2&\omega^4&\omega^6&\cdots&\omega^{2(N-1)}\\ 1&\omega^3&\omega^6&\omega^9&\cdots&\omega^{3(N-1)}\\ \vdots&\vdots&\vdots&\vdots&&\vdots\\ 1&\omega^{N-1}&\omega^{2(N-1)}&\omega^{3(N-1)}&\cdots&\omega^{(N-1)(N-1)} \end{bmatrix}.$

## Properties

### Unitarity

Most of the properties of the quantum Fourier transform follow from the fact that it is a unitary transformation. This can be checked by performing matrix multiplication and ensuring that the relation $FF^{\dagger}=F^{\dagger}F=I$ holds, where $F^\dagger$ is the Hermitian adjoint of $F$. Alternately, one can check that vectors of norm 1 get mapped to vectors of norm 1.

From the unitary property it follows that the inverse of the quantum Fourier transform is the Hermitian adjoint of the Fourier matrix, thus $F^{-1}=F^{\dagger}$. Since there is an efficient quantum circuit implementing the quantum Fourier transform, the circuit can be run in reverse to perform the inverse quantum Fourier transform. Thus both transforms can be efficiently performed on a quantum computer.

## Circuit implementation

Quantum circuit representation of the quantum Fourier transform

The quantum Fourier transform can be approximately implemented for any N; however, the implementation for the case where N is a power of 2 is much simpler. Suppose N = 2n. We have the orthonormal basis consisting of the vectors

$|0\rangle, \ldots , |2^n - 1\rangle.$

Each basis state index can be represented in binary form

$| x \rangle = | x_1 x_2 \ldots x_n \rangle = | x_1 \rangle \otimes | x_2 \rangle \otimes \cdots \otimes | x_n \rangle$

where

$x = x_1 2^{n-1} + x_2 2^{n-2} +\cdots + x_n 2^0.\quad$

Similarly, we also adopt the notation

$[0. x_1 \ldots x_m] = \sum_{k = 1}^m x_k 2^{-k}.$

For instance, $[0.x_1] = \frac{x_1}{2}$ and $[0.x_1 x_2] = \frac{x_1}{2}+\frac{x_2}{2^2}.$

With this notation, the action of the quantum Fourier transform can be expressed as:

$|x_1 x_2 \ldots x_n \rangle \mapsto \frac{1}{\sqrt{N}} \ \left(|0\rangle + e^{2 \pi i \, [0.x_n] }|1\rangle\right) \otimes \left(|0\rangle + e^{2 \pi i \, [0.x_{n-1} x_n] }|1\rangle\right) \otimes \cdots \otimes \left(|0\rangle + e^{2 \pi i \, [0.x_1 x_2 \ldots x_n] }|1\rangle\right).$

In other words, the discrete Fourier transform, an operation on n-qubits, can be factored into the tensor product of n single-qubit operations, suggesting it is easily represented as a quantum circuit. In fact, each of those single-qubit operations can be implemented efficiently using a Hadamard gate and controlled phase gates. The first term requires one Hadamard gate, the next one requires a Hadamard gate and a controlled phase gate, and each following term requires an additional controlled phase gate. Summing up the number of gates gives $1 + 2 + \cdots + n = n(n+1)/2 = O(n^2)$ gates, which is polynomial in the number of qubits.

## Example

Consider the quantum Fourier transform on 3 qubits. It is the following transformation:

$|j\rangle \mapsto \frac{1}{\sqrt{2^3}} \sum_{k=0}^{2^3-1} \omega^{jk} |k\rangle,$

where $\omega$ is a primitive eighth root of unity satisfying $\omega^8=\left(e^{\frac{2\pi i}{8}}\right)^8=1$ (since $N = 2^3 = 8$).

The matrix representing this transformation on 3 qubits is

$F_{2^3} = \frac{1}{\sqrt{2^3}} \begin{bmatrix} 1&1&1&1&1&1&1&1 \\ 1&\omega&\omega^2&\omega^3&\omega^4&\omega^5&\omega^6&\omega^7 \\ 1&\omega^2&\omega^4&\omega^6&\omega^8&\omega^{10}&\omega^{12}&\omega^{14} \\ 1&\omega^3&\omega^6&\omega^9&\omega^{12}&\omega^{15}&\omega^{18}&\omega^{21} \\ 1&\omega^4&\omega^8&\omega^{12}&\omega^{16}&\omega^{20}&\omega^{24}&\omega^{28} \\ 1&\omega^5&\omega^{10}&\omega^{15}&\omega^{20}&\omega^{25}&\omega^{30}&\omega^{35} \\ 1&\omega^6&\omega^{12}&\omega^{18}&\omega^{24}&\omega^{30}&\omega^{36}&\omega^{42} \\ 1&\omega^7&\omega^{14}&\omega^{21}&\omega^{28}&\omega^{35}&\omega^{42}&\omega^{49} \\ \end{bmatrix} = \frac{1}{\sqrt{2^3}} \begin{bmatrix} 1&1&1&1&1&1&1&1 \\ 1&\omega&\omega^2&\omega^3&\omega^4&\omega^5&\omega^6&\omega^7 \\ 1&\omega^2&\omega^4&\omega^6&1&\omega^2&\omega^4&\omega^6 \\ 1&\omega^3&\omega^6&\omega&\omega^4&\omega^7&\omega^2&\omega^5 \\ 1&\omega^4&1&\omega^4&1&\omega^4&1&\omega^4 \\ 1&\omega^5&\omega^2&\omega^7&\omega^4&\omega&\omega^6&\omega^3 \\ 1&\omega^6&\omega^4&\omega^2&1&\omega^6&\omega^4&\omega^2 \\ 1&\omega^7&\omega^6&\omega^5&\omega^4&\omega^3&\omega^2&\omega \\ \end{bmatrix}.$

The 3-qubit quantum Fourier transform is the following operation:

$|x_1, x_2, x_3 \rangle \mapsto \frac{1}{\sqrt{2^3}} \ \left(|0\rangle + e^{2 \pi i \, [0.x_3] }|1\rangle\right) \otimes \left(|0\rangle + e^{2 \pi i \, [0.x_2 x_3] }|1\rangle\right) \otimes \left(|0\rangle + e^{2 \pi i \, [0.x_1 x_2 x_3] }|1\rangle\right).$

This quantum circuit implements the quantum Fourier transform on the quantum state $|x_1,x_2,x_3\rangle$.

The quantum gates used in the circuit above are the Hadamard gate and the controlled phase gate $R_\theta$.

As calculated above, the number of gates used is $n(n+1)/2$ which is equal to 6, for n = 3.

## References

1. ^ Michael Nielsen and Isaac Chuang (2000). Quantum Computation and Quantum Information. Cambridge: Cambridge University Press. ISBN 0-521-63503-9. OCLC 174527496.
2. ^ L. Hales, S. Hallgren, An improved quantum Fourier transform algorithm and applications, Proceedings of the 41st Annual Symposium on Foundations of Computer Science, p. 515, November 12–14, 2000
• K. R. Parthasarathy, Lectures on Quantum Computation and Quantum Error Correcting Codes (Indian Statistical Institute, Delhi Center, June 2001)
• John Preskill, Lecture Notes for Physics 229: Quantum Information and Computation (CIT, September 1998)