Polynome und schnelle Fourier
Download
Report
Transcript Polynome und schnelle Fourier
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