Polynome und schnelle FourierTransformation Mohsen Taheri FU Berlin – SoSe2012 Polynome Ein Polynom ist eine Funktion A( x ) j 0 a j x n 1 j Koeffizienten: a j Ein Polynom hat Grad k wenn ak der höchste Koeffizient mit einem Wert ungleich 0 Länge = jede ganze Zahl großer als Grad eines Polynoms Länge Grad 1 2 Polynome und FFT Addition von Polynomen j Seien A( x ) j 0 a j x und B( x ) n 1 Polynome der Länge n j b x j 0 j n 1 Addition von A(x) und B(x) ist C ( x) j 0 c j x j n 1 hat auch Länge n und c j a j b j Beispiel 8 x 4 3x 3 12x 5 ( 5x 3 2 x 2 3x 2) 8x4 2 x3 2 x2 9 x 3 Laufzeit: (n ) 3 Polynome und FFT Multiplikation von Polynomen Seien A( x ) nj10 a j x j und B( x) n1 b j x j j 0 Polynome der Länge n Multiplikation von A(x) und B(x) ist C( x) j0 c j x j j c Wobei j k 0 ak b j k Länge(C) = Länge(A) + Länge(B) Beispiel 2n2 (6x3 7x2 10x 9) (2x3 4x 5) 30x3 35x 2 50x 45 24x4 28x3 40x 2 36x 12x6 14x5 20x4 18x3 12x6 14x5 44x 4 20x3 75x 2 86x 45 2 ( n ) Laufzeit: 4 Polynome und FFT Darstellung von Polynomen Koeffizienten-Darstellung Point-Value-Darstellung 5 Polynome und FFT Koeffizienten-Darstellung j Das Polynom A( x ) j 0 a j x als ein Vektor der n 1 Koeffizienten a (a0, a1 ,...,an1 ) Addition: a (a0 , a1 ,...,an1 ) b (b0 , b1 ,...,bn1 ) c a b (a0 b0 , a1 b1,...,an1 bn1 ) 6 Laufzeit (n ) Multiplikation (wie vorhin): j c c (c0 , c1 ,...,c2n1 ) wobei j k 0 ak b j k 2 Laufzeit (n ) Polynome und FFT Point-Value-Darstellung A( x ) j 0 a j x j Polynom Darstellung: n 1 Länge n in Point-Value- eine Menge von Punkten {( x0 , y0 ), ( x1 , y1 ),...,( xn1 , yn1 )} alle xk sind disjunkt für alle k 0,1,...,n 1 : yk A( xk ) Auswertung durch Horne-Schema (in (n ) ) A( x0 ) a0 x0 (a1 x0 (a2 ... x0 (an2 x0 (an1 ))...)) 7 Polynome und FFT Addition in Point-Value-Darstellung A: B: Addition: {( x0 , y0 ), ( x1 , y1 ),...,( xn1 , yn1 )} {( x0 , y0 ), ( x1 , y1 ),...,( xn1 , yn 1 )} C A B {( x0 , y0 y0 ), ( x1 , y1 y1 ),...,( xn1 , yn1 yn 1 )} 8 Laufzeit: (n ) Polynome und FFT Multiplikation in Point-Value-Darstellung Problem: Länge(A.B)=Länge(A)+Länge(B) Lösung: Extended Point-Value A: B: 2n Punkte statt n Punkte {( x0 , y0 ), ( x1, y1 ),...,( x2n1, y2n1 )} {( x0 , y0 ), ( x1 , y1 ),...,( x2n1 , y2 n1 )} Multiplikation: C: {( x0 , y0 y0 ), ( x1 , y1 y1 ),...,( x2n1 , y2n1 y2 n1 )} Laufzeit : (n ) 9 Polynome und FFT Evaluation Evaluation: Transform von Koeffizienten-Vektor zur Point-Value-Darstellung Evaluating: Die Auswertung eines Polynoms unter einen bestimmten Wert von x Mit Hilfe von Horne-Schema in (n ) Evaluation insgesamt in (n 2 ) 10 Polynome und FFT Interpolation Interpolation: Transform von Point-Value-Darstellung zur Koeffizienten-Darstellung Lagranges Formel A( x ) k 0 y k ( ( x x j ) / ( x k x j )) n 1 j k 11 j k Polynome und FFT Theorem 1: Eindeutigkeit von Interpolation der Polynomen Für alle Menge von n Punkten {( x0 , y0 ), ( x1 , y1 ),...,( xn1 , yn1 )} mit xk disjunkt gibt es ein eindeutiges Polynom A(x) der Länge n, so dass 12 für alle k 0,1,...,n 1 yk A( xk ) Polynome und FFT DFT effiziente Methode für Evaluation und Interpolation Diskrete Fourier Transform j Das Polynom A( x ) j 0 a j x in n komplexe n-te Einheitswurzeln auswerten n 1 y DFTn (a) Eingabe: Koeffizienten-Vektor a (a0 , a1 ,...,an1 ) Ausgabe: Vektor y ( y0 , y1 ,..., yn1 ) 13 Auswertung der Polynom in n Komplexe n-te Einheitswurzeln Polynome und FFT Komplexe Einheitswurzeln komplexe Einheitswurzel: eine komplexe Zahl 1 Es gibt genau n komplexe n-te Einheitswurzeln: k 2ik / n für k=0,1, … , n-1: e 2i / n e Die Zahl n : primitive n-te Einheitswurzel wobei n alle anderen Zahlen sind die Potenzen dieser Zahl n komplexe n-te Einheitswurzeln sind dann: n , n , n ,...,n 0 14 1 2 n1 Polynome und FFT Komplexe Einheitswurzeln - Eigenschaften Additive Gruppe 0 1 2 n1 , , ,..., Die n Zahlen haben die gleiche Struktur n n n n wie die additive Gruppe ( n ,) modn Beweis: nn n0 1 njnk njk njk modn 15 Polynome und FFT Komplexe Einheitswurzeln - Eigenschaften Cancellation Lemma Für jede ganze Zahl n 0, k 0 und d 0 gilt: dndk nk Beweis: . dndk (e2i / dn )dk (e2ik / n )k nk Korollar: 16 Für alle ganze Zahlen n>0 gilt: n/2 n 2 1 Polynome und FFT Komplexe Einheitswurzeln - Eigenschaften Halving Lemma: wenn n>0 gerade Zahl die Quadrate der n komplexen n -te Einheitswurzeln sind die n/2 komplexe (n/2)-te Einheitswurzeln: {(n0 )2 , (n1 )2 ,...,(nn1 )2 } {n0/ 2 , n1 / 2 ,...,nn//221} 17 Polynome und FFT Komplexe Einheitswurzeln - Eigenschaften Halving Lemma: Beweis: Da n gerade ist, nehmen wir an n=2m Zu zeigen: {(20m )2 , (21m )2 ,...,(22mm1 )2 } {m0 , m1 ,...,mm1} Nach Cancellation Lemma: {(20m )2 , (21m )2 ,...,(22mm1 )2 } {m0 , m1 ,...,m2m1} m j j m da m 1 , ist dann m m , also {m0 , m1 ,...,m2m1} {m0 , m1 ,...,mm1, mm , mm1,...,m2m1} {m0 , m1 ,...,mm1 , mm , mm1 ,...,m2 m1} {m0 , m1 ,...,mm1 , m0 , m1 ,...,mm1} {m0 , m1 ,...,mm1} 18 □ Polynome und FFT Komplexe Einheitswurzeln - Eigenschaften Summation Lemma: Für jede ganze Zahl n≥1 und für k≠0 und nicht dividierbar durch n, gilt: k j ( j 0 n ) 0 n 1 19 Polynome und FFT FFT Evaluation eines Polynoms in (n lg n) unter Verwendung der Eigenschaften der Einheitswurzeln Diese Methode heißt Fast Fourier Transform(FFT). Annahme n ist ein 2er Potenz ( n 2 k ) Divide-and-Conquer 20 Polynome und FFT FFT das Polynom A(x) in gerade und ungerade indizierte Koeffizienten teilen [ 0] [1] zwei neue Polynome A ( x), A ( x) der Länge n/2 A[ 0] ( x ) a0 a2 x a4 x 2 ... an2 x n / 21 A[1] ( x ) a1 a3 x a5 x 2 ... an 1 x n / 21 Das Polynom wird so berechnet: A( x) A[0] ( x 2 ) xA[1] ( x 2 ) 21 Polynome und FFT FFT das Problem von Auswerten des Polynoms in n Punkten ( n0 ,n1,...,nn1 ) reduziert zu: [ 0] [1] 1. zwei Polynome A ( x), A ( x) der Länge n/2 in Punkten 0 1 n1 ( (n ) 2 , (n ) 2 ,...,(n ) 2 ) auswerten 2. das Resultat mit Hilfe der Abgleichung zusammen addieren A( x) A[0] ( x 2 ) xA[1] ( x 2 ) 22 Polynome und FFT FFT Nach Halving Lemma: die Anzahl der Elemente der Liste (n 0 ) 2 , (n1 ) 2 ,...,(n n1 )2 nicht n, sondern n/2. Die zwei Subprobleme haben genau die gleiche Struktur wie das ursprüngliche Problem und sind halb so groß. 23 Polynome und FFT Rekursiv FFT RECURSIVE-FFT(a) 1. n = a.length() 2. if n==1 3. return a n e2i / n 4. 5. 1 6. a[0] (a0 , a2 ,...,an2 ) 7. a[1] (a1, a3,...,an1 ) 8. y[0] RECURSIVE FFT(a[0] ) 9. y[1] RECURSIVE FFT(a[1] ) 10. for k=0 to n/2-1 12. yk yk[0] yk[1] yk ( n / 2) yk[0] yk[1] 13. n 11. 14. 24 Eingabe: a (a0 , a1,...,an1 ) Ausgabe: y DFTn (a) return y Polynome und FFT Rekursiv FFT Zeilen11-12 kombinieren das Ergebnis der rekursiven Berechnung DFTn / 2 Zeile 11 für y0 , y1,...yn / 21 yk yk[0] nk yk[1] A[0] (n2k ) nk A[1] (n2k ) A(nk ) Zeile 12 für yn / 2 , yn / 21 ,...yn1 yk ( n / 2 ) yk[ 0] nk yk[1] yk[ 0] nk n / 2 yk[1] A[ 0] (n2 k ) nk ( n / 2 ) A[1] (n2 k ) A[ 0] (n2 k n ) nk ( n / 2 ) A[1] (n2 k n ) A(nk ( n / 2 ) ) zusammengefügt wird Vektor y berechnet 25 Polynome und FFT Rekursiv FFT - Laufzeit jeder rekursiver Aufruf kostet (n ) n = Länge des Eingabevektors Laufzeit: T (n) 2T (n / 2) (n) (n lg n) 26 Polynome und FFT Interpolation in Einheitswurzeln umgekehrtes Verfahren 1 Polynom vom Point-Value zurück zu Koeffizienten a DFT ( y) Berechnung von DTF als eine Matrizenmultiplikation 1 y 0 1 1 n2 y1 1 n y 1 2 n4 2 n DFT ( a ) 3 n6 y 3 1 n y 1 n 1 2 ( n ) n n n 1 1 n3 n6 n9 n3( n 1) a 0 nn 1 a1 n2( n 1) a 2 3( n 1) n a 3 ( n 1)( n 1) n a n 1 1 Vandermonde-Matrix Vn wir brauchen die Inverse-Matrix Vn1 y Vn .a a Vn1. y 27 Polynome und FFT Inverse von Vandermonde-Matrix 1 V Theorem: Für j,k=0,1,…,n-1 sind die (j,k)Einträge von n die Zahlen n kj / n Beweis: z.z.: Vn1Vn I n , wobei I n die n×n Identitätsmatrix betrachte die (j,j')Einträge von Vn1Vn [V V ] k 0 ( 1 n n jj ' Falls Falls 28 j=j‘ : j≠j‘ : n 1 kj n / n )( ) k 0 (n k ( j j ') / n ) kj ' n n 1 k ( j j ') ( / n) 1 k 0 n n 1 -(n-1) ≤ j-j' ≤ n-1 j-j' ist nicht durch n dividierbar n 1 k ( j j ') / n) 0 Summation Lemma : k 0 (n Polynome und FFT Interpolation in Einheitswurzeln 1 n I : (j,k)Einträge der V II : a Vn1. y 1 kj [ V ] sind: n jk n /n 1 n 1 I II a j k 0 y k nkj n Vergleiche mit Polynom in Einheitswurzeln 29 n 1 leichte Modifikation in Algorithmus berechnet die Interpolation y k k 0 a k nk tausche a und y 1 ersetze n durch n dividiere jedes Element durch n Also die Interpolation auch in (n lg n ) berechenbar Polynome und FFT Zusammenfassung a0, a1 ,...,an1 b0 , b1 ,...,bn1 Standard-Multiplikation 2 Laufzeit (n ) c0,c1 ,...,c2n2 Interpolation Laufzeit (n lg n) Evaluation Laufzeit (n lg n) A(20n ), B(20n ) A(21n ), B(21n ) A(22nn 1 ), B(22nn 1 ) 30 KoeffizientenDarstellung C ( 20n ) punktweise Multiplikation Laufzeit (n) C ( 21 n ) C ( 22nn 1 ) Polynome und FFT Point-ValueDarstellung