Polynome und schnelle Fourier

Werbung
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 )  nj10 a j x j und B( x)  n1 b j x j
j 0


Polynome der Länge n

Multiplikation von A(x) und B(x) ist C( x)  j0 c j x j
j
c

Wobei j k 0 ak b j k
Länge(C) = Länge(A) + Länge(B)

Beispiel


2n2
(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 ,...,an1 )

Addition:
a  (a0 , a1 ,...,an1 )
b  (b0 , b1 ,...,bn1 )
c  a  b  (a0  b0 , a1  b1,...,an1  bn1 )



6
Laufzeit  (n )
Multiplikation (wie vorhin):
j
c

c  (c0 , c1 ,...,c2n1 ) 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 ),...,( xn1 , yn1 )}
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 (an2  x0 (an1 ))...))
7
Polynome und FFT
Addition in Point-Value-Darstellung

A:
B:

Addition:

{( x0 , y0 ), ( x1 , y1 ),...,( xn1 , yn1 )}
{( x0 , y0 ), ( x1 , y1 ),...,( xn1 , yn 1 )}
C  A  B  {( x0 , y0  y0 ), ( x1 , y1  y1 ),...,( xn1 , yn1  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 ),...,( x2n1, y2n1 )}
{( x0 , y0 ), ( x1 , y1 ),...,( x2n1 , y2 n1 )}
Multiplikation:
C: {( x0 , y0  y0 ), ( x1 , y1  y1 ),...,( x2n1 , y2n1  y2 n1 )}
 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 ),...,( xn1 , yn1 )}
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 ,...,an1 )
Ausgabe: Vektor y  ( y0 , y1 ,..., yn1 )

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
2ik / n
 für k=0,1, … , n-1:   e
2i / 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
n1
Polynome und FFT
Komplexe Einheitswurzeln - Eigenschaften

Additive Gruppe
0
1
2
n1

,

,

,...,

 Die n Zahlen
haben die gleiche Struktur
n
n
n
n

wie die additive Gruppe ( n ,) modn
Beweis:
nn  n0  1  njnk  njk  njk 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  (e2i / dn )dk  (e2ik / 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 ,...,(nn1 )2 }  {n0/ 2 , n1 / 2 ,...,nn//221}
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 ,...,(22mm1 )2 }  {m0 , m1 ,...,mm1}
Nach Cancellation Lemma:
{(20m )2 , (21m )2 ,...,(22mm1 )2 }  {m0 , m1 ,...,m2m1}
m j
j
m
da m  1 , ist dann m  m , also
{m0 , m1 ,...,m2m1}  {m0 , m1 ,...,mm1, mm , mm1,...,m2m1}
 {m0 , m1 ,...,mm1 , mm , mm1 ,...,m2 m1}  {m0 , m1 ,...,mm1 , m0 , m1 ,...,mm1}
 {m0 , m1 ,...,mm1}
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  ...  an2 x n / 21
A[1] ( x )  a1  a3 x  a5 x 2  ...  an 1 x n / 21

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,...,nn1 ) reduziert zu:

[ 0]
[1]
1. zwei Polynome A ( x), A ( x) der Länge n/2 in Punkten
0
1
n1
( (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 n1 )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  e2i / n
4.
5.
 1
6.
a[0]  (a0 , a2 ,...,an2 )
7.
a[1]  (a1, a3,...,an1 )
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,...,an1 )
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 / 21
yk  yk[0]  nk yk[1]  A[0] (n2k )  nk A[1] (n2k )  A(nk )
Zeile 12 für yn / 2 , yn / 21 ,...yn1

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 Vn1
y  Vn .a  a  Vn1. 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.: Vn1Vn  I n , wobei I n die n×n Identitätsmatrix
betrachte die (j,j')Einträge von Vn1Vn
[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  Vn1. y
1
 kj
[
V
]


sind:
n
jk
n /n
1 n 1
I  II  a j  k 0 y k nkj
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 ,...,an1
b0 , b1 ,...,bn1
Standard-Multiplikation
2
Laufzeit (n )
c0,c1 ,...,c2n2
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
Herunterladen