title: Transformada cuántica de Fourier
text: # Transformada cuántica de Fourier
  
  En computación cuántica, la transformada cuántica de Fourier es una transformación sobre bits cuánticos, y es la analogía cuántica de la transformada de Fourier discreta. La transformada de Fourier es una parte de muchos algoritmos cuánticos, el algoritmo de factorización de Shor y el cálculo del logaritmo discreto, el algoritmo de estimación de fase para estimar los eigenvalores de un operador unitario, y logaritmos para HSP (hidden subgroup problem).
  
  La transformada de Fourier puede ser realizada eficientemente en un ordenador cuántico, con una particular descomposición en un producto de matrices unitarias simples. Usando una descomposición simple, la trasformación discreta de Fourier puede ser implementada como un circuito cuántico que tiene solo $O(n^{2})$ puertas Hadamard y puertas de desplazamiento de fase controladas, donde $n$ es el número de qubits. Esto puede ser comparado con la transformada de Fourier discreta, que utiliza $O(n2^{n})$ puertas (donde $n$ es el número de bits), lo cual es exponencialmente mayor que $O(n^{2})$. Sin embargo, la transformada cuántica de Fourier actúa sobre un estado cuántico, mientras que la trasformada de Fourier clásica actúa sobre un vector, así que no todas las tareas que usan la transformada de Fourier clásica pueden utilizar la ventaja de esta aceleración exponencial.
  
  Los mejores algoritmos cuánticos de transformada de Fourier conocidos actualmente requieren solo $O(n\log n)$ puertas para alcanzar una aproximación eficiente.
  
  ## Definición
  
  La transformada de Fourier cuántica es la transformada de Fourier discreta clásica aplicada al vector de amplitudes de un estado cuántico. La transformada de Fourier clásica (unitaria) actúa sobre un vector en $\mathbb {C} ^{N}$, $(x_0,...,$ $x_{N−1})$ y lo mapea al vector $(y_0,...,$ $y_{N−1})$ de acuerdo con la fórmula:
  
      $y_{k}={\frac {1}{\sqrt {N}}}\sum _{j=0}^{N-1}x_{j}\omega ^{jk}$
  
  Donde $\omega =e^{\frac {2\pi i}{N}}$ es una raíz de la unidad $N^{th}$ primitiva.
  
  De forma similar, la transformada cuántica de Fourier actúa sobre un estado cuántico $\sum _{i=0}^{N-1}x_{i}|i\rangle$ y lo mapea a un estado cuántico $\sum _{i=0}^{N-1}y_{i}|i\rangle$ de acuerdo con la fórmula:
  
      $y_{k}={\frac {1}{\sqrt {N}}}\sum _{j=0}^{N-1}x_{j}\omega ^{jk}.$
  
  Esto puede ser expresado como la aplicación
  
      $|j\rangle \mapsto {\frac {1}{\sqrt {N}}}\sum _{k=0}^{N-1}\omega ^{jk}|k\rangle .$
  
  De forma equivalente, la transformada de Fourier cuántica puede ser vista como una matriz unitaria actuando sobre vectores estado cuántico, donde la matriz unitaria $F_{N}$ está dada por
  
      $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}}.$
  
  ## Propiedades
  
  ### Unitaria
  
  Muchas de las propiedades de la transformada de Fourier surgen del hecho de que es una transformación unitaria. Esto puede ser comprobado realizando la multiplicación de matrices y verificando la relación $FF^{\dagger }=F^{\dagger }F=I$, donde $F^{\dagger }$ es la Hermitica adjunta de $F$. Alternativamente, podemos comprobar que los vectores de norma 1 son transformados a su vez en vectores de norma 1.
  
  De las propiedades unitarias surge que la inversa de la transformada cuántica de Fourier es la hermítica adjunta de la matriz de Fourier, así $F^{-1}=F^{\dagger }$. Existe un circuito cuántico eficiente que implementa la transformada inversa cuántica de Fourier. Así que ambas transformaciones pueden ser realizadas en un ordenador cuántico.
  
  ## Implementación del Circuito
  
  La transformada de Fourier puede ser implementada aproximadamente para cualquier N, sin embargo, la implementación para el caso en el que N es una potencia de 2 es mucho más simple.
  
  Cambio de notación.
  
  Sea el número 123456. Dicho número realmente puede ser descrito por
  
  $123456=1\cdot 10^{6}+2\cdot 10^{5}+3\cdot 10^{4}..+6\cdot 10^{0}={\sum }_{\scriptstyle i=0}^{\scriptstyle n}j_{i}10^{n-i}$
  
  donde $n$ es el número de término que describe dicho número. Cabe destacar que $j_{i}$ puede tomar valores entre 0 y 9 ya que se están haciendo operaciones módulo 10.
  
  Se puede definir también para fracciones. Por ejemplo, el número $0.2345678$ puede ser visto como $0.2345678=2\cdot 10^{-1}+3\cdot 10^{-2}+4\cdot 10^{-3}+5\cdot 10^{-4}+6\cdot 10^{-5}...={\sum }_{\scriptstyle i=0}^{\scriptstyle n}j_{i}10^{-i}$
  
  Es posible definir el mismo tipo de notación en binario. Este tipo de notación es conocida como notación binaria o representación binaria
  
  Supongamos N = $2^n.$ Tenemos la base ortogonal consistente en los vectores
  
      $|0\rangle ,\ldots ,|2^{n}-1\rangle .$
  
  La base de todos los posibles estados de los qubits es:
  
      $|x\rangle =|x_{1}x_{2}\ldots x_{n}\rangle =|x_{1}\rangle \otimes |x_{2}\rangle \otimes \cdots \otimes |x_{n}\rangle$
  
  donde, con la notación producto tensorial $\otimes$, $|x_{j}\rangle$ indica que el qubit $j$ está en el estado $x_{j}$, con $x_{j}$ entre 0 y 1 ya que estamos haciendo módulo 2. Por convención, el índice de la base de estados $x$ ordena los posibles estados de los qubits lexicográficamente, por ejemplo, por convención el paso de binario a decimal es de la forma.:
  
      $x=x_{1}2^{n-1}+x_{2}2^{n-2}+\cdots +x_{n}2^{0}.\quad$
  
  Esto también es útil para la notación binaria fraccionaria:
  
      $[0.x_{1}\ldots x_{m}]=\sum _{k=1}^{m}x_{k}2^{-k}.$
  
  Por tanto, $[0.x_{1}]={\frac {x_{1}}{2}}$ and $[0.x_{1}x_{2}]={\frac {x_{1}}{2}}+{\frac {x_{2}}{2^{2}}}.$
  
  Con esta notación, la acción de la transformada de Fourier cuántica puede ser expresada por:
  
      $|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),$
  
  donde la salida del qubit 1 es una superposición del estado $|0\rangle$ y $e^{2\pi i\,[0.x_{n}]}|1\rangle$, y así en los otros qubits.
  
  ### Demostración
  
  Se parte de la demostración de transformada discreta de Fourier cuántica dada por
  
  $\left|x\right\rangle \rightarrow {\frac {1}{\sqrt {N}}}{\textstyle {\sum }_{k=0}^{N-1}e^{i2\pi xk/N}\left|k\right\rangle }$
  
  Ahora se especifica la dimensión de nuestro espacio dada por $N=2^{n}$llegando a
  
  $\left|x\right\rangle \rightarrow {\frac {1}{\sqrt {2^{n}}}}{\textstyle {\sum }_{k=0}^{2^{n}-1}e^{i2\pi xk/2^{n}}\left|k\right\rangle }$.
  
  Aplicando notación binaria sobre $k$ de tal forma que ${\frac {k}{2^{n}}}=0.k_{1}k_{2}..k_{n}=\sum _{l=0}^{n}k_{l}2^{-l}$ . Luego separando, la sumatoria en $k$ en $n$ sumatorias sobre los distintos valores $k_{l}$.
  
  $\left|x\right\rangle \longrightarrow {\frac {1}{2^{n/2}}}{{\sum _{k_{1}=0}^{1}}..\sum _{k_{n}=0}^{1}e^{i2\pi x\sum _{l=0}^{n}2^{-l}k_{l}}\left|k_{1}..k_{n}\right\rangle }$
  
  Utilizando propiedades de la exponencial puedo llegar a
  
  $\left|x\right\rangle \longrightarrow {\frac {1}{2^{n/2}}}{\sum _{k_{1}=0}^{1}}..\sum _{k_{n}=0}^{1}\otimes _{l=1}^{n}e^{i2\pi xk_{l}2^{-l}}\left|k_{l}\right\rangle$
  
  Cambiando el productorio por el sumatorio puedo llegar a
  
  $\left|x\right\rangle \longrightarrow {\frac {1}{2^{n/2}}}\otimes _{l=1}^{n}{\sum _{k_{l}=0}^{1}}e^{i2\pi xk_{l}2^{-l}}\left|k_{l}\right\rangle$
  
  Aplicando la sumatoria:
  
  $\left|x\right\rangle \longrightarrow {\frac {1}{2^{n/2}}}\otimes _{l=1}^{n}[\left|0\right\rangle +e^{i2\pi x2^{-l}}\left|1\right\rangle ]$
  
  La cuestión ahora es poner $x$ en notación binaria como $x=x_{1}x_{2}...x_{n}$. Realizando un par de términos. Por ejemplo, para $l=1$:
  
  $x/2=x_{1}x_{2}...x_{n-1}.x_{n}$.
  
  Ahora bien,
  
  $e^{2\pi ix_{1}x_{2}...x_{n-1}.x_{n}}=e^{2\pi ix_{1}x_{2}...x_{n-1}}\times e^{2\pi i0.x_{n}}=e^{2\pi i0.x_{n}}$
  
  donde se ha utilizado que $x_{1}x_{2}...x_{n-1}$ es un número entero ya que es ${\sum }_{i=0}^{n}x_{i}2^{n-i}$ con $x_{i}\in \{0,1\}$.
  
  Aplicando el mismo razonamiento para $l=2$:
  
  Se tiene:
  
  ${\frac {x}{2^{2}}}=x_{1}x_{2}...x_{n-2}.x_{n-1}x_{n}$ y se llega a que $e^{2\pi ix_{1}x_{2}....x_{n-2}.x_{n-1}x_{n}}=e^{2\pi ix_{1}x_{2}...x_{n-2}}\times e^{2\pi i0.x_{n-1}x_{n}}=e^{2\pi i0.x_{n-1}x_{n}}$
  
  Si se aplica en general se puede llegar al resultado donde falta por introducir puertas lógicas swap que cambien el qubit 1 con el $n$, el 2 con el $n-1$ y así llegando a:
  
  $\left|x\right\rangle \longrightarrow {\frac {\left(\left|0\right\rangle +e^{2\pi i0.x_{n}}\left|1\right\rangle \right)\otimes \left(\left|0\right\rangle +e^{2\pi i0.x_{n-1}x_{n}}\left|1\right\rangle \right)\otimes ..\otimes \left(\left|0\right\rangle +e^{2\pi i0.x_{1}x_{2}..x_{n}}\left|1\right\rangle \right)}{2^{n/2}}}$
  
  En otras palabras, la operación de la transformada de Fourier discreta sobre n-qubits, puede ser factorizada dentro del producto tensor de n qubits-únicos, sugiriendo que es fácil de representar en un circuito cuántico. De hecho, cada una de las operaciones de los qubits-únicos puede ser implementada eficientemente usando una puerta Hadamard y puertas controladas de desplazamiento de fase. El primer término requiere una puerta Hadamard, el siguiente requiere una puerta Hadamard y una puerta controlada de desplazamiento de fase y cada siguiente término requiere una puerta adicional de desplazamiento de fase. Sumando el número de puertas da $1+2+\cdots +n=n(n+1)/2=O(n^{2})$ puertas, el cual es proporcional al número de qubits.
  
  ## Ejemplo
  
  Considerar la transformada cuántica de Fourier sobre 3 qubits. Es la siguiente transformación:
  
      $|j\rangle \mapsto {\frac {1}{\sqrt {2^{3}}}}\sum _{k=0}^{2^{3}-1}\omega ^{jk}|k\rangle ,$
  
  donde $\omega$ satisface $\omega ^{8}=\left(e^{\frac {2\pi i}{8}}\right)^{8}=1$ (ya que $N=2^{3}=8$).
  
  La matriz que representa esta transformación es
  
      $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}}.$
  
  La transformada de Fourier cuántica de 3-qubit es las siguiente operación:
  
      $|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).$
  
  Este circuito cuántico implementa la transformada cuántica de Fourier sobre el estado cuántico $|x_{1},x_{2},x_{3}\rangle$.
  
  Las puertas cuánticas usadas en el circuito de arriba son la puerta Hadamard y la puerta controlada de desplazamiento de fase $R_{\theta }$.
  
  Como se calculó antes, el número de puertas usadas es $n(n+1)/2$ lo cual es igual a 6, para n = 3.
  
  