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