Qual è la complessità (sulla RAM intera standard) del calcolo della trasformata di Fourier discreta standard di un vettore di numeri interi?
L' algoritmo classico per trasformazioni veloci di Fourier , impropriamente [1] attribuito a Cooley e Tukey, viene generalmente descritto come in esecuzione nel tempo . Ma la maggior parte delle operazioni aritmetiche eseguite in questo algoritmo iniziano con complesse radici di unità, che sono (per la maggior parte ) irrazionali, quindi una valutazione esatta a tempo costante non è ragionevole. Lo stesso problema sorge con l' algoritmo -time (che si moltiplica per una matrice Vandermonde di radici complesse di unità).n n O ( n 2 )
Non è nemmeno chiaro come rappresentare esattamente l'output del DFT (in qualsiasi forma utile). In altre parole, non è chiaro che il calcolo dei DFT sia effettivamente possibile!
Supponiamo quindi di aver bisogno solo di bit di precisione in ciascun valore di output. Qual è la complessità del calcolo della trasformata di Fourier discreta, in funzione di e ? (Per concretezza, sentiti libero di assumere è un potere di ).n b n
O ogni istanza di "FFT" in letteratura significa in realtà "rapida trasformazione teorica dei numeri "? [2]
Vedi le mie domande correlate sulla complessità dell'eliminazione gaussiana e sui percorsi più brevi euclidei .
[1] Dovrebbe davvero essere chiamato (qualche prefisso di) l'algoritmo Gauss-Runge-König-Yates-Stumpf-Danielson-Lánczos-Cooley-Tukey.
[2] E se sì, perché la maggior parte dei libri di testo descrive solo l'algoritmo dei numeri complessi?