Pengantar Transformasi Fourier Diskrit Klasik:
DFT mengubah urutan bilangan kompleks { x n } : = x 0 , x 1 , x 2 , . . . , X N - 1 ke urutan lain dari bilangan kompleks { X k } : = X 0 , X 1 , X 2 , . . . yang didefinisikan oleh X k = N - 1 nN{xn}:=x0,x1,x2,...,xN−1{Xk}:=X0,X1,X2,... Kita dapat mengalikan dengan konstanta normalisasi yang sesuai sebagaimana diperlukan. Selain itu, apakah kita mengambil tanda plus atau minus dalam rumus tergantung pada konvensi yang kita pilih.
Xk=∑n=0N−1xn.e±2πiknN
Misalkan, diberikan bahwa dan x = ( 1 2 - i - i - 1 + 2 i ) .N=4x=⎛⎝⎜⎜⎜12−i−i−1+2i⎞⎠⎟⎟⎟
Kita perlu menemukan vektor kolom . Metode umum sudah ditampilkan di halaman Wikipedia . Tetapi kami akan mengembangkan notasi matriks untuk hal yang sama. X dapat dengan mudah diperoleh dengan pra mengalikan xXXx dengan matriks:
M=1N−−√⎛⎝⎜⎜⎜11111ww2w31w2w4w61w3w6w9⎞⎠⎟⎟⎟
dimana adalah e - 2 π iw . Setiap elemen dari matriks pada dasarnya adalahwij. 1e−2πiNwij1N√ hanyalah konstanta normalisasi.
Akhirnya, ternyata menjadi: 1X12⎛⎝⎜⎜⎜2−2−2i−2i4+4i⎞⎠⎟⎟⎟ .
Sekarang, duduk sebentar dan perhatikan beberapa properti penting:
- Semua kolom dari matriks saling orthogonal.M
- Semua kolom memiliki magnitudo 1 .M1
- Jika Anda memposting kalikan M dengan vektor kolom yang memiliki banyak nol (spread besar) Anda akan berakhir dengan vektor kolom dengan hanya beberapa nol (spread sempit). Kebalikannya juga berlaku. (Memeriksa!)
Sangat mudah diperhatikan bahwa DFT klasik memiliki kompleksitas waktu . Itu karena untuk mendapatkan setiap baris X , operasi N perlu dilakukan. Dan ada baris N di XO(N2)XNNX .
Transformasi fourier cepat:
Sekarang, mari kita lihat transformasi Fast Fourier. Transformasi Fourier cepat menggunakan simetri transformasi Fourier untuk mengurangi waktu komputasi. Sederhananya, kami menulis ulang transformasi Fourier ukuran sebagai dua transformasi Fourier ukuran N / 2 - istilah aneh dan genap. Kami kemudian mengulangi ini berulang-ulang untuk mengurangi waktu secara eksponensial. Untuk melihat bagaimana ini bekerja secara rinci, kita beralih ke matriks transformasi Fourier. Sementara kita melewati ini, mungkin perlu untuk memiliki DFT 8 di depan Anda untuk melihatnya. Perhatikan bahwa eksponen telah ditulis modulo 8 , karena w 8 = 1 .NN/2DFT88w8=1
Perhatikan bagaimana baris sangat mirip dengan baris j + 4 . Juga, perhatikan bagaimana kolom j
sangat mirip dengan kolom j + 4 . Termotivasi oleh ini, kita akan membagi transformasi Fourier menjadi kolom genap dan ganjil.jj+4jj+4
Pada frame pertama, kami telah mewakili seluruh Fourier transform matriks dengan menggambarkan baris th dan k kolom th: w j k . Dalam bingkai berikutnya, kita memisahkan kolom ganjil dan genap, dan juga memisahkan vektor yang akan diubah. Anda harus meyakinkan diri sendiri bahwa kesetaraan pertama benar-benar adalah kesetaraan. Pada frame ketiga, kita menambahkan sedikit simetri dengan memperhatikan bahwa
w j + N / 2 = - w j (karena w n / 2 = - 1 ).jkwjkwj+N/2=−wjwn/2=−1
Perhatikan bahwa sisi ganjil dan genap mengandung istilah . Tetapi jika w adalah akar ke-N primitif persatuan, maka w 2 adalah akar ke- N primitif dan ke- 2 . Oleh karena itu, matriks yang entri j , k th adalah w 2 j k benar-benar hanya DFT ( N / 2 ) ! Sekarang kita dapat menulis DFT N dengan cara baru: Sekarang anggaplah kita menghitung transformasi Fourier dari fungsi f ( x )w2jkww2N/2jkw2jkDFT(N/2)DFTNf(x). Kita bisa menulis manipulasi atas sebagai persamaan yang menghitung jangka j f ( j ) .f^(j)
Catatan: QFT pada gambar hanya singkatan dari DFT dalam konteks ini. Juga, M mengacu pada apa yang kita sebut N.
Ini mengubah perhitungan menjadi dua aplikasi DFT ( N / 2 ) . Kita bisa mengubahnya menjadi empat aplikasi DFT ( N / 4 ) , dan sebagainya. Selama N = 2 n untuk beberapa n , kita dapat memecah perhitungan DFT N menjadi N
perhitungan DFT 1 = 1DFTNDFT(N/2)DFT(N/4)N=2nnDFTNNDFT1=1 . Ini sangat menyederhanakan perhitungan kami.
Dalam kasus Fast Fourier transform, kompleksitas waktu berkurang menjadi (coba buktikan sendiri). Ini adalah peningkatan besar pada DFT klasik dan cukup banyak algoritma canggih yang digunakan dalam sistem musik modern seperti iPod Anda!O(Nlog(N))
Transformasi Quantum Fourier dengan gerbang kuantum:
Kekuatan FFT adalah kita dapat menggunakan simetri transformasi Fourier diskrit untuk keuntungan kita. Aplikasi sirkuit QFT menggunakan prinsip yang sama, tetapi karena kekuatan QFT superposisi bahkan lebih cepat.
QFT dimotivasi oleh FFT sehingga kami akan mengikuti langkah-langkah yang sama, tetapi karena ini adalah algoritma kuantum implementasi langkah-langkah akan berbeda. Artinya, pertama kita mengambil Fourier transform dari bagian aneh dan bahkan, kemudian kalikan istilah aneh oleh fase .wj
Dalam algoritma kuantum, langkah pertama cukup sederhana. Istilah ganjil dan genap sama-sama dalam superposisi: istilah ganjil adalah mereka yang bit paling signifikan adalah , dan genap dengan 0 . Oleh karena itu, kita dapat menerapkan QFT ( N / 2 ) untuk istilah ganjil dan genap secara bersamaan. Kami melakukan ini dengan menerapkan, kami hanya akan menerapkan QFT ( N / 2 ) ke n - 1 bit yang paling signifikan, dan menggabungkan kembali yang aneh dan bahkan tepat dengan menerapkan Hadamard ke bit yang paling tidak signifikan.10QFT(N/2)QFT(N/2)n−1
jwj10
Catatan: Dalam gambar M mengacu pada apa yang kita sebut 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.