¿Cuál es la complejidad (en la RAM entera estándar) de calcular la transformada discreta estándar de Fourier de un vector de enteros?
El algoritmo clásico para transformaciones rápidas de Fourier , atribuidas inapropiadamente [1] a Cooley y Tukey, generalmente se describe como funcionando en tiempo . Pero la mayoría de las operaciones aritméticas realizadas en este algoritmo a empezar con complejos n th raíces de la unidad, que son (para la mayoría n ) irracional, evaluación de manera exacta en tiempo constante no es razonable. El mismo problema surge con el ingenuo algoritmo de tiempo O ( n 2 ) (multiplicado por una matriz de Vandermonde de raíces complejas de la unidad).
Ni siquiera está claro cómo representar la salida del DFT exactamente (en cualquier forma útil). En otras palabras, ¡no está claro que calcular DFTs sea realmente posible!
Supongamos que solo necesitamos bits de precisión en cada valor de salida. ¿Cuál es la complejidad de calcular la transformada discreta de Fourier, en función de n y b ? (Para concreción, siéntase libre de asumir que n es una potencia de 2 ).
¿O cada instancia de "FFT" en la literatura realmente significa " transformación teórica rápida de números "? [2]
Vea mis preguntas relacionadas sobre la complejidad de la eliminación gaussiana y los caminos más cortos euclidianos .
[1] Realmente debería llamarse (algún prefijo de) el algoritmo Gauss-Runge-König-Yates-Stumpf-Danielson-Lánczos-Cooley-Tukey.
[2] Y si es así, ¿por qué la mayoría de los libros de texto describen solo el algoritmo de números complejos?