Qual é a complexidade (na RAM inteira padrão) de calcular a transformada discreta padrão de Fourier de um vetor de números inteiros?
O algoritmo clássico para transformações rápidas de Fourier , atribuídas inadequadamente [1] a Cooley e Tukey, é geralmente descrito como sendo executado em tempo . Mas a maioria das operações aritméticas executadas neste algoritmo começar com complexos n º raízes da unidade, que são (para a maioria n ) irracional, avaliação de modo exato no tempo constante não é razoável. O mesmo problema ocorre com o algoritmo ingênuo de tempo O ( n 2 ) (multiplicado por uma matriz de Vandermonde de raízes complexas da unidade).
Nem está claro como representar exatamente a saída do DFT (de qualquer forma útil). Em outras palavras, não está claro que a computação DFTs seja realmente possível!
Então, suponha que precisamos apenas de bits de precisão em cada valor de saída. Qual é a complexidade de calcular a discreta transformada de Fourier, em função de n e b ? (Para concretude, sinta-se à vontade para assumir que n é uma potência de 2 ).
Ou todos os exemplos de "FFT" na literatura realmente significam "rápida transformação teórica dos números "? [2]
Veja minhas perguntas relacionadas sobre a complexidade da eliminação gaussiana e os caminhos mais curtos euclidianos .
[1] Deveria realmente ser chamado (algum prefixo) do algoritmo Gauss-Runge-König-Yates-Stumpf-Danielson-Lánczos-Cooley-Tukey.
[2] E se sim, por que a maioria dos livros descreve apenas o algoritmo de números complexos?