Introduzione alla classica trasformata discreta di Fourier:
La DFT trasforma una sequenza di numeri complessi { x n } : = x 0 , x 1 , x 2 , . . . , X N - 1 in un'altra sequenza di numeri complessi { X k } : = X 0 , X 1 , X 2 , . . . che è definito da X k = N - 1 ∑N{xn}:=x0,x1,x2,...,xN−1{Xk}:=X0,X1,X2,... Potremmo moltiplicare per costanti di normalizzazione adeguate, se necessario. Inoltre, se prendiamo il segno più o meno nella formula dipende dalla convenzione che scegliamo.
Xk=∑n=0N−1xn.e±2πiknN
Supponiamo che sia dato che e x = ( 1 2 - i - i - 1 + 2 i )N=4x=⎛⎝⎜⎜⎜12−i−i−1+2i⎞⎠⎟⎟⎟ .
Abbiamo bisogno di trovare il vettore colonna . Il metodo generale è già mostrato sulla pagina di Wikipedia . Ma svilupperemo una notazione a matrice per lo stesso. X può essere facilmente ottenuto pre moltiplicando xXXx per la matrice:
M=1N−−√⎛⎝⎜⎜⎜11111ww2w31w2w4w61w3w6w9⎞⎠⎟⎟⎟
dove è e - 2 π iw . Ogni elemento della matrice è fondamentalmentewij. 1e−2πiNwij è semplicemente una costante di normalizzazione.1N√
Alla fine, risulta essere: 1X.12⎛⎝⎜⎜⎜2−2−2i−2i4+4i⎞⎠⎟⎟⎟
Ora, rilassati per un po 'e nota alcune proprietà importanti:
- Tutte le colonne della matrice sono ortogonali tra loro.M
- Tutte le colonne di hanno magnitudine 1 .M1
- Se pubblichi la moltiplicazione con un vettore di colonna con molti zeri (grande diffusione) finirai con un vettore di colonna con solo pochi zeri (stretta). È vero anche il contrario. (Dai un'occhiata!)M
Si può semplicemente notare che il DFT classico ha una complessità temporale . Questo perché per ottenere ogni riga di X , è necessario eseguire N operazioni. E ci sono N righe in X .O(N2)XNNX
La trasformata di Fourier veloce:
Ora, diamo un'occhiata alla trasformata di Fourier veloce. La trasformata di Fourier veloce utilizza la simmetria della trasformata di Fourier per ridurre il tempo di calcolo. In poche parole, riscriviamo la trasformata di Fourier di dimensione come due trasformate di Fourier di dimensione N / 2 : i termini pari e dispari. Lo ripetiamo più volte per ridurre in modo esponenziale il tempo. Per vedere come funziona in dettaglio, passiamo alla matrice della trasformata di Fourier. Mentre affrontiamo questo, potrebbe essere utile avere DFT 8 di fronte a te per dare un'occhiata. Si noti che gli esponenti sono stati scritti modulo 8 , poiché w 8 = 1 .NN/2DFT88w8=1
Nota come la riga è molto simile alla riga j + 4 . Inoltre, nota come la colonna j
è molto simile alla colonna j + 4 . Motivati da questo, divideremo la trasformata di Fourier nelle sue colonne pari e dispari.jj+4jj+4
Nel primo fotogramma, abbiamo rappresentato tutta la trasformata di Fourier matrice descrivendo il esima riga e k esima colonna: w j k . Nel fotogramma successivo, separiamo le colonne pari e dispari e allo stesso modo separiamo il vettore che deve essere trasformato. Dovresti convincerti che la prima uguaglianza è davvero un'uguaglianza. Nel terzo fotogramma, aggiungiamo una piccola simmetria notando che
w j + N / 2 = - w j (poiché w n / 2 = - 1jkwjkwj+N/2=−wjwn/2=−1 ).
Si noti che sia il lato dispari che il lato pari contengono il termine . Ma se w è l'ennesima radice primitiva dell'unità, allora w 2 è la radice primitiva N / 2 dell'unità. Pertanto, le matrici la cui j , k th entry è w 2 j k sono in realtà solo DFT ( N / 2 ) ! Ora possiamo scrivere DFT N in un modo nuovo: supponiamo ora di calcolare la trasformata di Fourier della funzione f ( x )w2jkww2N/2jkw2jkDFT(N/2)DFTNf(x). Possiamo scrivere le manipolazioni di cui sopra come un'equazione che calcola il termine j-esima f ( j ) .f^(j)
Nota: QFT nell'immagine sta per DFT in questo contesto. Inoltre, M si riferisce a ciò che chiamiamo N.
Questo trasforma il nostro calcolo di in due applicazioni di DFT ( N / 2 ) . Possiamo trasformarlo in quattro applicazioni di DFT ( N / 4 ) e così via. Finché N = 2 n per alcuni n , possiamo suddividere il nostro calcolo di DFT N in
calcoli N di DFT 1 = 1 . Questo semplifica notevolmente il nostro calcolo.DFTNDFT(N/2)DFT(N/4)N=2nnDFTNNDFT1=1
Nel caso della trasformata di Fourier veloce la complessità del tempo si riduce a (prova a provarlo tu stesso). Questo è un enorme miglioramento rispetto al classico DFT e praticamente l'algoritmo all'avanguardia utilizzato nei sistemi musicali moderni come il tuo iPod!O(Nlog(N))
La trasformata di Quantum Fourier con porte quantistiche:
Il punto di forza della FFT è che siamo in grado di utilizzare la simmetria della trasformata discreta di Fourier a nostro vantaggio. L'applicazione del circuito di QFT utilizza lo stesso principio, ma a causa della potenza della sovrapposizione QFT è ancora più veloce.
The QFT is motivated by the FFT so we will follow the same steps, but
because this is a quantum algorithm the implementation of the steps will be
different. That is, we first take the Fourier transform of the odd and even
parts, then multiply the odd terms by the phase wj.
In a quantum algorithm, the first step is fairly simple. The odd and even
terms are together in superposition: the odd terms are those whose least
significant bit is 1, and the even with 0. Therefore, we can apply QFT(N/2) to both the odd and even terms together. We do this by applying we will simply apply QFT(N/2) to the n−1 most significant bits, and recombine the odd and even appropriately by applying the Hadamard to the least significant bit.
Now to carry out the phase multiplication, we need to multiply each odd
term j by the phase wj . But remember, an odd number in binary ends with a 1 while an even ends with a 0. Thus we can use the controlled phase shift, where the least significant bit is the control, to multiply only the odd terms by the phase without doing anything to the even terms. Recall that the controlled phase shift is similar to the CNOT gate in that it only applies a phase to the target if the control bit is one.
Note: In the image M refers to what we are calling N.
The phase associated with each controlled phase shift should be equal to
wj where j is associated to the k-th bit by j=2k.
Thus, apply the controlled phase shift to each of the first n−1 qubits,
with the least significant bit as the control. With the controlled phase shift
and the Hadamard transform, QFTN has been reduced to QFT(N/2).
Note: In the image, M refers to what we are calling N.
Example:
Lets construct QFT3. Following the algorithm, we will turn QFT3 into QFT2
and a few quantum gates. Then continuing on this way we turn QFT2 into
QFT1 (which is just a Hadamard gate) and another few gates. Controlled
phase gates will be represented by Rϕ. Then run through another iteration to get rid of QFT2. You should now be able to visualize the circuit for QFT on more qubits easily. Furthermore, you can see that the number of gates necessary to carry out QFTN it takes is exactly
∑i=1log(N)i=log(N)(log(N)+1)/2=O(log2N)
Sources:
https://en.wikipedia.org/wiki/Discrete_Fourier_transform
https://en.wikipedia.org/wiki/Quantum_Fourier_transform
Quantum Mechanics and Quantum Computation MOOC (UC BerkeleyX) - Lecture Notes : Chapter 5
P.S: This answer is in its preliminary version. As @DaftWillie mentions in the comments, it doesn't go much into "any insight that might give some guidance with regards to other possible algorithms". I encourage alternate answers to the original question. I personally need to do a bit of reading and resource-digging so that I can answer that aspect of the question.