Quantum Fourier Transform

Here we make use of this notation.

We define the quantum Fourier transform (QFT) as a \(n\)-qubit gate \(\mathrm{QFT}\) such that:

\[ \mathrm{QFT} \ket{x}_n = \frac{1}{\sqrt{2^n}} \sum_{y=0}^{2^{n}-1} e^{2\pi i x y / 2^n} \ket{y}_n \]

where \(xy\) is the ordinary product. We will often omit the subscript \(n\) in the computational basis.

Remark

  • If \(x \neq \bar{x}\), then \(\mathrm{QFT}\ket{x}\) is orthogonal to \(\mathrm{QFT}\ket{\bar{x}}\)
  • \(\mathrm{QFT}\ket{x}\) is a normal vector for every \(\ket{x}\) in the computational basis;
More on the QFT
  • For an arbitrary state \(\sum_{x=0}^{2^n - 1} \gamma(x) \ket{x} \) , we have:

    \[\mathrm{QFT} \left( \sum_{x=0}^{2^n - 1} \gamma(x) \ket{x} \right)=\sum_{x=0}^{2^n - 1} \tilde{\gamma}(x) \ket{x}\]

    where

    \[\tilde{\gamma}(x) = \frac{1}{\sqrt{2^n}} \sum_{y=0}^{2^n - 1} e^{2\pi i x y / 2^n} \gamma(y)\]

    are the discrete Fourier transform of the amplitudes \(\gamma(x)\).

  • The Fast Fourier Transform (FFT) can be implemented with a \(\mathcal{O}(N\log{N})\) time complexity, where \(N\) is the length of the input vector or sequence. The QFT can be performed with a \(\mathcal{O}(n^2)\) time complexity (i.e. number of elementary gates), where \(n\) is the number of qubits. Since \(n=\log{N}\), complexity can be written \(\mathcal{O}((\log{N})^2)\): an exponential speed-up with respect to the FFT. Of course, one have to consider that the state obtained by the QFT is not determined, as it is for the FFT.

Last updated on