algorithmes efficaces en calcul formel - hal.inria.fr · 2.3 algorithme de karatsuba38 2.4...

686
x y z Algorithmes Ecaces en Calcul Formel Alin Bostan Frédéric Chyzak Marc Giusti Romain Lebreton Grégoire Lecerf Bruno Salvy Éric Schost Version préliminaire du 11 janvier 2017

Upload: nguyenthien

Post on 14-Sep-2018

246 views

Category:

Documents


0 download

TRANSCRIPT

  • x

    y

    z

    Algorithmes Efficacesen Calcul Formel

    Alin BostanFrdric Chyzak

    Marc GiustiRomain Lebreton

    Grgoire LecerfBruno Salvyric Schost

    Version prliminaire du 11 janvier 2017

  • Alin BostanINRIA,Universit Paris-Saclay

    Frdric ChyzakINRIA,Universit Paris-Saclay

    Marc GiustiCNRS, UMR 7161,cole polytechnique,Laboratoire dInformatique

    Romain LebretonUniversit de Montpellier,Laboratoire dinformatique, de robotiqueet de microlectronique de Montpellier,CNRS, UMR 5506, CC477

    Grgoire LecerfCNRS, UMR 7161,cole polytechnique,Laboratoire dInformatique

    Bruno SalvyINRIA,cole Normale Suprieure de Lyon,Laboratoire de lInformatique duParalllisme,CNRS, UMR 5668

    ric SchostUniversity of Waterloo,Cheriton School of Computer Science

    Copyright 2016 Alin Bostan, Frdric Chyzak, Marc Giusti, Romain Lebreton,Grgoire Lecerf, Bruno Salvy, ric Schost. Cet ouvrage est couvert par une licenseCC-BY-SA 4.0, https://creativecommons.org/licenses/by-sa/4.0/.

    Publi par les auteurs. Site web : https://hal.archives-ouvertes.fr/AECF/.

    Le style LATEX utilis est une adaptation de The Legrand Orange Book disponible lurl http://www.LaTeXTemplates.com/.

    Version prliminaire du 11 janvier 2017.

    https://creativecommons.org/licenses/by-sa/4.0/https://hal.archives-ouvertes.fr/AECF/http://www.LaTeXTemplates.com/

  • Table des matires

    Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    Bibliographie 13

    1 Calcul formel et complexit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.1 Dcider, calculer 15

    1.2 Calculer rapidement 22

    Conventions 29

    Notes 30

    Bibliographie 31

    I Polynmes et sries

    2 Multiplication rapide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.1 Introduction, rsultats principaux 35

    2.2 Algorithme naf 38

    2.3 Algorithme de Karatsuba 38

    2.4 Transforme de Fourier rapide 40

    2.5 Lalgorithme de SchnhageStrassen 46

    2.6 Algorithmes pour les entiers 49

    2.7 Un concept important : les fonctions de multiplication 50

    Exercices 51

    Notes 52

    Bibliographie 54

  • 3 Calculs rapides sur les sries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.1 Sries formelles 58

    3.2 La mthode de Newton pour le calcul dinverses 61

    3.3 Itration de Newton formelle et applications 64

    3.4 La composition des sries 72

    Exercices 75

    Notes 76

    Bibliographie 78

    4 Division euclidienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.1 Introduction 81

    4.2 Division de polynmes 82

    4.3 Suites rcurrentes linaires coefficients constants 844.4 Dveloppement de fractions rationnelles 87

    4.5 Applications 89

    Notes 91

    Bibliographie 92

    5 Calculs modulaires, valuation et interpolation . . . . . . . . . . . . . . . . 955.1 Introduction 95

    5.2 Prsentation, rsultats 96

    5.3 Interpolation de Lagrange 98

    5.4 Algorithmes rapides 99

    Exercices 106

    Notes 106

    Bibliographie 108

    6 Pgcd et rsultant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116.1 Algorithme dEuclide 111

    6.2 Rsultant 116

    6.3 Algorithme dEuclide rapide 130

    Exercices 134

    Notes 135

    Bibliographie 136

    7 Approximants de Pad et de PadHermite . . . . . . . . . . . . . . . . . . 1397.1 Reconstruction rationnelle 139

    7.2 Approximants de PadHermite 145

    Exercices 152

    Notes 153

    Bibliographie 154

  • II Matrices

    8 Algbre linaire dense : de Gauss Strassen . . . . . . . . . . . . . . . . . 1598.1 Introduction 159

    8.2 Multiplication de matrices 162

    8.3 Autres problmes dalgbre linaire 170

    Exercices 177

    Notes 180

    Bibliographie 184

    9 Algbre linaire creuse : algorithme de Wiedemann . . . . . . . . . . . 1899.1 Introduction 189

    9.2 Polynme minimal et rsolution de systmes 190

    9.3 Calcul du polynme minimal 190

    9.4 Calcul du dterminant 191

    9.5 Calcul du rang 192

    Exercices 192

    Notes 193

    Bibliographie 193

    10 Algbre linaire structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19510.1 Introduction 195

    10.2 Le cas quasi-Toeplitz 201

    Exercices 205

    Notes 206

    Bibliographie 206

    11 Systmes linaires coefficients polynomiaux . . . . . . . . . . . . . . . 20911.1 Des sries aux solutions rationnelles 210

    11.2 Dveloppement comme une fraction rationnelle 210

    11.3 Lalgorithme de Storjohann 211

    Notes 214

    Bibliographie 215

    12 Principe de transposition de Tellegen . . . . . . . . . . . . . . . . . . . . . . . 21712.1 Introduction 217

    12.2 La version en termes de graphes du principe de Tellegen 219

    12.3 Principe de Tellegen pour les programmes linaires 220

    12.4 Applications 223

    Notes 230

    Bibliographie 233

  • 13 quations diffrentielles coefficients sries . . . . . . . . . . . . . . . . . 23713.1 quations diffrentielles dordre 1 237

    13.2 quations dordre suprieur et systmes dordre 1 24013.3 Cas particuliers 24413.4 Extensions 246

    Notes 247Bibliographie 247

    III quations diffrentielles et rcurrences linaires

    14 Sries diffrentiellement finies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25114.1 quations diffrentielles et rcurrences 25214.2 Proprits de clture 25714.3 Sries algbriques 26014.4 Au-del 264

    Exercices 264Notes 266Bibliographie 267

    15 Rcurrences linaires coefficients polynomiaux . . . . . . . . . . . . . 26915.1 Calcul naf de N! et de suites polynomialement rcurrentes 27015.2 Pas de bbs, pas de gants 27215.3 Scindage binaire 27515.4 Rcurrences singulires 278

    Exercices 285Notes 286Bibliographie 287

    16 Rsolution de rcurrences linaires . . . . . . . . . . . . . . . . . . . . . . . . 28916.1 Suites solution 29016.2 Solutions support fini 29516.3 Solutions polynomiales 29716.4 Solutions rationnelles 303

    Exercices 309Notes 310Bibliographie 310

    17 Rsolution dquations diffrentielles linaires . . . . . . . . . . . . . . . 31117.1 Sries solution 31217.2 Solutions polynomiales 31517.3 Solutions rationnelles 315

  • 17.4 Sries diffrentiellement finies analytiques 317Exercice 320Notes 321Bibliographie 322

    IV Factorisation des polynmes

    18 Factorisations sans carr et sparable . . . . . . . . . . . . . . . . . . . . . 32718.1 Introduction 32718.2 Factorisation sans carr 32818.3 Sparabilit et dflation 33118.4 Factorisation sparable 33418.5 Rduction la factorisation des polynmes sparables 341

    Notes 342Bibliographie 342

    19 Factorisation des polynmes une variable sur un corps fini . . . . 34519.1 Corps finis, quelques rappels 34519.2 Algorithme de Berlekamp 34819.3 Algorithme de Cantor et Zassenhaus 353

    Notes 356Bibliographie 357

    20 Rduction de rseaux et algorithme LLL . . . . . . . . . . . . . . . . . . . . . 35920.1 Rseaux et vecteurs courts 35920.2 Le procd dorthogonalisation de GramSchmidt 36220.3 Lalgorithme LLL 36420.4 Preuve de lalgorithme LLL 366

    Notes 370Bibliographie 371

    21 Factorisation des polynmes une variable sur les rationnels . . . 37321.1 Bornes sur les coefficients des facteurs 37421.2 Factorisation sans carr 37921.3 Algorithme par remonte et recombinaison 38521.4 Algorithme de van Hoeij 390

    Notes 396Bibliographie 397

    22 Factorisation des polynmes plusieurs variables . . . . . . . . . . . . 39922.1 Algorithme naf par remonte 40022.2 Recombinaison des drives logarithmiques 40322.3 Algorithme de Lecerf 406

  • 22.4 Rduction probabiliste au cas de deux variables 40922.5 Cas particulier des corps finis 411

    Notes 412Bibliographie 413

    V Systmes polynomiaux

    23 Bases standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41923.1 Lien entre algbre et gomtrie 42123.2 Ordres totaux admissibles sur le monode des monmes 42523.3 Exposants privilgis et escaliers 42823.4 Noethrianit et bases standard 42923.5 Divisions 431

    Notes 434Bibliographie 435

    24 Construction de bases standard . . . . . . . . . . . . . . . . . . . . . . . . . . 43724.1 Algorithme naf par algbre linaire 43724.2 Polynme de syzygie 43824.3 Lalgorithme de construction de Buchberger 43924.4 Exemple de calcul 44124.5 Proprits des bases standard pour quelques ordres 442

    Notes 444Bibliographie 445

    25 Nullstellensatz et applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44725.1 Nullstellensatz affine 44725.2 Idaux de dimension zro 45025.3 Projection des varits affines 45925.4 Nullstellensatz projectif 46125.5 Projection des varits projectives 462

    Notes 464Bibliographie 464

    26 Fonction et polynme de Hilbert, dimension, degr . . . . . . . . . . . . 46726.1 Fonction et polynme de Hilbert 46726.2 Dmonstrations et borne suprieure de la rgularit 46926.3 Dimension et gomtrie 47026.4 Position de Noether et degr 47226.5 Suites rgulires 47526.6 Bases standard pour les suites rgulires en position de Noether 478

    Notes 480

  • Bibliographie 481

    27 Normalisation de Noether . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48327.1 Introduction 48327.2 Algorithme de mise en position de Noether 48427.3 Utilisations de la position de Noether 48927.4 Paramtrisation en dimension quelconque 496

    Notes 500Bibliographie 500

    28 Rsolution gomtrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50128.1 Introduction 50128.2 Approche incrmentale 50728.3 Remonte dune paramtrisation 51528.4 Algorithme principal 519

    Notes 522Bibliographie 523

    VI Sommation et intgration de suites et fonctions spciales

    29 Sommation hypergomtrique, solutions hypergomtriques . . . . 52729.1 Sommation hypergomtrique indfinie. Algorithme de Gosper 52829.2 Sommation hypergomtrique dfinie. Algorithme de Zeilberger 53429.3 Solutions hypergomtriques. Algorithme de Petkovek 539

    Notes 541Bibliographie 542

    30 quations fonctionnelles linaires et polynmes tordus . . . . . . . . . 54330.1 Polynmes non commutatifs comme oprateurs linaires 54330.2 Morphismes entre anneaux de polynmes tordus 54730.3 Division euclidienne 54930.4 Recherche de solutions et factorisation doprateurs 55130.5 Algorithme dEuclide 55330.6 Relations de contigut 555

    Notes 558Bibliographie 559

    31 Algbres de Ore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56131.1 Algbres de Ore rationnelles 56131.2 Idal annulateur et module quotient 56231.3 Bases de Grbner pour les idaux gauche 56431.4 Module quotient et dimension de lespace des solutions 566

  • 31.5 Les fonctions -finies et leurs cltures 570Notes 576Bibliographie 576

    32 Sommation et intgration symboliques des fonctions spciales . . 57932.1 Expression du tlescopage cratif 58032.2 Lalgorithme de sommation -finie dfinie sur un exemple 58132.3 Description des algorithmes de sommation et intgration -finies 58432.4 Bases de Grbner de modules et dcouplage de systmes 586

    Notes 588Bibliographie 588

    Annexes

    33 Exercices rcapitulatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591Notes 619Bibliographie 619

    Bibliographie gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

    Liste des notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

    Liste des figures et algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . 655

    Index des auteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659

    Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

  • Avant-propos

    Le calcul formel traite des objets mathmatiques exacts dun point de vue informa-tique. Cet ouvrage Algorithmes efficaces en calcul formel explore deux directions :la calculabilit et la complexit. La calculabilit tudie les classes dobjets math-matiques sur lesquelles des rponses peuvent tre obtenues algorithmiquement. Lacomplexit donne ensuite des outils pour comparer des algorithmes du point de vuede leur efficacit.

    Les trois premires parties passent en revue lalgorithmique efficace sur les objetsfondamentaux que sont les entiers, les polynmes, les matrices, les sries et lessolutions dquations diffrentielles ou de rcurrences linaires. Nous y montrons quede nombreuses questions portant sur ces objets admettent une rponse en complexitoptimale ou quasi-optimale, en insistant sur les principes gnraux de conceptiondalgorithmes efficaces.

    La quatrime partie est ddie la factorisation des polynmes. Il sagit dun despremiers problmes dune importance majeure en calcul formel, pour lequel il existeencore plusieurs questions ouvertes consquentes. Nous y prsentons les algorithmesclassiques de factorisation sparable, sans carr et irrductible. Nous traitons toutdabord le cas des polynmes une variable dont les coefficients sont dans un corpsfinis puis des nombres rationnels. Le cas des polynmes plusieurs variables vientensuite et nous nous concentrons essentiellement sur le cas de deux variables pour lesrsultats de complexit.

    La cinquime partie aborde les systmes dquations polynomiales. Il sagit demontrer comment rpondre des questions de nature gomtrique poses sur lessolutions de ces systmes, tant par des approches base de rcriture (bases standard oude Grbner) que plus directement lies la structure de lensemble dcrit (rsolutiongomtrique).

    La sixime et dernire partie traite de lintgration et de la sommation dfinie. Denombreux calculs dintgrales et de sommes de fonctions ou de suites spciales de

  • 12

    la combinatoire ou de la physique mathmatique peuvent tre abords algorithmi-quement. Pour rsoudre ces problmes efficacement, presque tous les algorithmesabords au cours des cinq premires parties sont utiliss.

    Nous navons pas cherch crire un document de rfrence pour le calcul formel.Au contraire, nous avons souvent choisi de mettre laccent sur les ides cls, quitte prsenter sous forme dexercices les aspects les plus techniques, et renvoyer lelecteur des ouvrages ou articles de recherche qui contiennent les solutions. Nousdtaillons un grand nombre de rsultats trs rcents qui conduisent souvent le lecteur la frontire des connaissances. Ainsi, une portion importante des parties III VIntait notre connaissance jamais apparue dans un livre.

    Il y a aussi des thmes classiques du calcul formel que nous nabordons pas,comme la recherche de primitives (algorithme de Risch) ou de solutions liouvilliennesdquations diffrentielles. Nous prfrons en effet privilgier un point de vue gnralo les quations sont vues comme des oprateurs servant reprsenter des solutions.

    Les prrequis mathmatiques ncessaires la lecture sont modestes et de nom-breuses dfinitions classiques sont rappeles et illustres au fur et mesure desbesoins. Le texte est par consquent accessible tant des tudiants en mathmatiquesquen informatique.

    Nous esprons pouvoir tre utiles tous les tudiants et jeunes ou moins jeuneschercheurs et enseignants en mathmatiques effectives, ou plus spcifiquement en cal-cul formel, dsireux dapprofondir leurs connaissances ou la recherche de matriauxpdagogiques.

    Cet ouvrage est une synthse de notes de cours rdiges principalement pour lecours du mme nom que nous avons donn pendant plus de dix ans au Master Pari-sien de Recherche en Informatique de lUniversit Paris Diderot, des coles NormalesSuprieures de Cachan et de Paris, et de lcole polytechnique. La partie concernantles systmes polynomiaux provient aussi de notes de cours donns au DEA Mthodesalgbriques puis au Master Algbre et Gomtrie de lUniversit Pierre-et-Marie-Curie,mais aussi au DEA Informatique Mathmatique et Applications de lcole NormaleSuprieure de Paris, lcole polytechnique, lUniversit Pierre-et-Marie-Curie, lUni-versit Paris Diderot, et lUniversit Paris-Sud. Plusieurs parties ont aussi fait lobjetde mini-cours plus spcialiss donns loccasion des Journes Nationales de CalculFormel en 2007, 2010, 2011, et 2013.

    Des versions prliminaires de parties de ce livre ont bnfici des commentairesde relecteurs que nous remercions ici : Philippe Dumas, Claude-Pierre Jeannerod,Marc Mezzarobba, Pierre Nicodme, Anne Vaugon, Gilles Villard.

    Ouvrages de rfrence

    Pour les prrequis en informatique, sur les modles de calcul et la thorie de lacomplexit, ainsi que sur les algorithmes de base, nous renvoyons le lecteur aux livresde Aho, Hopcroft, Ullman [AHU74], de Knuth [Knu97], de Cormen, Leiserson, Rivestet Stein [Cor+09], et de Stern [Ste94]. Quant aux prrequis en mathmatiques, ilsconcernent essentiellement des points classiques dalgbre, couverts par exemple parle livre de Lang [Lan02].

  • 13

    Les rfrences gnrales sur les algorithmes du calcul formel sont deux livres :celui de von zur Gathen et Gerhard [GG03] et celui, plus lmentaire, de Geddes,Czapor et Labahn [GCL92]. La complexit est galement utilise comme fil conducteurdans le livre de Bini et Pan [BP94a] ainsi que dans celui, plus difficile, de Brgisser,Clausen et Shokrollahi [BCS97]. Mentionnons que les ouvrages, de Geddes, Czapor,et Labahn [GCL92], de Zippel [Zip93], et de Yap [Yap00], couvrent aussi des sujetsabsents ici comme les manipulations dexpressions symboliques, larithmtique despolynmes plusieurs variables, lintgration symbolique, ou encore le calcul desracines des polynmes une variable coefficients rationnels.

    Les aspects calculatoires en algbre linaire sont trs vastes et il nous a fallunous restreindre, en deuxime partie, couvrir seulement les quelques algorithmesncessaires aux parties suivantes. Les livres de Pan [Pan01 ; Pan84b], et dAbdeljaouedet Lombardi [AL04] peuvent tre utiliss comme rfrences sur ce sujet.

    Une bonne introduction notre cinquime partie, sur les systmes polynomiaux,est le livre de Cox, Little et OShea [CLO96]. Parmi les ouvrages sur les bases deGrbner, le livre de Becker et Weispfenning [BW93] reste une rfrence trs complte.Un point de vue plus mathmatique est dvelopp dans le livre dEisenbud [Eis95].

    Lalgorithmique des corps finis est assez peu prsente ici. Ce sujet intervientdsormais davantage dans les cours de cryptographie et codes correcteurs. Les livresrcents de Shoup [Sho09] et Joux [Jou09] fournissent des contenus trs aboutis danscette direction.

    De premiers lments pour aborder notre troisime partie, sur les quationsdiffrentielles et les rcurrences linaires, sont donns dans le livre de Petkovek,Wilf et Zeilberger [PWZ96]. Enfin, le livre de Saito, Sturmfels et Takayama [SST00]couvre, en diffrentiel, certains aspects de la thorie de llimination dans le cadrenon commutatif de notre sixime partie.

    BibliographieAHU74 Aho, Alfred V., John E. Hopcroft et Jeffrey D. Ullman (1974). The design

    and analysis of computer algorithms. Addison-Wesley Publishing Co.AL04 Abdeljaoued, J. et H. Lombardi (2004). Mthodes matricielles : introduction

    la complexit algbrique. Vol. 42. Mathmatiques & Applications. Springer-Verlag.

    BCS97 Brgisser, Peter, Michael Clausen et M. Amin Shokrollahi (1997). Alge-braic complexity theory. Vol. 315. Grundlehren der Mathematischen Wis-senschaften. Springer-Verlag.

    BP94a Bini, Dario et Victor Y. Pan (1994). Polynomial and matrix computations.Vol. 1. Progress in Theoretical Computer Science. Fundamental algorithms.Birkhuser Boston, Inc., Boston, MA,

    BW93 Becker, Thomas et Volker Weispfenning (1993). Grbner bases. A com-putational approach to commutative algebra. Vol. 141. Graduate Texts inMathematics. Springer-Verlag New York.

    CLO96 Cox, David, John Little et Donal OShea (1996). Ideals, varieties, and algo-rithms. An introduction to computational algebraic geometry and commutativealgebra. 2e d. Undergraduate Texts in Mathematics. Springer-Verlag.

  • 14

    Cor+09 Cormen, Thomas H., Charles E. Leiserson, Ronald L. Rivest et CliffordStein (2009). Introduction to algorithms. Third. MIT Press, Cambridge, MA.

    Eis95 Eisenbud, David (1995). Commutative algebra. With a view toward algebraicgeometry. Vol. 150. Graduate Texts in Mathematics. Springer-Verlag NewYork.

    GCL92 Geddes, Keith O., Stephen R. Czapor et George Labahn (1992). Algorithmsfor computer algebra. Kluwer Academic Publishers.

    GG03 Gathen, Joachim von zur et Jrgen Gerhard (2003). Modern computeralgebra. 2e d. Cambridge University Press.

    Jou09 Joux, Antoine (2009). Algorithmic cryptanalysis. Chapman & Hall/CRCCryptography and Network Security Series. Chapman et Hall/CRC.

    Knu97 Knuth, Donald E. (1997). The art of computer programming. 3e d. Vol. 2 :Seminumerical Algorithms. Computer Science and Information Processing.Addison-Wesley Publishing Co.

    Lan02 Lang, Serge (2002). Algebra. 3e d. Vol. 211. Graduate Texts in Mathematics.Springer-Verlag.

    Pan01 Pan, Victor Y. (2001). Structured matrices and polynomials. Unified superfastalgorithms. Birkhuser Boston Inc.

    Pan84b Pan, Victor (1984). How to multiply matrices faster. Vol. 179. Lecture Notesin Computer Science. Springer-Verlag.

    PWZ96 Petkovek, Marko, Herbert S. Wilf et Doron Zeilberger (1996). A = B.A. K. Peters.

    Sho09 Shoup, Victor (2009). A computational introduction to number theory andalgebra. 2e d. Cambridge University Press.

    SST00 Saito, Mutsumi, Bernd Sturmfels et Nobuki Takayama (2000). Grbnerdeformations of hypergeometric differential equations. Springer-Verlag.

    Ste94 Stern, Jacques (1994). Fondements mathmatiques de linformatique. Edis-cience international.

    Yap00 Yap, Chee (2000). Fundamental problems in algorithmic algebra. OxfordUniversity Press.

    Zip93 Zippel, Richard (1993). Effective polynomial computation. Kluwer AcademicPublishers.

  • 1. Calcul formel et complexit

    RsumLe calcul formel tudie dans quelle mesure un ordinateur peut faire des

    mathmatiques , et pour celles quil peut faire, quelle vitesse. Ce chapitreintroductif prsente dabord les problmes de calculabilit. Le point de dpart estle thorme plutt ngatif de RichardsonMatiyasevich. Ensuite, un survol rapidedes thmes qui seront abords tout au long de cet ouvrage montre que malgr cethorme, bien des questions peuvent tre traites algorithmiquement. La secondepartie du chapitre aborde la thorie de la complexit, pose les conventions et lesdfinitions principales, ainsi que les rsultats de base sur la mthodologie diviserpour rgner .

    1.1 Dcider, calculer

    Fondements logiquesDune certaine manire, le calcul formel est fond sur une contrainte dorigine

    logique.

    Thorme 1.1 RichardsonMatiyasevich. Dans la classe des expressions for-mes partir dune variable X et de la constante 1 par les oprations danneau+, , et la composition avec la fonction sin() et la fonction valeur absolue | |, letest dquivalence 0 est indcidable.

    Autrement dit, il nexiste pas dalgorithme permettant pour toute expression decette classe de dterminer en temps fini si elle vaut 0 ou non. Plus gnralementtout test dgalit peut bien entendu se ramener tester lgalit zro ds quela soustraction existe. Cette limitation de nature thorique explique la difficult et

  • 16 1. Calcul formel et complexit

    parfois la frustration que rencontrent les utilisateurs dbutants des systmes de calculformel face des fonctions de simplification , qui ne peuvent tre quheuristiques.

    Pour effectuer un calcul, il est pourtant souvent crucial de dterminer si des ex-pressions reprsentent 0 ou non, en particulier pour valuer une fonction qui possdedes singularits (comme la division). Lapproche du calculateur formel exprimentconsiste se ramener autant que faire se peut des oprations dun domaine dans le-quel le test zro est dcidable. Le calcul formel repose ainsi de manire naturelle surdes constructions algbriques qui prservent la dcidabilit du test 0. En particulier,les oprations courantes sur les vecteurs, matrices, polynmes, fractions rationnelles,ne ncessitent pas dautre test 0 que celui des coefficients. La notion deffectivitpermet de prciser ce point de vue.

    Dfinition 1.1 Une structure algbrique (groupe, anneau, corps, espace vecto-riel,. . .) est dite effective si lon dispose :

    dune structure de donnes pour en reprsenter les lments ; dalgorithmes pour en effectuer les oprations et pour y tester lgalit et

    autres prdicats.

    Par exemple, dans un anneau effectif, outre lgalit, les oprations requises sontladdition, la soustraction et la multiplication. Pour une structure ordonne, des algo-rithmes sont aussi requis pour effectuer les comparaisons. Cette notion deffectivitest bien videmment attache un modle de calcul. Dans cet ouvrage nous consid-rerons principalement les machines accs direct (voir ci-dessous). Nanmoins il estconnu que les fonctions calculables par ces machines sont les mmes que pour lesmachines de Turing (mais avec des temps dexcution bien sr diffrents).

    Structures et constructions de baseLes objets les plus fondamentaux sont assez faciles reprsenter en machine de

    manire exacte. Nous considrons tour tour les plus importants dentre eux, encommenant par les plus lmentaires. Ils sassemblent ensuite laide de tableauxou de listes pour en former de plus complexes.

    Entiers machineLes entiers fournis par les processeurs sont des entiers modulo une puissance de 2

    (le nombre de bits dun mot machine, typiquement 32 ou 64). Ils sont appels desentiers machine. Les oprations rendues disponibles par le processeur sont laddition,la soustraction, la multiplication et parfois la division. La norme ANSI du langage Cfournit au programmeur la division et le modulo pour ces entiers, cest--dire que lecompilateur implante ces oprations si le processeur ne le fait pas.

    EntiersPour manipuler des entiers dont la taille dpasse celle dun mot machine, il est

    commode de les considrer comme crits dans une base B assez grande :

    N = a0 + a1B + + akBk .

    Lcriture est unique si lon impose 0 ai < B. (Le signe est stock sparment.) Cesnombres peuvent tre stocks dans des tableaux dentiers machine. Les objets obtenus

  • 1.1 Dcider, calculer 17

    sont des entiers de taille arbitraire appels parfois bignums.Laddition et le produit peuvent alors tre rduits des oprations sur des en-

    tiers infrieurs B2, au prix de quelques oprations de propagation de retenue. Lechoix de B dpend un peu du processeur. Si le processeur dispose dune instructioneffectuant le produit de deux entiers de taille gale celle dun mot machine, ren-voyant le rsultat dans deux mots machines, alors B pourra tre pris aussi grand quele plus grand entier tenant dans un mot machine. Sinon, cest la racine carre dece nombre qui sera utilise pour B. Quoiquil en soit, nous avons donc le rsultatsuivant :

    Lemme 1.2 Lanneau Z des entiers relatifs est effectif.

    Entiers modulaires

    Les calculs avec des polynmes, des fractions rationnelles ou des matrices coeffi-cients entiers souffrent souvent dune maladie propre au calcul formel : la croissancedes expressions intermdiaires. Les entiers produits comme coefficients des expres-sions intervenant lors du calcul sont de taille disproportionne par rapport ceux quifigurent dans lentre et dans la sortie.

    Exemple 1.1 Voici le droulement typique du calcul du plus grand diviseur com-mun (pgcd) de deux polynmes coefficients entiers par lalgorithme dEuclide(Chapitre 6), o nous notons rem(., .) le reste de la division :

    P0 = 7X5 22X4 + 55X3 + 94X2 87X + 56,

    P1 = 62X4 97X3 + 73X2 + 4X + 83,

    P2 = rem(P0,P1) =113293

    3844X3 +

    4096053844

    X2 1838551922

    X +272119

    3844,

    P3 = rem(P1,P2) =18423282923092

    12835303849X2 15239170790368

    12835303849X +

    1096636125825612835303849

    ,

    P4 = rem(P2,P3) = 21613227465379239544863744148979404824831944178

    X 63117995638912219228013388297958809649663888356

    ,

    P5 = rem(P3,P4) =20556791167692068695002336923491296504125

    3639427682941980248860941972667354081.

    Les coefficients de ces polynmes intermdiaires font intervenir des entiers quicroissent de manire exponentielle, alors que le rsultat recherch est 1.

    Grce la division euclidienne, on obtient immdiatement.

    Lemme 1.3 Pour tout entier n 2, lanneau Z/nZ des entiers modulo n est effectif.

    Ces entiers modulaires remdient ce problme de croissance intermdiaire dedeux manires. Dune part, pour un calcul de dcision, de dimension, ou de degr,lexcution de lalgorithme sur la rduction de lentre modulo un nombre premierdonne un algorithme probabiliste rpondant la question. Cette technique peut aussiservir de base un algorithme dterministe lorsque les nombres premiers pour lesquelsla rponse est fausse peuvent tre matriss. Nous verrons comment exploiter cette

  • 18 1. Calcul formel et complexit

    ide pour le calcul du pgcd dans le Chapitre 6.Dautre part, les entiers modulaires sont utiliss dans les algorithmes reposant sur

    le thorme des restes chinois. Ce thorme indique quun entier infrieur au produitde nombres premiers p1 pk peut tre reconstruit partir de ses rductions modulop1, . . . ,pk . Lorsquune borne sur la taille du rsultat est disponible, il suffit deffectuerle calcul modulo suffisamment de nombres premiers (choisis en pratique assez grandspour que leur nombre soit faible et assez petits pour que les oprations tiennent dansun mot machine), pour ensuite reconstruire le rsultat, court-circuitant de la sortetoute croissance intermdiaire.

    Vecteurs et matricesUne fois donne une reprsentation exacte pour des coefficients, il est facile de

    construire des vecteurs ou matrices comme des tableaux, ou plus souvent comme destableaux de pointeurs sur les coefficients. Les oprations de produit par un scalaire,de produit de matrices ou de produit dune matrice par un vecteur se rduisent auxoprations daddition et de multiplication sur les coefficients. Il en va de mme pourla recherche de noyau ou dinverse de matrices.

    Proposition 1.4 Si K est un corps effectif, lespace vectoriel Kn lest aussi, ainsique lanneauMn(K).

    PolynmesLes polynmes peuvent tre reprsents de plusieurs manires, et la meilleure

    reprsentation dpend des oprations que lon souhaite effectuer. Pour un polynmeen une variable, les choix principaux sont :

    la reprsentation dense : comme pour les entiers, le polynme est reprsentcomme un tableau de (pointeurs sur les) coefficients ;

    la reprsentation creuse : le polynme est reprsent comme une liste de paires(coefficient, exposant) gnralement trie par les exposants.

    Dans les deux cas, nous avons clairement la propagation de leffectivit aux anneauxde polynmes :

    Proposition 1.5 Si A est un anneau effectif, alors A[X] lest aussi.

    Lusage itr de cette proposition fournit les polynmes plusieurs variables.

    Fractions rationnellesLes rationnels peuvent tre stocks comme des paires o numrateur et dnomina-

    teur sont des entiers de taille arbitraire. Les oprations daddition et de multiplicationse rduisent aux oprations analogues sur les entiers et le test dgalit zro serduit au test dgalit 0 sur le numrateur. De mme, les fractions rationnelles sontreprsentes par des paires de polynmes. Les oprations daddition, produit, division,se rduisent aux additions et multiplications sur les coefficients. Plus gnralement,nous obtenons le rsultat suivant pour les corps de fractions rationnelles :

  • 1.1 Dcider, calculer 19

    Proposition 1.6 Si A est un anneau intgre effectif, alors son corps des fractionsest effectif.

    Sries tronquesLes sries tronques

    Nk=0

    akXk + O(XN+1)

    se reprsentent pratiquement comme des polynmes. La diffrence principale ap-parat lors du produit : les coefficients des termes dexposant au moins N + 1 nontpas besoin dtre calculs, ni stocks. La structure considre alors est lanneauquotient A[X]/(XN+1) obtenu en faisant le quotient de lanneau A[X] par lidalquy engendre XN+1. Les lments de ce quotient sont reprsents par le (N + 1)-uplet de coefficients (a0, . . . , aN). Le test 0 revient tester que ces coefficients sonttous nuls.

    Proposition 1.7 Si A est un anneau effectif et N N, alors A[X]/(XN+1) est unanneau effectif.

    Cette structure de donnes joue un rle trs important non seulement pour descalculs dapproximations, mais aussi comme une reprsentation exacte. En voici troisexemples :

    1. Une fraction rationnelle dont les numrateurs et dnominateurs ont un degrborn par d peut tre reconstruite partir dun dveloppement en srie lordre 2d + 1. Cette reprsentation joue ainsi un rle cl dans la manipulationdes nombres algbriques (Chapitre 3), et dans le calcul efficace de la divisioneuclidienne de polynmes, de suites rcurrentes linaires (comme le calculrapide du 10 000e nombre de Fibonacci au Chapitre 4) et du polynme minimaldune matrice creuse (Chapitre 9).

    2. Il est possible de reconstruire une quation diffrentielle linaire coefficientspolynomiaux partir du dveloppement en srie dune solution et de bornessur lordre et le degr des coefficients. De faon analogue, il est possible dereconstruire une rcurrence linaire coefficients polynomiaux partir despremires valeurs dune de ses solutions. Loutil algorithmique pour effectuerces calculs de devinette (guessing en anglais) est le calcul rapide dapproximantsde PadHermite (Chapitre 7).

    3. Un polynme en deux variables peut tre reconstruit partir du dveloppementen srie dune solution. Lefficacit de la factorisation des polynmes deuxvariables, ou encore de la rsolution de systmes polynomiaux par la mthodedite de rsolution gomtrique, aborde au Chapitre 28 repose de manire crucialesur cette opration, qui doit tre effectue rapidement.

    quations comme structures de donnesUne fois construits les objets de base que sont les polynmes, les sries ou les

    matrices, il est possible daborder des objets mathmatiques construits implicitement.Ainsi, il est bien connu quil nest pas possible de reprsenter toutes les solutions

  • 20 1. Calcul formel et complexit

    de polynmes de haut degr par radicaux, mais de nombreuses oprations sur cessolutions sont aises en prenant le polynme lui-mme comme structure de donnes.Ce point de vue permet dtendre le domaine dapplication du calcul formel pourvuque des algorithmes soient disponibles pour effectuer les oprations souhaites (typi-quement addition, multiplication, multiplication par un scalaire, test dgalit) parmanipulation des quations elles-mmes.

    Nombres algbriques

    Cest ainsi que lon nomme les solutions de polynmes une variable. Le rsultatest spectaculaire.

    Proposition 1.8 Si K est un corps effectif, alors sa clture algbrique K lest aussi.

    Les oprations daddition et de multiplication peuvent tre effectues laide dersultants (Chapitre 6). Ceux-ci peuvent tre calculs efficacement laide de sries(Chapitre 3). La division sobtient par lalgorithme dEuclide sur les polynmes (Cha-pitre 6), et le test dgalit se dduit du pgcd. Par exemple, il est possible de prouverassez facilement une identit comme

    sin 27sin2 37

    sin 7

    sin2 27+

    sin 37sin2 7

    = 2

    7 (1.1)

    une fois que lon reconnat quil sagit dune galit entre nombres algbriques.

    Systmes polynomiaux

    Vu limportance des systmes polynomiaux en calcul formel, une grande par-tie de cet ouvrage leur sera consacre. Un rsultat majeur de cette partie est lesuivant.

    Proposition 1.9 Soient K un corps effectif, et f1, . . . , fp des polynmes de lanneauK[X1, . . . ,Xn]. Alors lanneau quotient K[X1, . . . ,Xn]/(f1, . . . , fn) est effectif.

    Ce quotient est un outil de base pour rpondre de nombreuses questions naturellessur un systme de polynmes, comme lexistence de solutions, la dimension de lespacedes solutions (qui indique sil sagit dune surface, dune courbe, ou de points isols),le degr, ou le calcul dune paramtrisation de lensemble des solutions.

    Il est galement possible dliminer une ou des variables entre des polynmes.Cette opration sinterprte gomtriquement comme une projection (Chapitre 25).Dans le cas le plus simple, elle permet de calculer un polynme sannulant sur lesabscisses des intersections de deux courbes (Chapitre 6). Une autre application est lecalcul dune quation dune courbe donne sous forme paramtre.

    quations diffrentielles linairesCette structure de donnes permet de reprsenter de nombreuses fonctions usu-

    elles (exponentielle, fonctions trigonomtriques et trigonomtriques hyperboliques,leurs rciproques), ainsi que de nombreuses fonctions spciales de la physique ma-thmatique (fonctions de Bessel, de Struve, dAnger, . . ., fonctions hypergomtriques

  • 1.1 Dcider, calculer 21

    et hypergomtriques gnralises), ainsi bien sr que de multiples fonctions aux-quelles nest pas attach un nom classique. Les oprations daddition et de produitsont effectues par des variantes noncommutatives du rsultant qui se ramnent de lalgbre linaire lmentaire (Chapitre 14). Le test zro se rduit tester lga-lit dun nombre fini de conditions initiales. Une partie de ces rsultats se rsumecomme suit :

    Proposition 1.10 Si K est un corps effectif, les sries formelles de K[[X]] qui sontsolutions dquations diffrentielles linaires coefficients dans K[X] forment unanneau effectif.

    En dautres termes, des structures de donnes finies permettent de manipuler cesobjets infinis et den tester lgalit ou la nullit.

    Ainsi, des identits lmentaires comme sin2 X + cos2 X = 1 sont non seulementfacilement prouvables algorithmiquement, mais elles sont galement calculables,cest--dire que le membre droit se calcule partir du membre gauche.

    Les relations troites entre quations diffrentielles linaires et rcurrences li-naires les sries solutions des unes ont pour coefficients les solutions des autres aboutissent aux mmes rponses algorithmiques que les questions analogues sur dessuites. Par exemple, lidentit de Cassini sur les nombres de Fibonacci

    Fn+2Fn F2n+1 = (1)n+1, n 0

    est exactement du mme niveau de difficult que sin2 X + cos2 X = 1. Le pendant dursultat prcdent est donc la proposition suivante :

    Proposition 1.11 Si K est un corps effectif, lensemble des suites de KN solutionsde rcurrences linaires coefficients dans K[n] forme un anneau effectif.

    Systmes dquations diffrentielles et de rcurrences linairesCes systmes sont aux quations diffrentielles ou de rcurrences ce que les sys-

    tmes polynomiaux sont aux polynmes en une variable. Les mmes oprations sontdisponibles. En particulier, llimination stend dans ce cadre en introduisant desalgbres doprateurs adapts (Chapitre 31). Une application trs importante, le t-lscopage cratif, permet de calculer automatiquement des sommes et des intgralesdfinies. Ainsi,

    nk=0

    kj=0

    (nj

    )3

    = n23n1 + 23n 3n2n2(2nn

    ),

    n=0

    Hn(x)Hn(y)un

    n!=

    exp(

    4u(xyu(x2+y2))14u2

    )

    1 4u2,

    12

    J0(x)2 + J1(x)

    2 + J2(x)2 + = 1

    2,

  • 22 1. Calcul formel et complexit

    +11

    epxTn(x)1 x2

    dx = (1)nIn(p),

    +0

    xepx2Jn(bx)In(cx)dx =

    12p

    exp(c2 b2

    4p

    )Jn

    (bc2p

    ),

    +0

    xJ1(ax)I1(ax)Y0(x)K0(x)dx = ln(1 a4)

    2a2,

    nk=0

    qk2

    (q;q)k(q;q)nk=

    nk=n

    (1)kq(5k2k)/2

    (q;q)nk(q;q)n+k,

    sont des formules qui mettent en jeu diverses fonctions spciales ou polynmes ortho-gonaux classiques, et qui peuvent tre prouves automatiquement. Les algorithmescorrespondants seront dcrits au Chapitre 32. Lnonc en termes danneaux effectifsest un peu lourd et omis ici.

    En conclusion, les exemples ci-dessus illustrent bien la manire dont le calculformel parvient effectuer de nombreux calculs utiles dans les applications malgrlindcidabilit rvle par le thorme de Richardson et Matiyasevich.

    1.2 Calculer rapidementEn pratique, la calculabilit nindique que la faisabilit. Il faut disposer dalgo-

    rithmes efficaces et des bonnes implantations pour pouvoir effectuer des calculs degrande taille. La premire partie de cet ouvrage est consacre aux algorithmes efficacessur les structures de base du calcul formel. Lefficacit sera mesure par la thoriede la complexit et nous ferons ressortir des principes rcurrents dans la conceptiondalgorithmes efficaces.

    Exemple 1.2 Pour donner une ide de ce que veut dire rapidement, voici ce quipeut tre calcul en une seconde avec le systme Maple sur un ordinateur portabledaujourdhui a, en notant K le corps Z/pZ p lments, p = 67108879 tant unnombre premier de 26 bits (dont le carr tient sur un mot machine) :

    1. Entiers : produit de deux entiers avec 30 000 000 chiffres ; factorielle de 1 300 000 (environ 7 000 000 chiffres) ; factorisation dun entier de 42 chiffres (produit de deux nombres pre-

    miers de taille la moiti).2. Polynmes dans K[X] :

    produit de deux polynmes de degr 650 000 ; pgcd et rsultant de deux polynmes de degr 12 500 ; factorisation dun polynme de degr 170 (produit comme ci-dessus).

    3. Polynmes dans K[X,Y] : rsultant de deux polynmes de degr total 20 (sortie de degr 400) ;

  • 1.2 Calculer rapidement 23

    factorisation dun polynme de degr 160 en deux variables.4. Matrices :

    produit de deux matrices 850 850 coefficients dans K ; dterminant dune matrice 1400 1400 coefficients dans K ; polynme caractristique dune matrice 500500 coefficients dans K ; dterminant dune matrice 200200 dont les coefficients sont des entiers

    32 bits.Ces exemples montrent quil est relativement ais de calculer avec des objets detaille colossale. Dans la plupart de ces exemples, les algorithmes nafs mettraientplusieurs annes pour le mme calcul. On voit aussi quen une seconde, les algo-rithmes sont dj dans leur rgime asymptotique et quune analyse asymptotiquesuffira obtenir des informations prcises. Tout ceci donne envie dintroduire unemesure de complexit des diffrents algorithmes permettant dexpliquer, voire deprdire, les diffrences entre les tailles atteintes pour ces questions.

    a. Ce texte est crit en 2015. Les ordres de grandeurs sont les mmes sur diffrents ordinateurs etpour les diffrents systmes de calcul formel principaux, avec des forces et des faiblesses diffrentes.

    Mesures de complexitPour bien dfinir la complexit, il faut se donner : un modle de machine ; les

    oprations disponibles sur cette machine ; leur cot unitaire. La complexit en espacemesure la mmoire utilise par lexcution de lalgorithme, et la complexit en temps,la somme des cots unitaires des oprations effectues par lalgorithme. Dans cetouvrage, nous naborderons pas la complexit en espace.

    Machine accs direct

    Le modle que nous utiliserons est celui de la machine accs direct (MAD), appeleaussi Random Access Machine (RAM) en anglais. Dans ce modle, un programme lit etcrit des entiers sur deux bandes diffrentes et utilise un nombre arbitraire de registresentiers pour ses calculs intermdiaires. Les oprations lmentaires (lassembleurde la machine) sont la lecture, lcriture (sur bande ou en registre), laddition, lasoustraction, le produit, la division et trois instructions de saut : saut inconditionnel,saut si un registre est nul et saut si un registre est positif. Un point technique est quele programme ne fait pas partie des donnes, il nest donc pas modifiable. Cet ouvragene rentre jamais dans les subtilits de lutilisation de ce modle, qui ne sert qu fixerprcisment les mesures utilises.

    Complexit arithmtique ou binaire

    Nous considrerons deux mesures de complexit :1. En calcul formel, de nombreux algorithmes peuvent tre dcrits comme oprant

    de faon abstraite sur une structure algbrique A effective. Dune faon concrte,la reprsentation des lments de A importe peu et lutilisation de chaqueopration lmentaire de A (opration arithmtique ou prdicat) peut treparfaitement identifie au cours de lexcution de lalgorithme.La complexit arithmtique dun tel algorithme est dfinie comme le nombretotal doprations arithmtiques et de tests de prdicats effectus dans A. Cettemesure ne prend volontairement pas en compte les oprations de copie, celles

  • 24 1. Calcul formel et complexit

    sur les compteurs de boucle, les indirections, etc. En pratique cette mesurereflte souvent le cot rel de lalgorithme si le cot des oprations dans A estprpondrant et si chaque opration requiert un temps essentiellement constant.Cest le cas par exemple si A est un corps fini. Ce nest en revanche pas le cassi A est le corps des nombres rationnels Q et que la taille de ces nombres crotde faon significative durant les calculs.

    2. Pour tudier le cot des algorithmes oprant sur des entiers, la complexitarithmtique avec A = Z nest pas pertinente. Il convient alors de dcomposerles entiers dans une base B, qui est en pratique une puissance de 2 fixe (parexemple 232). Chaque entier est alors vu comme un vecteur dlments de{0, . . . ,B 1}. Nous appellerons complexit binaire la complexit arithmtiqueassocie A = {0, . . . ,B1}, muni des tests dgalit et comparaisons, ainsi quedes oprations arithmtiques modulo B. En pratique cette mesure de complexitreflte en gnral bien les temps observs pour les algorithmes oprant surdes nombres entiers ou rationnels. Nanmoins, prcisons que cette mesure decomplexit ne correspond pas celle utilise classiquement sur une machine deTuring, puisquelle nglige les cots daccs mmoire. Par exemple le cot binairepour transposer une matrice de taille nn coefficients dans A = {0, . . . ,B1}est nul avec notre dfinition : aucune opration arithmtique nest requise.

    La notation O()Nous utilisons la notation O() pour exprimer une borne sur la complexit des

    algorithmes. La signification prcise de la notation

    f (n) = O(g(n)), n

    est quil existe K > 0 et A > 0 tels que pour tout n > A, f et g sont lis par lingalit

    |f (n)| K|g(n)|.

    Lorsque plusieurs paramtres interviennent dans lanalyse de la complexit, il fautabsolument prciser lequel tend vers linfini pour que cette notation ait un sens. Siplusieurs dentre eux tendent vers linfini, soit ils sont lis par des ingalits qui serontprcises, soit la dfinition ci-dessus stend avec une constante K qui ne dpenddaucun des paramtres.

    Afin de simplifier les bornes de complexit nous utiliserons parfois la notation O()de sorte cacher des facteurs logarithmiques. Plus prcisment, nous crirons

    f (n) = O(g(n)), n

    lorsque quil existe un entier k 0 tel que

    f (n) = O(g(n) logk2(max(|g(n)|,2))).

    La notation O() intervient aussi dans cet ouvrage pour reprsenter la troncaturedes sries. Lexpression

    f (X) := g(X) + O(XN)

    signifiera que le polynme ou la srie g est tronqu aprs son N-ime terme et que lersultat, un polynme, est stock dans f .

  • 1.2 Calculer rapidement 25

    Exemple 1.3 Laddition de deux entiers de n bits demande donc O(1) oprationsarithmtiques et O(n) oprations binaires (quelque soit la base B, puisque ladiffrence entre les bases joue sur la constante cache dans le O()).

    Exemple 1.4 Le calcul de n! par la mthode nave requiert n oprations arithmti-ques et O(n2 log2n) oprations binaires. Le choix de la base B nintervient que dansla constante cache dans le O(). Nous verrons au Chapitre 15 quil est possibledabaisser ce cot seulement O(n1/2 logn) oprations arithmtiques dans Z, etO(n log3n) oprations binaires. Les ides utilises dans les algorithmes rapidespermettant datteindre ces complexits fournissent aussi le meilleur algorithmeconnu de factorisation dterministe dentiers et des algorithmes trs efficaces pourle calcul de millions de dcimales de , log2 et de nombreuses autres constantes.

    Taille

    Un algorithme et une structure de donnes sont gnralement dots dune notionnaturelle de taille et il sagit dtudier le cot de lalgorithme en fonction de cette taille.Pour simplifier, il est souvent commode de considrer le comportement asymptotiquede ce cot lorsque la taille tend vers linfini. Il est important de comprendre que lacomplexit dun problme na de sens quune fois la structure de donnes fixe pourlentre comme pour la sortie.

    Par exemple, pour les polynmes, le choix de la reprsentation dense conduit mesurer la complexit par rapport au degr, alors que le choix de la reprsentationcreuse met en avant le nombre de monmes. Pour la factorisation, la complexit estpolynomiale en le degr, mais exponentielle en le nombre de monmes, dans le casle pire.

    Cas le pire, cas moyen

    La complexit dans le cas le pire est le maximum des complexits pour toutesles entres dune taille donne. Cest celle que nous tudierons. Il est souvent utilede considrer aussi la complexit en moyenne, lorsque lon peut mettre une mesuresur lensemble des entres de taille borne. Pour la plupart des algorithmes que noustudierons dans la premire partie de cet ouvrage, il ny a pas de diffrence importanteentre les deux. Ce nest plus le cas en revanche pour la complexit des algorithmes defactorisation, ou pour ceux qui oprent sur les systmes polynomiaux.

    Bornes infrieures

    La recherche de bornes infrieures de complexit est trs difficile. Par exemple, lheure actuelle on ne sait pas prouver que la multiplication de matrices est ncessaire-ment plus coteuse quun nombre born dadditions. Ds quil est possible de montrerque tous les bits de lentre doivent tre pris en compte, la somme de la taille de len-tre et de la taille de la sortie est une borne infrieure sur la complexit. En effet, dansle modle MAD, chacune des critures et des lectures prend une opration.

    Dfinition 1.2 Si N est la somme de la taille de lentre et de la taille de la sortie,un algorithme sera dit quasi-optimal lorsque sa complexit est borne par O(N).

  • 26 1. Calcul formel et complexit

    n

    n/p ...

    ...

    ... ... ...

    n/p n/p

    m appels rcursifs

    m appels rcursifs2

    s s

    s...

    Figure 1.1 Appels rcursifs dun algorithme diviser pour rgner .

    Lessentiel de la premire partie de cet ouvrage consistera rechercher des algo-rithmes quasi-optimaux pour les oprations de base sur les structures de donnesfondamentales.

    Diviser pour rgner

    Le principe le plus important de la conception dalgorithmes efficaces est la m-thodologie diviser pour rgner . Il consiste rsoudre un problme en le rduisant un certain nombre m dentres de tailles divises par p (le plus souvent p = 2) puis recombiner les rsultats (voir Figure 1.1). Le cot de la recombinaison et ventuelle-ment du dcoupage prliminaire est born par une fonction T de la taille des entres.Lorsque les entres ont une taille infrieure p ou suffisamment petite, note s, unautre algorithme de cot indpendant de n est invoqu. Le cot total obit alorssouvent une rcurrence de la forme

    C(n)

    T(n) +mC(dn/pe), si n s( p) sinon. (1.2)La notation dxe dsigne lentier k tel que k 1 < x k (le plafond de x).

    Qualitativement, le cot total de cette approche dpend fortement de la fonc-tion T. Lorsque T est relativement leve, les premiers niveaux de larbre contribuent lessentiel du cot et, une constante prs, le cot est donc domin par la premiretape de rcursion. Les algorithmes base ditration de Newton du Chapitre 3 sontde ce type. linverse, pour une fonction T assez faible, le bas de larbre domine lecot qui sera proportionnel au nombre de feuilles 1 O((n/s)logpm). Lalgorithme de

    1. La notation logp x reprsente le logarithme en base p de x, cest--dire logx/ logp. Lidentit facile

    vrifier alogp b = blogp a sera utile.

  • 1.2 Calculer rapidement 27

    multiplication de polynmes de Karatsuba du Chapitre 2 et lalgorithme de Strassenpour la multiplication de matrices (Chapitre 8) rentrent dans cette catgorie. Enfin,il est possible que tous les O(logp(n/s)) niveaux de larbre contribuent de manireassez quilibre, menant un cot en O(T(n) logn). La transforme de Fourier ra-pide (Chapitre 2) et le classique algorithme de tri fusion sont dans cette dernirecatgorie.

    Un cadre commode pour nos applications est rsum dans le lemme suivant,dont une version simplifie que nous utiliserons dans la plupart des cas est donneensuite par le Thorme 1.13. Nous commenons par le cas simple o la taille est unepuissance de p, o il est possible de donner des ingalits prcises, ce qui prpare lepassage au cas gnral et lasymptotique.

    Lemme 1.12 Diviser pour rgner. Soit C une fonction obissant linga-lit (1.2) avec m > 0, > 0 et T une fonction telle que

    T(pn) qT(n), n N, (1.3)

    avec q > 1. Alors, si n est une puissance positive de p,

    C(n)

    (1 mq

    )1T(n) +nlogpm si q > m,

    T(n) logp n+nlogp q si q = m,

    nlogpm(

    T(n)

    nlogp q

    qmq +

    )si q < m.

    Le premier cas est celui o la complexit est porte par le haut de larbre, dans ledeuxime elle lest par tous les niveaux parts gales, et dans le dernier par les basniveaux.

    Dmonstration. Lutilisation rpte de lingalit (1.2) sur C donne

    C(n) T(n) +mC(np

    ),

    T(n) +mT(np

    )+ +mk1T

    (n

    pk1

    )+mkC

    (n

    pk

    ), (1.4)

    T(n)1 + mq + +

    (mq

    )k1+mk, (1.5)o la dernire ligne rsulte de (1.3) et du choix de k = blogp

    ns c+ 1 [logp

    ns , logp n]. Ce

    choix entraine la suite dingalits suivante :

    1 x xk x xlogp(n/s) = nlogp x x1logp s nlogp x (1.6)

    qui permet de borner le deuxime terme de (1.5) avec x = m.Si m < q, la somme entre parenthses est majore par la srie gomtrique. Si m = q,

  • 28 1. Calcul formel et complexit

    la somme comporte k termes gaux. Si m > q, rcrire la somme sous la forme(mq

    )k1 (1 +

    q

    m+ +

    ( qm

    )k1)montre que le premier terme de (1.5) est major par

    T(n)(mq

    )k qm q

    .

    Ensuite, lingalit (1.6) avec x = m/q permet de conclure.

    En pratique la rgularit de T est souvent plus forte que celle donne par (1.3)et on ne cherche qu comparer des estimations de O(). Le rsultat prend alors uneforme plus simple, et sans restriction sur n qui na plus besoin dtre une puissancede p.

    Thorme 1.13 Diviser pour rgner. Soit C une fonction obissant linga-lit (1.2) avec m > 0 et > 0, et soit T une fonction croissante telle quexistent q et ravec 1 < q r vrifiant

    qT(n) T(pn) rT(n), pour tout n assez grand. (1.7)

    Alors, lorsque n

    C(n) =

    O(T(n)), si q > m,O(T(n) logn), si q = m,

    O(nlogpm T(n)

    nlogp q

    )si q < m.

    Lhypothse (1.7) est en particulier vrifie par les fonctions courantes n logn pourles valeurs > 0.

    Dmonstration. Soit N la puissance de p telle que n N < pn. En droulant linga-lit (1.2) on obtient une ingalit similaire (1.4) o la division par p est remplacepar lopration x 7 dx/pe. La fonction T tant suppose croissante, toutes ces valeursde T sont majores par les valeurs en N/pi , i = 0, . . . , k 1 et on obtient donc unemajoration (1.5) o n est remplac par N. Le lemme prcdent sapplique alors pourmajorer cette expression, majoration quil ne reste plus qu majorer son tour.

    Dabord, par rcurrence, lingalit (1.3) entrane T(n) qlogp nT(1) = nlogp qT(1),ce qui permet dabsorber les termes en dans les O(). Ensuite, la croissance de T etlhypothse (1.7) donnent pour n assez grand T(N) T(pn) = O(T(n)), ce qui permetde conclure.

  • 1.2 Calculer rapidement 29

    Figure 1.2 Borne sur la complexit de lalgorithme de Karatsuba : en noir, la suitesolution de C(n) = 4n+3C(dn/2e), C(1) = 1 ; en rouge, la borne obtenue lExemple 1.5.

    Exemple 1.5 La complexit de lalgorithme de Karatsuba du Chapitre 2 vrifie larcurrence

    K(n) 4n+ 3K(dn/2e), K(1) = 1.

    Le Lemme 1.12 et le Thorme 1.13 sappliquent avec m = 3, p = s = 2, = 1 etT linaire, si bien que q = r = 2, do une complexit K(n) = O(nlog2 3), et plusprcisment

    K(n) nlog2 3(4nn

    21

    + 1)

    = 9nlog2 3

    pour n une puissance de 2, et donc en majorant par la valeur en la puissance de 2immdiatement suprieure, le cas gnral est born par

    K(n) 9 2dlog2 ne log2 3 = 9 3dlog2 ne.

    Cette borne est assez fine, comme le montre la Figure 1.2.

    ConventionsPour toute la suite de cet ouvrage, et sauf mention contraire, nous adoptons les

    notations et terminologies suivantes : tous les anneaux et corps sont supposs effectifs, commutatifs et unitaires ; les estimations de complexit sont en nombre doprations arithmtiques dans

  • 30 1. Calcul formel et complexit

    lanneau de base ; le symbole marque la fin dune dmonstration ; les logarithmes sont en base 2, lorsque la base nest pas spcifie ; le lemme diviser pour rgner fait rfrence lnonc du Lemme 1.12 ; le thorme diviser pour rgner fait rfrence lnonc du Thorme 1.13.

    NotesLe thorme de RichardsonMatiyasevich que nous nonons a ses origines dans

    les travaux sur le 10e problme de Hilbert portant sur lexistence dun algorithmepermettant de trouver les racines entires des polynmes multivaris coefficientsentiers. Une tape importante dans la rsolution de ce problme est due Davis,Putnam et Robinson [DPR61] qui montrent en 1961 lindcidabilit de ce problme sien plus des polynmes on considre la fonction x 7 2x. Quelques annes plus tard,Richardson [Ric68] ramne les problmes de racines relles en plusieurs variables ces questions, et, laide dun codage astucieux par le sinus, y ramne aussi lesproblmes en une variable. Par rapport notre nonc, son thorme fait intervenirla fonction exp et la constante ln2 (pour utiliser le rsultat de Davis, Putnam etRobinson), ainsi que la constante (pour utiliser la nullit du sinus aux multiplesentiers de ). Deux ans plus tard, en 1970, Matiyasevich prouve que la fonctionx 7 2x elle-mme peut sexprimer laide de polynmes, concluant ainsi la preuve delindcidabilit du 10e problme de Hilbert. Le thorme de Richardson peut alorstre simplifi, et cest ce que fait Matiyasevich dans son livre [Mat93], o il montreaussi comment se dbarrasser de la constante . Il faut noter que par contre, si lonremplace le sinus par lexponentielle, alors la simplification devient dcidable [Ric69].

    Ces thormes sappliquent des fonctions. Pour des constantes, lapproche laplus rcente rduit le test zro une conjecture de thorie des nombres due Schanuel qui exprime que les seules relations entre exponentielles et logarithmes sontcelles qui dcoulent des formules daddition et de multiplication. Si lon accepte cetteconjecture de Schanuel, alors un rsultat relativement rcent de Macintyre et Wilkieen 1996 [MW96] entrane lexistence dun algorithme de reconnaissance de 0 pour laclasse des constantes obtenues partir de 1 par addition, soustraction, multiplicationet exponentielle. Un tel algorithme, base dvaluation numrique et de LLL (voirChapitre 20) a ensuite t donn en 1997, nouveau par Richardson [Ric97].

    Les diffrents modles de complexit (machine MAD, straight-line program, ma-chine de Turing, . . .) sont bien prsents par Aho, Hopcrof et Ullman dans leurlivre [AHU74], ou par Stern [Ste94]. La jolie identit (1.1) est tire de [Bec+05]. Lesrsultats de complexit autour de lalgorithmique du diviser pour rgner sontnombreux. Le premier remonte sans doute Bentley, Haken et Saxe [BHS80] qui fontapparatre la srie gomtrique. Une version moderne tenant compte des plancherset des plafonds est prsente par Cormen, Leiserson, Rivest et Stein qui lappellentMaster Theorem [Cor+09]. Des variantes sophistiques sont connues [DS11 ; Rou01].Dans cette direction, Yap [Yap11] donne un thorme prt lemploi dans le cas oplusieurs divisions avec des valeurs de p distinctes ont lieu.

  • 1.2 Calculer rapidement 31

    BibliographieAHU74 Aho, Alfred V., John E. Hopcroft et Jeffrey D. Ullman (1974). The design

    and analysis of computer algorithms. Addison-Wesley Publishing Co.Bec+05 Beck, Matthias, Bruce C. Berndt, O-Yeat Chan et Alexandru Zaharescu

    (2005). Determinations of analogues of Gauss sums and other trigonome-tric sums . In : International Journal of Number Theory, vol. 1, n3, p. 333356.

    BHS80 Bentley, Jon Louis, Dorothea Haken et James B. Saxe (1980). A generalmethod for solving divide-and-conquer recurrences . In : SIGACT News,vol. 12, n3, p. 3644.

    Cor+09 Cormen, Thomas H., Charles E. Leiserson, Ronald L. Rivest et CliffordStein (2009). Introduction to algorithms. Third. MIT Press, Cambridge, MA.

    DPR61 Davis, Martin, Hilary Putnam et Julia Robinson (1961). The decision pro-blem for exponential diophantine equations . In : Annals of Mathematics.Second Series, vol. 74, p. 425436.

    DS11 Drmota, Michael et Wojciech Szpankowski (2011). A master theoremfor discrete divide and conquer recurrences . In : SODA11 : ACM-SIAMSymposium on Discrete Algorithms. San Francisco, CA : SIAM, p. 342361.

    Mat93 Matiyasevich, Yuri V. (1993). Hilberts tenth problem. Foundations of Com-puting Series. Translated from the 1993 Russian original by the author,with a foreword by Martin Davis. MIT Press.

    MW96 Macintyre, Angus et A. J. Wilkie (1996). On the decidability of the realexponential field . In : Kreiseliana. A. K. Peters, p. 441467.

    Ric68 Richardson, Daniel (1968). Some undecidable problems involving ele-mentary functions of a real variable . In : Journal of Symbolic Logic, vol. 33,n4, p. 514520.

    Ric69 (1969). Solution of the identity problem for integral exponen-tial functions . In : Zeitschrift fur mathematischen Logik und Grundlagender Mathematik, vol. 15, p. 333340.

    Ric97 (1997). How to recognize zero . In : Journal of Symbolic Com-putation, vol. 24, n6, p. 627645.

    Rou01 Roura, Salvador (2001). Improved master theorems for divide-and-conquer recurrences . In : Journal of the Association for Computing Machi-nery, vol. 48, n2, p. 170205.

    Ste94 Stern, Jacques (1994). Fondements mathmatiques de linformatique. Edis-cience international.

    Yap11 Yap, Chee (2011). A real elementary approach to the master recurrenceand generalizations . In : Theory and applications of models of computation.Vol. 6648. Lecture Notes in Computer Science. Tokyo, Japan : Springer-Verlag, p. 1426.

  • I2 Multiplication rapide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.1 Introduction, rsultats principaux2.2 Algorithme naf2.3 Algorithme de Karatsuba2.4 Transforme de Fourier rapide2.5 Lalgorithme de SchnhageStrassen2.6 Algorithmes pour les entiers2.7 Un concept important : les fonctions de multiplication

    3 Calculs rapides sur les sries . . . . . . . . . . . . . . . . . . . . . . . . . . 573.1 Sries formelles3.2 La mthode de Newton pour le calcul dinverses3.3 Itration de Newton formelle et applications3.4 La composition des sries

    4 Division euclidienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.1 Introduction4.2 Division de polynmes4.3 Suites rcurrentes linaires coefficients constants4.4 Dveloppement de fractions rationnelles4.5 Applications

    5 Calculs modulaires, valuation et interpolation . . . . . . . . . . . . . . 955.1 Introduction5.2 Prsentation, rsultats5.3 Interpolation de Lagrange5.4 Algorithmes rapides

    6 Pgcd et rsultant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116.1 Algorithme dEuclide6.2 Rsultant6.3 Algorithme dEuclide rapide

    7 Approximants de Pad et de PadHermite . . . . . . . . . . . . . . . . 1397.1 Reconstruction rationnelle7.2 Approximants de PadHermite

    Polynmes et sries

  • 2. Multiplication rapide

    Rsum

    Les algorithmes rapides de calcul du produit de polynmes et dentiers sontau cur de lalgorithmique efficace en calcul formel. La plupart des gains de com-plexit dans les chapitres ultrieurs reposent sur lefficacit de la multiplication.Pour multiplier deux polynmes de degr n coefficients dans un anneau A, la m-thode classique requiert O(n2) oprations dans A. De mme, lalgorithme scolairede multiplication de deux entiers n chiffres ncessite un nombre doprationsbinaires en O(n2). Nous prsentons dans ce chapitre plusieurs algorithmes demultiplication rapide, dont celui de Karatsuba, de complexit O(n1,59), ainsi queceux utilisant la transforme de Fourier rapide, dont la complexit est quasimentlinaire en n.

    2.1 Introduction, rsultats principaux

    Les problmes abords dans ce chapitre concernent la complexit arithmtiquede la multiplication des polynmes une variable et la complexit binaire de lamultiplication des entiers. Au vu de lexemple suivant, il est facile de se convaincrede la similitude des deux questions :Polynmes Soient multiplier 3X2 + 2X + 1 et 6X2 + 5X + 4 dans Z[X],

    (3X2 + 2X + 1) (6X2 + 5X + 4)= (3 6)X4 + (3 5 + 2 6)X3 + (3 4 + 2 5 + 1 6)X2 + (2 4 + 1 5)X + (1 4)

    = 18X4 + 27X3 + 28X2 + 13X + 4.

  • 36 2. Multiplication rapide

    Nombres entiers Soient multiplier 321 et 654 en base 10,

    (3 102 + 2 10 + 1) (6 102 + 5 10 + 4)= (3 6)104 + (3 5 + 2 6)103 + (3 4 + 2 5 + 1 6)102 + (2 4 + 1 5)10 + (1 4)

    = 18 104 + 27 103 + 28 102 + 13 10 + 4= 2 105 + 9 103 + 9 102 + 3 10 + 4 = 209934.

    Dans les deux cas, nous avons retranscrit lalgorithme naf, et la suite des calculsest essentiellement la mme, si ce nest que, dans le cas des entiers, il faut en outregrer les retenues (dernire galit de lexemple). On ne sera donc pas surpris que lesrsultats obtenus dans les deux cas soient trs semblables.

    RsultatsDans toute la suite, (A,+,) dsignera un anneau commutatif effectif. Tout dabord,

    nous considrons la complexit arithmtique ; il sagit de minimiser le nombre dop-rations (+, , ) dans A pour multiplier des polynmes en degr born. Les premiersrsultats retenir de ce chapitre sont les suivants.

    Thorme 2.1 La multiplication des polynmes de degr au plus n dans A[X]requiert :

    O(n2) oprations dans A par lalgorithme naf ; O(n1,59) oprations dans A par lalgorithme de Karatsuba ; O(n logn loglogn) voire dans certains cas O(n logn) oprations dans A,

    via la transforme de Fourier rapide (FFT).

    Ainsi, la multiplication des polynmes peut se faire en un cot arithmtiquequasi-linaire en leur degr.

    La multiplication des polynmes est omniprsente : les algorithmes de calculde pgcd (plus grand commun diviseur), de pgcd tendu, de factorisation en une ouplusieurs variables, de composition des sries formelles, dvaluation multipoint,dinterpolation, font tous intervenir des produits de polynmes.

    Lanalogie entre les entiers et les polynmes va trs loin ; la plupart des rponsesapportes dans le cadre de la complexit arithmtique trouvent un quivalent encomplexit binaire. Cependant, aucun thorme dquivalence nest connu ; il se trouveque les mmes ides algorithmiques sadaptent plus ou moins facilement dans lesdeux cadres. Ainsi, on dispose des rsultats suivants dans le modle binaire.

    Thorme 2.2 On peut multiplier des entiers de n chiffres binaires par : lalgorithme naf en O(n2) oprations binaires ; lalgorithme de Karatsuba en O(n1,59) oprations binaires ; lalgorithme de SchnhageStrassen en O(n logn loglogn) oprations binaires.

    Les preuves de ces rsultats de complexit binaire sont plus dlicates que celles deleurs analogues polynomiaux, cause des problmes de gestion des retenues. Aussidans la suite ne traitons nous dabord en dtail que les versions polynomiales de

  • 2.1 Introduction, rsultats principaux 37

    ces rsultats (Thorme 2.1), pour passer ensuite brivement en revue le cas entier(Thorme 2.2).

    En pratique

    Les constantes caches dans les O() sont dterminantes pour lefficacit pratiquede tels algorithmes. Par exemple, lorsque A est un corps fini de taille raisonnable (typiquement, dont les lments sont reprsents sur quelques mots machine), pourle produit de polynmes dans les meilleures implantations actuelles (Magma, NTL,FLINT, Mathemagix) :

    lalgorithme de Karatsuba bat lalgorithme naf pour des degrs denviron 20 ; les mthodes base de FFT en O(n logn) battent lalgorithme de Karatsuba pour

    des degrs de lordre de 100, mais ne peuvent pas tre utilises pour des degrsarbitrairement grands (vient un moment o lon manque de racines de lunit,voir plus loin) ;

    lalgorithme de type FFT en O(n logn loglogn) est utilis pour des degrs delordre de quelques dizaines ou centaines de milliers.

    Certains problmes, en cryptologie ou en thorie des nombres, ncessitent de ma-nipuler des polynmes de degr de lordre de 100 000, tailles pour lesquelles lesalgorithmes rapides sont indispensables. Plus frquemment, des degrs de lordre dela centaine ou du millier font partie du quotidien du calculateur formel (au moinsdans des calculs intermdiaires).

    Ces algorithmes ne sont pas concurrents, mais complmentaires. Les bonnesimplantations passent automatiquement lalgorithme le plus efficace en fonction dudegr, et ce parfois mme au cours dun mme calcul, lorsquun algorithme rcursifcomme celui de Karatsuba atteint une taille pour laquelle il vaut mieux utiliserlalgorithme naf.

    La situation pour les entiers est similaire, mme si limplantation des algorithmesrapides pour les entiers est bien plus dlicate en raison des retenues. Dans lesmeilleures implantations actuelles (Magma, GMP) :

    lalgorithme de Karatsuba bat lalgorithme naf pour des nombres de lordre de30 chiffres dcimaux ;

    les mthodes base de FFT (SchnhageStrassen) gagnent pour des nombresdenviron 3 000 chiffres dcimaux.

    nouveau, des entiers de quelques centaines de chiffres sont courants ds que lonsort des exemples jouets. Au-del, des problmes venus de la cryptologie ou de lathorie des nombres demandent de manipuler des nombres de taille colossale (delordre de 100 000 000 chiffres ; il faut 10 Mo pour stocker un tel nombre). Ceci justifieamplement les efforts dimplantation dalgorithmes rapides.

    Dans la suite de ce chapitre, on travaille avec des polynmes F et G coefficientsdans un anneau A, ayant un degr au plus n 1, formellement

    F = f0 + + fn1Xn1 et G = g0 + + gn1Xn1;

    le problme est alors de calculer (les coefficients de)

    H = FG = h0 + + h2n2X2n2.

  • 38 2. Multiplication rapide

    2.2 Algorithme nafLalgorithme naf consiste dvelopper le produit, cest--dire crire

    H = FG =2n2i=0

    hiXi avec hi =

    j+k=i

    fjgk .

    Ainsi, calculer tous les hi demande O(n2) oprations dans A. Cest un algorithme decomplexit arithmtique quadratique.

    Exercice 2.1 Montrer que, pour multiplier deux polynmes de degrs m et n, lalgo-rithme naf demande au plus (m+ 1) (n+ 1) multiplications dans A et mn additionsdans A.

    Exercice 2.2 Montrer que, pour multiplier deux entiers n chiffres chacun, lalgo-rithme naf demande O(n2) oprations binaires.

    Exercice 2.3 Estimer la complexit binaire de la mthode nave lorsque les poly-nmes ont degr n et des coefficients entiers borns en valeur absolue par un entier H.

    Exercice 2.4 Alexander J. Yee et Shigeru Kondo ont calcul 1013 dcimales de surun PC de bureau en 2011 a. Ce type de calcul repose sur la multiplication dentiers demme taille que le nombre de dcimales cherches. En supposant que leur machinetait capable deffectuer 1012 oprations la seconde, montrer quils nont pas utilislalgorithme naf.

    a. Voir http://www.numberworld.org/misc_runs/pi-5t/announce_en.html.

    2.3 Algorithme de KaratsubaUn premier raffinement de lalgorithme naf repose sur la remarque suivante : il

    est possible de gagner une multiplication pour le produit des polynmes de degr 1,parmi les 4 du produit par lalgorithme quadratique. Soient en effet multiplier lespolynmes

    F = f0 + f1X et G = g0 + g1X.

    Leur produit H = FG = h0 +h1X+h2X2 peut tre obtenu par une forme dinterpolationsur les points 0,1, : en 0 on a H(0) = h0 = f0g0 ; de mme, le coefficient de plushaut degr (qui correspond intuitivement lvaluation en linfini) vaut h2 = f1g1.Enfin, la valeur en 1 vaut h0 + h1 + h2 = F(1)G(1) = (f0 + f1)(g0 + g1). Ainsi, on obtienth1 = (f0 + f1)(g0 + g1)h0h2 pour seulement une multiplication supplmentaire, donclensemble des coefficients du produit pour 3 multiplications et 4 additions. Quelquesadditions sont perdues par rapport lalgorithme naf, mais le gain dune multi-plication va se transformer en gain dans lexposant de lalgorithme, par applicationrcursive.

    En effet, dans le cas gnral des degrs quelconques, il suffit de scinder F et G endeux et de procder de la mme manire. Si F et G sont de degr au plus n 1, avec

    http://www.numberworld.org/misc_runs/pi-5t/announce_en.html

  • 2.3 Algorithme de Karatsuba 39

    Entre F,G de degrs au plus n 1.Sortie H = FG.

    1. Si n = 1, renvoyer FG.2. Dcomposer F et G selon lquation (2.1).3. Calculer A1 = F(0)G(0) et A2 = F(1)G(1) rcursivement.4. Calculer A3 = F(0) + F(1) et A4 = G(0) + G(1).5. Calculer A5 = A3A4 rcursivement.6. Calculer A6 = A5 A1 et A7 = A6 A2.7. Renvoyer A1 + A7Xk + A2X2k .

    Algorithme 2.1 Multiplication de polynmes par lalgorithme de Karatsuba.

    k = dn/2e, on poseF = F(0) + F(1)Xk , G = G(0) + G(1)Xk , (2.1)

    pour des polynmes F(0),F(1),G(0),G(1) de degrs au plus k 1. Le produit H = FGscrit

    H = F(0)G(0) + (F(0)G(1) + F(1)G(0))Xk + F(1)G(1)X2k .

    Cette mthode est rsume dans lAlgorithme 2.1. Le thorme qui suit tablit lacomplexit de lalgorithme.

    Thorme 2.3 Si n est une puissance de 2, lalgorithme de Karatsuba calcule leproduit de deux polynmes de degrs au plus n 1 en au plus 9nlog2 3 oprationsdans A.

    Dmonstration. Un appel en degr strictement infrieur n effectue trois appels rcur-sifs en degr strictement infrieur n/2, plus quelques additions, comptes commesuit : ltape (4) effectue deux additions en taille strictement infrieure n/2 ; ltape (6)effectue deux additions en taille strictement infrieure n ; quant ltape (7),A1 et A2Xn sont supports monomiaux distincts, donnant la somme A1 + A2Xn

    sans cot arithmtique, puis la somme totale en une addition en taille strictementinfrieure n. Le cot K(n) satisfait donc la rcurrence

    K(n) 3K(n/2) + 4n,

    o le terme 4n vient compter le nombre dadditions dans A. Le lemme diviser pourrgner permet alors de conclure avec p = q = s = 2, m = 3, T(n) = 4n, et = 1 (cotde lalgorithme naf en degr 0).

    Le thorme diviser pour rgner fournit ensuite :

    Corollaire 2.4 On peut multiplier deux polynmes de degr n arbitraire enO(nlog2 3) = O(n1,59) oprations dans A.

    Une manire destimer plus prcisment la constante cache dans cette borne a tprsente au Chapitre 1.

  • 40 2. Multiplication rapide

    Exercice 2.5 Soit n une puissance de 2. tablir un algorithme hybride de multiplica-tion dans A[X], qui fait appel lalgorithme de Karatsuba pour n > 2d et lalgorithmenaf pour n 2d . Montrer que la complexit arithmtique C(n) de cet algorithmevrifie C(n) (d)nlog2 3 8n pour tout n 2d , o (d) est une fonction qui dpenduniquement de d. Trouver la valeur de d qui minimise (d) et, par comparaison avecle rsultat du Thorme 2.3, estimer le gain obtenu par cette optimisation.

    Exercice 2.6 Est-il possible de multiplier par un algorithme universel, cest--direindpendant de lanneau de base A, deux polynmes de degr au plus 1 en utilisantseulement 2 multiplications dans A ?

    Exercice 2.7 Algorithme de ToomCook. Soit A un anneau et soient A et B deuxpolynmes de degr au plus 3 dans A[X].

    1. Estimer le nombre de multiplications de A requises par lalgorithme de Karat-suba pour calculer le produit AB.

    2. On suppose que 2, 3 et 5 sont inversibles dans A et que la division dun lmentde A par 2, 3 et 5 est gratuite. Donner un algorithme qui multiplie A et B enutilisant au plus 7 multiplications dans A.

    3. On suppose que 2, 3 et 5 sont inversibles dans A. Donner un algorithme demultiplication polynomiale dans A[X] de complexit arithmtique O(n1,4).

    Dans la suite de lexercice, on suppose que lanneau A est de caractristique nulle.4. Montrer que, pour tout entier 2, il existe un algorithme de multiplication

    polynomiale dans A[X] de complexit arithmtique O(nlog(21)).5. Montrer que pour tout > 0, il existe un algorithme de multiplication poly-

    nomiale dans A[X] de complexit arithmtique O(n1+), o la constante dansle O() dpend de , mais pas de n.

    2.4 Transforme de Fourier rapideLes mthodes base de transforme de Fourier rapide (appele aussi FFT pour

    Fast Fourier Transform) sont ce que lon sait faire de mieux, lheure actuelle, pourmultiplier les polynmes. Pour simplifier la prsentation, on suppose ici que loncherche multiplier des polynmes F et G dans A[X], de degrs strictement infrieurs n/2 (ou plus gnralement tels que deg(FG) < n).

    Ide de lalgorithmeEn supposant que lanneau A le permette, lide gnrale est synthtise dans

    lAlgorithme 2.2. Il sagit dvaluer en des points bien choisis, de multiplier les valua-tions, et de reconstruire les coefficients du produit partir de ces valeurs ( conditionque cette opration dinterpolation soit possible, voir ci-dessous). Si deux polynmesconcident sur 1,, . . . ,n1, nous verrons que leur diffrence est un multiple de Xn1,ce qui justifie la correction de lalgorithme.

    Lorsque lalgorithme est employ avec lhypothse deg H < n, les coefficients deH mod Xn 1 qui sont renvoys sont bien ceux de H. Le cot des tapes de prcalculet de produit point point est linaire en n, et il reste donc voir comment effectuerrapidement les oprations dvaluation et dinterpolation.

  • 2.4 Transforme de Fourier rapide 41

    Entre F et G deux polynmes, n un entier, et une racine prin-cipale n-ime de lunit.

    Sortie H = FG mod Xn 1.1. Prcalcul. Calculer les puissances 2, . . . ,n1.2. valuation. Calculer les valeurs :

    Ev(F) =(F(0), . . . ,F(n1)

    ); Ev(G) =

    (G(0), . . . ,G(n1)

    ).

    3. Produit point point.(Ev(F),Ev(G)

    )7 Ev(FG) =

    (FG(0), . . . ,FG(n1)

    ).

    4. Interpolation.Ev(FG) 7 FG.

    Algorithme 2.2 Multiplication de polynmes par transforme de Fourier discrte.

    Racines primitives et principales de lunit

    Dfinition 2.1 Llment de A est une racine n-ime de lunit si n = 1; cestune racine n-ime primitive de lunit si de plus t , 1 pour t < n ; cest une racinen-ime principale de lunit si de plus t 1 est non diviseur de zro dans A pourt {1, . . . ,n 1} (cest--dire que (t 1) = 0 implique = 0).

    Exemple 2.1 Si A est un corps ou mme un anneau intgre, les racines principaleset primitives concident et la condition revient dire que engendre le groupedes racines n-imes de lunit. Par exemple, dans C, 1 nest pas une racine 4eprimitive de lunit, alors que i lest. Plus gnralement, lorsque A = C, les racinesprimitives n-imes de lunit sont de la forme exp(2qi/n), pour q premier avec n.

    Exemple 2.2 Dans A = Z/25Z, les premires puissances de 6 sont 6,11,16,21, et 1.Comme par exemple 161 = 15 est diviseur de 0, 6 est une racine 5e de lunit quiest primitive mais nest pas principale. En revanche, les premires puissances de 7sont 7,24,18,1, ce qui montre que 7 est une racine principale 4e de 1 dans A.

    Lintrt des racines principales de 1 dans des anneaux qui ne sont mme pas intgresapparat en fin de ce chapitre pour lalgorithme de Schnhage et Strassen. Jusque l, ilest suffisant de considrer le cas o A = C pour comprendre les ides. Les propritsque nous utiliserons sont rsumes dans le lemme suivant.

    Lemme 2.5 Si est racine primitive ou principale n-ime de lunit, alors1. 1 aussi ;

  • 42 2. Multiplication rapide

    2. si n = pq alors p est une racine q-ime de lunit de mme nature que ;3. pour ` {1, . . . ,n 1}, et une racine principale de lunit alors

    n1j=0

    `j = 0.

    Dmonstration. Tout dabord est bien inversible : lidentit n = 1 montre que n1

    est un inverse de . Ensuite, 1 est une racine de lunit : le produit de lidentitprcdente par n donne 1 = n. Enfin, elle est principale si lest : lorsque t 1nest pas diviseur de 0, son produit par linversible t non plus. Le mme argumentsapplique dans le cas o est primitive.

    La deuxime proprit est immdiate. Pour la troisime, le produit de la sommepar 1` tlescope les sommants, ce qui donne

    (1`)n1j=0

    `j = 1`n = 1 (n)` = 0.

    Comme 1` nest pas diviseur de 0, la somme est bien nulle.

    R Dans la dfinition de racine primitive ou principale, la condition t diviseur strictde n suffit, elle entrane la proprit pour t {1, . . . ,n 1}. En effet, si t nest pasdiviseur de n, son pgcd g avec n lest. Il existe daprs le thorme de Bzoutdeux entiers p,q N tels que g = tp+nq. Alors, lgalit (t 1) = 0 entrane0 = (t 1)(1+p + +t(p1)) = (tp1) = (gnq1) = (g 1), et donc = 0, puisque g est un diviseur strict de n.

    Transforme de Fourier rapideLopration

    DFT : F A[X] 7 (F(1),F(), . . . ,F(n1)),

    o est une racine principale n-ime de lunit, sappelle la transforme de Fourierdiscrte. Son calcul rapide est effectu par un algorithme de type diviser pourrgner .

    Pour appliquer cette ide, supposons que n est pair, n = 2k. Alors, k = 1 puisque

    (k 1)(k + 1) = n 1 = 0

    et le premier facteur nest pas diviseur de 0. Le polynme F est dcompos par divisioneuclidienne de deux faons :

    F = Q0(Xk 1) + R0 et F = Q1(Xk + 1) + R1,

    avec deg R0 < k et deg R1 < k. Ces dcompositions vont nous permettre le calculde F sur les puissances paires et impaires de . En effet, si ` est pair, k` = 1 etdonc F(`) = R0(`). De mme, si ` est impair, F(`) = R1(`). Outre lapplication

  • 2.4 Transforme de Fourier rapide 43

    Entre F = f0 + + fn1Xn1 ; les puissances 1,, ,n1 duneracine n-ime principale de lunit , n tant une puissancede 2.

    Sortie F(1), . . . ,F(n1).1. Si n = 1, renvoyer f0.2. Sinon, soit k = n/2. Calculer

    R0(X) =k1j=0

    (fj + fj+k)Xj ,

    R1(X) = R1(X) =k1j=0

    (fj fj+k)jXj .

    3. Calculer rcursivement R0(1),R0(2), . . . ,R0((2)k1

    )et R1(1), R1(2), . . . , R1

    ((2)k1

    ).

    4. RenvoyerR0(1), R1(1),R0(2), R1(2), . . . ,R0

    ((2)k1

    ), R1

    ((2)k1

    ).

    Algorithme 2.3 Transforme de Fourier rapide (FFT).

    rcursive, le point crucial qui est la source de lefficacit de lalgorithme de transformede Fourier rapide (Algorithme 2.3) et qui conduit au choix de racines primitives delunit, est que le calcul de R0 et R1 est trs simple (tape (2)). Lors des appels rcursifs,les puissances de qui sont utilises sont des 2

    i, qui sont bien des racines primitives

    daprs le Lemme 2.5.

    Thorme 2.6 LAlgorithme 2.3 de transforme de Fourier rapide requiert au plus3n2 logn oprations dans A ; les multiplications font toutes intervenir une puissance

    de .

    Dmonstration. Puisque les puissances de sont connues, le cot de lappel en degr nest dau plus 2 n/2 additions et soustractions (pour le calcul de R0 et R1) et den/2 multiplications (pour le calcul de R1), plus deux appels rcursifs en degr n/2. Sacomplexit F(n) satisfait donc la rcurrence :

    F(n) 3n2

    + 2F(n

    2

    )et le lemme diviser pour rgner (avec p = q = m = s = 2, T(n) = 3n/2 et = 0)permet de conclure.

    Exercice 2.8 Montrer que lAlgorithme 2.3 requiert n logn additions dans A, 12n lognmultiplications dlments de A par des puissances de , mais aucune autre multipli-

  • 44 2. Multiplication rapide

    cation dans A.

    R La transforme de Fourier discrte est un morphisme dalgbres sur A deA[X]/(Xn 1) dans An avec comme multiplication dans An la multiplicationcoordonne par coordonne. Cette observation permet dconomiser des trans-formes inverses en effectuant plusieurs calculs directement sur les transformes.Une application typique de cette observation est le produit scalaire, ou plusgnralement le produit de matrices.

    InterpolationEn termes matriciels, lopration F 7 Ev(F) est linaire et sa matrice (pour des

    polynmes F de degr au plus n 1, dans la base monomiale {1,X, . . . ,Xn1}) est lamatrice de Vandermonde

    V =

    1 1 11 n1...

    ...

    1 n1 (n1)2

    .

    Lemme 2.7 Si A est racine n-ime principale de lunit, alors V1 V = nIn.

    Dmonstration. Daprs le Lemme 2.5, est inversible. La matrice V1 est donc biendfinie. Le coefficient de la i-ime ligne et j-ime colonne du produit scrit

    n1k=0

    (i1)k(j1)k =n1k=0

    (ij)k .

    Daprs le Lemme 2.5, cette dernire somme est nulle pour 0 < i j < n. Par symtriedes matrices, elle est aussi nulle si 0 < j i < n. Les coefficients en dehors de ladiagonale sont donc tous nuls. Sur la diagonale, la somme comporte n termes, tousgaux 1, do le rsultat.

    Autrement dit, linterpolation sur les puissances de est calcule efficacement enla ramenant une FFT sur les puissances de 1, qui est bien principale daprs leLemme 2.5.

    ConclusionLes rsultats de cette section sont rsums dans le thorme suivant.

    Thorme 2.8 Si 2 est inversible dans A et n une puissance de 2, tant donneune racine principale n-ime dans A, le produit de deux polynmes dont la sommedes degrs est infrieure n peut tre calcul en 92n logn+ O(n) oprations dans A.Seuls n des produits sont entre deux lments de A qui ne sont pas des puissancesde .

  • 2.4 Transforme de Fourier rapide 45

    Dmonstration. La complexit de lAlgorithme 2.2 est de 3 FFT en degr n, soit 92n lognoprations, plus O(n) divisions par n pour linterpolation (ce qui est possible puisque2 est inversible) et O(n) multiplications pour calculer les puissances de . Les mul-tiplications de la FFT font intervenir des puissances de , les autres sont celles deltape de produit point point, au nombre de n.

    Exercice 2.9 Montrer que sous les hypothses du thorme prcdent, on peut multi-plier ces polynmes en utilisant 3n logn+ O(n) additions dans A, plus 32n logn+ O(n)multiplications par des puissances de , n multiplications arbitraires dans A, etn divisions par n.

    Exercice 2.10 Soit n dans N, soit n0 la plus petite puissance de 2 suprieure ou gale n, et supposons quil existe dans A une racine n0-ime principale de lunit. Cetteracine tant connue, on peut multiplier les polynmes de degr au plus 12n 1 en9n logn+ O(n) oprations dans A.

    Exercice 2.11 Soit n une puissance de 2, et supposons quon dispose dune racinen-ime principale de lunit A. Soit P et Q deux polynmes dans A[X] de degr auplus n 1. Supposons que les coefficients de X0,X1, . . . ,Xn1 du produit R = PQ sontconnus. Montrer que R peut tre calcul en 92n logn+ O(n) oprations dans A.

    Mais o sont nos racines?

    Mme dans le cas favorable o A est un corps, il ny existe pas ncessairementtoutes les racines primitives de lunit ncessaires pour appliquer les techniques desalgorithmes prcdents. Dans le cas particulier des corps finis, on sait donner unerponse prcise cette question dexistence.

    Proposition 2.9 Le corps fini q lments Fq contient une racine n-ime primitivede lunit si et seulement si n divise q 1.

    Exercice 2.12 1. Prouver la proposition prcdente.2. Montrer que si n divise q1 et si est un lment primitif de Fq (cest--dire tel

    que engendre le groupe multiplicatif (Fq \ {0},)) alors (q1)/n est une racinen-ime primitive de lunit.

    Pour pouvoir appliquer le Thorme 2.6 avec n assez grand et A = Z/pZ (cest--direq = p premier), ce rsultat mne la notion de premiers de Fourier, qui sont les nombrespremiers p tels que p1 soit divisible par une grande puissance de 2, donc de la forme`2e + 1, avec e suffisamment grand (qui est appel lexposant de p). Par exemple,

    4179340454199820289 = 29 257 + 1

    est un tel nombre premier. Ainsi, dans Z/4179340454199820289Z, on dispose deracines primitives 257-ime de lunit (21 en est une) ; on peut donc y multiplier despolynmes de degrs colossaux par cet algorithme en O(n logn) oprations.

  • 46 2. Multiplication rapide

    Ces premiers sont donc trs utiles pour la FFT sur des corps finis. On peut montrerquil y a approximativement (x/ logx)/2e1 premiers de Fourier dexposant e infrieurs x ( rapprocher du thorme des nombres premiers qui montre lexistence dap-proximativement x/ logx premiers infrieurs x). Il sensuit quil y a environ 130corps finis de la forme k = Fp tel que p a la taille dun (demi-)mot machine (32 bits)et tel que dans k on puisse multiplier par FFT des polynmes de degr de lordredun million. Les racines de lunit de Fp peuvent tre calcules partir des lmentsprimitifs. Si on choisit au hasard un lment de Fp, lorsque p, la probabilitquil soit primitif tend vers 6/2, soit plus de 0,6.

    2.5 Lalgorithme de SchnhageStrassenQuand les racines de lunit font dfaut, il reste possible de faire fonctionner les

    ides base de transforme de Fourier. Ceci est ralis par lalgorithme de Schnhageet Strassen. Cet algorithme sapplique quel que soit lanneau de base, pourvu que2 y soit inversible ; lide est de rajouter les racines de lunit qui manquent entendant lanneau de base de manire judicieuse.

    Racines virtuelles de lunitLe point de dpart de lalgorithme est rsum dans le rsultat suivant.

    Lemme 2.10 Si 2 est inversible dans A et n est une puissance de 2, alors =X mod (Xn + 1