Einführung in die klassische diskrete Fouriertransformation:
Die DFT transformiert eine Folge von komplexen Zahlen in eine andere Folge komplexer Zahlen , definiert durch Wir können nach Bedarf mit geeigneten Normalisierungskonstanten multiplizieren. Darüber hinaus hängt es von der gewählten Konvention ab, ob wir in der Formel das Plus- oder das Minuszeichen verwenden.{ x n } : = x 0 , x 1 , x 2 , . . . , X N - 1 { X k } : = X 0 , X 1 , X 2 , . . . X k = N - 1 ≤ n = 0 × n . e ± 2 π i kN{xn}:=x0,x1,x2,...,xN−1{Xk}:=X0,X1,X2,...
Xk=∑n=0N−1xn.e±2πiknN
Angenommen, es ist gegeben, dass und .x = ( 1 2 - i - i - 1 + 2 i )N=4x=⎛⎝⎜⎜⎜12−i−i−1+2i⎞⎠⎟⎟⎟
Wir müssen den Spaltenvektor . Die allgemeine Methode wird bereits auf der Wikipedia-Seite angezeigt . Dafür werden wir aber eine Matrixnotation entwickeln. kann leicht durch Vormultiplizieren von mit der Matrix erhalten werden:X xXXx
M=1N−−√⎛⎝⎜⎜⎜11111ww2w31w2w4w61w3w6w9⎞⎠⎟⎟⎟
wo ist . Jedes Element der Matrix ist grundsätzlich . ist einfach eine Normalisierungskonstante.e - 2 π iw wij1e- 2 πichNwich j1N√
Schließlich ist : .1X12⎛⎝⎜⎜⎜2- 2 - 2 i- 2 i4 + 4 i⎞⎠⎟⎟⎟
Lehnen Sie sich jetzt zurück und beachten Sie einige wichtige Eigenschaften:
- Alle Spalten der Matrix sind orthogonal zueinander.M
- Alle Spalten von haben die Größe .1M1
- Wenn Sie mit einem Spaltenvektor mit vielen Nullen multiplizieren (große Spreizung), erhalten Sie einen Spaltenvektor mit nur wenigen Nullen (schmale Spreizung). Das Gegenteil gilt auch. (Prüfen!)M
Es ist sehr einfach zu bemerken, dass die klassische DFT eine zeitliche Komplexität . Das ist , weil für jede Zeile des Erhaltens , - Operationen durchgeführt werden müssen. Und es gibt Zeilen in .X N N XO ( N2)XNNX
Die schnelle Fouriertransformation:
Betrachten wir nun die Fast-Fourier-Transformation. Die schnelle Fourier-Transformation verwendet die Symmetrie der Fourier-Transformation, um die Rechenzeit zu reduzieren. Einfach ausgedrückt, schreiben wir die Fouriertransformation der Größe als zwei Fouriertransformationen der Größe - die ungeraden und die geraden Terme. Wir wiederholen dies dann immer und immer wieder, um die Zeit exponentiell zu verkürzen. Um zu sehen, wie dies im Detail funktioniert, wenden wir uns der Matrix der Fouriertransformation zu. Während wir dies durchgehen, kann es hilfreich sein, vor sich zu haben, um einen Blick darauf zu werfen. Beachten Sie, dass die Exponenten modulo , da .N / 2 DFT 8 8 w 8 = 1NN/ 2DFT88w8= 1
Beachten Sie, dass Zeile Zeile sehr ähnlich ist . Beachten Sie auch, dass Spalte
Spalte sehr ähnlich ist . Aus diesem Grund werden wir die Fourier-Transformation in gerade und ungerade Spalten aufteilen.j + 4 j j + 4jj + 4jj + 4
Im ersten Frame haben wir die gesamte Fourier-Transformationsmatrix durch Beschreiben der ten Zeile und der ten Spalte dargestellt: . Im nächsten Frame trennen wir die ungeraden und geraden Spalten und auf ähnliche Weise den Vektor, der transformiert werden soll. Sie sollten sich davon überzeugen, dass die erste Gleichheit wirklich eine Gleichheit ist. Im dritten Frame fügen wir eine kleine Symmetrie hinzu, indem wir feststellen, dass
(da ).k w j k w j + N / 2 = - w j w n / 2 = - 1jkwj kwj + N/ 2= - wjwn / 2= - 1
Beachten Sie, dass sowohl die ungerade als auch die gerade Seite den Begriff . Aber wenn die primitive N-te Wurzel der Einheit ist, dann ist die primitive te Wurzel der Einheit. Daher sind die Matrizen, deren , ter Eintrag ist, wirklich nur ! Nun können wir auf eine neue Art schreiben : Nehmen wir an, wir berechnen die Fourier-Transformation der Funktion . Wir können die obigen Manipulationen als Gleichung schreiben, die den j-ten Term berechnet . w w 2 N / 2w2 j kww2N/ 2k w 2 j k DFT ( N / 2 ) DFT N f ( x ) f ( j )jkw2 j kDFT( N/ 2)DFTNf( x )f^( J )
Hinweis: QFT im Bild steht in diesem Zusammenhang nur für DFT. Außerdem bezieht sich M auf das, was wir N nennen.
Dies wandelt unsere Berechnung von in zwei Anwendungen von . Wir können dies in vier Anwendungen von usw. umwandeln. Solange für einige , können wir unsere Berechnung von in
Berechnungen von . Dies vereinfacht unsere Berechnung erheblich.DFT ( N / 2 ) DFT ( N / 4 ) N = 2 n n DFT N N DFT 1 = 1DFTNDFT( N/ 2)DFT( N/ 4)N= 2 nnDFTNNDFT1= 1
Bei der Fast-Fourier-Transformation reduziert sich die Zeitkomplexität auf (versuchen Sie dies selbst zu beweisen). Dies ist eine enorme Verbesserung gegenüber der klassischen DFT und so ziemlich dem neuesten Algorithmus, der in modernen Musiksystemen wie Ihrem iPod verwendet wird!O ( NLog( N) )
Die Quanten-Fourier-Transformation mit Quantentoren:
Die Stärke der FFT ist, dass wir die Symmetrie der diskreten Fourier-Transformation zu unserem Vorteil nutzen können. Die Schaltungsanwendung von QFT verwendet dasselbe Prinzip, jedoch ist QFT aufgrund der Überlagerungsleistung noch schneller.
Die QFT wird durch die FFT motiviert, so dass wir die gleichen Schritte ausführen, aber da dies ein Quantenalgorithmus ist, wird die Implementierung der Schritte unterschiedlich sein. Das heißt, wir nehmen zuerst die Fourier-Transformation der ungeraden und geraden Teile und multiplizieren dann die ungeraden Terme mit der Phase .wj
In einem Quantenalgorithmus ist der erste Schritt ziemlich einfach. Die ungeraden und geraden Terme überlagern sich: Die ungeraden Terme sind diejenigen, deren niedrigstwertiges Bit , und die geraden mit . Daher können wir sowohl auf die ungeraden als auch auf die geraden Terme zusammen anwenden . Wir tun dies, indem wir einfach auf die höchstwertigen Bits anwenden und die ungeraden und geraden entsprechend neu kombinieren, indem wir Hadamard auf das niedrigstwertige Bit anwenden.0 QFT ( N / 2 ) QFT ( N / 2 ) n - 110QFT( N/ 2)QFT( N/ 2)n - 1
Um nun die Phasenmultiplikation durchzuführen, müssen wir jeden ungeraden Term mit der Phase multiplizieren . Denken Sie jedoch daran, dass eine ungerade Zahl in binären Zahlen mit einer endet, während eine gerade Zahl mit einer endet . Somit können wir die gesteuerte Phasenverschiebung, bei der das niedrigstwertige Bit die Steuerung ist, verwenden, um nur die ungeraden Terme mit der Phase zu multiplizieren, ohne die geraden Terme zu verändern. Es sei daran erinnert, dass die gesteuerte Phasenverschiebung dem CNOT-Gatter insofern ähnlich ist, als dass nur dann eine Phase auf das Ziel angewendet wird, wenn das Steuerbit eins ist.w j 1 0jwj10
Hinweis: In der Abbildung bezieht sich M auf das, was wir N nennen.
Die jeder gesteuerten Phasenverschiebung zugeordnete Phase sollte gleich
wobei dem ten Bit durch . Wenden Sie daher die gesteuerte Phasenverschiebung auf jedes der ersten Qubits mit dem niedrigstwertigen Bit als Steuerung an. Mit der gesteuerten Phasenverschiebung und der Hadamard-Transformation wurde auf reduziert . j k j = 2 k n - 1 QFT N QFT ( N / 2 )wjjkj = 2 kn - 1QFTNQFT( N/ 2)
Hinweis: In der Abbildung bezieht sich M auf das, was wir N nennen.
Beispiel:
Lässt konstruieren . Nach dem Algorithmus wir in
und einige Quantentore um. Dann setzen wir diesen Weg fort und verwandeln in
(das ist nur ein Hadamard-Tor) und ein paar weitere Tore. Kontrollierte Phasentore werden durch . Führen Sie dann eine weitere Iteration durch, um . Sie sollten nun in der Lage sein, die Schaltung für auf mehr Qubits leicht zu visualisieren . Außerdem können Sie sehen, dass die Anzahl der für die Ausführung von erforderlichen Gates genau istQFT 3 QFT 2 QFT 2 QFT 1 R φ QFT 2 QFT QFT N log ( N ) Σ i = 1 i = log ( N ) ( log ( N ) + 1 ) / 2 = O ( log 2 N )QFT3QFT3QFT2QFT2QFT1RϕQFT2QFTQFTN
∑i = 1Log( N)i = log( N) ( Log( N) + 1 ) / 2 = O ( log2N)
Quellen:
https://en.wikipedia.org/wiki/Discrete_Fourier_transform
https://en.wikipedia.org/wiki/Quantum_Fourier_transform
Quantenmechanik und Quantenberechnung MOOC (UC BerkeleyX) - Skript: Kapitel 5
PS: Diese Antwort ist in der vorläufigen Version. Wie @DaftWillie in den Kommentaren erwähnt, geht es nicht viel um " irgendwelche Einsichten, die Hinweise in Bezug auf andere mögliche Algorithmen geben könnten ". Ich empfehle alternative Antworten auf die ursprüngliche Frage. Ich persönlich muss ein bisschen lesen und nach Ressourcen suchen, damit ich diesen Aspekt der Frage beantworten kann.