Multiplication rapide : Karatsuba et FFT



Documents pareils
Structures algébriques

3 Approximation de solutions d équations

Théorème du point fixe - Théorème de l inversion locale

DOCM Solutions officielles = n 2 10.

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Etude de fonctions: procédure et exemple

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Polynômes à plusieurs variables. Résultant

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Résolution d équations non linéaires

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Introduction à l étude des Corps Finis

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Cours d Analyse. Fonctions de plusieurs variables

Pour l épreuve d algèbre, les calculatrices sont interdites.

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Extrait du poly de Stage de Grésillon 1, août 2010

Licence Sciences et Technologies Examen janvier 2010

Quelques tests de primalité

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Exemple 4.4. Continuons l exemple précédent. Maintenant on travaille sur les quaternions et on a alors les décompositions

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Groupe symétrique. Chapitre II. 1 Définitions et généralités

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

I. Ensemble de définition d'une fonction

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Complément d information concernant la fiche de concordance

Triangle de Pascal dans Z/pZ avec p premier

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

La fonction exponentielle

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Chapitre 2. Matrices

Chapitre 2. Eléments pour comprendre un énoncé

Compter à Babylone. L écriture des nombres

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Problème 1 : applications du plan affine

Résolution de systèmes linéaires par des méthodes directes

Le produit semi-direct

Programmation linéaire

Cours d analyse numérique SMI-S4

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Feuille TD n 1 Exercices d algorithmique éléments de correction

Université Paris-Dauphine DUMI2E 1ère année, Applications

ÉPREUVE COMMUNE DE TIPE Partie D

Une forme générale de la conjecture abc

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Probabilités sur un univers fini

I. Polynômes de Tchebychev

Premiers exercices d Algèbre. Anne-Marie Simon

Programme de la classe de première année MPSI

DUT Techniques de commercialisation Mathématiques et statistiques appliquées


Cours 02 : Problème général de la programmation linéaire

Simulation de variables aléatoires

Optimisation, traitement d image et éclipse de Soleil

Présentation du cours de mathématiques de D.A.E.U. B, remise à niveau

Relation d ordre. Manipulation des relations d ordre. Lycée Pierre de Fermat 2012/2013 Feuille d exercices

Axiomatique de N, construction de Z

Chapitre 1 : Évolution COURS

Chapitre 4: Dérivée d'une fonction et règles de calcul

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Calcul fonctionnel holomorphe dans les algèbres de Banach

NOTATIONS PRÉLIMINAIRES

Un K-espace vectoriel est un ensemble non vide E muni : d une loi de composition interne, c est-à-dire d une application de E E dans E : E E E

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

La transformée de Fourier sur un groupe fini et quelques-unes de ses applications. Elise Raphael Semestre d automne

Capes Première épreuve

IV- Equations, inéquations dans R, Systèmes d équations

L ALGORITHMIQUE. Algorithme

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Développement décimal d un réel

Chapitre VI Fonctions de plusieurs variables

Correction du Baccalauréat S Amérique du Nord mai 2007

ENSAE - DAKAR BROCHURE D'INFORMATION SUR LE CONCOURS DE RECRUTEMENT D ÉLÈVES INGÉNIEURS STATISTICIENS ÉCONOMISTES (I S E) Option Mathématiques CAPESA

Analyse fonctionnelle Théorie des représentations du groupe quantique compact libre O(n) Teodor Banica Résumé - On trouve, pour chaque n 2, la classe

Marc HINDRY. Introduction et présentation. page 2. 1 Le langage mathématique page 4. 2 Ensembles et applications page 8

Chapitre VI - Méthodes de factorisation

1 Définition et premières propriétés des congruences

Programmation linéaire et Optimisation. Didier Smets

Glossaire des nombres

Cours arithmétique et groupes. Licence première année, premier semestre

Le chiffre est le signe, le nombre est la valeur.

Traitement du signal avec Scilab : la transformée de Fourier discrète

Les droites (d 1 ) et (d 2 ) sont sécantes en A Le point A est le point d intersection des 2 droites

Fibonacci et les paquerettes

Chapitre 2 Le problème de l unicité des solutions

Calculateur quantique: factorisation des entiers

Représentation des Nombres

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

Continuité en un point

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements

Différentiabilité ; Fonctions de plusieurs variables réelles

Dualité dans les espaces de Lebesgue et mesures de Radon finies

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Transcription:

Université Bordeaux 1 Préparation à l agrégation Mathématiques Année 2009 2010 Multiplication rapide : Karatsuba et FFT Il est rappelé que le jury n exige pas une compréhension exhaustive du texte. Vous êtes laissé(e) libre d organiser votre discussion comme vous l entendez. Il vous est conseillé de mettre en lumière vos connaissances à partir du fil conducteur constitué par le texte. Le jury demande que la discussion soit accompagnée d exemples traités sur ordinateur. Il est souhaitable que vous organisiez votre présentation comme si le jury n avait pas connaissance du texte. Le jury aura néanmoins le texte sous les yeux pendant votre exposé. 1. Introduction La multiplication est une opération élémentaire qu on utilise évidemment très souvent, et la rapidité des nombreux algorithmes qui l utilisent dépend fortement de la rapidité de la multiplication. Si l on utilise la méthode classique, pour des polynômes, ou des entiers, le coût en temps est quadratique. Nous présentons ici deux méthodes de multiplication rapide sur les polynômes : l algorithme de Karatsuba, puis un algorithme utilisant la transformée de Fourier rapide, dite FFT. Ce dernier algorithme est particulièrement efficace, puisqu il rend le coût en temps de la multiplication quasi-linéaire. Plus précisément, ce coût, pour des polynômes à coefficients dans C de degré inférieur à n > 1, est en O(n log n) opérations sur C. Pour des polynômes de A[x], où A est un anneau quelconque, il est en O(n log n log log n)) opérations dans A. Nous nous limitons ici aux polynômes, mais ces méthodes conduisent également à des algorithmes de multiplication rapide des entiers. L algorithme de Karatsuba n utilise que des notions élémentaires. La FFT utilise la notion d anneau quotient, et la notion de racine primitive de l unité dans C, et plus généralement dans un anneau quelconque (cette dernière notion est définie dans le texte). 2. Algorithme de multiplication de Karatsuba Soit A un anneau commutatif unitaire. Soient f(x) = f i x i et g(x) = g i x i deux polynômes de A[x] de degré inférieur à n. Le calcul classique du produit demande au plus n 2 multiplications pour les f i g j, et () 2 additions pour les i+j=k f ig j. Par exemple, le produit (ax + b)(cx + d) = acx 2 + (ad + bc)x + bd utilise quatre multiplications et une addition. Il y a une méthode simple pour faire mieux. On calcule ac, bd, u = (a+b)(c+d), et ad + bc = u ac bd, avec trois multiplications et quatre additions. Le total des opérations est porté à sept, mais une application récursive de la méthode va diminuer le coût total quand n est grand. 1

2 On suppose que n est une puissance de 2. Soit m = n/2. On écrit f = F 1 x m + F 0 et g = G 1 x m + G 0. Suivant l idée expliquée ci-dessus pour n = 1, on écrit : fg = F 1 G 1 x n + ((F 0 + F 1 )(G 0 + G 1 ) F 0 G 0 F 1 G 1 )x m + F 0 G 0. Donc la multiplication de f et g utilise trois multiplications de polynômes de degré inférieur strictement à m et quelques additions de polynômes. Ainsi, si C(n) est le coût en nombre d opérations sur A de l algorithme, on a : C(n) 3C(n/2) + O(n). On en déduit par récurrence que C(n) est en O(n log 2 3 ), donc en O(n 1.59 ). C est donc, au moins asymptotiquement, une bonne amélioration par rapport à la méthode classique. Pour implémenter cet algorithme, on peut utiliser des tableaux pour représenter des polynômes, ou bien utiliser les fonctions sur les polynômes de Maple, et donc rentrer les polynômes en tant que tels. Alors, pour obtenir F 0 et F 1, on peut par exemple utiliser F1=quo(f,xˆm, F0 ). 3. Transformée de Fourier discrète sur C Nous allons discuter un algorithme de multiplication de polynômes de C[x] dans lequel le nombre d opérations sur C est quasi-linéaire. Soit n un entier > 1 et ω C une racine primitive n-ème de l unité. Nous allons identifier un polynôme f = f jx j de degré strictement inférieur à n avec le vecteur (f 0,..., f ) C n de ses coefficients. Au lieu de travailler dans C[x], on travaille donc dans C n. Définition 3.1. (1) L application linéaire DF T ω : C n C n f ˆf = ( ) f k, f k ω k,..., f k ω ()k est appelée la transformée de Fourier discrète. (2) Le produit de convolution de f = (f 0,..., f ) et g = (g 0,..., g ) dans C n est le vecteur de C n f n g = f j g k. j+k l mod n l {0,...,} On notera f n g = f g si aucune confusion n est possible dans le contexte. Si f = (f 0,..., f ) et F = f kx k, alors ˆf = (F (1), F (ω),..., F (ω ). Remarquons aussi que cette notion de convolution correspond à la multiplication dans C[x]/(x n 1)C[x]. En effet, si f = (f 0,..., f ), g = (g 0,..., g ) F = f kx k, G = g kx k, h = f n g = (h 0,... h ) et H = h kx k, alors H F G mod x n 1.

On peut démontrer que ce produit de convolution est compatible avec DF T ω, c està-dire que DF T ω (f g) = DF T ω (f) DF T ω (g), où le produit sur C n est effectué composante par composante. En fait, DF T ω définit un isomorphisme d algèbres de (C n, +, n ) dans (C n, +, ). La matrice de cet isomorphisme est la matrice de Vandermonde V ω de (1, ω,..., ω ) 1 1 1... 1 1 ω ω 2... ω V ω = 1 ω 2 ω 4... ω 2()........ 1 ω ω 2()... ω ()2 Comme 1, ω,..., ω sont deux à deux distincts, la matrice V ω est inversible. Son inverse donne la matrice permettant de calculer le polynôme d interpolation en les points 1, ω,..., ω, c est-à-dire, les valeurs a i étant fixées pour i {0,... n 1}, de calculer l unique polynôme f de degré inférieur ou égal à n 1 tel que f(ω i ) = a i pour tout i. Le théorème suivant donne l inverse de V ω. Théorème 3.2. Si ω C est une racine primitive n ème de l unité, alors ω 1 est aussi une racine primitive n-ème de l unité et V ω V ω 1 = n Id, où Id est la matrice identité de taille n. Revenons à notre problème, qui est de multiplier deux polynômes F et G. On suppose que deg(f G) n 1. La transformée de Fourier discrète revient à évaluer F et G sur n points, ce qui suffit pour les définir. Dans cette représentation, la multiplication est rapide à calculer, puisque pour tout i dans {0... n 1}, F G(ω i ) = F (ω i )G(ω i ). Cela nous ramène à n multiplications dans C. Ensuite, comme on connaît le produit F G sur n points, et comme deg(f G) n 1, on peut reconstituer F G. Ici, on peut utiliser l application inverse de DF T ω, c est-à-dire 1 n DF T ω 1. Voyons maintenant comment calculer rapidement la transformée de Fourier discrète. On peut utiliser pour cela l algorithme transformée de Fourier rapide, ou FFT. On suppose que n = 2 k, où n N. Pour évaluer F en 1,..., ω, on divise d abord F par x n/2 1 et x n/2 + 1 : F = q 0 (x n/2 1) + r 0 = q 1 (x n/2 + 1) + r 1, pour q 0, r 0, q 1, r 1 dans C[x] de degré inférieur strictement à n/2. Nous n avons besoin que de calculer r 0 et r 1. Pour cela, on remarque que si F = F 1 x n/2 + F 0, alors x n/2 1 divise F F 0 F 1, et donc r 0 = F 0 + F 1. De même, r 1 = F 0 F 1. On n a donc besoin que de n opérations dans C pour le calcul de r 0 et de r 1. De plus, F (ω 2l ) = r 0 (ω 2l ) et F (ω 2l+1 ) = r 1 (ω 2l+1 ) pour tout l {0,..., n/2}. Il reste à évaluer r 0 en les puissances paires de ω et r 1 en les puissances impaires de ω. Or, ω 2 est une racine primitive (n/2) ème de l unité. Soit 3

4 r 1 = r 1(ωx), on est ramené à calculer DF T ω 2 traitement récursif du problème. sur r 0 et r 1. Cette remarque permet un Soit maintenant T (n) le nombre d opérations nécessaires à l algorithme FFT. Alors T (n) = 2T (n/2) + O(n). Ce qui mène à T (n) = O(nlog(n)). Soit S est le nombre d opérations nécessaires à la multiplication, on trouve également que S(n) = O(nlog(n)). 4. Transformée de Fourier discrète sur un anneau quelconque La FFT permet d accélérer notablement la multiplication dans C[x]. La seule propriété de C que nous avons utilisée pour cela est que C contient pour tout n les racines n-ème de l unité. Nous voudrions utiliser le même procédé dans le cas de A[x], dans le cas où A est un anneau quelconque. Si A contient les racines n-ème de l unité, et si n est inversible dans A, la même méthode s applique. Sinon, il est possible d ajouter à l anneau des racines de l unité. Dans ce qui suit, A est un anneau commutatif et unitaire dans lequel n est inversible. Définition 4.1. On dit que A contient une racine primitive n-ème de l unité s il existe ω dans A tel que (1) ω n = 1 (2) Pour tout diviseur premier l de n, ω n/l 1 n est pas un diviseur de 0. C est-àdire, pour tout a A \ {0}, a (ω n/l 1) 0. Exemples. A = C, A = F q où q est une puissance d un nombre premier et où n divise q 1. Si A = Z/(2 2k + 1)Z, et si n = 2 k+1, alors 2 est une racine primitive n-ème de l unité dans A. Proposition 4.2. Si ω est une racine primitive n-ème de l unité dans A, alors pour tout l {1,..., n 1}, ω l 1 n est pas un diviseur de 0. De plus : ω lj = 0. Grâce à cette proposition, on peut montrer que l algorithme décrit dans le paragraphe précédent pour C s applique également pour un anneau A contenant une racine primitive n-ème de l unité. On ne suppose plus maintenant que A contient des racines primitives n-ème de l unité, mais seulement que 2 est inversible dans A. On peut encore appliquer une méthode similaire. L idée est de rajouter les racines de l unité qui manquent. On suppose que n est une puissance de 2 et on pose n = 2 k. On veut multiplier entre eux deux polynômes F et G à coefficients dans A tels que deg(f G n). Soient m = 2 k/2 et t = 2 k/2. On définit les polynômes F 0,..., F t 1, G 0,..., G t 1 de degrés

strictement inférieur à m tels que On pose alors : t 1 t 1 F = F j x mj et G = G j x mj. t 1 t 1 F = F j (x)y j et G = G j (x)y j, de sorte que F (x) = F (x, x m ) et G(x) = G (x, x m ). Le degré en y de F G est strictement inférieur à 2t 4m. De plus, les coefficients de F G sont des polynômes en x de degré strictement inférieur à 2m, de telle sorte qu il suffit de connaître leur image dans D = A[x]/(x 2m + 1)A[x]. On peut démontrer que l image ω de x dans D est une racine primitive 4m ème de l unité dans D. On se retrouve donc dans la situation précédente. Une analyse de l algorithme montrerait que le coût en nombre d opérations est en O(n log n log log n) opérations dans A (mais il est déconseillé de se lancer dans cette analyse). 5. Suggestions Plusieurs affirmations sont données sans preuve. Le candidat est invité à les démontrer. Il pourra illuster sur des exemples certains des algorithmes proposés, puis les implémenter et les commenter. On peut aussi réfléchir à des applications de ces algorithmes. 5