polynomials and fast fourier transform fft polynomials n
play

Polynomials and Fast Fourier Transform (FFT) Polynomials n-1 a i x i - PowerPoint PPT Presentation

Polynomials and Fast Fourier Transform (FFT) Polynomials n-1 a i x i a polynomial of degree n-1 A(x) = i=0 Evaluate at a point x = b in time ? Polynomials n-1 a i x i a polynomial of degree n-1 A(x) = i=0 Evaluate at a point x = b in


  1. Polynomials and Fast Fourier Transform (FFT)

  2. Polynomials n-1 a i x i a polynomial of degree n-1 A(x) = ∑ i=0 Evaluate at a point x = b in time ?

  3. Polynomials n-1 a i x i a polynomial of degree n-1 A(x) = ∑ i=0 Evaluate at a point x = b in time O(n): Horner's rule: Compute a n-1 x, a n-2 + a n-1 x 2 , a n-3 + a n-2 x + a n-1 x 3 … Each step O(1) operations, multiply by and add coefficient.  There are ≤ n steps. O(n) time

  4. Summing Polynomials n-1 a i x i a polynomial of degree n-1 ∑ i=0 n-1 b i x i a polynomial of degree n-1 ∑ i=0 n-1 c i x i the sum polynomial of degree n-1 ∑ i=0 c i = a i + b i Time O(n)

  5. How to multiply polynomials? n-1 a i x i a polynomial of degree n-1 ∑ i=0 n-1 b i x i a polynomial of degree n-1 ∑ i=0 2n-2 c i x i the product polynomial of degree n-1 ∑ i=0 c i = ∑ j ≤ i a j b i-j Trivial algorithm: time O(n 2 ) FFT gives time O(n log n)

  6. Polynomial representations Coefficient: (a 0 ,a 1 , a 2 ,... a n-1 ) Point-value: have points x 0 , x 1 , … x n-1 in mind Represent polynomials A(X) by pairs { (x 0 , y 0 ), (x 1 , y 1 ), … } A(x i ) = y i To multiply in point-value, just need O(n) operations.

  7. Approach to polynomial multiplication: A, B given as coefficient representation 1) Convert A, B to point-value representation 2) Multiply C = AB in point-value representation 3) Convert C back to coefficient representation 2) done esily in time O(n) FFT allows to do 1) and 3) in time O(n log n). Note: For C we need 2n-1 points; we'll just think “n”

  8. From coefficient to point-value: a 0 y 0 a 1 y 1 … = … … … … … a n-1 y n-1 From point-value representation, note above matrix is invertible (if points distinct) Alternatively, Lagrange's formula

  9. We need to evaluate A at points x 1 … x n in time O(n log n) Idea: divide and conquer: A(x) = A 0 (x 2 ) + x A 1 (x 2 ) where A 0 has the even-degree terms, A 1 the odd Example: A = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + a 4 x 4 + a 5 x 5 A 0 (x) = a 0 + a 2 x 2 + a 4 x 4 A 1 (x) = a 1 x + a 3 x 3 + a 5 x 5 How is this useful?

  10. We need to evaluate A at points x 1 … x n in time O(n log n) Idea: divide and conquer: A(x) = A 0 (x 2 ) + x A 1 (x 2 ) where A 0 has the even-degree terms, A 1 the odd If my points are x 1 , x 2 , x n/2 , -x 1 , -x 2 , -x n/2 I just need the evaluations of A 0 , A 1 at points x 12 , x 22 , x n/22 T(n) ≤ 2 T(n/2) + O(n), with solution O(n log n). Are we done?

  11. We need to evaluate A at points x 1 … x n in time O(n log n) Idea: divide and conquer: A(x) = A 0 (x 2 ) + x A 1 (x 2 ) where A 0 has the even-degree terms, A 1 the odd If my points are x 1 , x 2 , x n/2 , -x 1 , -x 2 , -x n/2 I just need the evaluations of A 0 , A 1 at points x 12 , x 22 , x n/22 T(n) ≤ 2 T(n/2) + O(n), with solution O(n log n). Are we done? Need points which can be iteratively decomposed in + and -

  12. Complex numbers:

  13. ω n = n-th primitive root of unity 0 , … ,ω n n-1 ω n n-th roots of unity We evaluate polynomial A of degree n-1 at roots of unity 0 , … ,ω n n-1 ω n Fact: The n squares of the n-th roots of unity are: first the n/2 n/2-th roots of unity, then again the n/2 n/2-th roots of unity.  from coefficient to point-value in O(n log n) (complex) steps

  14. Summary: 0 , … ,ω n n-1 We need to evaluate A at n-th roots of unity ω n Divide: A(x) = A 0 (x 2 ) + x A 1 (x 2 ) where A 0 has the even-degree terms, A 1 the odd Conquer: Evaluate A 0 , A 1 at n/2-th roots ω n/2 0 ,… ,ω n/2 n/2-1 This yields evaluation vectors y 0 , y 1 0 Combine: z := 1 = ω n for (k = 0, k < n, k++) y[k] = y 0 [k modulo n/2] + z y 1 [k modulo n/2] z = z • ω n T(n) ≤ 2 T(n/2) + O(n), with solution O(n log n).

  15. It only remains to go from point-value to coefficient represent. F We need to invert F

  16. It only remains to go from point-value to coefficient represent. ∈ Fact: (F -1 ) j,k = ω n -jk / n Note j,k {0,1,..., n-1} To compute inverse, use FFT with ω -1 instead of ω, then divide by n.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend