27
1 Chapitre 5 Diviser pour régner (suite)

Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

1

Chapitre 5

Diviser pour régner(suite)

Page 2: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

Convolution et FFT

FFT = Fast Fourier Transform(Transformée de Fourier rapide)

Page 3: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

3

FFT : Applications

Applications.■ Optique, acoustique, physique quantique, télécommunications,

systèmes de contrôle, traitement du signal, reconnaissance de la parole, compression de données, traitement des images.

■ Lecture DVD, JPEG, MP3, MRI, CAT.■ Solutions numériques de l’équation de Poisson.

The FFT is one of the truly great computational developments of this [20th] century. It has changed the face of science and engineering so much that it is not an exaggeration to say that life as we know it would be very different without the FFT. -Charles van Loan

Page 4: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

4

FFT : un peu d’histoire

Gauss (1805, 1866). Analyse du mouvement périodique de Céres.

Runge-König (1924). Fondations théoriques.

Danielson-Lanczos (1942). Algorithme efficace.

Cooley-Tukey (1965). Utilisé pour le contrôle des tests nucléaires en URSS et pour le pistage des sous-marins. FFT redécouvert et rendu populaire.

L’ importance de FFT ne fut pleinement reconnue qu’avec l’utilisation massive des ordinateurs.

Page 5: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

5

Polynômes : représentation par coefficients

Polynôme. [représentation par coefficients]

Addition : O(n) opérations arithmétiques.

Evaluation : O(n) opérations arithmétiques (méthode de Horner.)

Multiplication (convolution) : O(n2) en utilisant la méthode brutale.

A x =a0a1 xa2x2Lan−1 x

n−1

B x =b0b1 xb2 x2Lbn−1x

n−1

A x B x =a0b0 a1b1 xLan−1bn−1 xn−1

A x =a0 x a1x a2Lx an−2x an−1 L

A x ´ B x = ∑i=0

2n−2

c i xi , where c i=∑

j=0

i

a jbi− j

Page 6: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

6

Polynômes : représentation par couples (point,valeur)

Théorème fondamental de l’algèbre. [Gauss] Un polynôme de degré n à coefficients complexes a n racines complexes (avec multiplicités.)

Corollaire. Un polynôme de degré n-1 A(x) est entièrement déterminé par son évaluation en n valeurs distinctes de x.

x

y

xj

yj = A(xj)

Page 7: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

7

Polynômes : représentation par couples (point,valeur)

Polynôme. [représentation points-valeurs]

Addition : O(n) opérations arithmétiques.

Multiplication : O(n), mais 2n-1 points sont nécessaires.

Evaluation : O(n2), en utilisant la formule de Lagrange.

A x : x0 , y0 ,K , xn-1 , yn−1

B x : x0 , z0 ,K , xn-1 ,zn−1

A x B x : x0 , y0z0 ,K , xn-1 , yn−1zn−1

A x =∑k=0

n−1

yk

∏j¹k

x−x j

∏j¹k

x k−x j

A x ´ B x : x0 ,y0´ z0 ,K , x2n-1 ,y2n−1´ z2n−1

Page 8: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

8

Passage d’une représentation à l’autre

Compromis. Évaluation rapide ou multiplication rapide. On veut les deux !

But. Rendre toutes les opérations rapides en permettant des conversions efficaces entre les deux représentations.

Coefficients

Représentation

O(n2)

Multiplication

O(n)

Evaluation

Points-valeurs O(n) O(n2)

a0 ,a1 ,K ,an-1 x0 , y0 ,K , xn−1 , yn−1

représentation par coefficients

représentation parpoints-valeurs

Page 9: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

9

Passage d’une représentation à l’autre : méthode brutale

Coefficients vers Points-valeurs. Étant donné un polynôme a0 + a1 x + ... + an-1 xn-1, l’évaluer en n points distincts x0, ... , xn-1.

Points-valeurs vers Coefficients. Étant donnés n points distincts x0, ..., xn-1 et n valeurs y0, ..., yn-1, trouver l’unique polynôme A(x) = a0 + a1 x + ... + an-1 xn-1 tel que A(xi) = yi, pour i = 1,…, n-1 .

[y0

y1

y2

Myn−1

]=[1 x0 x0

2 L x0n−1

1 x1 x12 L x1

n−1

1 x2 x22 L x2

n−1

M M M O M1 xn−1 xn−1

2 L xn−1n−1

][a0

a1

a2

Man−1

]la matrice de Vandermonde est inversible ssi les xi sont deux à deux distincts

O(n3) pour l’élimination de Gauss

O(n2) pour la multiplication matrice x vecteur

Page 10: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

10

Coefficient vers points-valeurs : intuition

Coefficients vers Points-valeurs. Étant donné un polynôme a0 + a1 x + ... + an-1 xn-1, l’évaluer en n points distincts x0, ... , xn-1.

Divide. Casser le polynôme selon la parité des puissances.■ A(x) = a0 + a1x + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + a7x7.■ Aeven(x) = a0 + a2x + a4x2 + a6x3.■ Aodd (x) = a1 + a3x + a5x2 + a7x3.■ A(-x) = Aeven(x2) + x Aodd(x2).■ A(-x) = Aeven(x2) - x Aodd(x2).

Intuition. On choisit les deux points ±1.■ A(-1) = Aeven(1) + 1 Aodd(1). ■ A(-1) = Aeven(1) - 1 Aodd(1). Pour évaluer un polynôme de degré ≤ n

en 2 points, il suffit d’évaluer deux polynômes de degré ≤ ½n en 1 point.

Page 11: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

11

Coefficient vers points-valeurs : intuition

Coefficients vers Points-valeurs. Étant donné un polynôme a0 + a1 x + ... + an-1 xn-1, l’évaluer en n points distincts x0, ... , xn-1.

Divide. Casser le polynôme selon la parité des puissances.■ A(x) = a0 + a1x + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + a7x7.■ Aeven(x) = a0 + a2x + a4x2 + a6x3.■ Aodd (x) = a1 + a3x + a5x2 + a7x3.■ A(-x) = Aeven(x2) + x Aodd(x2).■ A(-x) = Aeven(x2) - x Aodd(x2).

Intuition. On choisit les quatre points ±1, ±i.■ A(-1) = Aeven(-1) + 1 Aodd( 1). ■ A(-1) = Aeven(-1) - 1 Aodd(-1).■ A(-i) = Aeven(-1) + i Aodd(-1). ■ A(-i) = Aeven(-1) - i Aodd(-1).

Pour évaluer un polynôme de degré ≤ nen 4 points, il suffit d’évaluer deux polynômess de degré ≤ ½n en 2 points.

Page 12: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

12

Transformée de Fourier discrète

Coefficients vers Points-valeurs. Étant donné un polynôme a0 + a1 x + ... + an-1 xn-1, l’évaluer en n points distincts x0, ... , xn-1.

Idée clé : choisir xk = ωk où ω est la ne racine principale de l’unité.

Transformée de Fourier discrète

[y0

y1

y2

y3

Myn−1

]=[1 1 1 1 L 11 w1 w2 w3 L wn−1

1 w2 w4 w6 L w2 n−1

1 w3 w6 w9 L w3 n−1

M M M M O M1 wn−1 w2 n−1 w3 n−1 L wn−1 n−1

] [a0

a1

a2

a3

Man−1

]Matrice de Fourier Fn

Page 13: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

13

Rappel sur les racines de l’unité

Déf. Une ne racine de l’unité est un nombre complexe x tel que xn = 1.

Fait. Les ne racines de l’ unité sont : ω0, ω1, …, ωn-1 où ω = e 2π i / n.Preuve. (ωk)n = (e 2π i k / n) n = (e π i ) 2k = (-1) 2k = 1.

Fait. Les ½ne racines de l’ unité sont : ν0, ν1, …, νn/2-1 où ν = e 4π i / n.Fait. ω2 = ν et (ω2)k = νk.

ω0 = ν0 = 1

ω1

ω2 = ν1 = i

ω3

ω4 = ν2 = -1

ω5

ω6 = ν3 = -i

ω7

n = 8

Page 14: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

14

Transformée de Fourier rapide

But. Evaluer un polynôme de degré n-1 A(x) = a0 + ... + an-1 xn-1 en les ne racines de l’unité : ω0, ω1, …, ωn-1.

Divide. Casser le polynôme selon la parité des puissances.■ Aeven(x) = a0 + a2x + a4x2 + … + an/2-2 x(n-1)/2.■ Aodd (x) = a1 + a3x + a5x2 + … + an/2-1 x(n-1)/2.■ A(x) = Aeven(x2) + x Aodd(x2).

Conquer. Évaluer Aeven(x) et Aodd(x) en les ½ne racines de l’unité : ν0, ν1, …, νn/2-1.

Combiner. ■ A(ωk+n) = Aeven(νk) + ωk Aodd(νk), 0 ≤ k < n/2■ A(ωk+n) = Aeven(νk) - ωk Aodd(νk), 0 ≤ k < n/2

ωk+n = -ωk

νk = (ωk)2 = (ωk+n)2

Page 15: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

15

fft(n, a0,a1,…,an-1) {

si (n == 1) retourner a0

(e0,e1,…,en/2-1) ← FFT(n/2, a0,a2,a4,…,an-2)

(d0,d1,…,dn/2-1) ← FFT(n/2, a1,a3,a5,…,an-1)

pour k = 0 à n/2 - 1 {

ωk ← e2πik/n

yk+n/2 ← ek + ωk dk

yk+n/2 ← ek - ωk dk

}

retourner (y0,y1,…,yn-1)

}

FFT : l’algorithme

Page 16: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

16

FFT : résumé

Théorème. L’algorithme FFT évalue un polynôme de degré n-1 en chacune des ne racines de l’unité, en O(n log n) étapes de calcul.

Temps d’exécution. T(2n) = 2T(n) + O(n) ⇒ T(n) = O(n log n).

on suppose que n est une puissance de 2

a0 ,a1 ,K ,an-1 w0 , y0 ,K , wn−1 , yn−1

O(n log n)

représentation parcoefficients

représentation parpoints-valeurs

Page 17: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

17

Arbre de récursion

a0, a1, a2, a3, a4, a5, a6, a7

a1, a3, a5, a7a0, a2, a4, a6

a3, a7a1, a5a0, a4 a2, a6

a0 a4 a2 a6 a1 a5 a3 a7

ordre "bit-reversed"

000 100 010 110 001 101 011 111

shuffle “parfait”

Page 18: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

18

Points-valeurs vers Coefficients : transformée de Fourier discrète inverse

But. Étant données les valeurs y0, ... , yn-1, trouver l’unique polynôme A(x) = a0 + a1 x + ... + an-1 xn-1 tel que A(ωi) = yi , i = 0, …, n-1.

DFT (transformé de Fourier discrète) inverse

[a0

a1

a2

a3

Man−1

]=[1 1 1 1 L 11 w1 w2 w3 L wn−1

1 w2 w4 w6 L w2 n−1

1 w3 w6 w9 L w3 n−1

M M M M O M1 wn−1 w2 n−1 w3 n−1 L w n−1 n−1

] −1

[y0

y1

y2

y3

Myn−1

]Matrice de Fourier inverse (Fn)-1

Page 19: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

19

Propriété. La matrice de Fourier inverse est donnée par la formule suivante :

Conséquence. Pour calculer la transformée de Fourier inverse, on reprend l’algorithme FFT en utilisant ω-1 = e -2π i / n comme ne racine principale de l’unité (et on divise par n).

Gn=1n [

1 1 1 1 L 11 w−1 w−2 w−3 L w−n−1

1 w−2 w−4 w−6 L w−2 n−1

1 w−3 w−6 w−9 L w−3 n−1

M M M M O M1 w− n−1 w−2 n−1 w−3 n−1 L w−n−1 n−1

]

FFT inverse

Page 20: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

20

FFT inverse : preuve de correction

Proposition. Fn et Gn sont inverses l’une de l’autre.Preuve.

Lemme de sommation. Soit ω une ne racine primitive de l’unité. Alors

Preuve.■ Si k est un multiple de n, alors ωk = 1 ⇒ la somme vaut n.■ Chaque ωk est une racine de xn - 1 = (x - 1) (1 + x + x2 + ... + xn-1).■ Si ωk ≠ 1 on a : 1 + ωk + ωk(2) + . . . + ωk(n-1) = 0 ⇒ la somme 0. ▪

∑j=0

n−1

wkj={n if kº0modn0 otherwise

FnGn kk '=1n∑j=0

n−1

wkjw− j k '

= 1n∑j=0

n−1

w k−k ' j= {1 if k=k '

0 otherwisecf. lemme de sommation ci-dessous

Page 21: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

21

FFT inverse : l’algorithme

ffti(n, a0,a1,…,an-1) {

si (n == 1) retourner a0

(e0,e1,…,en/2-1) ← FFT(n/2, a0,a2,a4,…,an-2)

(d0,d1,…,dn/2-1) ← FFT(n/2, a1,a3,a5,…,an-1)

pour k = 0 à n/2 - 1 {

ωk ← e-2πik/n

yk+n/2 ← (ek + ωk dk) / n

yk+n/2 ← (ek - ωk dk) / n

}

retourner (y0,y1,…,yn-1)

}

Page 22: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

22

FFT inverse : résumé

Théorème. L’algorithme FFT inverse interpole un polynôme de degré ≤ n-1 étant données les valeurs prises en chacune des ne racines de l’unité, en O(n log n) étapes de calcul.

on suppose que n est une puissance de 2

a0 ,a1 ,K ,an-1 w0 , y0 ,K , wn−1 , yn−1

O(n log n)

représentation parcoefficients

O(n log n) représentation parpoints-valeurs

Page 23: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

23

Multiplication de polynômes

Théorème. On multiplier deux polynômes de degré n-1 en O(n log n) étapes de calcul.

a0 ,a1 ,K ,an-1

b0 ,b1 ,K ,bn-1c0 ,c1 , K ,c2n-2

A x0 ,K , A x2n-1

B x0 ,K ,B x2n-1C x0 ,C x1 ,K ,C x2n-1O(n)

Multiplication points-valeurs

O(n log n)FFT inverse FFT O(n log n)

représentation par coefficients représentation par

coefficients

Page 24: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

24

FFT en pratique

“Fastest Fourier transform in the West.” [Frigo & Johnson]■ Bibliothèque C optimisée.■ Contient : DFT, DCT, réel, complexe, en dimension quelconque.■ Prix Wilkinson 1999 du logiciel numérique.■ Portable et compétitif.

Détails d’implémentation.■ Au lieu d’exécuter un algorithme prédéterminé, il évalue le matériel

et utilise un compilateur dédié pour engendrer un code optimisé adapté à la “forme” du problème.

■ Le coeur de l’algorithme est une version itérative du FFT binaire de Cooley-Tukey.

■ O(n log n), même si la dimension est un nombre premier.Référence: http://www.fftw.org

Page 25: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

25

Multiplication entière

Multiplication entière. Étant donnés deux entiers de n bits a = an-1 … a1a0 et b = bn-1 … b1b0, calculer leur produit c = a × b.

Algorithme (convolution).■ On utilise deux polynômes A(x) et B(x) : a = A(2), b = B(2).■ On calcule C(x) = A(x) × B(x).■ On évalue C(2) = a × b.■ Temps d’exécution: O(n log n) opérations arithmétiques complexes.

Théorème. [Schönhage-Strassen 1971] O(n log n log log n) opérations binaires.

En pratique. [GNU Multiple Precision Arithmetic Library] GMP prétend être "the fastest bignum library on the planet." Elle utilise un algorithme brutal, Karatsuba, ou FFT, selon la dimension du problème.

A x =a0a1 xa2x2Lan−1 x

n−1

B x =b0b1 xb2 x2Lbn−1x

n−1

Page 26: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

Un petit extra

Page 27: Diviser pour régner (suite) - documents.lamacs.frdocuments.lamacs.fr/cours/macs1/infochap5s.pdf · Diviser pour régner (suite) Convolution et FFT ... URSS et pour le pistage des

27

Décomposition de la matrice de Fourier

Décomposition de la matrice de Fourier.

y=Fna=[ In /2 Dn/2

In /2 −Dn/2 ][Fn /2aevenFn /2aodd ]

I4=[1 0 0 00 1 0 00 0 1 00 0 0 1

]

D4=[w0 0 0 00 w1 0 00 0 w2 00 0 0 w3 ]

Fn=[1 1 1 1 L 11 w1 w2 w3 L wn−1

1 w2 w4 w6 L w2 n−1

1 w3 w6 w9 L w3 n−1

M M M M O M1 wn−1 w2 n−1 w3 n−1 L wn−1 n−1

]Fn=[In /2 Dn /2

In /2 −Dn /2 ][F n/2 0

0 Fn /2 ]PnT

P4=[1 0 0 00 0 1 00 1 0 00 0 0 1

]