* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Fast Fourier Transform
Fourier transform wikipedia , lookup
Corecursion wikipedia , lookup
Computational electromagnetics wikipedia , lookup
Eigenvalues and eigenvectors wikipedia , lookup
Inverse problem wikipedia , lookup
Discrete cosine transform wikipedia , lookup
Discrete Fourier transform wikipedia , lookup
Factorization of polynomials over finite fields wikipedia , lookup
Fast Fourier Transform Irina Bobkova Overview I. Polynomials II. The DFT and FFT III. Efficient implementations IV. Some problems Representation of polynomials A polynomial in the variable x over an algebraic field F is representation of a function A(x) as a formal sum n 1 A( x) a j x j j 0 •Coefficient representation a (a0 , a1 ,...an1 ) •Point-value representation {( x0 , y0 ),( x1, y1 ),...,( xn1, yn1 )} Coefficient representation Point-value representation Adding ( n) ( n) Multiplication ( n 2 ) ( n) Interpolation Interpolation-the inverse of evaluation –determining the coefficient form from a point-value representation Lagrange’s formula n 1 ( x x j ) A( x) yk jk( x x ) k j k 0 j k The coefficients can be computed in time (n2 ) Exercise. Prove it. Thus, n-point evaluation and interpolation are well-defined inverse operations between two representations. The algorithms described above for these problems take time (n2 ) . Fast multiplication Question.Can we use the linear-time multiplication method for polynomials in point-value form to expedite polynomial multiplication in coefficient form? Answer.Yes, but we are to be able to convert quickly from one form to another. a 0 , a1 ,...., a n 1 b0 , b1 ,...., b n 1 Ordinary multiplication Time Θ(n²) Evaluation Time Θ(n lg n) Interpolation Time Θ(n lg n) A(02n ), B(02n ) A(12n ), B(12n ) 1 2n 1 A(2n 2n ), B( 2n ) c0 , c1 ,..., c2n 2 C(02n ) Pointwise multiplication Time Θ(n) C(12n ) 1 C(2n 2n ) Complex roots of unity Zn 1 0 There are exactly n complex roots of unity.They form a cyclic multiplication group: k e 2 i 2 ik n The value 1 e n is called the primitive root of unity; all of the other complex roots are powers of it. Discrete Fourier Transform n 1 n2 Let F(x) be the polynomial F ( x) an1 x a n2 x ... a0 with degreebound n, which is a power of 2. is a primitive n-th root of unity. yk F ( k ) .Then Let y0 1 1 y 1 y2 1 y 1 n 1 1 1 2 4 n 1 2( n 1) 2 a0 a1 2( n 1) * a2 ( n 1) 2 an 1 1 n 1 The vector y ( y0 , y1,... yn1 ) is called the Discrete Fourier Transform of vector a. The matrix is denoted by Fn (. ) How to find Fn-1? Proposition. Let be a primitive l-th root of unity over a field L.Then 0 if l > 1 k k 0 1 otherwise l 1 Proof. The l =1 case is immediate since =1. Since is a primitive l-th root, each k ,k0 is a distinct l-th root of unity. Z l 1 ( Z l0 )( Z l )( Z l2 )...(Z ll 1 ) l 1 Z ( ) Z l k 0 k l l 1 l 1 ... (1) lk l k 0 Comparing the coefficients of Zl-1 on the left and right hand sides of this equation proves the proposition. Inverse matrix to Fn Proposition. Let ω be an n-th root of unity.Then, Fn () Fn (1 ) nE n Proof. The ijth element of Fn ()Fn (1 ) is n-1 ik ik k=0 n-1 k=0 k(i j) 0, if i j n, otherwise The i=j case is obvious.If ij then i j will be a primitive root of unity of order l, where l|n.Applying the previous proposition completes the proof. So, Fn1 () 1 Fn (1 ) n Evaluating y= Fn () a Interpolation 1 1 a= Fn ( ) y n Fast Fourier Transform A[0] (x) a 0 a 2 x a 4 x 2 ... a n 2 x n / 21 A[1] (x) a1 a 3 x a 5 x 2 ... a n 1x n / 21 A(x) A[0] (x 2 ) xA[1] (x 2 ) So, the problem of evaluating A(x) reduces to: 1. Evaluating the degree-bound n/2 polynomials A[0] (x) and A[1] (x) 2. Combining the results Recursive FFT 1 2 3 n length[a] if n=1 then return a 4 n e 5 1 6 a [0] (a 0 ,a 2 ,...,a n-2 ) 7 a [1] (a1 ,a 3 ,...,a n-1 ) 8 y[0] Recursive-FFT(a [0] ) 2 i n 9 y[1] Recursive-FFT(a [1] ) 10 for k 0 to n/2-1 11 do y k y[0] +y[1] k k 12 [1] y k+(n/2) y[0] k -y k 13 n 14 return y Time of the Recursive-FFT To determine the running time of procedure Recursive-FFT, we note, that exclusive of the recursive calls, each invocation takes time Θ(n), where n is the length of the input vector.The recurrence for the running time is therefore T(n) = 2T(n/2) + Θ(n) = Θ(n log n) More effective implementations k [1] The for loop involves computing the value n yk twice.We can change the loop(the butterfly operation): for k 0 to n/2-1 do t yk[1] yk yk[0] +t yk+(n/2) yk[0] -t n yk[0] yk[0] yk[0] nk yk[1] yk[0] nk yk[1] kn . Iterative FFT (a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 ) (a1 , a3 , a5 , a7 ) (a0 , a2 , a4 , a6 ) (a0 , a4 ) (a0 ) 1) (a1 , a5 ) (a2 , a6 ) ( a4 ) ( a2 ) (a6 ) (a1 ) (a3 , a7 ) (a5 ) (a3 ) (a7 ) We take the elements in pairs, compute the DFT of each pair, using one butterfly operation, and replace the pair with its DFT 2) We take these n/2 DFT’s in pairs and compute the DFT of the four vector elements . . log 2 n) We take 2 (n/2)-element DFT’s and combine them using n/2 butterfly operations into the final n-element DFT Iterative-FFT.Code. 0,4,2,6,1,5,3,7000,100,010,110,001,101,011,111000,001,010,011,100,101,110,111 BIT-REVERSE-COPY(a,A) nlength [a] for k0 to n-1 do A[rev(k)]ak ITERATIVE-FFT 1. BIT-REVERSE-COPY(a,A) 2. nlength [a] 3. for s1 to log n 4. do m2s 5. m e2i/m 6. for j0 to n-1 by m 1 7. for j0 to m/2-1 8. do for kj to n-1 by m 9. do t A[k+m/2] 10. uA[k] 11. A[k]u+t 12. 13. 14. A[k+m/2]u-t m return A A parallel FFT circuit a0 a1 a2 a3 a4 a5 a6 a7 0 2 04 02 14 80 02 02 18 04 82 14 83 y0 y1 y2 y3 y4 y5 y6 y7 Problem: evaluating all derivatives of a polynomial at a point a. Given coefficients b0,b1,…, bn-1 such that n 1 A( x) b j ( x x0 ) j j 0 b. Show how to compute A(t) (x0), for t=0,1,2,…,n-1, in O(n) time. k Explain how to find b0,b1,…, bn-1 in O(n lg n) time, given A( x0 n ) for k=0,1,2,…,n-1. Problem: Toeplitz matrices A Toeplitz matrix is an n × n matrix A ( aij ) , such that aij ai 1, j 1 for i=2,3,…,n and j=2,3,…,n. a. Is the sum of two Toeplitz matrices necessarily Toeplitz? What about the product? b. Describe how to represent a Toeplitz matrix so that two n × n Toeplitz matrices can be added in O(n) time. c. Give an O(n lg n)-time algorithm for multiplying an n × n Toeplitz matrix by a vector of length n. Use your representation from part (b). d. Give an efficient algorithm for multiplying two n × n Toeplitz matrices. Analyze its running time.