algorithmes et complexité

Upload: boud3

Post on 05-Mar-2016

21 views

Category:

Documents


0 download

DESCRIPTION

nous introduisons quelques notions standards :la notion de fonction bool´eenne, de graphe, d’arbre, de mot, de langage, decodage, pour en arriver `a la notion de structure et de mod`ele en logique dupremier ordre.

TRANSCRIPT

  • Cours INF561

    de lEcole Polytechnique

    Algorithmes et Complexite

    Olivier Bournez

  • 2

  • Table des matie`res

    2 Preliminaires 112.1 Alge`bre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Calculs booleens . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.4 Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.5 Alphabets, Mots, Langages . . . . . . . . . . . . . . . . . . . . . 142.6 Changement dalphabet . . . . . . . . . . . . . . . . . . . . . . . 152.7 Codage, Decodage . . . . . . . . . . . . . . . . . . . . . . . . . . 152.8 Logique Propositionnelle . . . . . . . . . . . . . . . . . . . . . . . 17

    2.8.1 Syntaxe de la logique propositionnelle . . . . . . . . . . . 172.8.2 Semantique de la logique propositionnelle . . . . . . . . . 17

    2.9 Structures du premier ordre . . . . . . . . . . . . . . . . . . . . . 182.9.1 Signature . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.9.2 Terme clos . . . . . . . . . . . . . . . . . . . . . . . . . . 192.9.3 Semantique . . . . . . . . . . . . . . . . . . . . . . . . . . 192.9.4 Combinaisons booleennes . . . . . . . . . . . . . . . . . . 202.9.5 Isomorphisme de structures . . . . . . . . . . . . . . . . . 21

    2.10 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 21

    3 Quelques algorithmes sequentiels 233.1 Quelques exemples . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.1.1 Lalgorithme dEuclide . . . . . . . . . . . . . . . . . . . . 233.1.2 Lalgorithme de Syracuse . . . . . . . . . . . . . . . . . . 243.1.3 Lensemble de Mandelbrot . . . . . . . . . . . . . . . . . . 243.1.4 Algorithme de Bissection . . . . . . . . . . . . . . . . . . 253.1.5 Le proble`me du sac a` dos reel . . . . . . . . . . . . . . . . 263.1.6 Equations polynomiales a` une inconnue . . . . . . . . . . 263.1.7 Equations lineaires a` n-inconnues : lelimination de Gauss 273.1.8 Equations polynomiales a` n-inconnues . . . . . . . . . . . 28

    3.2 Une discussion de cosmetique . . . . . . . . . . . . . . . . . . . . 293.2.1 Notre ecriture des algorithmes . . . . . . . . . . . . . . . 293.2.2 Etats elementaires . . . . . . . . . . . . . . . . . . . . . . 29

    3.3 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 32

    3

  • 4 TABLE DES MATIE`RES

    4 Quest-ce quun algorithme sequentiel ? 354.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.2 Premier postulat . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.3 Second postulat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.4 Structures versus memoire . . . . . . . . . . . . . . . . . . . . . . 374.5 Mises a` jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.6 Troisie`me postulat . . . . . . . . . . . . . . . . . . . . . . . . . . 394.7 Definition formelle dun dalgorithme . . . . . . . . . . . . . . . . 394.8 Une forme normale pour les algorithmes . . . . . . . . . . . . . . 39

    4.8.1 Termes critiques . . . . . . . . . . . . . . . . . . . . . . . 394.8.2 Affectation . . . . . . . . . . . . . . . . . . . . . . . . . . 404.8.3 Mise en paralle`le . . . . . . . . . . . . . . . . . . . . . . . 404.8.4 Construction si . . .alors . . . . . . . . . . . . . . . . . . 414.8.5 Forme normale . . . . . . . . . . . . . . . . . . . . . . . . 41

    4.9 Notion dalgorithme sur une structure M . . . . . . . . . . . . . 434.9.1 Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . 434.9.2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.10 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 44

    5 Quelques mode`les sequentiels, et leur equivalence 455.1 Machines de Turing . . . . . . . . . . . . . . . . . . . . . . . . . 45

    5.1.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . 455.1.2 Formalisation . . . . . . . . . . . . . . . . . . . . . . . . . 465.1.3 Une machine de Turing est un algorithme . . . . . . . . . 47

    5.2 Machines de Turing sur une structure M . . . . . . . . . . . . . . 485.2.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . 495.2.2 Formalisation . . . . . . . . . . . . . . . . . . . . . . . . . 505.2.3 Une machine de Turing sur une structure M est un algo-

    rithme sur M . . . . . . . . . . . . . . . . . . . . . . . . . 515.3 Robustesse du mode`le . . . . . . . . . . . . . . . . . . . . . . . . 52

    5.3.1 Structures finies comme structures arbitraires . . . . . . . 525.3.2 Des structures finies vers les booleens . . . . . . . . . . . 525.3.3 Programmer avec des machines de Turing . . . . . . . . . 53

    5.4 Machines a` k 2 piles . . . . . . . . . . . . . . . . . . . . . . . . 545.4.1 Sur une structure finie . . . . . . . . . . . . . . . . . . . . 545.4.2 Sur une structure arbitraire . . . . . . . . . . . . . . . . . 55

    5.5 Cas des structures finies : Machines a` compteurs . . . . . . . . . 555.6 Machines RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    5.6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 575.6.2 Structures finies . . . . . . . . . . . . . . . . . . . . . . . 585.6.3 Sur une structure arbitraire . . . . . . . . . . . . . . . . . 585.6.4 Equivalence avec les machines de Turing . . . . . . . . . . 60

    5.7 Equivalence entre algorithmes et machines de Turing . . . . . . . 625.8 Synthe`se du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . 635.9 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 64

  • TABLE DES MATIE`RES 5

    6 Calculabilite 656.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656.2 Existence dune machine universelle . . . . . . . . . . . . . . . . 66

    6.2.1 Algorithmes et Arbres . . . . . . . . . . . . . . . . . . . . 666.2.2 Machine universelle . . . . . . . . . . . . . . . . . . . . . 66

    6.3 Langages et proble`mes (semi-)decidables . . . . . . . . . . . . . . 676.3.1 Proble`mes de decision . . . . . . . . . . . . . . . . . . . . 676.3.2 Langages semi-decidables . . . . . . . . . . . . . . . . . . 686.3.3 Langages decidables . . . . . . . . . . . . . . . . . . . . . 696.3.4 Semi-decision et enumeration . . . . . . . . . . . . . . . . 706.3.5 Proprietes de cloture . . . . . . . . . . . . . . . . . . . . . 70

    6.4 Indecidabilite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716.4.1 Un premier proble`me indecidable . . . . . . . . . . . . . . 716.4.2 Notion de reduction . . . . . . . . . . . . . . . . . . . . . 726.4.3 Quelques autres proble`mes indecidables . . . . . . . . . . 736.4.4 Theore`me de Rice . . . . . . . . . . . . . . . . . . . . . . 746.4.5 Notion de completude . . . . . . . . . . . . . . . . . . . . 75

    6.5 Proble`mes indecidables naturels . . . . . . . . . . . . . . . . . . . 756.5.1 Le dixie`me proble`me de Hilbert . . . . . . . . . . . . . . . 756.5.2 Le proble`me de la correspondance de Post . . . . . . . . . 766.5.3 Decidabilite/Indecidabilite de theories logiques . . . . . . 76

    6.6 Theore`me du point fixe . . . . . . . . . . . . . . . . . . . . . . . 776.7 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 78

    7 La notion de circuit 817.1 La notion de circuit . . . . . . . . . . . . . . . . . . . . . . . . . 81

    7.1.1 Circuits booleens . . . . . . . . . . . . . . . . . . . . . . . 817.1.2 Relations entre taille et profondeur . . . . . . . . . . . . . 847.1.3 Effet Shannon . . . . . . . . . . . . . . . . . . . . . . . . . 857.1.4 Bornes inferieures . . . . . . . . . . . . . . . . . . . . . . 867.1.5 Circuits a` m sorties . . . . . . . . . . . . . . . . . . . . . 877.1.6 Proble`me du temps paralle`le . . . . . . . . . . . . . . . . 877.1.7 Circuits sur une structure M . . . . . . . . . . . . . . . . 87

    7.2 Circuits et algorithmes . . . . . . . . . . . . . . . . . . . . . . . . 887.2.1 Principe fondamental . . . . . . . . . . . . . . . . . . . . 887.2.2 Premie`res applications : indecidabilite . . . . . . . . . . . 927.2.3 Premie`res applications : bornes inferieures . . . . . . . . . 92

    7.3 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 93

    8 Complexite en temps 958.1 Temps deterministe . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    8.1.1 Mesure du temps de calcul . . . . . . . . . . . . . . . . . 958.1.2 Notation TIME(t(n)) . . . . . . . . . . . . . . . . . . . . 968.1.3 Version effective de la the`se de Church . . . . . . . . . . . 978.1.4 Classe P . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    8.2 Liens avec les circuits . . . . . . . . . . . . . . . . . . . . . . . . 99

  • 6 TABLE DES MATIE`RES

    8.2.1 Reconnaissance par une famille de circuits . . . . . . . . . 998.2.2 Temps polynomial et circuits de taille polynomiale . . . . 100

    8.3 Temps non-deterministe . . . . . . . . . . . . . . . . . . . . . . . 1018.3.1 Classe NP . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018.3.2 Classes NPM et NDPM . . . . . . . . . . . . . . . . . . . 1028.3.3 Temps non-deterministe polynomial et equivalence . . . . 103

    8.4 Proble`mes complets . . . . . . . . . . . . . . . . . . . . . . . . . 1058.4.1 Notion de reduction . . . . . . . . . . . . . . . . . . . . . 1058.4.2 Notion de completude . . . . . . . . . . . . . . . . . . . . 1068.4.3 Existence de proble`me NP-complet . . . . . . . . . . . . . 1078.4.4 Premier proble`me NP-complet naturel . . . . . . . . . . . 1088.4.5 Proble`mes plus basiques NP-complets . . . . . . . . . . . 1098.4.6 P = NP et elimination des quanteurs . . . . . . . . . . . . 1108.4.7 Autres proble`mes NP-complets . . . . . . . . . . . . . . . 1118.4.8 Sur les reels . . . . . . . . . . . . . . . . . . . . . . . . . . 112

    8.5 Quelques resultats . . . . . . . . . . . . . . . . . . . . . . . . . . 1128.5.1 Decision vs Construction . . . . . . . . . . . . . . . . . . 1128.5.2 EXPTIME and NEXPTIME . . . . . . . . . . . . . . . . 1138.5.3 Theore`mes de hierarchie . . . . . . . . . . . . . . . . . . . 1138.5.4 Proble`mes booleens sur R ou C . . . . . . . . . . . . . . . 115

    8.6 Que signifie la question P = NP ? . . . . . . . . . . . . . . . . . 1158.7 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 116

    9 Complexite en espace 1179.1 Classes de complexite en espace . . . . . . . . . . . . . . . . . . . 117

    9.1.1 Mesure de lespace dun calcul . . . . . . . . . . . . . . . 1179.1.2 Notation SPACE(f(n)) . . . . . . . . . . . . . . . . . . . . 1189.1.3 Classe PSPACE . . . . . . . . . . . . . . . . . . . . . . . 1199.1.4 Espace et structures non-finies . . . . . . . . . . . . . . . 1199.1.5 Espace non-deterministe . . . . . . . . . . . . . . . . . . . 119

    9.2 Relations entre espace et temps . . . . . . . . . . . . . . . . . . . 1209.2.1 Relations triviales . . . . . . . . . . . . . . . . . . . . . . 1209.2.2 Temps non-deterministe vs deterministe . . . . . . . . . . 1219.2.3 Temps non-deterministe vs espace . . . . . . . . . . . . . 1219.2.4 Espace non-deterministe vs temps . . . . . . . . . . . . . 1219.2.5 Espace non-deterministe vs espace deterministe . . . . . . 1229.2.6 Espace logarithmique non-deterministe . . . . . . . . . . . 123

    9.3 Quelques resultats & resume . . . . . . . . . . . . . . . . . . . . 1269.3.1 Theore`mes de hierarchie . . . . . . . . . . . . . . . . . . . 1269.3.2 Classes de complexite usuelles . . . . . . . . . . . . . . . . 1279.3.3 Relations entre classes . . . . . . . . . . . . . . . . . . . . 128

    9.4 Proble`mes complets . . . . . . . . . . . . . . . . . . . . . . . . . 1289.4.1 Reduction en espace logarithmique . . . . . . . . . . . . . 1289.4.2 Retour sur la NP-completude . . . . . . . . . . . . . . . . 1309.4.3 Un proble`me PSPACE-complet . . . . . . . . . . . . . . . 1309.4.4 Un proble`me P complet . . . . . . . . . . . . . . . . . . . 132

  • TABLE DES MATIE`RES 7

    9.4.5 Un proble`me NLOGSPACE-complet . . . . . . . . . . . . 1339.4.6 Des proble`mes EXPTIME et NEXPTIME-complets . . . 133

    9.5 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 134

    10 Complexite paralle`le 13510.1 Retour sur les machines RAM . . . . . . . . . . . . . . . . . . . . 135

    10.1.1 Calculabilite et machines RAM . . . . . . . . . . . . . . . 13510.1.2 Complexite et machines RAM . . . . . . . . . . . . . . . . 13610.1.3 Etendre les operations admissibles . . . . . . . . . . . . . 137

    10.2 Le mode`le PRAM . . . . . . . . . . . . . . . . . . . . . . . . . . 13710.2.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . 13710.2.2 Separation des mode`les . . . . . . . . . . . . . . . . . . . 14010.2.3 Theore`mes de simulation . . . . . . . . . . . . . . . . . . 14110.2.4 Theore`me de Brent . . . . . . . . . . . . . . . . . . . . . . 14210.2.5 Travail et efficacite . . . . . . . . . . . . . . . . . . . . . . 14310.2.6 Algorithmes efficaces et optimaux . . . . . . . . . . . . . 14310.2.7 Rendre optimal un algorithme efficace . . . . . . . . . . . 14410.2.8 Classification des algorithmes . . . . . . . . . . . . . . . . 144

    10.3 Mode`les bases sur les circuits . . . . . . . . . . . . . . . . . . . . 14510.3.1 Famille de circuits uniformes . . . . . . . . . . . . . . . . 14510.3.2 Classes NCi et ACi . . . . . . . . . . . . . . . . . . . . . . 14610.3.3 Relations avec les PRAM . . . . . . . . . . . . . . . . . . 14710.3.4 Resume . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

    10.4 Quelques proble`mes parallelisables . . . . . . . . . . . . . . . . . 14910.4.1 Addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14910.4.2 Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . 14910.4.3 Multiplication de matrices booleennes . . . . . . . . . . . 14910.4.4 Cloture transitive . . . . . . . . . . . . . . . . . . . . . . . 15010.4.5 Inversion matricielle et determinant . . . . . . . . . . . . 150

    10.5 Quelques resultats . . . . . . . . . . . . . . . . . . . . . . . . . . 15010.5.1 Relations avec les autres classes . . . . . . . . . . . . . . . 15010.5.2 Resultats de separation . . . . . . . . . . . . . . . . . . . 151

    10.6 Proble`mes intrinse`quement non-parallelisables . . . . . . . . . . . 15210.6.1 Reductions et parallelisme . . . . . . . . . . . . . . . . . . 15210.6.2 Proble`mes non-parallelisables . . . . . . . . . . . . . . . . 152

    10.7 The`se du parallelisme . . . . . . . . . . . . . . . . . . . . . . . . 15310.7.1 Circuits non-polynomiaux . . . . . . . . . . . . . . . . . . 15310.7.2 Generalisations . . . . . . . . . . . . . . . . . . . . . . . . 15310.7.3 The`se du parallelisme . . . . . . . . . . . . . . . . . . . . 15410.7.4 Discussions . . . . . . . . . . . . . . . . . . . . . . . . . . 154

    10.8 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 154

  • 8 TABLE DES MATIE`RES

    11 Algorithmes et techniques probabilistes 15511.1 Probabilites elementaires . . . . . . . . . . . . . . . . . . . . . . . 155

    11.1.1 Notions de base . . . . . . . . . . . . . . . . . . . . . . . . 15511.1.2 Application : Verification didentites . . . . . . . . . . . . 15611.1.3 Techniques de reduction de lerreur . . . . . . . . . . . . . 15711.1.4 Loi conditionnelle . . . . . . . . . . . . . . . . . . . . . . 15811.1.5 Quelques inegalites utiles . . . . . . . . . . . . . . . . . . 15811.1.6 Application : Coupures minimales . . . . . . . . . . . . . 158

    11.2 Variables aleatoires et moyennes . . . . . . . . . . . . . . . . . . 16011.2.1 Application : Proble`me du collectionneur . . . . . . . . . 16011.2.2 Application : Tri Bucket Sort . . . . . . . . . . . . . . . . 16111.2.3 Application : Temps moyen du tri rapide . . . . . . . . . 162

    11.3 Moments et deviations . . . . . . . . . . . . . . . . . . . . . . . . 16311.3.1 Inegalite de Markov . . . . . . . . . . . . . . . . . . . . . 16311.3.2 Inegalite de Tchebychev . . . . . . . . . . . . . . . . . . . 16411.3.3 Application : Proble`me du collectionneur . . . . . . . . . 16511.3.4 Argument dunion-bound . . . . . . . . . . . . . . . . . . 16611.3.5 Application : Calcul de la mediane . . . . . . . . . . . . . 16611.3.6 Bornes de Chernoff . . . . . . . . . . . . . . . . . . . . . . 16911.3.7 Application : Test dhypothe`ses . . . . . . . . . . . . . . . 17211.3.8 Meilleures bornes pour certains cas . . . . . . . . . . . . . 17311.3.9 Application : Equilibrage densembles . . . . . . . . . . . 174

    11.4 Quelques autres algorithmes et techniques . . . . . . . . . . . . . 17411.4.1 Tester la nullite dun polynome . . . . . . . . . . . . . . . 17411.4.2 Application : Couplage parfait . . . . . . . . . . . . . . . 17511.4.3 Chanes de Markov et marches aleatoires . . . . . . . . . 176

    11.5 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 176

    12 Classes probabilistes 17712.1 Notion dalgorithme probabiliste . . . . . . . . . . . . . . . . . . 17712.2 Classe PP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17812.3 Classe BPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17912.4 Classes RP et ZPP . . . . . . . . . . . . . . . . . . . . . . . . . . 18012.5 Relations entre classes . . . . . . . . . . . . . . . . . . . . . . . . 18212.6 Resume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18212.7 Quelques resultats . . . . . . . . . . . . . . . . . . . . . . . . . . 182

    12.7.1 Sur lutilisation de pie`ces biaisees . . . . . . . . . . . . . . 18212.7.2 BPP et circuits polynomiaux . . . . . . . . . . . . . . . . 183

    12.8 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 184

    13 Hierarchie polynomiale 18513.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18513.2 Hierarchie polynomiale . . . . . . . . . . . . . . . . . . . . . . . . 186

    13.2.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . 18613.2.2 Premie`res proprietes . . . . . . . . . . . . . . . . . . . . . 18713.2.3 Proble`mes complets . . . . . . . . . . . . . . . . . . . . . 187

  • TABLE DES MATIE`RES 9

    13.3 Quelques proprietes . . . . . . . . . . . . . . . . . . . . . . . . . 18713.4 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 187

    14 Protocoles interactifs 18914.1 Preuves interactives . . . . . . . . . . . . . . . . . . . . . . . . . 189

    14.1.1 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . 18914.1.2 Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . 19014.1.3 Definition formelle . . . . . . . . . . . . . . . . . . . . . . 19014.1.4 Exemple : non-isomorphisme de graphes . . . . . . . . . . 19214.1.5 IP = PSPACE . . . . . . . . . . . . . . . . . . . . . . . . 192

    14.2 Verification probabiliste de preuve . . . . . . . . . . . . . . . . . 19314.2.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . 19314.2.2 NP = PCP(log n, 1) . . . . . . . . . . . . . . . . . . . . . 19314.2.3 Consequences sur la theorie de lapproximation . . . . . . 193

    14.3 Notes bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . 194

  • 10 TABLE DES MATIE`RES

  • Chapitre 2

    Preliminaires

    Dans ce chapitre preliminaire, nous introduisons quelques notions standards :la notion de fonction booleenne, de graphe, darbre, de mot, de langage, decodage, pour en arriver a` la notion de structure et de mode`le en logique dupremier ordre.

    2.1 Alge`bre

    On notera N lensemble des entiers naturels, et Z lensemble des entiersrelatifs. Z est un corps.

    Lorsque p et q sont deux entiers, on notera p mod q le reste de la divisioneuclidienne de p par q, et p div q le quotient : autrement dit, p = q (p div q)+(p mod q). On rappelle que la relation de congruence modulo p est une relationdequivalence : deux entiers n et n sont dans la meme classe si n mod p =n mod p. On notera, comme il en est lhabitude, Zp pour lanneau quotientobtenu en quotientant Z par cette relation dequivalence.

    Zp est un corps lorsque p est un entier naturel premier. En particulier, pourp = 2, Z2 est un (lunique) corps a` deux elements, obtenu en raisonnant modulo2 dans Z. Rappelons que dans Z2, tous les calculs se font modulo 2 : cest-a`-direque lon a 0 + 0 = 0, 0 + 1 = 1 + 0 = 1, 1 + 1 = 0, 1.1 = 1, 1.0 = 0.1 = 0.0 = 0.

    On notera R lensemble des reels, et C lensemble des complexes. R et Csont des corps. On notera R0 lensemble des reels positifs ou nuls. Dautrepart, lorsque K est un corps, on notera K[X] pour lanneau des polynomes a`coefficients sur K.

    2.2 Calculs booleens

    Une fonction booleenne n-aire est une application de {0, 1}n dans {0, 1}.Par commodite, on peut voir {0, 1} comme Z2. Cela nous permettra decrire

    certaines fonctions booleennes tre`s facilement comme des fonctions de Z2n Z2, et aussi comme des polynomes sur Z2.

    11

  • 12 CHAPITRE 2. PRELIMINAIRES

    0 11 0

    0 0 00 1 01 0 01 1 1

    0 0 00 1 11 0 11 1 1

    Fig. 2.1 Table de verites de , et .

    Par exemple : Il ny a que quatre fonctions booleennes unaires (1-aire) : lidentite, et lanegation , qui a` x Z2, associe 1 + x, et les fonctions constantes 0 et 1qui a` x Z2 associent 0 et 1 respectivement.

    Il y a 16 fonctions binaires (2-aire) : parmi ces fonctions, il y a lidentite,la conjonction , qui a` x, y Z2 associe (x, y) = xy, la disjonction quia` x, y Z2 associe (x, y) = x + y + xy, limplication qui a` x, y Z2associe (x, y) = y (x), cest-a`-dire xy + x+ 1, et lequivalence qui a`x, y Z2 associe ( (x, y), (y, x)), cest-a`-dire 1 + x+ y.

    Bien entendu, ces fonctions portent ces noms, car si lon identifie vrai avec 1 etfaux avec 0, elles correspondent a` la fonction logique naturelle associee : parexemple, (x, y) vaut vrai si et seulement si x vaut vrai et si y vaut vrai. Lesymbole correspond donc a` la conjonction logique : voir la figure 2.1

    2.3 Graphes

    Un graphe G = (V,E) est donne par un ensemble V , dont les elements sontappeles sommets, ou nud, et dune partie de E V V , dont les elementssont appeles des arcs. Un chemin de s a` t est une suite (s = s0, . . . , sn = t) denuds tels que, pour 1 i n, (si1, si) soit un arc. Un circuit est un cheminde longueur non nulle dont lorigine concide avec lextremite.

    Si les arcs ne sont pas orientes, cest-a`-dire, si lon conside`re que (u, v) et(v, u) sont equivalents, on dit que le graphe G est non-oriente, et les elementsde E sont appeles des aretes. Lorsque il y a un arete entre u et v, cest-a`-direlorsque (u, v) E, on dit que u et v sont voisins.

    Exemple 2.1 Le graphe (non-oriente) G = (V,E) avec V = {0, 1, . . . , 6} E = {(0, 1), (3, 4), (5, 1), (6, 3), (6, 4)}.

    0

    1

    2

    34

    56

  • 2.4. ARBRES 13

    Un graphe est dit connexe si deux quelconques de ses nuds sont relies parun chemin.

    Exemple 2.2 Le graphe de lexemple 2.1 nest pas connexe.

    2.4 Arbres

    Nous aurons besoin de la notion darbre (etiquete). Les arbres peuvent etrepresentes de plusieurs facons.

    Une facon est de passer par la notion de graphe. Un arbre est un graphenon-oriente connexe et sans circuit. Une feuille est un nud de larbre qui neposse`de quun seul voisin. Un noeud qui nest pas une feuille est dit un noeudinterne.

    Exemple 2.3 (Un arbre) Representation graphique dun arbre, dont les feuillessont les nuds 5, 0, 4 et 2.

    3

    1

    5 0

    4 6

    2

    En fait, presque tous nos arbres seront etiquetes : Soit A un ensemble dontles elements sont appeles des etiquettes. Un arbre etiquete par A est un arbreG = (V,E) et une fonction qui associe a` chaque sommet de V un element de A.

    Une autre facon de definir un arbre est de passer par une definition inductive :par exemple, un arbre etiquete par A peut se definir de la facon suivante : unarbre etiquete par A, et soit un element de A (une feuille), ou un element de A(une racine r) et une liste darbres (ses fils f1, , fk). Sil on prefe`re, les arbresetiquetes correspondent au plus petit ensemble qui contienne A, et tel que sif1, , fk sont des arbres, alors le couple constitue dun element r de A, et dela liste f1, , fk est un arbre.

    Cette dualite entre ces deux facons de definir les arbres, soit inductivement,comme le plus petit ensemble qui contienne quelque chose, et qui soit clos parune operation construisant un nouvel arbre a` partir darbres, soit par les graphes,se retrouvera a` de multiples reprises dans ce document.

    Par ailleurs, a` plusieurs reprises dans ce document, nous aurons besoin dedecrire des arbres. Formellement, dans le cas general, on notera a(f1, , fk)larbre de racine a ayant pour fils les arbres f1, , fk respectivement.

  • 14 CHAPITRE 2. PRELIMINAIRES

    Exemple 2.4 a(e, b(c, d)) designe larbre dont la racine, etiquetee par a posse`dele fils gauche etiquete par e et un fils droit etiquete par b, ayant deux fils etiquetespar c et d.

    Graphiquement, cet arbre peut se represente comme :

    a

    e b

    c d

    Exemple 2.5 Par exemple, si A est lensemble detiquette A = {,}, larbre(a,(b, a)) designe larbre dont la racine, etiquetee par posse`de le fils gauchea et un fils droit etiquete par , ayant pour fils b et a.

    2.5 Alphabets, Mots, Langages

    Nous rappelons maintenant quelques definitions elementaires sur les mots etles langages.

    La terminologie, empruntee a` la linguistique, rappelle que les premiers tra-vaux sont issus de la modelisation de la langue naturelle.

    On fixe un ensemble que lon appelle alphabet. Contrairement a` de nom-breux ouvrages, nous ne supposerons pas necessairement fini.

    Les elements de sont appeles des lettres ou des symboles. Un mot w surlalphabet est une suite finie w1w2 wn de lettres de . Lentier n est appelela longueur du mot w. Il sera note |w|.

    Le mot vide est le seul mot de longueur 0. Un langage sur est un ensemblede mots sur . Lensemble de tous les mots sur lalphabet est note .

    On definit une operation de concatenation sur les mots : la concatenationdu mot u = u1u2 un et du mot v = v1v2 vm est le mot note u.v definipar u1u2 unv1v2 vm, cest-a`-dire le mot dont les lettres sont obtenues enjuxtaposant les lettres de v a` la fin de celles de u. Loperation de concatenationnotee . est associative, mais non-commutative. Le mot vide est un element neutrea` droite et a` gauche de cette operation. On appelle aussi le monode libresur lalphabet .

    On note aussi uv pour la concatenation u.v. En fait, tout mot w1w2 wnpeut se voir comme w1.w2 .wn, ou` wi represente le mot de longueur 1 reduita` la lettre wi. Cette confusion entre les lettres et les mots de longueur 1 estsouvent tre`s pratique.

    Exemple 2.6 Par exemple, si est lensemble = {a, b}, aaab est le mot delongueur 4 dont les trois premie`res lettres sont a, et la dernie`re est b.

  • 2.6. CHANGEMENT DALPHABET 15

    Un mot u est un prefixe dun mot w, sil existe un mot z tel que w = u.z.Un mot u est un suffixe dun mot w sil existe un mot z tel que w = z.u.

    Etant donnes deux langages L et L sur un meme alphabet , leur union,notee L L est definie par L L = {w|w L ou w L}. Leur intersection,notee LL, est definie par LL = {w|w L et w L}. Leur concatenation,notee L.L est definie par L.L = {w|w = w1.w2, w1 L,w2 L}.

    Le complement dun langage L sur lalphabet est le langage Lc defini parLc = {w|w 6 L}.

    2.6 Changement dalphabet

    Il est souvent utile de pouvoir reecrire un mot sur un alphabet en un motsur un autre alphabet : on proce`de par reecriture lettre par lettre.

    Exemple 2.7 Par exemple, si est lalphabet = {a, b, c}, et = {0, 1}, onpeut coder les mots de sur par la fonction h telle que h(a) = 01, h(b) = 10,h(c) = 11. Le mot abab se code alors par h(abab) = 01100110, cest-a`-dire parle mot obtenu en codant lettre par lettre.

    Tre`s formellement, etant donnes deux alphabets et , un homomorphismeest une application de dans telle que

    h() = h(u.v) = h(u).h(v) pour tout mots u et v.Tout homomorphisme est parfaitement determine par son image sur les

    lettres de , et peut setendre aux mots de par

    h(w1w2 wn) = h(w1).h(w2). .h(wn)pour tout mot w = w1w2 wn.

    2.7 Codage, Decodage

    Nous aurons tre`s souvent besoin de coder des mots, des entiers, des listes,des arbres, des graphes . . .par des mots. Il nous faut pour cela parler de codage.

    Formellement, un codage dun ensemble E sur un alphabet est une fonctioninjective de E vers : on notera systematiquement < x > pour le codage dex E.

    En fait, dans beaucoup de contextes, on souhaite implicitement des codagesnaturels : ici, naturel fait reference a` une notion intuitive, difficile a` defi-nir. Cependant, lidee est que lon souhaite quun codage soit facile a` calculer(encoder), et facile a` decoder.

    Si lon veut etre plus precis, on peut par exemple fixer les conventions sui-vantes : on suppose que lon travaille sur des alphabets qui contiennent au moinsdeux symboles, lun note 0, et lautre 1.

    Exemple 2.8 (Codage des entiers) On peut coder les entiers

  • 16 CHAPITRE 2. PRELIMINAIRES

    en base 2 : < x > serait lecriture en binaire de x sur lalphabet = {0,1}.En particulier, < 12 >= 1100.

    en base 10 : < x > serait lecriture usuelle de n sur lalphabet ={0,1, , 9}. En particulier, < 12 >= 12.

    en unaire : < x > serait le mot 1x, cest-a`-dire le mot de longueur x surlalphabet = {1}. En particulier, < 12 >= 111111111111.

    (Sauf mention du contraire) on fixe que tout entier est code en binaire, donccomme un mot de {0,1}.

    On a souvent besoin de coder des paires (ordonnees). On suppose construiteune fonction < ., . > qui a` deux mots u, v sur lalphabet associe un mot< u, v > qui code la paire u, v.

    Exemple 2.9 Par exemple, prenons la convention suivante. On choisit un sym-bole # qui nest pas dans lalphabet . On fixe un homomorphisme h de {#}sur , et on definit < u, v > comme h(u#v) pour tout u, v. Par exemple, lho-morphisme h peut etre celui qui reecrit h(x) en 1x pour x 6= #, et h(#) = 00.

    Ce nest quune facon de faire, dautres sont possibles. Il nous importe dansce qui suit simplement que lon puisse facilement retrouver u et v a` partir dumot < u, v >.

    Une fois que lon sait encoder une paire, on peut encoder des n-uplets : ondefinit pour les mots u, v, w, < u, v, w > par < u, v, w >=,w >, puispour les mots u, v, w, x, < u, v, w, x > par < u, v, w, x >=, x >,. . .etc. On code ainsi toutes les suites de longueur fixee, ou si lon prefe`re toutesles listes de longueur fixee.

    Les suites ou les listes de longueur variables peuvent aussi se coder de cettefacon, mais il est souvent utile de connatre la longueur de la suite. Aussi, il estplus pertinent de fixer le codage suivant :

    < x1, x2, , xn >=Encore une fois, il nous importe simplement dans ce qui suit simplement que

    lon puisse facilement retrouver chacun des xi a` partir du codage de la suite.Toutes ces notions se composent naturellement.

    Exemple 2.10 Par exemple, pour coder une paire dentiers u, v, on utiliserale mot ,< v >,>, cest-a`-dire le codage de la paire dont le premierelement est le codage de u (donc son ecriture en binaire) et le deuxie`me elementle codage de v (donc son ecriture en binaire).

    Exemple 2.11 Par exemple, puisque nous avons vu quun arbre peut se definirinductivement comme une racine et une liste darbres (de fils de la racine), onpeut coder larbre a(e, b(c, d)) par ,,,< d >>>>.

    Les graphes peuvent se coder soit par leur matrice dadjacence, ou par deslistes dadjacence. Nous laissons au lecteur le soin de fixer les details.

  • 2.8. LOGIQUE PROPOSITIONNELLE 17

    2.8 Logique Propositionnelle

    Nous allons maintenant introduire la logique propositionnelle.La logique propositionnelle permet de parler des fonctions booleennes. La

    logique du premier ordre permet de parler de formules mathematiques generales,avec par exemple des quantifications.

    Pour definir formellement la logique, il faut distinguer la syntaxe (le voca-bulaire avec lequel on ecrit) de la semantique (le sens que lon donne a` cettesyntaxe).

    2.8.1 Syntaxe de la logique propositionnelle

    Formellement, on conside`re un ensemble fini P non-vide delements, que lonappelle des variables propositionnelles.

    Une formule propositionnelle (sur P ) est un arbre, dont les feuilles sontetiquetees par les variables propositionnelles de P , dont les nuds internes ontsoit un ou deux fils. Chaque nuds ayant

    un fils est etiquete par , deux fils est etiquete par , , , ou .Si lon prefe`re1, lensemble des formules propositionnelles sur P est le plus

    petit sous-ensemble qui contient P , tel que si F est une formule propositionnelle,alors F aussi, et tel que si F et G sont des formules propositionnelles, alorsF G, F G, F G, et F G aussi.

    Exemple 2.12 Par exemple, larbre (a,(b, a)) est une formule proposition-nelle. On note aussi cet arbre / cette formule a (b a).

    2.8.2 Semantique de la logique propositionnelle

    Une formule propositionnelle ayant n feuilles distinctes decrit une fonctionbooleenne n-aire comme on sy attend.

    Cest-a`-dire formellement : une valuation est une fonction qui associe a`chaque element de P un element de Z2 = {0, 1}, cest-a`-dire une fonction quidecrit la valeur des variables (propositionnelles).

    Pour connatre la valeur (linterpretation) dune formule sur P pour la va-luation , on associe a` (evalue) chaque feuille etiquetee par la variable proposi-tionnelle p par (p) et on propage les valeurs de bas en haut : en chaque nudinterne etiquete par g {}, (respectivement g {,,,}, on evalue cenud par g(f1) (resp. g(f1, f2)), ou` f1 est levaluation de son fils (resp. f1 etf2 sont les evaluations de son fils droit et de son fils gauche. La valeur de lafonction se lit alors comme levaluation de la racine a` lissu de ce processus.

    Exemple 2.13 Par exemple, pour la valuation (a) = 0, (b) = 1, la formulea (b a) sevalue en ((a)),((b), (a)) = (0,(1, 0)) = (0, 0) = 0.

    1Il ne sagit que dune instance de notre remarque sur les differentes facon de definir unarbre

  • 18 CHAPITRE 2. PRELIMINAIRES

    On peut assez facilement se convaincre du resultat suivant

    Proposition 2.1 Toute fonction booleenne n-aire f , donc de Z2n Z2, peutsecrire comme un polynome a` n-variables a` coefficients dans Z2.

    En fait, si x1, , xn sont ses variables, la fonction f secritf(x1, , xn) =

    x1,x2, ,xn{0,1}

    f(x1, x2, , xn)x1.x2 xn,

    ou` xi est xi quand xi vaut 1, et 1 + xi lorsque xi vaut 0.Le produit . : x, y 7 x.y dans Z2 correspondant a` la fonction (x, y), x 7

    1 + x a` la fonction (x), et la somme + : x, y 7 x + y correspondant a` lafonction (((x),(y))), en developpant le polynome f dans le corps Z2 et eneffectuant ces substitutions de sommes et de produits par ces expressions, onobtient :

    Corollaire 2.1 Toute fonction booleenne n-aire correspond a` une formule boo-leenne : pour toute fonction booleenne n-aire, on peut construire une formulebooleenne qui la decrit.

    Il y a au moins une, et en fait toujours une infinite de formules booleennesqui correspond a` la fonction : par exemple, a peut aussi secrire (a)(aa),ou comme (a) (a a) (a a), etc. . .Exemple 2.14 Considerons la fonction booleenne selecteur qui nous sera utilepar la suite, definie par S(1, y, z) = y, et S(0, y, z) = z. Cette fonction S(x, y, z)correspond au polynome x.y + (1 x).z, qui est decrit par la formule booleenne(((x), y),(x, z)).

    La logique propositionnelle est donc comple`te pour les fonctions booleennes :elle permet dexprimer toutes les fonctions booleennes.

    2.9 Structures du premier ordre

    Elle reste cependant tre`s limitee.Nous allons faire un pas vers un formalisme plus general, en autorisant la no-

    tion de symbole de fonction et de symbole de relation. Nous ne presenterons pasen fait toute la logique du premier ordre mais seulement la notion de structure.

    2.9.1 Signature

    Une signature = (F ,R) (dun langage du premier ordre) est la donnee dedeux ensembles de symboles : les elements du premier ensemble F sont appelesles symboles de fonctions ; les elements du second ensemble R sont appeles lessymboles de predicats (aussi appeles symboles de relations). A chaque symbolede fonction et de predicat est associe une arite, cest-a`-dire un entier (qui seveut un nombre darguments). Une fonction darite 0 (sans argument) sappelleune constante.

  • 2.9. STRUCTURES DU PREMIER ORDRE 19

    Exemple 2.15 Par exemple, = ({0,1,+,}, {=}) correspond a` la signaturequi posse`de 4 symboles de fonctions (0 et 1 darite 0, + darite 2, et darite2) et un symbole de relation = darite 2.

    Pour eviter nombre de proble`mes techniques, on va faire les hypothe`ses sui-vantes sur les signatures que lon conside`re dans ce document.

    1. On ne conside`re que des signatures qui ont au moins deux symboles deconstantes 0 et 1, et un symbole de relation = darite 2.

    2.9.2 Terme clos

    Un terme (clos) est un arbre, dont les feuilles sont etiquetees par les symbolesde constantes, dont les nuds internes ayant k fils sont etiquetes par un symbolede fonction ou de relation darite k.

    Exemple 2.16 Par exemple, +(1,(0,1)) est un terme clos sur la signatureprecedente. On convient de noter aussi cet arbre 1+ (0 1).

    Exemple 2.17 Par exemple, = (1,0) est un terme clos sur la signature prece-dente. On convient de noter aussi cet arbre 1 = 1.

    2.9.3 Semantique

    Classiquement, on definit la semantique de la facon suivante :Une realisation dune signature = (F ,R) (encore appele mode`le de ,

    ou encore structure (du premier ordre) sur ) est la donnee dun ensemble nonvide M , appele ensemble de base, et pour chaque symbole de fonction f Fdarite n dune fonction [[f ]] : Mn M , appelee interpretation de f , et pourchaque symbole de predicat r R darite n dun sous-ensemble [[r]] de Mn,appele interpretation de r.

    Exemple 2.18 Par exemple, une realisation de la signature = ({0,1,+,}, {=}) correspond a` lensemble de base N des entiers naturels, ou` 0 est interpretepar lentier 0, 1 par 1, + par laddition, par la soustraction, et = par legalitesur les entiers.

    Exemple 2.19 Une autre une realisation de cette signature correspond a` len-semble de base R des reels, ou` 0 est interprete par le reel 0, 1 est interprete parle reel 1, + par laddition, la soustraction, et = par legalite sur les reels.

    Dans le contexte de calculabilite et de complexite qui nous interesse dansce document, il est en fait plus simple de considerer quen fait on a que desfonctions. Nos structures contiennent au moins deux elements notes 0 et1. On convient que 1 sinterpre`te par vrai et 0 par faux. A un symbole depredicat r R darite n, plutot que dassocier un sous-ensemble de Mn, onassocie une fonction [[r]] (la fonction caracteristique de cet ensemble) qui vautsoit linterpretation de 0, notee vrai, soit linterpretation de 1, notee faux.

  • 20 CHAPITRE 2. PRELIMINAIRES

    Le sous-ensemble se relie a` cette fonction par le fait que cette dernie`re est sonensemble caracteristique : [[r]] vaut vrai en un n-uplet si et seulement si ce n-uplet est dans le sous-ensemble [[r]], et faux sinon. Cest la convention que lonfixe pour la suite.

    On fixe aussi les conventions suivantes que lon peut qualifier de bon sens.1. Dans les structures considerees, linterpretation de legalite est legalite :

    cest-a`-dire [[ = ]] est la fonction a` deux arguments qui vaut vrai ssi sesdeux arguments sont les memes.

    2. Dans le meme esprit, on utilisera les symboles de fonctions et de predicatsusuels avec leurs interpretations usuelles : +, sinterpre`te comme laddition(cest-a`-dire formellement [[ + ]] est laddition), comme la soustraction,= pour legalite, etc.

    3. On notera 1 ou vrai, pour linterpretation de 1 (cest-a`-dire pour [[1]]) et0 ou faux, pour celle de 0. On suppose que ces interpretations vrai etfaux ne correspondent pas a` la meme valeur.

    Etant donnes un terme t linterpretation du terme t, notee [[t]] est un elementde M qui se definit inductivement comme on sy attend : si t est un symbolede constante c alors [[t]] est [[c]] ; sinon t est de la forme f(t1, , tk), pour unsymbole de fonction ou de relation f , et alors [[f ]] est [[f ]]([[t1]], , [[tk]]) .Exemple 2.20 Par exemple, sur les structures des deux exemples precedentsterme (1+ 1) + 1, cest-a`-dire larbre +(+(1,1),1), sinterpre`te par lentier oule reel 3.

    Exemple 2.21 Par exemple, sur les structures des deux exemples precedents,le terme 1 = 0, cest-a`-dire larbre = (1,0), sinterpre`te par faux, cest-a`-dire0.

    Nous noterons souvent une structure par M = (M,f1, , fu, r1, , rv)cette notation designe la structure de signature ({f1, , fu}, {r1, , rv}) surlensemble de base M , ou` chaque fonctions fi et chaque relation ri posse`de soninterpretation usuelle sur M .

    Exemple 2.22 Par exemple, sur la structure M = (N,0,1,+,=), le terme(1+ 1) + 1 sinterpre`te par lentier 3.

    2.9.4 Combinaisons booleennes

    Un terme booleen est soit le terme 1, soit le terme 0, soit un terme dont laracine est etiquete par un symbole de relation. Un terme booleen sinterpre`tedonc soit par vrai (note aussi 1) soit par faux (note 0).

    On va fixer en outre la convention suivante :1. Les structures considerees posse`dent au moins un terme S(x, y, z) dont

    linterpretation [[S]] verifie [[S]](1, y, z) = y et [[S]](0, y, z) = z.Puisque x correspond alors a` [[S]](x, 1, 0), (x, y) alors a` [[S]](x, y, 1) et

    (x, y) alors a` [[S]](x, 0, y), cela permet daffirmer que dans la structure toutecombinaison booleenne de termes booleens sexprime par un terme.

  • 2.10. NOTES BIBLIOGRAPHIQUES 21

    2.9.5 Isomorphisme de structures

    Comme souvent, on raisonne souvent a` isomorphisme pre`s.Formellement : soient X et Y deux realisations dune meme signature .

    Un isomorphisme est une fonction injective i de lensemble de base de X verslensemble de base de Y telle que [[f ]](i(x1), , i(xk)) = i(x0) dans Y a` chaquefois que [[f ]](x1, , xk) = x0 dans X, pour chaque symbole de fonction ou depredicat f . Ici k est larite de f .

    2.10 Notes bibliographiques

    Ce chapitre ne contient que des choses tre`s standards en mathematique,ou en logique mathematique. Pour les arbres et les graphes, on ne peut queconseiller lexcellent cours INF421 de lecole polytechnique. Pour la partie lo-gique, le texte de ce chapitre est en fait tre`s fortement inspire de leurs presen-tations dans [Cori and Lascar, 2003], [Dowek, 2008], [Gurevich, 2000]ou encoredans [Poizat, 1995]

  • 22 CHAPITRE 2. PRELIMINAIRES

  • Chapitre 3

    Quelques algorithmessequentiels

    En guise daperitif, nous presentons quelques algorithmes interessants, etcertaines de leurs proprietes. Cela nous permet de discuter des questions lieesa` dune part ce quest un algorithme, et sur quel type de structures ils fonc-tionnent. Dautre part, cela nous permet de discuter des questions liees a` laterminaison des algorithmes, et a` leur complexite en temps.

    Nous en profiterons finalement pour formaliser et clarifier un peu la facondont nous ecrivons les algorithmes.

    3.1 Quelques exemples

    3.1.1 Lalgorithme dEuclide

    Lalgorithme dEuclide permet de calculer le plus grand commun diviseur,le pgcd, de deux entiers a et b.

    Il se base sur le principe que le pgcd de a et de b est aussi le pgcd de b etde a mod b. Puisque a mod b est toujours plus petit que b, la suite des restesdecrot, et finit par atteindre 0. Dans ce cas, le dernier reste est le pgcd.

    Autrement dit, lalgorithme secrit :

    read < a, b >repeati f b = 0 then outaelse par

    a bb a mod b

    endparuntil out!=undefwrite out

    23

  • 24 CHAPITRE 3. QUELQUES ALGORITHMES SEQUENTIELS

    Ici, on note par endpar lexecution en paralle`le, cest-a`-dire simultane-ment : on execute les deux instructions a b et b a mod b en paralle`le,ce qui evite dutiliser une variable intermediaire pour effectuer loperation. Onsuppose (ici et dans toute la suite), que out est une variable particulie`re, quivaut initialement la valeur undef (qui signifie non defini).

    Cet algorithme fonctionne si a et b sont des entiers, mais en fait aussi surnimporte quel anneau euclidien : par exemple, si a et b sont des polynomes deK[X], ou` K est un corps.

    Formellement, un anneau euclidien A est un anneau commutatif inte`gre munidune division euclidienne : pour tout a, b A, il existe q, r A tel que a = bq+r,et il existe dautre part une fonction de A {0} N telle que soit r = 0 ou(r) < (b).

    Pour les entiers relatifs, peut etre pris comme la valeur absolue. Pour K[X],on peut prendre comme la fonction qui associe a` un polynome son degre. Lesanneaux euclidiens incluent aussi par exemple les entiers de Gauss, cest-a`-direZ[i] avec (a+ ib) = a2 + b2, avec une fonction adequate.

    Lexistence de la fonction garantit la terminaison de lalgorithme, puis-quelle decrot a` chaque etape.

    3.1.2 Lalgorithme de Syracuse

    Lalgorithme precedent termine en raison de lexistence dune fonction quelon sait prouver decroissante.

    Lalgorithme suivant est plus curieux, car il termine, sans que lon ne sachevraiment pourquoi.

    read nrepeati f n = 1 then out1else i f n mod 2=0 then nn div 2else n 3n+1

    until out!=undefwrite out

    En fait, a` ce jour, on a trouve aucun entier n pour lequel il ne termine pas,mais on ne connat pas non plus aucune preuve du fait que lalgorithme terminepour tout n.

    Bien entendu, sil termine, cest avec la reponse 1. Mais rien ne permetsimplement daffirmer quil doit necessairement terminer.

    Cest le proble`me de la suite de Syracuse, discute pour la premie`re fois parCollatz en 1928, qui a mene a` de nombreux travaux de recherche dans les annees1960.

    3.1.3 Lensemble de Mandelbrot

    Considerons lalgorithme suivant qui fonctionne sur le corps des complexes :c et z sont des complexes.

  • 3.1. QUELQUES EXEMPLES 25

    read cz 0repeat

    i f | z |>2 then out trueelse z z 2 + c

    until out!=undefwrite out

    Lalgorithme termine pour certains c, et ne termine pas pour dautre. Len-semble des c pour lequel il termine correspond a` lensemble de Mandelbrot.

    Il sagit dun ensemble fractal que lon peut sait prouver compact, connexe,dinterieur non vide. Il est conjecture quil est localement connexe.

    Cet algorithme montre que lensemble de Mandelbrot est recursivement enu-merable sur les complexes : on sait construire un algorithme qui termine pour cdans lensemble, mais qui ne termine pas pour c dans son complementaire.

    En fait, on sait prouver par des arguments de topologie quil est indecidable,cest-a`-dire :

    Theore`me 3.1 Il nexiste aucun algorithme sur les complexes (avec la signa-ture, cest-a`-dire les operations de lalgorithme precedent) qui termine toujours,et qui repond vrai pour c dans lensemble de Mandelbrot, et faux pour c dansson complementaire.

    Cest equivalent au resultat suivant :

    Theore`me 3.2 Le complementaire de lensemble de Mandelbrot nest pas re-cursivement enumerable sur les complexes.

    3.1.4 Algorithme de Bissection

    Considerons une fonction f : [0, 1] R telle que f(0) < 0 et f(1) > 0. Si lafonction est continue, le theore`me des valeurs intermediaires permet daffirmerquil existe une valeur x telle que f(x) = 0.

    Comment peut-on approcher cette valeur ? Lalgorithme suivant en retourneune valeur approchee par bissection a` la precision e pre`s.

    read epara0b1endparrepeat

    let m = (a+b)/2 ini f | f (m) | < e then out melse i f f (m)>0 then b melse a m

  • 26 CHAPITRE 3. QUELQUES ALGORITHMES SEQUENTIELS

    until out!=undefwrite out

    Ici let var expr instruction consiste a` remplacer syntaxiquement dansinstruction chaque occurrence de var par expr.

    3.1.5 Le proble`me du sac a` dos reel

    On se donne des poids dobjets en kg, et lon veut savoir si lon peut remplirexactement un sac qui supporte un total de 1 kg.

    Formellement, on se donne des reels x1, x2, , xn R et on souhaite decidersil existe un sous ensemble S {1, 2, , n} tel que iS xi = 1read < n, x >j 1repeat

    [ sousr ou t in e d enumeration : avec l en t r e e (n, j) ,produ i re bj l a j e`me s u i t e de {0, 1}n ]b bji f

    ib xi = 1 then outvraielse i f j = 2n then outfauxelse j j +1

    until out!=undefwrite out

    Ici la notation [ description ] designe une sous-procedure : du codelaisse au lecteur qui a pour effet deffectuer loperation indiquee par description.

    Cet algorithme necessite dans le pire cas O(2n) operations, et utilise desoperations qui consistent en des additions, et des tests degalite : il sagit dunalgorithme sur la structure (R,0,1,+,,=).

    En fait, on peut prouver que sur cette structure, on ne peut pas faire mieux :

    Theore`me 3.3 Il nexiste pas dalgorithme sur la structure (R,0,1,+,,=)qui resout le proble`me en temps polynomial.

    3.1.6 Equations polynomiales a` une inconnue

    Si lon se donne un polynome P de degre 2 de R[X], il est de la formeP (X) = aX2 + bX + c. On enseigne au lycee, comment determiner si un telpolynome posse`de ou non une racine reelle, et meme a` calculer explicitement lessolutions dans ce cas, en utilisant des formules qui font intervenir des radicaux.

    Cela se generalise tre`s mal a` des degres superieurs, si lon veut explicitementles solutions : il est connu (voir un cours sur la theorie de Galois) que les solutionsne sont pas representables par radicaux dans le cas general pour des polynomesde degre 5.

    Mais si seulement lexistence de racines reelles nous interesse, la situationest plus simple. Lalgorithme suivant fonctionne pour les polynomes de degre 2.

  • 3.1. QUELQUES EXEMPLES 27

    read < a, b, c >repeat

    i f b2 4 a c > 0 then outvraielse out faux

    until out!=undefwrite out

    On peut en construire un qui prend un polynome de degre arbitraire et quidetermine sil posse`de une racine reelle ou non :

    Theore`me 3.4 Il existe un algorithme qui determine si un polynome P de R[X]de degre arbitraire posse`de ou non une racine reelle.

    Passons maintenant a` plusieurs inconnues. Commencons par le cas simple :des equations lineaires.

    3.1.7 Equations lineaires a` n-inconnues : lelimination deGauss

    Lalgorithme de Gauss est un grand classique pour resoudre les syste`mesdequations lineaires.

    On va se limiter a` lexistence de solutions : on se donne un tableau A[i, j] etun tableau B[i] de rationnels, avec 1 i n, 1 j m, et lon veut savoir sile syste`me A[1, 1]x1 + A[1,m]xm = B[1]

    A[n, 1]x1 + A[n,m]xm = B[n]admet une solution rationnelle.

    Lalgorithme de Gauss permet de repondre a` la question :

    read < A,B >i 1j 1repeatwhile ( i m and j n) do

    // Trouver l e p i v o t dans l a colonne j ,// en par tan t de l a l i g n e i :maxi ifor k i+1 to m do

    i f abs (A[ k , j ] ) > abs (A[ maxi , j ] ) then maxi kendfori f A[ maxi , j ] 6= 0 then

    [ e changer l i g n e i et maxi de A et B ]// A[i, j] con t i en t l ancienne va l eu r de A[ maxi , j ] .[ d i v i s e r chaque c o e f f . de l a l i g n e i de A et Bpar A[i, j] ]

  • 28 CHAPITRE 3. QUELQUES ALGORITHMES SEQUENTIELS

    // A[i, j] a maintenant l a va l eu r 1 .for u i+1 to m do

    [ s o u s t r a i r e A[u, j] l i g n e i de l a l i g n e u de Aet B ]

    // A[u, j] e s t maintenant 0endfori i + 1

    endifelse out fauxj j + 1

    endwhileout vraiuntil out!=undefwrite out

    Cet algorithme fonctionne sur les rationnels, sur les reels, les complexes, eten fait sur tout corps K.

    Limplementation plus haut fonctionne en temps O(n3). On sait faire mieux :Strassen a propose un algorithme en temps de lordre de O(n2.81). Le meilleuralgorithme connu fonctionne en temps O(n2.376).

    Lorsque lon travaille sur un corps fini, comme Z2, il y a un autre algorithme,que lon pourrait qualifier de brutal : essayer toutes les valeurs possibles pour lesvariables x1, , xm, (il y en a 2n), et regarder si cela correspond a` une solution.Cet algorithme de complexite (2n) est nettement moins efficace (en temps) quecelui ecrit plus haut.

    Sur un corps qui nest pas fini (cest-a`-dire qui na pas un nombre fini dele-ments), cet algorithme brutal ne fonctionne pas, car on ne peut pas enumerertoutes les valeurs possibles.

    3.1.8 Equations polynomiales a` n-inconnues

    Si lon se donne un syste`me dequations polynomiales cette fois, la situationdevient plus delicate.

    On se donne un ensemble de n-polynomes P1, , Pn de K[X1, , Xm], etlon veut savoir si le syste`me P1, , Pn posse`de une solution, cest-a`-dire siP1, , Pn posse`dent une racine commune dans Km.

    Sur les reels, la situation est la suivante.

    Theore`me 3.5 Il existe un algorithme exponentiel (en max(n,m)) pour re-soudre ce proble`me sur le corps R des reels. Aucun algorithme polynomial nestconnu.

    En fait, ce proble`me est NPR complet pour la structure (R,0,1,+,, , /,=,

  • 3.2. UNE DISCUSSION DE COSMETIQUE 29

    Sur le corps fini Z2, la situation est la suivante.

    Theore`me 3.6 Il existe un algorithme exponentiel pour resoudre ce proble`mesur le corps Z2. Il en existe un algorithme polynomial si et seulement si P = NP.

    En fait, lalgorithme exponentiel consiste en lalgorithme brutal deja` evoquepour les syste`mes lineaires : on essaye pour tous les m-uplets de valeurs.

    Le deuxie`me resultat vient du fait que le proble`me sur Z2 est NP-complet(au sens classique usuel).

    3.2 Une discussion de cosmetique

    3.2.1 Notre ecriture des algorithmes

    Les algorithmes precedents sont tous des algorithmes qui prennent en entree(le codage de) certaines entrees et qui produisent en sortie un resultat, code dansune variable particulie`re que nous notons out. Celle-ci est initialisee a` la valeurundef, qui signifienon defini. De`s que la variable out est affectee, lalgorithmesarrete.

    Autrement dit, nos algorithmes sont de la forme :

    read < i n i t i a l i s a t i o n s >repeat< i n s t r u c t i o n s>

    until out!=undefwrite out

    Puisque dans ce document, nous considerons des algorithmes qui ne sont pasreactifs (qui ninteragissent pas avec leur environnement si ce nest lors de latoute premie`re instruction read, et lors de leur affichage final du resultat), celanest pas restrictif.

    Dans cette ecriture, plus precisement :< initialisations > code en fait letat initial des variables.Dans nous avons deja` utilise la construction let var expr

    in instruction qui est du pur sucre syntaxique : cest simplement un moyencommode de noter le resultat du remplacement dans instruction de chaqueoccurrence de var par expr.

    Nous avons deja` aussi discute de la notation [ ] quiconsiste a` laisser au lecteur le soin de remplir les details, de facon a` produire uncode qui realise ce qui est decrit.

    3.2.2 Etats elementaires

    En fait, si lon veut parler de nombre detapes, cest-a`-dire de temps dexe-cution, il faut preciser un peu ce que lon appelle etape.

    Clairement, on sattend a` ce que le code

  • 30 CHAPITRE 3. QUELQUES ALGORITHMES SEQUENTIELS

    for k 1 to m do< i n s t r u c t i on>

    endfor

    ne corresponde pas a` une etape, mais plutot a` m etapes (en fait O(m) etapesserait aussi acceptable), alors travaillons un tout petit peu.

    Instruction par

    On a deja` utilise, et on utilisera la syntaxe par endpar pour indiquer que les k instructions sont effectuees en paralle`le.

    Linteret pratique de cette operation est de pouvoir faire par exemple desechanges de variables sans passer par des variables intermediaires :

    Par exemple, echanger a et b correspond a`

    para bb a

    endpar

    On notera aussi {< instruction1 >< instruction2 >} pourpar endpar

    Sequence

    En fait, on utilise un principe implicite dans nos programmes, et dans denombreux langages de programmation : le fait que deux instructions qui sesuivent doivent seffectuer lune apre`s lautre.

    Autrement dit, le fait que lorsque lon ecrit

    < i n s t r u c t i on>< i n s t r u c t i o n >

    on effectue puis .A un moment donne, lalgorithme peut effectuer lune des instructions, mais

    pas les deux : ce qui est implicite est que dans une machine sequentielle, estquil y a quelque part une variable, que lon notera ctl state qui code quelle estlinstruction courante.

    Pour cela on va supposer quil y a toujours une variable ctl state. On supposepar ailleurs que lon numerote les instructions de facon unique : autrement dit,un programme devient une suite pi1, pi2, , pik dinstructions. pii est linstructionnumero i. On indiquera parfois explicitement les indices a` gauche comme dans :

    1 < i n s t r u c t i on>2 < i n s t r u c t i o n >3 . . .

    En fait, le code complet correspondant au code precedent est :

  • 3.2. UNE DISCUSSION DE COSMETIQUE 31

    1 i f ctl state = 1 then {< i n s t r u c t i on> ctl state2}2 else i f ctl state = 2 then {< i n s t r u c t i o n > ctl state3}3 . . .

    En dautres termes, chaque ligne de numero i est en faitFSM(i,,i+1) ou` FSM(i,,j) designe linstructionif ctl state=i then { ctl state j}.

    Nous utiliserons la construction seq . . .endseq dans la suite, quand nousvoulons insister sur le fait quil existe implicitement une variable ctl state quiest mise a` jour en chaque instruction en ctl ctl state+ 1, sauf pour les ins-tructions qui la modifient explicitement. Nous noterons ainsi

    seq< i n s t r u c t i on>< i n s t r u c t i o n >endseq

    pour le code precedent.

    Boucle for

    En fait, fort des remarques precedentes, les boucles for peuvent etre elimineesdans chacun de nos codes.

    Par exemple, on peut voir

    1 for k 1 to m do2 < i n s t r u c t i on>3 . . .4 endfor5 . . .

    comme un synonyme de

    i f ctl state = 1 then {k1 ctl state2}else i f ctl state = 2 and ( k m) then{< i n s t r u c t i on> ctl state3}

    . . .else i f ctl state = 2 and (k>m) then ctl state5else i f ctl state =4 then {kk+1 ctl state2}. . .

    Boucle while

    De meme

    1 while 2 < i n s t r u c t i on>

  • 32 CHAPITRE 3. QUELQUES ALGORITHMES SEQUENTIELS

    3 . . .4 endwhile5 . . .

    est un synonyme de

    1 i f ctl state = 1 and not {ctl state5}2 else i f ctl state = 1 then3 {< i n s t r u c t i on> ctl state2}4 . . .

    Resultat final

    Rappelons que les instructions sont englobees dans une boucle de type

    repeat< i n s t r u c t i o n s>

    until out!=undef

    Si lon fait cette manipulation systematiquement sur le code ,on elimine toutes les instructions while et for dans nos codes, et aussi toutesles sequences dinstructions, remplacees par des suites de if then else et depar endpar imbriquees.

    Dautre part, le nombre diterations de la la boucle englobante

    repeat< i n s t r u c t i o n s>

    until out!=undef

    correspondra bien alors au nombre detapes de , cest-a`-dire autemps de lalgorithme, dans le sens ou` lon lentend intuitivement (a` une constantemultiplicative pre`s), pour le programme obtenu.

    Remarque 3.1 On voit que chacun des algorithmes precedents peut en faitsecrire uniquement avec des if then else, par endpar et des affectations .Nous verrons dans le chapitre suivant, que cest le cas de tout algorithme. Nousverrons en outre, que tout algorithme peut secrire sous une forme normalisee.

    3.3 Notes bibliographiques

    Les exemples de ce chapitre sont inspires de ceux de [Gurevich, 2000] (pourEuclide), de [Wolper, 2001] (pour Syracuse), de [Blum et al., 1998] et leur re-formulation dans [Arora and Barak, 2009] (pour Mandelbrot et le proble`me dusac a` dos), dun expose de Gurevitch (pour Bissection), de [Poizat, 1995] (pourles equations polynomiales et lineaires), ainsi que de Wikipedia (en particulierpour le code de lelimination de Gauss).

  • 3.3. NOTES BIBLIOGRAPHIQUES 33

    La section relative a` la reecriture des algorithmes est un peu inspiree de[Borger and Stark, 2003], qui utilise un langage graphique, peut etre plus clairque nos discussions.

  • 34 CHAPITRE 3. QUELQUES ALGORITHMES SEQUENTIELS

  • Chapitre 4

    Quest-ce quun algorithmesequentiel ?

    4.1 Introduction

    Nous allons tenter dans ce chapitre de definir formellement la notion dalgo-rithme. Nous allons pour cela utiliser les idees de [Gurevich, 2000].

    Nous nous restreignons dans ce chapitre aux algorithmes sequentiels (cest-a`-dire sur une seule machine et un seul processeur), non reactifs et deterministes(cest-a`-dire sans interaction avec lenvironnement au cours du fonctionnement).

    Nous allons enoncer un certain nombre de postulats, que doivent verifier lesalgorithmes.

    Exemple 4.1 (Algorithme dEuclide) Lalgorithme dEuclide, qui nous ser-vira dillustration tout au long de ce chapitre, correspond a` lalgorithme sui-vant :

    read < a, b >repeati f b = 0 then out aelse par

    a bb a mod b

    endparuntil out!=undefwrite out

    ou` par endpar designe la mise en paralle`le.

    35

  • 36 CHAPITRE 4. QUEST-CE QUUN ALGORITHME SEQUENTIEL ?

    4.2 Premier postulat

    Le premier postulat affirme quun algorithme correspond a` une suite detats,et a` des transitions entre ces etats : lidee est que les etats correspondent a` desdescriptions instantanees de lalgorithme.

    Postulat 1 (Temps sequentiel) A tout algorithme (non-deterministe sequen-tiel) A est associe un syste`me de transitions, cest-a`-dire,

    un ensemble S(A), dont les elements sont appeles des etats (parfois confi-gurations),

    un sous-ensemble I(A) S(A) dont les elements sont dits initiaux, et une application A : S(A) S(A) que lon appelle evolution en un pasde A.

    Une execution du syste`me de transition est une suite X0, X1, , Xn, ou` X0 est un etat initial (X0 I(A)), chaque Xi est un etat (Xi S(A)), etXi+1 = A(Xi) pour tout i. Lorsque X est une configuration, on appelle A(X)sa configuration successeur.

    Exemple 4.2 Dans lalgorithme dEuclide, a` un instant fixe, a, b, et out pos-se`dent une certaine valeur. Le triplet de ces valeurs peut etre vu comme un etat.Maintenant, les etats initiaux, sont ceux au debut de lexecution. LapplicationA est celle qui decrit levolution de lalgorithme : elle associe a` letat a` uncertain temps a` letat au temps dapre`s.

    4.3 Second postulat

    Il nous faut maintenant dire que les etats correspondent a` quelque chose quelon sait decrire en langage mathematique : le bon formalisme pour cela est lanotion de structure du premier ordre (voir le chapitre 2)

    Postulat 2 (Etats abstraits) Les etats de A correspondent a` des struc-tures du premier ordre.

    Les etats sont tous sur la meme signature. La fonction devolution en un pas A ne modifie pas lensemble de basedaucun etat.

    S(A) et I(A) sont clos par isomorphisme. De plus, tout isomorphisme deX vers Y est un isomorphisme de A(A) vers A(Y ).

    Autrement dit, le premier point dit que les etats se decrivent par des struc-tures du premier ordre. La pratique des mathematiques depuis plusieurs sie`clesmontre quune situation peut se decrire fide`lement avec le langage des mathe-matiques, cest-a`-dire avec la logique mathematique. Lexperience montre quela logique du premier ordre (la seule introduite dans ce document) est suffisantepour decrire les algorithmes.

  • 4.4. STRUCTURES VERSUS MEMOIRE 37

    En pratique, on decrit un algorithme en utilisant une signature finie fixee.Le deuxie`me point permet alors dexprimer que lon travaille sur une signaturefixee, qui ne varie pas tout au long de lexecution de lalgorithme.

    Entre deux etats, la seule chose qui change est linterpretation de certainesfonctions ou relations, mais pas lensemble de base. Cest le sens du troisie`mepoint.

    Exemple 4.3 Dans notre algorithme dEuclide, les etats correspondent a` desstructures du premier ordre sur la signature

    = ({a, b, out,mod}, {=})constituee de trois symboles de constantes a, b et out et du symbole de fonctionmod. Par definition, une structure sur cette signature correspond au choix dunensemble de base (par exemple les entiers), dun choix pour linterpretation dela fonction mod (loperation reste de la division euclidienne sur les entiers), etdune valeur dans cet ensemble de base pour chacun de ces symboles, cest-a`-diredun choix de la valeur de a, b, out, i.e. dun triplet. Les transitions entre etatsne modifient que linterpretation des valeurs a, b, et out.

    Le dernier point, qui peut paratre plus mysterieux, dit en fait simplementque lon raisonne toujours a` isomorphisme pre`s : en fait, cest naturellement lecas, donc dans un premier temps, on peut oublier cette assertion. Si lon veutmieux comprendre, plus concre`tement, on exprime en fait que lon travaille a` unniveau dabstraction fixe, comple`tement decrit par lalgorithme : un algorithmenest pas autorise a` dependre de representations internes de lalgorithme qui nesont pas decrites par lalgorithme. En langage logique, les details en lesquelslalgorithme depend, doivent etre exprimes par le type disomorphisme de letat.

    En pratique, on peut distinguer les symboles de fonctions ou de relationsstatiques de ceux dynamiques : un symbole de fonction ou de relation est dyna-mique si son interpretation peut varier dun etat a` son successeur. Il est statiquedans le cas contraire.

    Exemple 4.4 Dans notre algorithme dEuclide, les symboles de constantes a, bet out sont dynamiques : la valeur de a, b et de out peut changer dune etapea` la suivante. Le symbole de fonction mod est statique : linterpretation de lafonction mod reste fixee dune etape a` letape suivante.

    4.4 Structures versus memoire

    En fait, en abstrayant autour de lexemple de lalgorithme dEuclide, il esttre`s pratique de voir une structure comme une certaine memoire : si a estun symbole de constante (cest-a`-dire un symbole de fonction de la signature darite 0), on peut voir a comme le nom dun variable : sa semantique [[a]]correspond a` sa valeur.

    Plus generalement : si f est un symbole de fonction darite k, son in-terpretation [[f ]] est une fonction de Mk dans M : on peut voir cette fonction

  • 38 CHAPITRE 4. QUEST-CE QUUN ALGORITHME SEQUENTIEL ?

    comme un tableau de dimension k. Aussi, etant donne un k-uplet m delementsde M , une paire (f,m) sera appelee emplacement. On appelle contenu la valeurde [[f ]](m), que lon notera parfois [[(f,m)]] : on peut voir (f,m) comme desi-gnant lelement dindice m du tableau f : son contenu [[(f,m)]] correspond a` sasemantique [[f ]](m).

    4.5 Mises a` jour

    Dans cet esprit, nous avons aussi besoin dune notation pour les mises a`jour : si (f,m) est un emplacement, et si b est un element de M , alors on noterale triplet (f,m, b) aussi par (f,m) b, et on appelle un tel triplet une mise a`jour. Une mise a` jour est dite triviale si [[f ]](m) = b. Executer une mise a` jour(f,m) b consiste a` changer [[f ]](m) en b.

    Deux mises a` jour sont contradictoires si elles font reference au meme em-placement, mais elles sont distinctes.

    Exemple 4.5 (f,m) 1 et (f,m) 0 sont deux mises a` jour contradictoires.

    Un ensemble de mises a` jour est consistant sil ne contient pas de mises a` jourcontradictoires. Pour executer un ensemble de mise a` jour consistant, on executesimultanement toutes les mises a` jour de lensemble. Le resultat de lexecutionde lensemble de mises a` jour sur la structure X sera note X +.

    Passer dun etat a` un autre correspond a` faire des mises a` jour :

    Lemme 4.1 Si X et Y sont deux structures de meme vocabulaire et de memeensemble de base, il existe un unique ensemble de mises a` jour non trivialesconsistantes tel que Y = X +.

    Demonstration: est lensemble des mises a` jour (f,m) b, pour tousles f et m tels que [[f ]](m) diffe`rent dans X et dans Y , avec b choisi comme lavaleur de [[f ]](m) dans Y . Notons que lensemble obtenu est bien consistant.

    Cet ensemble sera note Y X. En particulier, lorsque X est un etat, onnotera

    (A,X) = A(X)X,

    cest-a`-dire lensemble des mises a` jour qui correspondent a` passer de letat Xa` son successeur.

    En fait, cet ensemble est bien defini a` isomorphisme pre`s. Cest ce que dit le resultat techniquesuivant, que lon peut ignorer dans un premier temps.

    Lemme 4.2 Supposons que i soit un isomorphisme de letat X de A sur un etat Y de A. Eten-dons i de la facon naturelle pour que son domaine contienne aussi les uplets delements et doncles mises a` jour. Alors (A, Y ) = i((A,X)).

  • 4.6. TROISIE`ME POSTULAT 39

    4.6 Troisie`me postulat

    Jusqua` maintenant, nous navons fait aucune hypothe`se sur les transitionsentre etats. La cle de ce que lon appelle un algorithme est dans le postulat quisuit : soit T un ensemble de termes sur la signature des etats. On dira que deuxetats (donc deux structures) X et Y concident sur T si [[t]] posse`de la memevaleur dans la structure X et dans la structure Y pour tout t T .

    Postulat 3 (Exploration bornee) Il existe un ensemble fini de termes T surle vocabulaire de lalgorithme A, tel que (A,X) = (A, Y ) a` chaque fois queles etats X et Y de A concident sur T .

    Intuitivement, lalgorithme A nexplore quun nombre fini de letat courantpour determiner le prochain etat. T est appele un temoin dexploration bornee.

    Exemple 4.6 Dans notre algorithme dEuclide, on peut prendre T = {b =0, a, b,0,1, a mod b,out}.

    4.7 Definition formelle dun dalgorithme

    Nous avons tous les ingredients :

    Definition 4.1 Un algorithme deterministe sequentiel est un objet A qui satis-fait les trois postulats.

    Exemple 4.7 Lalgorithme dEuclide est un algorithme (deterministe sequen-tiel).

    4.8 Une forme normale pour les algorithmes

    En fait, ces discussions permettent de prouver que tout algorithme peutsecrire sous une certaine forme, que nous appelerons forme normale.

    4.8.1 Termes critiques

    Soit T un temoin dexploration bornee. Sans perte de generalite, on peutsupposer que

    1. T est clos par sous-terme : si t1 T , t2 est un sous-terme (sous-arbre) det1, alors t2 T .

    2. T contient les termes 0 et 1.

    Un terme de T est dit un terme critique. Pour tout etat X, les valeurs deselements des termes critiques de X seront appelees les elements critiques de X.

    Une consequence du postulat 3 est que les modifications sur les etats sedecrivent par les termes critiques. Les valeurs des emplacements a` modifier etleurs nouvelles valeurs correspondent necessairement a` des valeurs critiques :

  • 40 CHAPITRE 4. QUEST-CE QUUN ALGORITHME SEQUENTIEL ?

    Lemme 4.3 (Les mises a` jour impliquent des elements critiques) Soit Aun algorithme qui verifie les trois postulats. Si X est un etat de A, et si

    (f, (a1, , am)) a0est une mise a` jour de (A,X), alors tous les elements a1, , am et a0 sontdes elements critiques de X.

    Demonstration: Par contradiction, supposons que lun des ai ne soit pas critique. Soit Y une

    structure isomorphe a` letat X qui sobtient en remplacant ai par un element frais (cest-a`-dire

    qui netait pas deja` dans lensemble de base de X) b. Par le postulat 2, Y est un etat. On verifie

    facilement que [[t]] concide sur X et sur Y pour tout terme critique t. Par le choix de T , (A, Y )

    doit etre egal a` (A,X), et donc il doit contenir la mise a` jour (f, (a1, , am)) a0. Mais ainest pas dans lensemble de base de Y . Par le troisie`me point du postulat 2, ai nest pas dans

    lensemble de base de A(Y ) non-plus. Et donc il ne peut pas etre dans (A, Y ) = A(Y ) Y . Cequi me`ne a` une contradiction.

    4.8.2 Affectation

    Nous introduisons maintenant un langage de programmation minimal :

    Definition 4.2 (Affectation) Soit une signature. Une re`gle de mise a` jour(ou encore une re`gle daffectation) de vocabulaire est de la forme

    f(t1, , tk)t0ou` f est un symbole k-aire de la signature , et t0, , tk sont des termes surla signature .

    Pour executer une telle re`gle R dans letat X, on calcule la valeur des [[ti]] eton execute la mise a` jour (f, ([[t1]], , [[tk]])) [[t0]]. Notons cette mise a` jour(R,X).

    Le lemme 4.3 permet daffirmer que pour tout algorithme A, et pour toutetat X, chaque mise a` jour de (A,X) secrit comme (R,X) pour une tellere`gle R : en outre, chacun des t0, t1, , tk peut etre choisi parmi les termescritiques.

    4.8.3 Mise en paralle`le

    (A,X) est constitue dun ensemble de re`gles de mise a` jour. Nous avonsbesoin dune re`gle qui permet deffectuer en paralle`le plusieurs re`gles.

    Definition 4.3 (Mise en paralle`le) Soit une signature. Si k est un entier,et R1, , Rk sont des re`gles de vocabulaire , alors

    parR1R2

  • 4.8. UNE FORME NORMALE POUR LES ALGORITHMES 41

    Rk

    endpar

    est une re`gle R de vocabulaire .

    Pour executer une telle re`gleR, on execute simultanement les re`glesR1, , Rk.La re`gle correspond aux mises a` jour (R,X) = (R1, X) (Rk, X).

    Lemme 4.4 Pour tout algorithme A sur la signature , et pour tout etat X deA, on peut construire une re`gle RX de vocabulaire qui corresponde a` (A,X),cest-a`-dire telle que (RX , X) = (A,X). En outre cette re`gle RX nimpliqueque des termes critiques.

    Demonstration: Cette re`gle correspond a` la mise en paralle`le des mises a`jours de (A,X). T etant fini, cet ensemble de mise a` jour est fini.

    Lemme 4.5 Soient X et Y deux etats qui concident sur lensemble T destermes critiques. Alors (A, Y ) correspond aussi a` la re`gle RX , cest-a`-dire(RX , Y ) = (A, Y ).

    Demonstration: Cela decoule du fait que (RX , Y ) = (RX , X) = (A,X) = (A, Y ). La

    premie`re egalite decoule du fait que RX nimplique que des termes critiques, et que ceux ci ont

    meme valeur en X et Y . La deuxie`me egalite vient de la definition de RX . La troisie`me du postulat

    3.

    4.8.4 Construction si . . .alors

    Definition 4.4 (Si alors) Soit une signature. Si est un terme booleen surla signature , et si R1 est une re`gle de vocabulaire , alors

    i f then R1

    est une re`gle de vocabulaire .

    Pour executer une telle re`gle, on execute la re`gle R1 si linterpretation de dans la structure est vrai, et on ne fait rien sinon.

    4.8.5 Forme normale

    En chaque etat X, legalite entre elements critiques induit une relationdequivalence : deux termes critiques t1 et t2 sont equivalents, note EX(t1, t2)si et seulement si [[t1]] = [[t2]] dans X. On dit que deux etats X et Y sontT -similaires si EX = EY .

    En fait, on peut prouver le resultat suivant, qui dit que seule la classe deT -similarite compte :

    Lemme 4.6 (RX , Y ) = (A, Y ) pour tout etat Y T -similaire a` X.

  • 42 CHAPITRE 4. QUEST-CE QUUN ALGORITHME SEQUENTIEL ?

    Demonstration: Supposons que X et Y soient des etats, et que (RX , Z) = (A,Z) pour un

    etat Z isomorphe a` Y . Alors (RX , Y ) = (A, Y ).En effet, soit i un isomorphisme de Y sur un Z approprie. i peut setendre naturellement aux

    uplets, et emplacements et mises a` jour. On verifie facilement que i((RX , Y )) = (RX , Z). Par le

    choix de Z, (RX , Z) = (A,Z). Par le lemme 4.2, (A,Z) = i((A, Y )). Alors i((RX , Y )) =i((A, Y )). Il suffit alors dappliquer linverse de i a` chacun des cotes de legalite.

    Il suffit donc de construire un Z isomorphe a` Y avec (RX , Z) = (A,Z).Si Y est disjoint de X, considerons Z comme la structure isomorphe a` Y obtenue en remplacant

    [[t]] dans Y par [[t]] dans X pour tout terme critique t. Par le postulat 2, Z est un etat. Puisque X

    et Z concident sur T , on a (RX , Z) = (A,Z).

    Dans le cas general, remplacons chaque element de Y qui est aussi dans X par un element frais.

    Cela donne une structure Z isomorphe a` Y mais differente de X. Par le postulat 2, Z est un etat.

    Puisque Z est isomorphe a` Y , il est T -similaire a` Y , et donc T -similaire a` X. En raison du cas

    precedent, (RX , Z) = (A,Z). Pour tout etat X, il existe un terme 1 X qui vaut vrai dans une structure

    Y si et seulement si Y est T -similaire a` X : ce terme indique que la relationdegalite entre les termes critiques definit exactement la relation dequivalenceEX .

    Exemple 4.8 Sur lalgorithme dEuclide, les classes dequivalence distinguentles cas b = 0 vrai de b = 0 faux (et en fait beaucoup plus de choses, puisquellesdistinguent aussi legalite/inegalite entre tous les termes critiques : par exemple,ils distinguent aussi le cas out = 0, de sa negation.).

    En pratique, il est utile uniquement de considerer les termes de T qui sont dy-namiques, puisque les termes qui impliquent des symboles statiques ne changentpas detat a` son successeur. Cela permet de reduire le nombre de classes dequi-valence pertinentes.

    Puisque T est fini, il y a un nombre fini de classes dequivalences. Il y a doncun nombre fini detats X1, X2, , Xm tel que tout etat est T -similaire a` lundes etats Xi.

    Rappelons que nos algorithmes sont de la forme :

    read < i n i t i a l i s a t i o n s >repeat< i n s t r u c t i o n s>

    until out!=undefwrite out

    On obtient le resultat suivant.

    Theore`me 4.1 (Forme normale dun algorithme) Soit une signature.Tout algorithme sequentiel deterministe A sur la signature secrit avec reduit a` une re`gle de vocabulaire de la forme

    pari f X1 then RX1

    1On utilise ici le fait quune combinaison booleenne de termes booleens correspond a` unterme : voir les conventions fixees dans le chapitre 2, et la discussion de la section 2.

  • 4.9. NOTION DALGORITHME SUR UNE STRUCTURE M 43

    i f X2 then RX2

    i f Xm then RXm

    endpar

    chaque re`gle RXi etant de la forme par end par, ou` chaqueinstruction est une instruction de mise a` jour (affectation).

    Autrement dit, tout algorithme peut toujours secrire avec des mises a` jours,des mises en paralle`le, et des si alors.

    Exemple 4.9 Lalgorithme dEuclide peut aussi secrire

    read < a, b >repeatpar

    i f b=0 then dai f b6=0 thenpar

    a bb a mod b

    endparendparuntil out!=undefwrite out

    Remarque 4.1 Le programme de cet exemple nest pas exactement la formenormale du theore`me precedent pour lalgorithme dEuclide : la mise sous formenormale obtenue par le theore`me precedent comporte en fait beaucoup plusde cas, car on distingue legalite/inegalite entre tous les termes critiques (parexemple distingue out = 0 de d 6= 0, etc . . .). Il sagit ici dune forme reduiteaux tests pertinents.

    4.9 Notion dalgorithme sur une structure M

    4.9.1 Terminologie

    Dans ce document, nous utiliserons la convention suivante :

    Definition 4.5 Nous appelerons algorithme sur

    M = (M,f1, , fu, r1, , rv)

    un algorithme sur la signature de M ou sur une signature etendue

    (M,f1, , fu, f 1, , f `, r1, , rv),

  • 44 CHAPITRE 4. QUEST-CE QUUN ALGORITHME SEQUENTIEL ?

    ou` f 1, , f ` sont des symboles de fonctions dynamiques, qui travaille2 sur ledomaine M .

    En particulier, lorsque lon parlera dalgorithme sur une structure

    M = (M,f1, , fu, r1, , rv),

    on ne mentionnera en general dans lecriture de M que les symboles de fonc-tions et de relations statiques, etant donne quimplicitement on sautorise dessymboles de fonctions dynamiques.

    Rappelons quun symbole de fonction est dynamique si son interpretationpeut varier dun etat a` son sucesseur, par opposition a` statique.

    Exemple 4.10 Lalgorithme dEuclide sur les reels sera appele un algorithmesur la structure (R,mod), car il est en fait sur la signature = ({a, b, out,mod}, {=}).

    4.9.2 Conventions

    Pour eviter plusieurs proble`mes techniques, on se limitera aux algorithmesqui respectent les conventions suivantes :

    La signature posse`de un symbole de constante undef dont lintepreta-tion sera notee (par abus de langage) undef. On dira quun emplacement(f,m) est utile, si f est un symbole de fonction dynamique, et son contenu[[(f,m)]] nest pas undef.

    Letat initial dun algorithme respecte la propriete suivante : il posse`dequun nombre fini demplacements utiles.

    Un etat sera dit terminal sil correspond a` un etat darret de lalgorithme,cest-a`-dire, un etat tel que linterpretation de out nest pas undef pour lesalgorithmes consideres ici. On dira quun algorithme termine sur un certainetat initial, ou sur une entree, si lexecution correspondante me`ne a` (contient)un etat terminal.

    4.10 Notes bibliographiques

    Le contenu de ce chapitre est base sur laxiomatisation et les resultats de[Gurevich, 2000]. Nous avons aussi parfois utilise leur presentation dans le livre[Borger and Stark, 2003].

    2Formellement, lensemble de base de chacune des etats est M .

  • Chapitre 5

    Quelques mode`lessequentiels, et leurequivalence

    Nous avons maintenant defini ce quetait un algorithme. La notion dalgo-rithme au sens precedent est de tre`s haut niveau par rapport a` la notion baseesur les machines de Turing, ou sur dautres langages bas niveau, comme cellequi est utilisee dans la plupart des ouvrages de calculabilite ou de complexite.

    Nous ne pouvons eviter de montrer que notre notion dalgorithme corresponda` la notion usuelle. Lobjet de ce chapitre est de definir quelques mode`les et demontrer quils sont equivalents a` notre notion dalgorithme.

    5.1 Machines de Turing

    Revenons sur le mode`le classique de la machine de Turing.

    5.1.1 Description

    Une machine de Turing (deterministe) a` k rubans est composee des elementssuivants :

    1. Une memoire infinie sous forme de k rubans. Chaque ruban est divise encases. Chaque case peut contenir un element dun ensemble M (qui seveut un alphabet). On suppose dans cette section que lalphabet M estun ensemble fini.

    2. k tetes de lecture : chaque tete se deplace sur lun des k rubans.

    3. Un programme donne par une fonction de transition qui pour chaque etatde la machine, precise selon le symbole sous lune des tetes de lecture,

    (a) letat suivant ;

    45

  • 46CHAPITRE 5. QUELQUESMODE`LES SEQUENTIELS, ET LEUR EQUIVALENCE

    (b) le nouvel element de M a` ecrire a` la place de lelement de M sous latete de lecture dun des rubans ;

    (c) un sens de deplacement pour la tete de lecture de ce dernier ruban.

    Lexecution dune machine de Turing peut alors se decrire comme suit : ini-tialement, lentree se trouve sur le debut du premier ruban. Les cases des rubansqui ne correspondent pas a` lentree contiennent toutes lelement B (symbole deblanc), qui est un element particulier de M . A chaque etape de lexecution, lamachine, selon son etat, lit le symbole se trouvant sous lune des tetes de lecture,et selon ce symbole :

    remplace le symbole sous une des tetes de lecture par celui precise par safonction transition ;

    deplace (ou non) cette tete de lecture dune case vers la droite ou vers lagauche suivant le sens precise par la fonction de transition ;

    change detat vers un nouvel etat.

    5.1.2 Formalisation

    La notion de machine de Turing se formalise de la facon suivante :

    Definition 5.1 (Machine de Turing) Une machine de Turing a` k-rubansest un 8-uplet

    M = (Q,,,B, , q0, qa, qr)

    ou`

    1. Q est lensemble fini des etats.

    2. est un alphabet fini.

    3. est lalphabet de travail fini : .4. B est le caracte`re blanc.5. q0 Q est letat initial.6. qa Q est letat dacceptation.7. qr Q est letat de rejet (ou darret).8. est la fonction de transition : est constitue dune fonction 1 de Q dans{1, 2, , k}, et dune fonction 2 de Q dans Q{1, 2, , k}{, |,}.

    Le langage accepte par une machine de Turing se definit a` laide des notionsde configurations et de derivations entre configurations.

    Formellement : Une configuration est donnee par la description des rubans,par les positions des tetes de lecture/ecriture, et par letat interne : une confi-guration peut se noter C = (q, u1#v1, . . . , uk#vk), avec u1, . . . , un, v1, . . . , vn ( {B}), q Q : ui et vi designent le contenu respectivement a` gauche et a`droite de la tete de lecture du ruban i, la tete de lecture du ruban i etant surla premie`re lettre de vi. Pour simplifier la presentation, on fixe la conventionque les mots vi sont ecrits de gauche a` droite (la lettre numero i+ 1 de vi est a`

  • 5.1. MACHINES DE TURING 47

    droite de la lettre numero i) alors que les ui sont ecrits de droite a` gauche (lalettre numero i + 1 de ui est a` gauche de la lettre numero i, la premie`re lettrede ui etant a` gauche de la tete de lecture numero i).

    Une telle configuration est dite acceptante si q = qa, rejetante si q = qr.Pour w , la configuration initiale correspondante a` w est la configuration

    C[w] = (q0,#w,#, . . . ,#) (u1 et les ui et vi pour i 6= 2 correspondent au motvide).

    On note : C ` C si la configuration C est le successeur direct de la configu-ration C par le programme (donne par ) de la machine de Turing. Formellement,si C = (q, u1#v1, . . . , uk#vk), et si a1, , ak designent les premie`res lettres1de v1, , vk, et si

    1(q) = `

    2(q, a`) = (q, `, a,m)

    alors C ` C si C = (q, u1#v

    1, , uk#vk), et

    pour i 6= `, ui = ui, vi = vi si i = `, si m = |, ui = ui, et vi est obtenu en remplacant la premie`re lettre aide vi par a.

    si m =, vi = avi, et ui est obtenu en supprimant la premie`re lettrede ui.

    si m =, ui = uia, et vi est obtenu en supprimant la premie`re lettreai de vi.

    On appelle calcul de M sur un mot w , une suite de configurations(Ci)iN telle que C0 = C[w] et pour tout i, Ci ` Ci+1.

    Le mot w est dit accepte si le calcul sur ce mot est tel quil existe un entiert avec Ct acceptante. On dit dans ce cas que w est accepte en temps t. Le motw est dit refuse si le calcul sur ce mot est tel quil existe un entier t avec Ctrejetante. On dit dans ce cas que w est refuse en temps t.

    Un langage L est dit accepte par M si pour tout w , w L si etseulement si w est accepte.

    Un langage L est dit decide par M si pour tout w , w L si etseulement si w est accepte, et w 6 L si et seulement si w est rejete.

    5.1.3 Une machine de Turing est un algorithme

    En fait, cela peut aussi se decrire a` un plus haut niveau naturellement commeun algorithme.

    Proposition 5.1 Une machine de Turing a` k rubans correspond a` un pro-gramme du type

    ctl stateq0repeat

    1Avec la convention que la premie`re lettre du mot vide est le blanc B.

  • 48CHAPITRE 5. QUELQUESMODE`LES SEQUENTIELS, ET LEUR EQUIVALENCE

    par< i n s t r u c t i o n s>i f ctl state = qa then outvraii f ctl state = qr then outfaux

    endparuntil out!=undefwrite out

    ou` est une suite finie dinstructions du type

    i f ctl state=q and tape`(head`) = a thenpartape`(head`)ahead` head` +mctl stateq

    endpar

    ou` q 6= qa, q 6= qr, head1, , headk sont des symboles de constantes a` valeursentie`res, qui codent la position de chacune des tetes de lecture, tape1, , tapeksont des symboles de fonctions darite 1, qui codent le contenu de chacun des ru-bans. Chaque re`gle de ce type code le fait que 1(q) = `, 2(q, a) = (q, `, a,m),avec m qui vaut respectivement 1, 0 ou 1 lorsque m vaut , |, respective-ment.

    5.2 Machines de Turing sur une structure M

    Autrement dit, une machine qui travaille sur lalphabet fini

    = {1, 2, , m},

    ne sait ecrire que des lettres i, et tester si le symbole sous lune des tetes delecture est egal a` lune des lettres i (et deplacer ses tetes de lecture).

    Autrement dit, les seules operations en ecriture autorisees sont les constantes1, 2, , m, et les seuls tests autorises correspondent a` legalite a` lun dessymboles i : on peut voir cela comme une machine de Turing sur la signature

    M = (, {1, 2, , m}, {1?, 2?, , m?,=}),

    ou` i designe le symbole de constante qui sinterpre`te par la lettre i, et i?designe le symbole de predicat darite 1 qui est vrai si et seulement si sonargument est la lettre i.

    En effet, rien ne nous interdit de considerer des machines de Turing (a` krubans) qui travaillent sur une structure arbitraire plus generale. Une machinequi travaille sur la structure M = (M,f1, , fu, r1, , rv), est autorisee a`calculer les fonctions fi et a` tester l