den hurtige fourier- transformationkeld/teaching/algoritmedesign_f08/slides/pdf/07_… · 1 den...
TRANSCRIPT
1
Den hurtige Fourier-transformation
Jean Baptiste Joseph Fourier (1768-1830)
2
Polynomier
p(x) = aixi
i= 0
n!1
"
p(x) = a0
+ a1x + a
2x2
+!+ an!1xn!1
eller
Generelt:
432 43825)( xxxxxp ++++=
Polynomium:
3
Evaluering
Horner’s regel:Givet koefficienter (a0, a1, a2, …, an-1), der definerer polynomiet
For givet x kan vi evaluere p(x) i O(n) tid ved hjælp af ligningen
!"
=
=
1
0
)(n
i
i
ixaxp
)))((()( 12210 !!!!
+++++=nn
xaaxaxaxaxp
Evaluate(A, x): [hvor A=(a0, a1, a2,…, an-1)]if n=1 then return a0else
A’ ← (a1, a2, …, an-1) [antag, at dette kan gøres i O(1) tid]return a0 + x * Evaluate(A’, x)
4
Multiplikation af polynomier
Givet koefficienter (a0, a1, a2, …, an-1) og (b0, b1, b2, …, bn-1), som definerer topolynomier, p(x) og q (x). Bestem polynomiet p(x)q(x), defineret ved
En lige ud ad landevejen evaluering tager O(n2) tidDen “magiske” FFT kan gøre det i O(n log n) tid
p(x)q(x) = cixi
i= 0
2n!2
"
!=
"=
i
j
jiji bac0
hvor
5
Interpolation
Lad der være givet n punkter i planet med forskellige x-koordinater. Da findes der præcis ét (n-1)’te-grad polynomium, der går igennemalle disse punkter
x
y = p(x)
xj
yj
6
Alternativ metode til beregning af p(x)q(x):Beregn p(x) for 2n værdier, x0, x1, …, x2n-1 Beregn q(x) for de samme 2n værdierFind det (2n-1)’te-grad polynomium, r(x), der går igennem punkterne
{(x0, p(x0)q(x0)), (x1, p(x1)q(x1)), …, (x2n-1, p(x2n-1)q(x2n-1))}Beregn værdien af r(x)
En lige ud af landevejen evaluering tager uheldigvis stadig O(n2) tid, da vi forhvert af de 2n punkter skal anvende Horner’s regel (som tager O(n) tid)Den “magiske” FFT kan gøre det i O(n log n) tid ved at vælge 2n punkter, der erlette at evaluere…
Interpolation og multiplikation
7
Primitive enhedsrødder
Et tal ω er en primitiv n’te enhedsrod, n > 1, hvis• ω n = 1• Tallene 1, ω, ω 2, …, ω n-1 er indbyrdes forskellige
8
2, 6, 7, 8 er 10’nde enhedsrødder i Z*11
22=4, 62=3, 72=5, 82=9 er 5’te enhedsrødder i Z*11
2-1=6, 3-1=4, 4-1=3, 5-1=9, 6-1=2, 7-1=8, 8-1=7, 9-1=5
x x^2 x^3 x^4 x^5 x^6 x^7 x^8 x^9 x^10
1 1 1 1 1 1 1 1 1 1
2 4 8 5 10 9 7 3 6 1
3 9 5 4 1 3 9 5 4 1
4 5 9 3 1 4 5 9 3 1
5 3 4 9 1 5 3 4 9 1
6 3 7 9 10 5 8 4 2 1
7 5 2 3 10 4 6 9 8 1
8 9 6 4 10 3 2 5 7 1
9 4 3 5 1 9 4 3 5 1
10 1 10 1 10 1 10 1 10 1
Eksempel 1 (Z*11)
9
Eksempel 2
Det komplekse tal e2πi/n er en primitiv n’te enhedsrod, hvori = !1
e2πi/n = cos(2π/n) + i sin(2π/n)
ω0 = 1
ω1
ω2 = iω3
ω4 = -1
ω5
ω6 = -i
ω7
n = 8
10
Egenskaber
Inversegenskaben: Hvis ω er en primitiv n’te enhedsrod, så er ω -1 = ω n-1
Bevis: ωωn-1 = ωn = 1
0
1
0
=!"
=
n
j
kj#Annuleringsegenskaben: For -n<k<n og k ≠0 er
01
11
1
1)1(
1
1)(
1
1)(1
0
=!
!=
!
!=
!
!=
!
!="
!
=
kk
k
k
kn
k
nkn
j
kj
###
#
#
##
Bevis:
11
Flere egenskaber
Reduktionsegenskaben: Hvis ω er en primitiv 2n’te enhedsrod, så er ω 2 en primitiv n’te enhedsrod
Bevis: Hvis 1,ω,ω2,…,ω2n-1 er indbyrdes forskellige, så er 1, ω2, (ω2)2, …, (ω2)n-1 også indbyrdes forskellige
Reflektionsegenskaben: Hvis n er lige, er ω n/2 = -1
Bevis: Ved brug af annuleringsegenskaben for k = n/2 fås
)1)(2/(0 2/2/02/02/01
0
)2/( nnnnn
j
jnn !!!!!!!! +=++++++=="
#
=
!
ω k+n/2= -ω kFølgesætning: For n lige gælder
12
Den diskrete Fourier-transformation
Givet koefficienterne (a0, a1, a2, …, an-1) for et (n-1)’te grad polynomium p(x)Den diskrete Fourier-transformation (DFT) evaluerer p for værdierne 1, ω, ω 2, …, ω n-1
Vi beregner (y0, y1, y2, …, yn-1), hvor yj = p(ω j), d.v.s.
!"
=
=
1
0
n
i
ij
ijay #
Den inverse diskrete Fourier-transformation bestemmer koefficienterne for et(n-1)’te grad polynomium givet dets værdier for 1, ω, ω2, …, ω n-1
På matrix-form: y = Fa, hvor F[i,j] = ω ij
På matrix form: a = F -1y, hvor F -1[i,j] = ω -ij/n
13
Korrekthed af den inverse DFT
A[i, j] =1
n!( j" i)k
k= 0
n"1
# = 0 (ved brug af annuleringsegenskaben)
Hvis i og j er forskellige, har vi
!"
=
"=
1
0
1],[
n
k
kjki
njiA ##
Bevis: Lad A=F -1F. Vi ønsker at vise, at A = I, hvor
1111
],[1
0
01
0
==== !!"
=
"
=
"nnnn
iiA
n
k
n
k
kiki###
Hvis i = j, har vi
DFT og den inverse DFT er faktisk inverse operationer
14
Foldning
DFT og den inverse DFT kanbruges til at multiplicere topolynomier
Derfor kan vi bestemmekoefficienterne for produkt-polynomiet hurtigt, hvis vikan bestemme DFT og densinverse hurtigt
Pad with n 0's Pad with n 0's
[a0,a
1,a
2,...,a
n-1] [b
0,b
1,b
2,...,b
n-1]
DFT DFT
[a0,a
1,a
2,...,a
n-1,0,0,...,0] [b
0,b
1,b
2,...,b
n-1,0,0,...,0]
[y0,y
1,y
2,...,y
2n-1] [z
0,z
1,z
2,...,z
2n-1]
Component
Multiply
inverse DFT
[y0z
0,y
1z
1,...,y
2n-1z
2n-1]
[c0,c
1,c
2,...,c
2n-1]
(Convolution)
15
Den hurtige Fourier-transformation
Den hurtige Fourier-transformation (FFT) er en effektiv algoritme tilberegning af DFT
FFT er baseret på paradigmet del-og hersk:Hvis n er lige, opdeles polynomiet
i polynomierne
Vi har da, at
16
FFT-algoritmen
Køretiden er O(n log n)
17
Givet to N-bit heltal I og J. Beregn IJ
Antag, at vi kan multiplicere ord af længde O(log N) bit i konstant tidFind et primtal p = cn + 1, der kan repræsenteres i et ordSæt m = ⎣(log p) /2⎦, således at I og J kan betragtes som vektorer af længde n bestående af m-bit ordBestem en primitiv enhedsrod:
Find en generator x i Z*p .
Så er ω = xc en primitiv n’te enhedsrod i Z*p
Foretag FFT og invers FFT for at beregne foldningen C af I med J
Multiplikation af store heltal
Beregn
K er værdien af IJBeregningerne tager O(n log n) tid, eller O(N), hvis n vælges, så n er O(N / log N)
!"
=
=
1
0
2
n
i
mi
icK
18
Eksperimentelle resultater
Log-log skala viser at sædvanlig multiplikation kører i kvadratisk tid,mens FFT-versioner kører i næsten lineær tid.