Transcript 02_FFT
Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. S. Albers Prof. Dr. Th. Ottmann WS 03/04 1 1. Polynome Reelles Polynom p in einer Variablen x p(x) = anxn + ... +a1x1 + a0 a0 ,..., an R, an 0: Koeffizienten von p Grad von p: höchste Potenz in p (= n) Beispiel: p(x) = 3x3 – 15x2 + 18x Menge aller reellen Polynome: R[x] WS 03/04 2 2. Operationen auf Polynomen p,qR[x] p x an x n a1 x1 a0 q x bn x n b1 x1 b0 1. Addition p x q x an x n a0 bn x n b0 an bn x n a1 b1 x1 a0 b0 WS 03/04 3 Operationen auf Polynomen 2. Produkt p x q x an x n a0 bn x n b0 c2 n x 2 n c1 x1 c0 c i : Welche Monomprodukte haben Grad i? ci a j bi j i 0,..., 2n. i j 0 an1 a2 n 0, bn1 b2 n 0 Polynomring R[x] WS 03/04 4 Operationen auf Polynomen 3. Auswerten an der Stelle x0: Horner-Schema px0 an x0 an1 x0 a1 x0 a0 Zeit: O(n) WS 03/04 5 3. Repräsentation eines Polynoms p(x) R[x] Möglichkeit zur Repräsentation von p(x): 1. Koeffizientendarstellung p x an x n a1 x1 a0 Beispiel: px 3x3 15x2 18x WS 03/04 6 Repräsentation eines Polynoms 2. Nullstellenprodukt p(x) R[x] p x an x x1 x xn Beispiel: px 3xx 2x 3 WS 03/04 7 Repräsentation eines Polynoms 3. Punkt/Wertdarstellung Interpolationslemma Jedes Polynom p(x) aus R[x] vom Grad n ist eindeutig bestimmt durch n+1 Paare (xi, p(xi)), mit i = 0,...,n und xi xj für i j Beispiel: Das Polynom px 3xx 2x 3 wird durch die Paare (0,0), (1,6), (2,0), (3,0) eindeutig festgelegt. WS 03/04 8 Operationen auf Polynomen p, q R[x], Grad(p) = Grad(q) = n Koeffizientendarstellung Addition: O(n) Produkt: O(n2) Auswertung an der Stelle x0: O(n) Punkt/Wertdarstellung p x0 , y0 , x1 , y1 ,, xn , yn q x0 , z0 , x1 , z1 ,, xn , zn WS 03/04 9 Operationen auf Polynomen Addition: p q x0 , y0 z0 , x1 , y1 z1 ,, xn , yn zn Zeit: O(n) Produkt: p q x0 , y0 z0 , x1 , y1 z1 ,, xn , yn zn (Voraussetzung: n Grad(pq)) Zeit: O(n) Auswerten an der Stelle x´: ?? Umwandeln in Koeffizientendarstellung (Interpolation) WS 03/04 10 Polynomprodukt Berechnung des Produkts zweier Polynome p, q vom Grade < n p,q Grad n-1, n Koeffizienten Auswertung: 2n Punkt/Wertpaare x0 , x1 ,, x2n1 x , px i und i x , qx i i Punktweise Multiplikation 2n Punkt/Wertpaare x , pqx i i Interpolation pq Grad 2n-2, 2n-1 Koeffizienten WS 03/04 11 Ansatz für Divide and Conquer Idee: (n sei gerade) px a0 a1 x an 1 x n 1 a0 a2 x 2 an 2 x n 2 a1 x a3 x 3 an 1 x n 1 x n2 / 2 a0 a2 x 2 an 2 x 2 x a1 a3 x an 1 2 2 n2 / 2 p0 x 2 xp1 x 2 WS 03/04 12 Repräsentation von p(x) Annahme: Grad(p) < n 3a. Werte an den n Potenzen der n-ten komplexen Haupteinheitswurzel n e2i / n i 1 e2i 1 83 Potenz von n (Einheitswurzeln): 1= n0 ,n1 ,,nn1 81 84 80 1 85 WS 03/04 82 86 87 13 Diskrete Fourier Transformation Werte von p für die n Potenzen von n legen p eindeutig fest, falls Grad(p)<n. Diskrete Fourier Transformation (DFT) DFTn ( p) pn0 , pn1 ,, pnn1 Beispiel: n=4 eix cos x i sin x 40 e0i cos(0) i sin(0) 1 41 e2i / 4 cos( / 2) i sin( / 2) i 42 e2i / 4 cos i sin 1 2 3 4 WS 03/04 e 2i / 4 3 cos3 / 2 i sin 3 / 2 i 14 Auswertung an den Einheitswurzeln 41 i 42 1 40 1 43 i px 3x3 15x2 18x WS 03/04 15 Auswertung an den Einheitswurzeln ω , pω ω , pω ω , pω ω , pω 0 0 4 4 1 1 4 4 2 2 4 4 3 3 4 4 1, p1 1,6 i, pi i, 15 15i -1, p-1 -1, -36 -i, p-i -i, 15 -15i DFT4 p 6,15 15i,36,15 15i WS 03/04 16 Polynomprodukt Berechnung des Produkts zweier Polynome p, q vom Grade < n p,q Grad n-1, n Koeffizienten 0 1 2 n 1 Auswertung: 2 n ,2 n ,,2 n 2n Punkt/Wertpaare i und , p 2n 2n i i , q 2n 2n i Punktweise Multiplikation 2n Punkt/Wertpaare i , pq 2n 2n i Interpolation pq Grad 2n-2, 2n-1 Koeffizienten WS 03/04 17 4. Eigenschaften der Einheitswurzel 20n ,21n ,,22nn1 bilden eine multiplikative Gruppe Kürzungslemma Für alle n > 0, 0 k n, und d > 0 gilt: dndk nk Beweis: dndk e2idk / dn e2ik / n nk Folge: WS 03/04 2nn 21 1 18 Eigenschaften der Einheitswurzel Halbierungslemma Die Menge der Quadrate der 2n komplexen 2n-ten Einheitswurzeln , ,, 2 0 2n 2 n 1 2 2 1 2n 2n ist gleich der Menge der n komplexen n-ten Einheitswurzeln , ,, 0 1 n 1 n n n Beweis: k 2n 2 2k 2n 2k , ,..., ,, ,, 0 2n n0 WS 03/04 2 1 2n 1n 2 k 2n nk 2 nk 2 2n nn k nn nk nk 19 Eigenschaften der Einheitswurzel Summationslemma Für alle n > 0, j 0 mit n | j n 1 n k 0 jk 0 Beweis: 1 1 1 1 0 n 1 k 0 WS 03/04 j k n j n n j n n j n j n 20 5. Diskrete Fourier Transformation DFTn ( p) pn0 , pn1 ,, pnn1 Fast Fourier Transformation: Berechnung von DFTn(p) mittels eines Divide-and-Conquer Ansatzes WS 03/04 21 Diskrete Fourier Transformation Idee: (n sei gerade) px a0 a1 x an 1 x n 1 a0 a2 x 2 an 2 x n 2 a1 x a3 x 3 an 1 x n 1 x n2 / 2 a0 a2 x 2 an 2 x 2 x a1 a3 x 2 an 1 2 n2 / 2 p0 x 2 xp1 x 2 p0 x a0 a2 x an2 x n2 / 2 p1 x a1 a3 x an1 x n2 / 2 WS 03/04 22 Diskrete Fourier Transformation Auswertung für k = 0, ... , n – 1 p nk p0 nk nk p1 nk 2 WS 03/04 2 k k k p0 n / 2 n p1 n / 2 , falls k n / 2 k n / 2 k k n / 2 p p n 1 n/2 0 n/2 falls k n / 2 23 Diskrete Fourier Transformation Beispiel: p(40 ) p0 (20 ) 40 p1 (20 ) p(41 ) p0 (21 ) 41 p1 (21 ) p(42 ) p0 (20 ) 42 p1 (20 ) p(43 ) p0 (21 ) 43 p1 (21 ) WS 03/04 24 Berechnung von DFTn DFTn ( p) p n0 , p n1 ,, p nn1 Einfachster Fall: n = 1 (Grad(p) = n –1 = 0) DFT1(p) = a0 Sonst : Divide: Teile p in p0 und p1 auf Conquer: Berechne DFTn/2(p0) und DFTn/2(p1) rekursiv Merge: Berechne für k = 0, ... , n –1: DFTn(p)k = ( DFTn / 2 ( p0 ), DFTn / 2 ( p0 ))k nk ( DFTn / 2 ( p1 ), DFTn / 2 ( p1 ))k WS 03/04 25 Eine kleine Verbesserung k k k p0 n / 2 n p1 n / 2 , falls k n / 2 k p n k n / 2 k k n / 2 p p n 1 n/2 0 n/2 falls k n / 2 k k k p0 n / 2 n p1 n / 2 , falls k n / 2 k n / 2 k n / 2 k n / 2 , p p n 1 n/2 0 n/2 falls k n / 2 Also falls k < n/2: WS 03/04 p0 nk/ 2 nk p1 nk/ 2 pnk p0 nk/ 2 nk p1 nk/ 2 pnk n / 2 26 Eine kleine Verbesserung Beispiel: p(40 ) p0 (20 ) 40 p1 (20 ) p(41 ) p0 (21 ) 41 p1 (21 ) p(42 ) p0 (20 ) 40 p1 (20 ) p(43 ) p0 (21 ) 41 p1 (21 ) WS 03/04 27 6. Fast Fourier Transformation Algorithmus FFT Input: Ein Array a mit den n Koeffizienten eines Polynoms p und n = 2k Output: DFTn(p) 1. if n = 1 then /* p ist konstant */ 2. return a 3. d[0] = FFT([a0, a2, ... , an-2 ], n/2) 4. d[1] = FFT([a1, a3, ... , an-1], n/2) 5. n = e2i/n 6. = 1 7. for k = 0 to n/2 – 1 do /* = nk*/ 8. d k d k0 d k1 9. d k n / 2 d k0 d k1 10. n 11. return d WS 03/04 28 FFT : Beispiel px 3x3 15x2 18x 0 a = [0, 18,-15, 3 ] a[0] = [0, -15] FFT([0, -15], 2) = = FFT([18, 3],2) = = a[1] = [18, 3] (FFT([0],1) + FFT([-15],1), FFT([0],1) - FFT([-15],1)) (-15,15) (FFT([18],1) + FFT([3],1), FFT([18],1) - FFT([3],1)) (21,15) k=0; =1 d0 = -15 + 1 * 21 = 6 d2 = -15 – 1 * 21 = -36 k=1;=i d1 = 15 + i*15 d3 = 15 – i*15 FFT(a, 4) = (6, 15+15i, -36, 15 –5i) WS 03/04 29 7. Analyse T(n) = Zeit um ein Polynom vom Grad < n an den Stellen 20n ,21n ,,22nn1 auszuwerten. T(1) = O(1) T(n) = 2 T(n/2) + O(n) = O(n log n) WS 03/04 30 Polynomprodukt Berechnung des Produkts zweier Polynome p, q vom Grade < n p,q Grad n-1, n Koeffizienten Auswertung durch FFT: 2n Punkt/Wertpaare i und , p 2n 2n i 20n ,21n ,,22nn1 i , q 2n 2n i Punktweise Multiplikation 2n Punkt/Wertpaare i , pq 2n 2n i Interpolation pq Grad 2n-2, 2n-1 Koeffizienten WS 03/04 31 Interpolation Umrechnung der Punkt/Wert-Darstellung in die Koeffizientendarstellung Gegeben: (x0, y0),..., (xn-1, yn-1) mit xi xj, für alle i j Gesucht: Polynom p mit Koeffizienten a0,..., an-1, so dass p x0 a0 a1 x0 an1 x0n1 y0 p x1 a0 a1 x1 an1 x1n1 y1 p x2 a0 a1 x2 an1 x2n1 y2 p xn1 a0 a1 xn1 an1 xnn11 yn1 WS 03/04 32 Interpolation Matrixschreibweise n 1 1 x x a0 y0 0 0 n 1 1 x1 x2 a1 y1 n 1 1 xn1 xn1 an1 yn1 WS 03/04 33 Interpolation Gleichungs system n 1 1 x0 x0 a0 y0 n 1 1 x1 x1 a1 y1 n 1 1 xn 1 xn 1 an 1 yn 1 ist lösbar für xi x j , für alle i j Spezialfall (hier) : Definition: xi ni Vn nij i , j , a ai , Vn a y WS 03/04 y yi a Vn1 y 34 Interpolation Satz Für alle 0 i, j n – 1 gilt: V 1 n ij n ij n Beweis ij 1 n Vn n i , j zu zeigen: WS 03/04 Vn1Vn I n 35 Interpolation Betrachte Eintrag von Vn1Vn in Zeile i, Spalte j : Vn1Vn ij 1 i n n n WS 03/04 1 j i ( n 1) n n 2j n n ( n1) j n ij 36 Interpolation V Vn ij 1 n n 1 k 0 n ik 1 n1 ( i j ) k n k0 n n n jk Fall 1: i = j 1 n1 i j k 1 n1 0k n 1 n k 0 n n k 0 Fall 2: i j, d.h. n 1 i j n 1 und damit n | i j : 1 n1 i j k 0 n k 0 n WS 03/04 37 Interpolation Summationslemma Für alle n 0, j 0 mit n | j gilt : n1 jk n 0 k 0 WS 03/04 38 Interpolation ai Vn1 y i y0 i i n 1 1 n y1 n , ,, n n n y n 1 n 1 nik yk n k 0 1 n 1 yk ni n k 0 WS 03/04 k 39 Interpolation 1 a n yk n k 0 n 1 0 , y ,, y k n 1 k 0 1 k n k n 1 k 0 k n 1 n k r x y0 y1 x y2 x 2 yn1 x n1 1 a r n0 , r n1 ,, r n( n1) n WS 03/04 40 Interpolation und DFT 1 a r n0 , r n1 ,, r n( n1) n a 1 ai ( DFT n r ) n i n 1 a0 ( DFT n r ) 0 n WS 03/04 1 r nn , r nn 1 , , r n1 n denn nn 1 i 0 41 Polynomprodukt durch FFT Berechnung des Produkts zweier Polynome p, q vom Grade < n p,q Grad n-1, n Koeffizienten Auswertung durch FFT: 2n Punkt/Wertpaare i und , p 2n 2n i 20n ,21n ,,22nn1 i , q 2n 2n i Punktweise Multiplikation 2n Punkt/Wertpaare i , pq 2n 2n i Interpolation durch FFT pq Grad 2n-2, 2n-1 Koeffizienten WS 03/04 42