Wie komplex ist die Berechnung der diskreten Fourier- Standardtransformation eines Vektors von ganzen Zahlen (im Standard-Ganzzahl-RAM) ?
Der klassische Algorithmus für schnelle Fourier-Transformationen [1] , der Cooley und Tukey unangemessen zugeschrieben wird, wird normalerweise als in -Zeit laufend beschrieben . Die meisten in diesem Algorithmus ausgeführten arithmetischen Operationen beginnen jedoch mit komplexen n- ten Wurzeln der Einheit, die (für die meisten n ) irrational sind, so dass eine genaue Auswertung in konstanter Zeit nicht sinnvoll ist. Das gleiche Problem tritt beim naiven O ( n 2 ) -Zeitalgorithmus auf (Multiplikation mit einer Vandermonde-Matrix komplexer Einheitswurzeln).
Es ist nicht einmal klar, wie die Ausgabe der DFT genau dargestellt werden soll (in irgendeiner nützlichen Form). Mit anderen Worten, es ist nicht klar, dass die Berechnung von DFTs tatsächlich möglich ist!
Nehmen wir also an, wir brauchen nur Bits Genauigkeit in jedem Ausgabewert. Wie komplex ist die Berechnung der diskreten Fourier-Transformation als Funktion von n und b ? (Zur Vereinfachung können Sie annehmen, dass n eine Potenz von 2 ist .)
Oder bedeutet jede Instanz von "FFT" in der Literatur tatsächlich "schnelle zahlentheoretische Transformation "? [2]
Siehe meine verwandten Fragen zur Komplexität der Gaußschen Eliminierung und zu den euklidischen kürzesten Wegen .
[1] Es sollte wirklich der Gauß-Runge-König-Yates-Stumpf-Danielson-Lánczos-Cooley-Tukey-Algorithmus genannt werden.
[2] Und wenn ja, warum beschreiben die meisten Lehrbücher nur den Algorithmus für komplexe Zahlen?