Quelle est la complexité (sur la RAM entière standard) du calcul de la transformée de Fourier discrète standard d'un vecteur de nombres entiers?
L' algorithme classique pour les transformées de Fourier rapides , attribué de manière inappropriée [1] à Cooley et Tukey, est généralement décrit comme fonctionnant en temps . Mais la plupart des opérations arithmétiques exécutées dans cet algorithme complexe commencent par ième racines de l' unité, qui sont (pour la plupart ) évaluation irrationnelle, donc exacte en temps constant est pas raisonnable. Le même problème se pose avec l' algorithme naïf (multipliant par une matrice de Vandermonde de racines complexes d'unité).n
Il n'est même pas clair comment représenter exactement la sortie de la DFT (sous toute forme utile). En d'autres termes, il n'est pas clair que le calcul des DFT soit réellement possible!
Supposons donc que nous ayons seulement besoin de bits de précision dans chaque valeur de sortie. Quelle est la complexité du calcul de la transformée de Fourier discrète, en fonction de et ? (Pour être concret, n'hésitez pas à supposer que est une puissance de )
Ou chaque exemple de "FFT" dans la littérature signifie-t-il réellement " transformation rapide de la théorie des nombres "? [2]
Voir mes questions connexes sur la complexité de l'élimination gaussienne et les plus courts chemins euclidiens .
[1] Il faut vraiment l'appeler (un préfixe de) l'algorithme de Gauss-Runge-König-Yates-Stumpf-Danielson-Lánczos-Cooley-Tukey.
[2] Et si oui, pourquoi la plupart des manuels décrivent-ils uniquement l'algorithme des nombres complexes?