Bemerkung: F is nach Lemma 144 und anschließender Bemerkung eine Bijektion.
Lemma 147 F¨ ur ~a,~b ∈ C n gilt
F (~a ∗~b) = F(~a) · F(~b).
[Bem.: Hierbei ist die Dimension der DFT ≥ dem Grad von P ~ c zu w¨ ahlen, ω entsprechend!]
Beweis:
Es gilt
F(~a) · F ( ~b) = (P ~ a (1)P ~b (1), P ~ a (ω)P ~b (ω), . . . , P ~ a (ω n−1 )P ~b (ω n−1 ))
= (P ~ c (1), P ~ c (ω), . . . , P ~ c (ω n−1 ))
= F(~ c), mit ~ c = ~a ∗ ~b.
Idee: Berechne ~a ∗ ~b verm¨ oge F −1 (F(~a) · F ( ~b)). Die
komponentenweise Multiplikation F (~a) · F ( ~b) ben¨ otigt nur O(n) Operationen.
Jedoch: F ist eine lineare Abbildung F(~a) = Ω · ~a, mit
Ω = (ω kl ) 0≤l,k≤n−1 . Die Matrixmultiplikation ben¨ otigt aber Ω(n 2 ) Operationen (also keine offensichtliche Verbesserung im Vergleich zur klassischen Polynom-Multiplikation)!
Ausweg: ”Divide and Conquer”!!!
3.5.2 Berechnung der diskreten Fouriertransformation (FFT) Sei n = 2 k eine 2er-Potenz. Zerlege ~a = (a 0 , . . . , a n−1 ) in einen
geraden Anteil ~a g = (a 0 , a 2 , . . . , a n−2 ) und einen ungeraden Anteil ~a u = (a 1 , a 3 , . . . , a n−1 )
Dann gilt:
P ~ a (x) = P ~ ag(x 2 ) + xP ~ au(x 2 ) .
(x 2 ) .
Beispiel 148
Sei ~a = (1, 2, 4, 8), also P ~ a (x) = 1 + 2x + 4x 2 + 8x 3 . Damit ist
~a g = (1, 4) und ~a u = (2, 8), also P ~ ag(x 2 ) + xP ~ au(x 2 )
(x 2 )
= 1 · (x 2 ) 0 + 4 · (x 2 ) 1 + x · (2 · (x 2 ) 0 + 8 · (x 2 ) 1 )
= 1 + 2 · x + 4 · x 2 + 8 · x 3
Lemma 149 Ist F
n2
,ω
2(~a g ) = (c 0 , . . . , c
n2
−1 ) und Fn
2
,ω
2(~a u ) = (d 0 , . . . , d
n2
−1 ), so gilt F n,ω (~a) = (e 0 , . . . , e n−1 ) mit
e i = P ~ a (ω i )
= P ~ ag(ω 2i ) + ω i P ~ au(ω 2i )
(ω 2i )
= c i + ω i d i
e
n2
+i = P ~ a (ωn2+i )
= P ~ ag(ω 2(n2+i) ) + ω
n2+i P ~ a
u(ω 2(n2+i) )
+i) ) + ω
+i) )
= c i + ω
n2+i d i
f¨ ur i = 0, . . . , n 2 − 1.
Bem.: ω 2 ist primitive n 2 -te Einheitswurzel. Nat¨ urlich ist ω 2n2 = 1.
Dies liefert folgenden Divide-and-Conquer-Algorithmus:
DFT(~a,ω)
Eingabe: ~a = (a 0 , . . . , a n−1 ), n = 2 k , ω Ausgabe: F n,ω (~a) = (e 0 , . . . , e n−1 )
if n = 1 then e 0 := a 0
else
~a g := (a 0 , a 2 , . . . , a n−2 )
~a u := (a 1 , a 3 , . . . , a n−1 ) (c 0 , . . . , c
n2
−1 ) :=DFT( ~a g , ω 2 ) (d 0 , . . . , d
n2
−1 ) :=DFT(~a u , ω 2 ) for i = 0 to n 2 − 1 do
e i := c i + ω i d i
e
n2