Den hurtige Fourier- transformationkeld/teaching/algoritmedesign_f08/Slides/pdf/07_… · 1 Den...

Preview:

Citation preview

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.

Recommended