Introducción a la transformada de Fourier discreta clásica:
La DFT transforma una secuencia de números complejos { x n } : = x 0 , x 1 , x 2 , . . . , X N - 1 en otra secuencia de números complejos { X k } : = X 0 , X 1 , X 2 , . . . que se define por X k = N - 1 ∑norte{ xnorte} : = x0 0, x1, x2, . . . , xnorte- 1{ Xk} : = X0 0, X1, X2, . . . Podríamos multiplicar por constantes de normalización adecuadas según sea necesario. Además, si tomamos el signo más o menos en la fórmula depende de la convención que elijamos.
Xk= ∑n = 0norte- 1Xnorte. mi± 2 πi k nnorte
Supongamos, que está dado que y x = ( 1 2 - i - i - 1 + 2 i ) .norte= 4x = ⎛⎝⎜⎜⎜12 - i- yo−1+2i⎞⎠⎟⎟⎟
Tenemos que encontrar el vector columna . El método general ya se muestra en la página de Wikipedia . Pero desarrollaremos una notación matricial para el mismo. X se puede obtener fácilmente multiplicando previamente x por la matriz:XXx
M=1N−−√⎛⎝⎜⎜⎜11111ww2w31w2w4w61w3w6w9⎞⎠⎟⎟⎟
donde es e - 2 π iw . Cada elemento de la matriz es básicamentewij. 1e−2πiNwij es simplemente una constante de normalización.1N√
Finalmente, resulta ser: 1X.12⎛⎝⎜⎜⎜2−2−2i−2i4+4i⎞⎠⎟⎟⎟
Ahora, siéntese un momento y observe algunas propiedades importantes:
- Todas las columnas de la matriz son ortogonales entre sí.M
- Todas las columnas de tienen magnitud 1 .M1
- Si publicas multiplicar con un vector de columna que tiene muchos ceros (extensión grande), terminarás con un vector de columna con solo unos pocos ceros (extensión estrecha). Lo contrario también es cierto. (¡Cheque!)M
Se puede notar muy simplemente que el DFT clásico tiene una complejidad temporal . Esto se debe a que para obtener cada fila de X , se deben realizar N operaciones. Y hay N filas de X .O(N2)XNNX
La transformada rápida de Fourier:
Ahora, echemos un vistazo a la transformación rápida de Fourier. La transformación rápida de Fourier utiliza la simetría de la transformación de Fourier para reducir el tiempo de cálculo. En pocas palabras, reescribimos la transformada de Fourier de tamaño como dos transformadas de Fourier de tamaño N / 2 , los términos pares e impares. Luego repetimos esto una y otra vez para reducir exponencialmente el tiempo. Para ver cómo funciona esto en detalle, pasamos a la matriz de la transformada de Fourier. Mientras pasamos por esto, puede ser útil tener DFT 8 frente a usted para echar un vistazo. Tenga en cuenta que los exponentes se han escrito módulo 8 , ya que w 8 = 1 .NN/2DFT88w8=1
Observe cómo la fila es muy similar a la fila j + 4 . Además, observe cómo la columna j
es muy similar a la columna j + 4 . Motivados por esto, vamos a dividir la transformación de Fourier en sus columnas pares e impares.jj+4jj+4
En el primer cuadro, hemos representado la matriz completa de la transformada de Fourier describiendo la fila y la columna k : w j k . En el siguiente cuadro, separamos las columnas pares e impares, y de manera similar separamos el vector que se va a transformar. Debes convencerte de que la primera igualdad es realmente una igualdad. En el tercer cuadro, agregamos un poco de simetría al notar que
w j + N / 2 = - w j (ya que w n / 2 = - 1 ).jkwjkwj+N/2=−wjwn/2=−1
Observe que tanto el lado impar como el lado par contienen el término . Pero si w es la enésima raíz primitiva de la unidad, entonces w 2 es la raíz N / 2 primitiva de la unidad. Por lo tanto, las matrices cuya entrada j , k es w 2 j k son realmente solo DFT ( N / 2 ) . Ahora podemos escribir DFT N de una manera nueva: supongamos que estamos calculando la transformada de Fourier de la función f ( x )w2jkww2N/2jkw2jkDFT(N/2)DFTNf(x). Podemos escribir las manipulaciones anteriores como una ecuación que calcula el término de orden j f ( j ) .f^(j)
Nota: QFT en la imagen solo significa DFT en este contexto. Además, M se refiere a lo que llamamos N.
Esto convierte nuestro cálculo de en dos aplicaciones de DFT ( N / 2 ) . Podemos convertir esto en cuatro aplicaciones de DFT ( N / 4 ) , y así sucesivamente. Mientras N = 2 n para algún n , podemos desglosar nuestro cálculo de DFT N en N
cálculos de DFT 1 = 1 . Esto simplifica enormemente nuestro cálculo.DFTNDFT(N/2)DFT(N/4)N=2nnDFTNNDFT1=1
En el caso de la transformación rápida de Fourier, la complejidad del tiempo se reduce a (intente probar esto usted mismo). ¡Esta es una gran mejora con respecto al DFT clásico y prácticamente el algoritmo de última generación utilizado en los sistemas de música modernos como su iPod!O(Nlog(N))
La transformación cuántica de Fourier con puertas cuánticas:
La fortaleza de la FFT es que podemos utilizar la simetría de la transformada discreta de Fourier para nuestra ventaja. La aplicación de circuito de QFT utiliza el mismo principio, pero debido al poder de superposición, QFT es aún más rápido.
El QFT está motivado por el FFT, por lo que seguiremos los mismos pasos, pero debido a que este es un algoritmo cuántico, la implementación de los pasos será diferente. Es decir, primero tomamos la transformada de Fourier de las partes pares e impares, luego multiplicamos los términos impares por la fase .wj
En un algoritmo cuántico, el primer paso es bastante simple. Los términos pares e impares están juntos en superposición: los términos impares son aquellos cuyo bit menos significativo es , y los pares con 0 . Por lo tanto, podemos aplicar QFT ( N / 2 ) a los términos pares e impares juntos. Hacemos esto aplicando simplemente aplicaremos QFT ( N / 2 ) a los n - 1 bits más significativos, y recombinamos los pares e impares aplicando el Hadamard al bit menos significativo.10QFT(N/2)QFT(N/2)n−1
Ahora, para llevar a cabo la multiplicación de fase, necesitamos multiplicar cada término impar por la fase w j . Pero recuerde, un número impar en binario termina con un 1 mientras que un par termina con un 0 . Por lo tanto, podemos usar el cambio de fase controlado, donde el bit menos significativo es el control, para multiplicar solo los términos impares por la fase sin hacer nada a los términos pares. Recuerde que el cambio de fase controlado es similar a la puerta CNOT, ya que solo aplica una fase al objetivo si el bit de control es uno.jwj10
Nota: En la imagen, M se refiere a lo que llamamos N.
La fase asociada con cada cambio de fase controlado debe ser igual a
donde j está asociado al k -bit por j = 2 k . Por lo tanto, aplique el cambio de fase controlado a cada uno de los primeros n - 1 qubits, con el bit menos significativo como control. Con el cambio de fase controlado y la transformación de Hadamard, QFT N se ha reducido a QFT ( N / 2 ) .wjjkj=2kn−1QFTNQFT(N/2)
Nota: En la imagen, M se refiere a lo que llamamos N.
Ejemplo:
Vamos a construir . Siguiendo el algoritmo, convertiremos QFT 3 en QFT 2
y algunas puertas cuánticas. Luego, de esta manera, convertimos QFT 2 en
QFT 1 (que es solo una puerta Hadamard) y otras pocas puertas. Las puertas de fase controlada estarán representadas por R ϕ . Luego, ejecute otra iteración para deshacerse de QFT 2 . Ahora debería poder visualizar el circuito para QFT en más qubits fácilmente. Además, puede ver que el número de puertas necesarias para llevar a cabo la QFT N que necesita es exactamente logQFT3QFT3QFT2QFT2QFT1RϕQFT2QFTQFTN
∑i=1log(N)i=log(N)(log(N)+1)/2=O(log2N)
Fuentes:
https://en.wikipedia.org/wiki/Discrete_Fourier_transform
https://en.wikipedia.org/wiki/Quantum_Fourier_transform
Mecánica cuántica y MOOC de computación cuántica (UC BerkeleyX) - Notas de la conferencia: Capítulo 5
PD: Esta respuesta está en su versión preliminar. Como @DaftWillie menciona en los comentarios, no entra mucho en " ninguna idea que pueda dar alguna orientación con respecto a otros algoritmos posibles ". Animo respuestas alternativas a la pregunta original. Personalmente, necesito leer un poco y buscar recursos para poder responder a ese aspecto de la pregunta.