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,qR[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
an1    a2 n  0, bn1    b2 n  0
Polynomring R[x]
WS 03/04
4
Operationen auf Polynomen
3. Auswerten an der Stelle x0: Horner-Schema
px0   an x0  an1 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:
px  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:
px   3xx  2x  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
px   3xx  2x  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 ,, x2n1
x , px 
i
und
i
x , qx 
i
i
Punktweise Multiplikation
2n Punkt/Wertpaare
x , pqx 
i
i
Interpolation
pq Grad 2n-2, 2n-1 Koeffizienten
WS 03/04
11
Ansatz für Divide and Conquer
Idee: (n sei gerade)
px   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 
n2 / 2
 a0  a2 x 2    an 2 x 2

x a1  a3 x    an 1
2
 
 
2

n2 / 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  e2i / n
i  1
e2i  1
83
Potenz von n (Einheitswurzeln):
1=
n0 ,n1 ,,nn1
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)   pn0 , pn1 ,, pnn1 
Beispiel: n=4
eix  cos x  i sin x
40  e0i  cos(0)  i sin(0)  1
41  e2i / 4  cos( / 2)  i sin( / 2)  i
42  e2i / 4   cos  i sin   1
2

3
4
WS 03/04

 e
2i / 4 3
 cos3 / 2   i sin 3 / 2   i
14
Auswertung an den Einheitswurzeln
41  i
42  1
40  1
43  i
px  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, p1  1,6
i, pi   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 ,,22nn1 bilden eine multiplikative Gruppe
Kürzungslemma
Für alle n > 0, 0  k  n, und d > 0 gilt:
dndk  nk
Beweis:
dndk  e2idk /  dn  e2ik / 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
nk
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)   pn0 , pn1 ,, pnn1 
Fast Fourier Transformation:
Berechnung von DFTn(p) mittels
eines Divide-and-Conquer Ansatzes
WS 03/04
21
Diskrete Fourier Transformation
Idee: (n sei gerade)
px   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 
n2 / 2
 a0  a2 x 2    an 2 x 2

x a1  a3 x 2    an 1
 
 
2

n2 / 2

 p0 x 2  xp1 x 2
p0  x   a0  a2 x    an2 x  n2  / 2
p1  x   a1  a3 x    an1 x  n2  / 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 nn1 
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   pnk 
p0 nk/ 2   nk p1 nk/ 2   pnk 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 = e2i/n
6.  = 1
7. for k = 0 to n/2 – 1 do
/*  = nk*/
8. d k  d k0     d k1
9. d k  n / 2  d k0     d k1
10.    n  
11. return d
WS 03/04
28
FFT : Beispiel
px  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 ,,22nn1 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 ,,22nn1

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    an1 x0n1  y0
p x1   a0  a1 x1    an1 x1n1  y1
p x2   a0  a1 x2    an1 x2n1  y2


p xn1   a0  a1 xn1    an1 xnn11  yn1
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 xn1  xn1  an1   yn1 
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  Vn1 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
Vn1Vn  I n
35
Interpolation
Betrachte Eintrag von Vn1Vn in Zeile i, Spalte j :
Vn1Vn ij 

 1  i
n

n n



WS 03/04

1

j
i ( n 1) 


n
n


2j
n   n





  ( n1) j
n







ij
36
Interpolation
V
Vn ij 
1
n
n 1

k 0
 n ik
1 n1 (  i  j ) k
 n  k0 n
n
n
jk
Fall 1: i = j
1 n1  i  j k 1 n1 0k
  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 n1  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 :
n1 jk
 n  0
k 0
WS 03/04
38
Interpolation


ai  Vn1 y i
 y0 


i
i  n 1
 1 n
 y1 
n

  ,
,,


n
n
n



y 
 n 1 
n 1
 nik
  yk
n
k 0
 
1 n 1
  yk  ni
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    yn1 x n1
1
a  r  n0 , r  n1 ,, r  n( n1) 
n
WS 03/04
40
Interpolation und DFT
1
a  r  n0 , r  n1 ,, r  n( n1) 
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 ,,22nn1

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