Top Banner
Sylvain Perifel COMPLEXITÉ ALGORITHMIQUE
430

COMPLEXITÉ ALGORITHMIQUE

Dec 08, 2015

Download

Documents

A.

Algorithmic
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Sylvain Perifel

    COMPLEXITALGORITHMIQUE

  • Version lectronique sous licence Creative Commons

    (paternit, pas dutilisation commerciale, partage dans les mmes conditions)http://creativecommons.org/licenses/by-nc-sa/3.0/fr/

    Sylvain Perifel, 2014

  • Avant-proposLe projet de ce livre a germ au cours dun groupe de lecture de lexcellent ouvrage dAroraet Barak [AB09]. Une conjonction de plusieurs facteurs ma dcid franchir le pas. Il yavait premirement la volont de contribuer modestement au dveloppement de lensei-gnement et de la recherche en complexit en France. On pouvait voir labsence douvrageavanc en langue franaise sur ce sujet comme la cause ou la consquence dun domaineinsuffisamment dvelopp. Jai prfr y voir la cause. Je suis convaincu quon a dansnotre pays le potentiel pour contribuer significativement lavance de ce beau sujet.Il y avait aussi le fait que le livre anglophone de rfrence dArora et Barak est destinau public doutre-Atlantique et ne correspond pas au style douvrage utile aux enseignantsde ce ct-ci de locan. Les preuves sont trop approximatives, trop de dtails sont omisou trop de petites erreurs gnent la prparation dun cours formel au tableau. Entendons-nous bien, le livre en question est excellent, donne les bonnes intuitions, couvre un mat-riel considrable et le prsent ouvrage lui doit beaucoup, mais il nest gure adapt pourles cours formels franais. Je ne prtends certes pas que mon livre est exempt derreurs,loin de l malheureusement, mais jespre avoir vit les imprcisions qui peuvent nuire la comprhension du lecteur.Il y avait enfin la maison ddition Ellipses qui ma contact au moment opportun et quia lanc ce projet.

    Remerciements

    Je tiens donc remercier Paul de Laboulaye de mavoir propos de publier mon ouvrageaux ditions Ellipses. Je remercie galement Pascal Koiran pour mavoir donn le got dela recherche en complexit.Je lai dit, ce livre doit beaucoup louvrage dArora et Barak, dont sinspire la prsentationde quelques rsultats (au chapitre 12 notamment). Je souhaite donc remercier ses auteurspour avoir crit un livre couvrant les dveloppement rcents de la thorie de la complexit.Je me rends compte maintenant du travail que cela reprsente.videmment, la rdaction dun livre nest pas quune aventure solitaire et de nombreusesdiscussions avec Herv Fournier, Guillaume Malod et Thomas Colcombet notammentsont venues enrichir cet ouvrage, un grand merci eux. Merci galement Olivier Serrepour ses lignes de code LATEX, Peter Habermehl pour mavoir dbloqu sur deux ou troisquestions, et Christian Choffrut pour avoir donn les TD de mon cours de complexit.

  • ii Avant-propos

    Je dois beaucoup galement tous les relecteurs qui ont dbusqu de nombreuses fauteset ont permis damliorer sensiblement la prsentation de ce livre : je remercie chaleureu-sement (dans lordre alphabtique) Laurent Bienvenu, Sylvain Bouveret, Florent Capelli,Arnaud Durand, Herv Fournier, Bruno Grenet, Guillaume Lagarde, Mathieu Laurire,Guillaume Malod, Stefan Mengel, Charles Paperman, Natacha Portier, Yann Strozecki etSbastien Tavenas. Sil reste des erreurs, cest videmment leur ma faute.Enfin, et surtout, merci mon pouse qui me supporte et me soutient quotidiennement.

  • Table des matiresIntroduction ix

    Prliminaires et notations xv

    1 Le modle de calcul 11.1 Problmes, langages et codage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    1.1.1 Codage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.2 Problmes et langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.2 La machine de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.1 Dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.2 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.2.3 Code et machine universelle . . . . . . . . . . . . . . . . . . . . . . . . 141.2.4 Langage de haut niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.2.5 Indcidabilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    2 Considrations de base sur le temps 312.1 Temps dterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    2.1.1 Classes de complexit en temps . . . . . . . . . . . . . . . . . . . . . . 322.1.2 Thorme de hirarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.1.3 Temps polynomial et temps exponentiel . . . . . . . . . . . . . . . . 39

    2.2 Temps non dterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.2.1 Machines non dterministes . . . . . . . . . . . . . . . . . . . . . . . . 432.2.2 Langage de haut niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.2.3 Machine non dterministe universelle . . . . . . . . . . . . . . . . . 462.2.4 Classes en temps non dterministe . . . . . . . . . . . . . . . . . . . . 492.2.5 Thorme de hirarchie en temps non dterministe . . . . . . . . . 52

  • iv Table des matires

    2.2.6 Temps non dterministe polynomial et exponentiel . . . . . . . . . 542.2.7 Le problme P= NP? . . . . . . . . . . . . . . . . . . . . . . . . . . 592.2.8 Complexit du complmentaire . . . . . . . . . . . . . . . . . . . . . 60

    3 NP-compltude 633.1 Rductions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633.2 Compltude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    3.2.1 Dfinition et premires proprits . . . . . . . . . . . . . . . . . . . . 673.2.2 Compltude du problme SAT . . . . . . . . . . . . . . . . . . . . . . 703.2.3 Autres problmes NP-complets . . . . . . . . . . . . . . . . . . . . . . 763.2.4 Complmentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.2.5 Thorme de Ladner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.2.6 Thorme de Mahaney . . . . . . . . . . . . . . . . . . . . . . . . . . . 903.2.7 Algorithme polynomial pour SAT si P= NP . . . . . . . . . . . . . . 93

    4 Considrations de base sur lespace 974.1 Espace dterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    4.1.1 Dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.1.2 Espace logarithmique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.1.3 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.1.4 Thorme de hirarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    4.2 Espace non dterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.3 Comparaison avec les classes en temps . . . . . . . . . . . . . . . . . . . . . . . 1044.4 Compltude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    4.4.1 Espace polynomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104.4.2 Espace non dterministe logarithmique . . . . . . . . . . . . . . . . 112

    4.5 Le rle du non-dterminisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164.5.1 Certificats unidirectionnels . . . . . . . . . . . . . . . . . . . . . . . . 1164.5.2 Thorme de Savitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184.5.3 Thorme dImmerman-Szelepcsnyi . . . . . . . . . . . . . . . . . . 1204.5.4 Les questions ouvertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    5 Uniformit et non-uniformit 1275.1 Conseils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

    5.1.1 Dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

  • Table des matires v

    5.1.2 Classes usuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1295.1.3 Premiers rsultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    5.2 Circuits boolens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.2.1 Dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.2.2 Machines et circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1375.2.3 Circuits et conseils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    5.3 Uniformit des circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1425.4 Autres classes dfinies par circuits . . . . . . . . . . . . . . . . . . . . . . . . . . 1435.5 Intrt des circuits et bornes infrieures non uniformes . . . . . . . . . . . . 1455.6 Circuits arithmtiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

    6 Algorithmes probabilistes 1536.1 Machines de Turing probabilistes . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    6.1.1 Tri rapide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536.1.2 Machines de Turing probabilistes . . . . . . . . . . . . . . . . . . . . 155

    6.2 Classes probabilistes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1556.2.1 Dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1566.2.2 Rduction derreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1576.2.3 Comparaison avec les classes uniformes . . . . . . . . . . . . . . . . 1596.2.4 Thorme de hirarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . 1606.2.5 Circuits et algorithmes probabilistes . . . . . . . . . . . . . . . . . . . 163

    6.3 Un exemple important . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1636.3.1 Test de circuits arithmtiques . . . . . . . . . . . . . . . . . . . . . . . 1646.3.2 quivalence des deux problmes . . . . . . . . . . . . . . . . . . . . . 1646.3.3 Algorithme probabiliste . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

    6.4 Questions ouvertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1676.4.1 Problmes naturels de BPP . . . . . . . . . . . . . . . . . . . . . . . . . 1676.4.2 Hirarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1676.4.3 Temps exponentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

    7 Oracles et limites de la diagonalisation 1697.1 Thormes de hirarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    7.1.1 numration des machines . . . . . . . . . . . . . . . . . . . . . . . . 1707.1.2 Hirarchie dterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

    7.2 Machines de Turing oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

  • vi Table des matires

    7.3 Quelques rsultats pour se faire la main . . . . . . . . . . . . . . . . . . . . . . 1767.4 Langages creux et rduction Turing . . . . . . . . . . . . . . . . . . . . . . . . . 180

    7.4.1 Langages creux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1807.4.2 Rduction Turing polynomiale . . . . . . . . . . . . . . . . . . . . . . 182

    7.5 Relativisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1837.5.1 Diagonalisation, oracles et la question P=NP ? . . . . . . . . . 1837.5.2 Relativisation de la question EXP=NP ? . . . . . . . . . . . . . . 186

    7.6 De la difficult de dfinir la bonne notion de diagonalisation . . . . . . . . 190

    8 La hirarchie polynomiale 1938.1 La hirarchie polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

    8.1.1 Dfinition et premires proprits . . . . . . . . . . . . . . . . . . . . 1938.1.2 Caractrisation en termes de quantificateurs . . . . . . . . . . . . . 1968.1.3 Problmes complets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    8.2 Comparaison avec les classes probabilistes . . . . . . . . . . . . . . . . . . . . 2018.3 Liens avec les circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

    8.3.1 Thorme de Karp et Lipton . . . . . . . . . . . . . . . . . . . . . . . 2048.3.2 Langages creux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

    8.4 Borne infrieure sur le temps et lespace conjugus pour NTIME(n) . . . . 207

    9 Comptage 2119.1 Dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    9.1.1 Classes de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129.1.2 Classes de langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

    9.2 Premiers rsultats de compltude . . . . . . . . . . . . . . . . . . . . . . . . . . 2169.2.1 Rductions pour les classes de fonctions . . . . . . . . . . . . . . . . 2179.2.2 Compltude pour ]P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2189.2.3 Compltude pour les autres classes . . . . . . . . . . . . . . . . . . . 219

    9.3 Proprits de clture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2219.3.1 Proprits de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2219.3.2 PP est clos par union . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2239.3.3 ]P est-il clos par soustraction ? . . . . . . . . . . . . . . . . . . . . . . 225

    9.4 Thorme de Toda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2269.5 Permanent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

    9.5.1 Intrts du permanent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

  • Table des matires vii

    9.5.2 Compltude du permanent . . . . . . . . . . . . . . . . . . . . . . . . 238

    10 Protocoles interactifs 24710.1 Les classes IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

    10.1.1 Dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24810.1.2 Isomorphisme de graphes . . . . . . . . . . . . . . . . . . . . . . . . . 25010.1.3 IP= PSPACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

    10.2 Les classes Arthur-Merlin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26410.2.1 Dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26510.2.2 Deux petits tours et puis sen vont . . . . . . . . . . . . . . . . . . . . 26710.2.3 Erreur dun seul ct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26910.2.4 Bits alatoires publics ou privs . . . . . . . . . . . . . . . . . . . . . . 27210.2.5 Le problme de lisomorphisme de graphes . . . . . . . . . . . . . . 280

    10.3 Le thorme PCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28110.3.1 Probabilistically Checkable Proofs . . . . . . . . . . . . . . . . . . . . 28110.3.2 Rsultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

    11 Bornes infrieures non uniformes 28711.1 Circuits boolens sans restriction . . . . . . . . . . . . . . . . . . . . . . . . . . 287

    11.1.1 Bornes infrieures en (nk ) . . . . . . . . . . . . . . . . . . . . . . . . 28811.1.2 Bornes infrieures en n!(1) . . . . . . . . . . . . . . . . . . . . . . . . . 292

    11.2 Circuits restreints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29611.2.1 Monotonie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.2.2 Profondeur constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

    11.3 Polynmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30411.3.1 Baur et Strassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30511.3.2 Borne infrieure en (nk ) . . . . . . . . . . . . . . . . . . . . . . . . . 310

    12 Drandomisation et bornes infrieures 31712.1 Drandomisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31812.2 Imprdictibilit implique drandomisation . . . . . . . . . . . . . . . . . . . . 32012.3 Difficult en moyenne implique imprdictibilit . . . . . . . . . . . . . . . . 32412.4 Difficult dans le pire cas implique difficult en moyenne . . . . . . . . . . 330

    12.4.1 Codes correcteurs derreurs . . . . . . . . . . . . . . . . . . . . . . . . 33012.4.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

  • viii Table des matires

    12.5 Drandomisation implique borne infrieure . . . . . . . . . . . . . . . . . . . 350

    A Probabilits et arithmtique 355A.1 Probabilits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355A.2 Arithmtique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

    B Exercices supplmentaires 363

    C Solutions des exercices 369

    D Classes de complexit rencontres dans ce livre 389

    E Indications pour lenseignant 395

    Bibliographie 399

    Index 407

  • IntroductionPour bien comprendre lvolution de la discipline, il est utile de dbuter par un brefrappel historique. Pendant plusieurs millnaires, les mathmaticiens se sont contentsdune notion intuitive, informelle, dalgorithme : une mthode effective de calcul , ouencore un processus de rsolution dun problme par le calcul . Ce fut un long cheminpour arriver la formalisation de cette notion au XXe sicle, puis ltude de la complexitdes algorithmes qui est lobjet de ce livre.

    Algorithmes

    Les premires traces dalgorithmes ont t retrouves chez les Babyloniens (lactuel Irak)au deuxime millnaire avant notre re et taient principalement des mthodes de calculpour le commerce et les impts. Il faut attendre le troisime sicle avant J.-C. en Grcepour lapparition du fameux algorithme dEuclide pour le calcul du pgcd : on peut consi-drer quil sagit du premier algorithme moderne et il est tout fait remarquable quilsoit toujours utilis de nos jours.Mille ans plus tard, au IXe sicle ap. J.-C., Al Khuwarizmi, unmathmaticien perse (actuelIran), publie un ouvrage consacr aux algorithmes : ltymologie du terme algorithme vient du nom de ce mathmaticien. On commence en effet tudier les algorithmes entant que tels, mais il faudra encore 800 ans avant que lOccident continue cette tude.Aux XVIIe et au XVIIIe sicles, des savants comme Pascal ou Leibniz construisent desmachines calculer mcaniques (la Pascaline en 1642) ou des automates, ouvrant ainsila voie lautomatisation du calcul et la recherche dalgorithmes efficaces. En 1837,Wantzel rsout le problme de savoir quelles longueurs il est possible de construire largle et au compas : il sagit de connatre la capacit des algorithmes dont les oprationsde bases sont celles de la rgle et du compas. Ce sont les prmices de la calculabilit.

    Calculabilit

    La volont de formalisation des mathmatiques la fin du XIXe sicle et au dbut duXXe amne la notion daxiomes et de systmes de preuve, ce qui permet denvisager une automatisation des mathmatiques. Dans ce cadre, il est alors naturel de se demandersi lon peut tout rsoudre par algorithme.

  • x Introduction

    Hilbert pose en 1900 dans son dixime problme la question de trouver un algorithme d-terminant si une quation diophantienne a une solution. Malgr des voix plus sceptiques,il est alors clair pour Hilbert quun tel algorithme doit exister. Il va plus loin en 1928 avecson Entscheidungsproblem ( problme de dcision ) : il demande un algorithme capablede dcider si un nonc mathmatique est vrai.En labsence dune solution positive, de nombreux mathmaticiens tentent de formaliserce quon entend par algorithme afin demieux cerner la question. Plusieurs formalismesvoient le jour dans les annes 1930 et tous sont prouvs quivalents, notamment le -calcul de Church et la machine de Turing. Ce dernier modle, par sa simplicit et sonvidence, emporte ladhsion et les algorithmes ont maintenant une dfinition formelle.Or cest un choc, ou au moins une surprise, qui attend Hilbert : Church [Chu36] en1936 avec son modle, et Turing [Tur37] en 1937 avec le sien, montrent quil nexiste pasdalgorithme pour lEntscheidungsproblem : cest le dbut de la calculabilit, qui sattache comprendre ce que sont capables de raliser les algorithmes.Des techniques de plus en plus sophistiques permettent dobtenir dautres rsultats din-dcidabilit (le fait pour un problme de ne pas avoir dalgorithme), comme par exempleMatiyasevich en 1970 qui pose la dernire pierre de la preuve quil nexiste pas dalgo-rithme pour dcider si une quation diophantienne a une solution (dixime problmede Hilbert). Mais bien plus que lindcidabilit, on gnralise le modle de calcul, oncompare les diffrentes classes, on tudie lalatoire, etc.Ces considrations, bien que trs thoriques, ont contribu la construction des premiersordinateurs au dbut des annes 1940, qui sont finalement trs proches de la machine deTuring. Et cest en quelque sorte le dveloppement de ces ordinateurs qui donne naissance la thorie de la complexit.

    Complexit

    La calculabilit sattache connatre ce quon peut rsoudre par algorithme quel que soit letemps dexcution. Or dans les annes 1960, si les gros ordinateurs se sont diffuss, il nenreste pas moins quils sont trs lents et ne disposent pas de beaucoup de mmoire. Leschercheurs sintressent donc naturellement lefficacit des algorithmes : quel algorithmepuis-je faire tourner sur cette machine sans que le rsultat mette un an arriver ? Quelalgorithme puis-je faire tourner sans dpasser la capacit de la mmoire de la machine ?On trouve des rflexions thoriques trs profondes de ce genre dans une lettre de Gdel von Neumann en 1956, qui demande sil existe un algorithme quadratique pour leproblme SAT : tous les ingrdients de la question P = NP ? sont dj prsents dansson esprit. Malheureusement, von Neumann mourant na pas pu prendre cette lettre enconsidration et elle na t retrouve que trente ans plus tard.Si lon exclut cette lettre, la premire rfrence explicite aux algorithmes fonctionnanten temps polynomial comme dfinition dalgorithmes efficaces se trouve dans les ar-ticles de 1965 de Cobham [Cob65] et dEdmonds [Edm65]. Puis le papier de Hartmaniset Stearns [HS65] lance rellement le domaine de la complexit en montrant que cer-tains problmes ne peuvent pas tre rsolus en un temps donn (thormes de hirarchie).

  • Introduction xi

    Quant la question P=NP ? , elle prend de limportance ds le dbut des annes 1970avec larticle de Cook [Coo71] en 1971 (ou, de lautre ct du rideau de fer, larticle deLevin [Lev73] en 1973) montrant la NP-compltude de SAT, et avec dautres rsultats deNP-compltude en 1972 par Karp [Kar72] pour de nombreux problmes ayant une relleimportance.La thorie de la complexit a commenc en adaptant les mthodes de la calculabilit aucas du temps de calcul born. Par exemple, on retrouve de nombreux ingrdients issusde la calculabilit dans la dmonstration du thorme 3-AK de Ladner datant de 1975.Puis partir des annes 1980, des techniques spcifiques ont vu le jour, notamment pourles bornes infrieures sur les circuits boolens. Les annes 1990 ont vu en particulierlessor des protocoles interactifs qui ont permis de nombreuses avances, et galementune rflexion profonde sur la possibilit de dterminiser des algorithmes probabilistes. Lesannes 2000 continuent la recherche de mthodes permettant de contourner les obstaclespour rsoudre les grandes questions ouvertes comme P=NP ? , mais plusieurs rsultatsnouveaux ont aussi russi combiner de manire heureuse diffrentes mthodes conuesau cours des dcennies prcdentes.Nanmoins, les grandes questions restent sans rponse. La qute nest pas finie.

    Organisation du livre

    Afin de prsenter les notions et les rsultats dans un ordre cohrent, le livre suit prati-quement la chronologie historique. Le premier chapitre commence donc par dfinir lemodle de calcul utilis, la machine de Turing, dans une version qui permettra de trai-ter la fois la complexit en temps et celle en espace. Les machines non dterministessont galement introduites. Outre ces dfinitions, il donne des exemples et plusieurs pro-prits des machines (simulations notamment) et construit des machines dterministesuniverselles plus ou moins efficaces.Le chapitre 2 contient les premiers rsultats sur la complexit en temps, dterministeet non dterministe : dfinitions, acclration linaire, machine universelle non dtermi-niste, thormes de hirarchie, classes P et NP et exemples, etc.Puis on aborde la NP-compltude au chapitre 3 : compltude de SAT, autres rductionspermettant de montrer la compltude de diffrents problmes, thorme de Ladner etthorme de Mahaney.Le chapitre 4 fait un travail similaire au chapitre 2 pour la complexit en espace : dfi-nitions et rsultats de base, PSPACE-compltude du problme QBF et NL-compltude duproblme daccessibilit dans un graphe orient, le thorme de Savitch et pour finir lethorme dImmerman-Szelepcsnyi.Le chapitre 5 traite des questions duniformit et de circuits : calculs avec conseil, circuitsboolens, simulations de machines de Turing, uniformit des circuits, et enfin prsenta-tion des circuits arithmtiques pour calculer des polynmes.Le chapitre 6 concerne les algorithmes probabilistes : dfinitions, rduction derreur, tho-rme de hirarchie, comparaison avec les classes dterministes et avec les circuits, prsen-tation du problme didentit de polynmes que nous reverrons au chapitre 12.

  • xii Introduction

    Nous introduisons au chapitre 7 la notion de calcul avec oracle et de relativisation pourexplorer notamment les limites de la diagonalisation. Nous montrons que les questions P= NP ? et EXP=NP ? ne se relativisent pas et nous discutons la difficult de dfinirce quest une preuve par diagonalisation.Le calcul avec oracle nous permet aussi dintroduire la hirarchie polynomiale au cha-pitre 8. Nous donnons des problmes complets aux diffrents niveaux, comparons cesclasses avec les classes probabilistes et montrons le thorme de Karp et Lipton. Enfin,nous donnons une borne infrieure sur le temps et lespace conjugus ncessaires pourrsoudre les problmes de NTIME(n), en utilisant les techniques vues ce chapitre.Avec le chapitre 9 sur la complexit du comptage, nous abordons des sujets plus tech-niques. Aprs des proprits de clture des classes de comptage, nous montrons le tho-rme de Toda, puis la compltude du permanent pour la classe ]P.Le chapitre 10 introduit les protocoles interactifs. Nous donnons le thorme de Shamir(IP = PSPACE), montrons quil ne se relativise pas, dfinissons les classes Arthur-Merlinavec toutes leurs proprits, montrons lquivalence entre bits alatoires publics ou privs.Nous appliquons ces techniques au problme de lisomorphisme de graphe pour montrerquil nest probablement pas NP-complet. Enfin, nous dcrivons le thorme PCP sans leprouver et donnons une application linapproximabilit.Le chapitre 11 prsente plusieurs bornes infrieures sur les circuits : des classes qui nontpas de circuits de taille nk pour k fix, des classes qui nont pas de circuits de taille polyno-miale sous certaines conditions, des bornes infrieures sur la taille de circuits restreints (monotones ou de profondeur constante), et des bornes infrieures sur la taille de circuitsarithmtiques pour calculer des polynmes.Enfin, le chapitre 12, trs technique, montre le lien entre drandomisation et bornesinfrieures non uniformes. Pour montrer que des bornes infrieures permettent de dran-domiser des algorithmes, on utilise des codes correcteurs derreurs trs efficaces dont laconstruction constitue une bonne part du contenu technique du chapitre. La preuve dela rciproque permet de combiner de nombreuses ides vues prcdemment dans lelivre.Une annexe (chapitre A) donne les notions de bases en probabilits utiles pour cet ouvrage,ainsi que quelques rsultats darithmtique.Des exercices sont proposs tout au long des chapitres lorsquils illustrent directement lepropos et quelques autres exercices et problmes sont proposs en annexe (chapitre B).Des lments de correction sont rdigs au chapitre C.Outre les rappels mathmatiques et les exercices, lannexe contient aussi des conseils auxenseignants afin dutiliser ce livre au mieux (chapitre E), ainsi quune liste et des figuresrcapitulatives des diffrentes classes de complexit abordes (chapitre D), quil ne fautpas hsiter consulter lorsquune nouvelle classe est introduite.Plusieurs ouvrages peuvent venir complter celui-ci. En langue anglaise, les livres de Sip-ser [Sip97], de Papadimitriou [Pap94], et de Balczar, Daz et Gabarr [BDG88], bienquils commencent dater, sont une bonne entre en matire. Celui de Wagner et Wech-sung [WW86], datant des annes 1980, est plus complet. Celui dHemaspaandra et Ogi-hara [HO02] traite de nombreux sujets avancs avec tous les dtails mais sa lecture est

  • Introduction xiii

    plus ardue. Deux livres rcents sont recommander pour couvrir les avances de la com-plexit moderne : celui de Goldreich [Gol08] et celui dArora et Barak [AB09] dontnous avons parl lavant-propos. Et nous omettons certainement dautres excellents ou-vrages. En langue franaise, les ouvrages de Dehornoy [Deh93], de Carton [Car08], deLavalle [Lav08] ou de Rey [Rey04] traitent bien les sujets de base et sont donc liresans hsiter, mais ils ne parlent gure de sujets avancs. Le point de vue de la logiquesur la complexit, en particulier la complexit descriptive, est plus dvelopp dans lesouvrages de Lassaigne et de Rougemont [LR96] (dans la langue de Molire) et de Immer-man [Imm99] (dans celle de Shakespeare). Enfin, si besoin il est certainement valable decomplter la lecture du prsent livre par celle dun ouvrage dintroduction la calcula-bilit, comme celui de Wolper [Wol06] ou de Cooper [Coo04], voire dentreprendre lalecture des volumes plus avancs dOdifreddi [Odi92].Nous commenons la page xv par un prliminaire rappelant quelques notations usuellesque nous utiliserons, avant de dbuter le cur de louvrage proprement dit.

  • Prliminaires etnotations

    Nous nutilisons dans ce livre que des notions et notations usuelles ; nanmoins, pourlever toute ambigut, nous rappelons ici les principales conventions.

    Alphabets, mots, langages

    dsignera un alphabet fini, cest--dire un ensemble fini de symboles. partir de ,on construit des mots qui sont des suites finies de symboles : la taille dun mot x, notejxj, est le nombre de symboles qui le constituent. Lunique mot de taille nulle est le motvide que lon dsignera par (mais, selon lhabitude en mathmatique, cette notation estsouvent utilise aussi pour dsigner une petite constante relle positive). Si x = x1 . . . xnet y = y1 . . . ym sont deux mots, on dit que x est un prfixe de y, not x v y, si m n etx1 . . . xn = y1 . . . yn .Si A est un ensemble de mots, on note

    A? = fu1 . . . uk j k 2N et u1, . . . , uk 2Aglensemble de toutes les concatnations possibles dun nombre arbitraire de mots de A.Lensemble de tous les mots sur lalphabet est donc not?. Un langage est un ensemblede mots L ?. Pour un entier n 2 N, on notera L=n et Ln les ensembles (finis) desmots de L de longueur respectivement n et au plus n, et Ln lensemble des mots de Lde longueur au moins n.

    Ordre lexicographique

    Si lalphabet = fa1, . . . ,akg est muni dun ordre quelconque, disons a1 < a2 < < ak ,nous appellerons lordre lexicographique lordre sur ? dfini inductivement par :

    si jxj< jyj alors x

  • xvi Prliminaires et notations

    car ordonner dabord par longueurs nest pas la dfinition habituelle de lordre lexicogra-phique, mais cela nous parat plus maniable pour la suite.

    Suites, intervalles, ensembles

    Dans ce livre, on dsignera par (xi )i2Z (respectivement (xi )i2N) une suite infinie dl-ments xi indics par les entiers relatifs (resp. par les entiers naturels). Si le contexte estclair, on pourra omettre la rfrence Z ou N et parler simplement de la suite (xi ).La plupart du temps, la notation [a, b ] dsignera lintervalle entier de bornes a et b , cest--dire lensemble fdae, 1+ dae, . . . , bb cg Z. Les rares fois o une telle notation dsigneraun intervalle rel seront claires daprs le contexte.Si q est une puissance dun nombre premier, on notera Fq lunique corps q lments(si q est premier, Fq est donc lensemble des entiers modulo q). Pour un ensemble L etun lment x, on notera [x 2 L] (respectivement [x 62 L]) le boolen qui vaut 1 ssi x 2 L(resp. x 62 L) .

    Fonctions entires

    Les informaticiens ont pris lhabitude dcrire f (n) pour parler dune fonction f :N!N,plutt que simplement f : ici, n reprsente la variable et non un entier fix. Cette notationsert implicitement savoir que le domaine de f est N, un peu comme en mathmatiqueslorsquon parle dun polynme P (X ).Cependant, n est galement utilis pour parler de la taille de lentre x dun problme etpeut donc aussi reprsenter un entier.Dans tout ce livre, sauf mention contraire on notera log le logarithme en base 2. Parfoispar abus de notation on pourra mme crire log(n) pour blog(n)c car nous considreronsla plupart du temps des fonctions entires.

    Ordre de grandeur des fonctions

    Si f : N! N est une fonction, on note O( f ) lensemble des fonctions g : N! N tellesque

    9C > 0 9N 2N 8n N g (n)C f (n)( partir dun certain rang, g est plus petite que f une constante multiplicative prs).La notation o( f ) dsigne lensemble des fonctions g :N!N telles que

    8 > 0 9N 2N 8n N g (n) f (n)(g est ngligeable devant f ). Les ensembles ( f ), !( f ) et ( f ) sont alors dfinis par :

    g 2( f ) () f 2O(g )1. On trouve aussi la notation quivalente x2L quon nutilisera pas ici.

  • Prliminaires et notations xvii

    g 2!( f ) () f 2 o(g )g 2( f ) () f 2O(g ) et g 2O( f ).

    Si h : N! N est une fonction, alors h(O( f )) dsigne lensemble des fonctions h g og 2O( f ) ; de mme pour les autres ensembles (o( f ), etc.). Enfin, par abus de notation etselon lusage habituel, on notera g =O( f ) plutt que g 2O( f ), etc.

    Mots, uples, variables

    Les lettres x, y, z, u,v seront le plus souvent employes pour dsigner des mots sur unalphabet , ou des variables ou des uples de variables dun polynme ou dune autrefonction. Les fonctions sur les entiers ou sur les mots seront souvent notes f ou g , lespolynmes p, q ou P,Q, mais p et q pourront aussi dsigner des entiers premiers.Les lettres n,m seront plutt utilises pour la longueur dun mot, la taille de lentredun problme ou la variable dune fonction f : N ! N. Les lettres i , j ,k dsignerontprincipalement des indices entiers ; ,, et a, b , c des constantes relles ou entires. Onutilisera de prfrence t pour un temps dexcution ou pour la taille dun circuit et s pourlespace dun calcul. Les mots alatoires seront souvent nots r . Rappelons enfin que dsignera la plupart du temps une petite constante relle positive, mais parfois aussi lemot vide.

    Divers

    Un graphe G est donn par lensemble V de ses sommets et lensemble E de ses artes,E V V : on notera donc G = (V ,E).Sauf mention contraire, la notation Prr2E (A) dsignera la probabilit de lvnement Aselon la distribution uniforme sur lensemble fini E . Un rappel basique sur les probabilitsdiscrtes est donn lannexe A.Enfin, puisque le cas se produira souvent, nous abrgerons lexpression la machine Mfonctionnant en temps polynomial par la machine polynomiale M , malgr labus delangage.

  • 1Le modle de calculLe propos de la complexit algorithmique est de mesurer la difficult dun problme laune de lefficacit des algorithmes pour le rsoudre. Dans ce premier chapitre, nousallons dfinir formellement ce que nous entendons par problmes et algorithmes.Aujourdhui nous avons tous une ide intuitive de ce quest un algorithme car nous ma-nipulons chaque jour des ordinateurs ; toutefois, il nest pas si ais den donner une dfi-nition formelle. La dfinition habituelle que nous allons suivre ici passe par les machinesde Turing. Il est remarquable que ce modle de calcul ait t propos par Turing ds1937 dans son article [Tur37], avant la naissance des ordinateurs, laquelle il a dailleurslargement contribu.La dfinition de Turing est encore utilise actuellement car, afin dtudier les algorithmes,on souhaite un modle thorique aussi simple que possible, dune part, et dautre partnous verrons que ce modle rudimentaire reste capable deffectuer les mmes tches quenos ordinateurs. la mme poque, dautres formalismes quivalents ont t introduits(-calcul par Church [Chu36], fonctions rcursives par Herbrand et Gdel, etc.) mais lamachine de Turing a lavantage de permettre la dfinition aise du temps et de lespaceutiliss lors dun calcul. Des modles plus proches de nos ordinateurs existent galement(machines RAM par exemple) mais, pour tudier la complexit algorithmique, la connais-sance des machines de Turing est devenue trop usuelle pour pouvoir sen passer bienque ce ne soit pas toujours le modle idal. Une telle machinemanipule des suites finies de symboles, cest--dire quon reprsente pardes mots les donnes traiter (nous aurons donc besoin dun codage des donnes endes mots). Elle effectue alors un calcul sur un mot quon lui fournit en entre et renvoie lersultat du calcul sous la forme dun nouveau mot de sortie comme illustr la figure 1.1.

    1. On remarquera galement quil est malais demployer un autre modle de calcul pour obtenir exacte-ment la dfinition habituelle des concepts que nous aborderons dans ce livre.

  • 2 Chapitre 1. Le modle de calcul

    machinemot dentre mot de sortie

    Figure 1.1 Principe dune machine de Turing.

    Nous allons dabord nous attarder sur la notion de problme avant de dfinir la machinede Turing et de voir quune telle machine permet bien de raliser toutes les oprationsquon souhaite possibles pour un algorithme.

    1.1 Problmes, langages et codage

    1.1.1 CodageChacun sait que les ordinateurs actuels ne manipulent que des 0 (absence de courant lec-trique) et des 1 (prsence du courant). Et pourtant, dans nos programmes nous pouvonsparler dobjets de diverse nature : des entiers, des rationnels, des matrices, des graphes,etc. Pour cela, il faut coder ces objets par une suite de 0 et de 1.Dans le cadre plus gnral de ce livre, nous ne nous contenterons pas de deux symboles0 et 1, mais dun alphabet fini quelconque. Un alphabet est simplement lensemble dessymboles autoriss. Ainsi, lalphabet binaire est f0,1gmais on pourrait aussi travailler surlalphabet fa, b , c , . . . , zg par exemple, ou bien fa, b , #g pour parler des mots (cest--diredes suites finies de symboles) composs des lettres a, b et # (le symbole # servira la plupartdu temps de dlimiteur). Ds lors, nous devrons coder les objets manipuler par des motssur un alphabet fini .La taille dun mot x, note jxj, est le nombre de symboles que x contient et joue unegrande importance puisque nous verrons plus tard que le nombre dtapes de calcul dunemachine sera considr comme une fonction de la taille du mot dentre. Ainsi, nousverrons par la suite que la difficult dun problme dpend du codage utilis. Il faudraitdonc toujours prciser ce codage. Nanmoins, il y a plusieurs codages usuels que nousutiliserons par dfaut, sauf mention contraire :

    les entiers cods en binaire avec les symboles 0 et 1 (par exemple, lentier 12 seracod 1100) ;

    de mme pour les rationnels, le numrateur et le dnominateur spars par un d-limiteur (par exemple, 4=3 sera cod 100#11) ;

    une matrice donne par la liste de ses coefficients spars par des dlimiteurs ; un graphe donn par sa matrice dadjacence ; un polynme donn par la liste de ses coefficients (spars par des dlimiteurs), etc.

  • 1.1. Problmes, langages et codage 3

    Mais il existe galement des codages moins usuels, en voici deux exemples :

    les entiers cods en unaire avec le seul symbole 1 (le nombre de 1 donne la valeur delentier, par exemple 5 sera encod 11111) : bien que non usuel, nous rencontreronsce codage plus tard ;

    un polynme de degr d donn par la liste des valeurs quil prend sur les entiers de0 d .

    Enfin, on aura rgulirement besoin de coder des couples ou des n-uplets de mots. Si xet y sont deux mots sur un alphabet , on dsignera par (x, y) le codage du couple (x, y),cest--dire, selon les cas :

    si lalphabet peut tre augment (ce qui sera le cas la plupart du temps), (x, y) dsi-gnera le mot x#y sur lalphabet [f#g et la taille de (x, y) est alors jxj+ jyj+1 : parexemple, si x = abaa et y = b ba alors le code de (x, y) est abaa#b ba de taille 8 ;

    lorsque lalphabet peut tre augment, on peut mme obtenir un codage de taillejxj+ jyj exactement en codant x sur un alphabet suivi de y sur un alphabet disjoint :par exemple, (ab ba, caba) sera cod ab baCABA ;

    si lalphabet ne peut tre augment, on supposera quil possde au moins deux sym-boles que lon notera 0 et 1 ; il y a alors au moins deux codages possibles :

    si x = x1 . . . xn et y = y1 . . . ym alors (x, y) dsignera le motx10x20x30 . . . xn10xn1y1y2 . . . ym ,

    cest--dire quon intercale 0 entre les lettres de x et 1 pour sparer x et y, puison crit y normalement : la taille de (x, y) est alors 2jxj+ jyj,

    pour un codage plus compact, on donnera dabord la taille de x (pour savoiro sparer les deux mots) puis la concatnation des deux mots : plus prci-sment, si t = jxj est la taille de x code en binaire sur f0,1g, t = t1 . . . tl ,alors (x, y) dsignera le mot t10t20 . . . tl10tl1xy ; la taille de (x, y) est alorsjxj+ jyj+ 2dlog(1+ jxj)e.

    On peut aisment gnraliser ces codages aux n-uplets pour n > 2. Selon les cas, nousutiliserons le codage le plus adapt sans forcment lexpliciter si le contexte permet dele deviner. Ainsi, la plupart du temps nous supposerons dans nos raisonnements que lecodage du couple (x, y) a pour taille jxj+ jyj.Maintenant que nous savons coder nos objets sur un alphabet fini, voyons commentformaliser les problmes quon se pose sur ces objets.

    1.1.2 Problmes et langagesLe but dun programme ou dun algorithme est de rsoudre un problme. La plupart dutemps, et nous nous placerons dans ce cadre, le problme est gnrique mais on le rsout

    2. Le cas unaire peut tre trait par une injection usuelle de N2 dans N mais il ne nous intressera pas ici.3. Rappelons que, sauf indication contraire, tous les logarithmes utiliss seront en base 2.

  • 4 Chapitre 1. Le modle de calcul

    sur une instance particulire : par exemple, on ne peut rpondre au problme dterminersi un entier est premier que sur un entier particulier quon nous donnerait en entre ;ou encore, le problme trier par ordre croissant une liste dentiers na de sens que surune liste dentiers sur laquelle travailler.Un problme est donc compos de deux lments : une entre (ou instance) et une ques-tion ou une tche raliser. Les deux exemples prcdents se reformulent ainsi :

    1. PRIMALIT : entre : un entier N ; question : N est-il premier ?

    2. TRI : entre : une liste dentiers l ; tche : trier l par ordre croissant.

    On distingue ainsi deux types de problmes : ceux qui consistent rpondre par oui oupar non une question donne (dans lexemple prcdent, dterminer si un entier estpremier), quon appelle problmes de dcision ; et ceux qui consistent produire un nouvelobjet (dans lexemple prcdent, produire la nouvelle liste trie), quon appelle problmesdvaluation. En effet, ces derniers consistent valuer une fonction : dans lexemple, ilsagit dvaluer la fonction qui une liste dentiers associe la liste trie.Pour spcifier un problme de dcision, il suffit de donner les mots pour lesquelles larponse est oui : un tel problme est donc caractris par un ensemble dinstances po-sitives. Plus prcisment, un problme de dcision donn sous la forme entre/question peut facilement tre transform sous la forme dun ensemble

    L= fx 2? j x code une instance valide et la rponse la question sur x est positivegquon appellera langage . Un problme dvaluation est quant lui caractris par lafonction quil calcule. On obtient alors la dfinition suivante.

    1-A Dfinition

    Un langage (ou problme de dcision) sur un alphabet est un ensemble de motssur. Un langage L? dfinit le problme de dcision dont les instances positivessont exactement les mots de L.

    Un problme dvaluation sur un alphabet est une fonction f :?!?.

    Lorsquun problme de dcision est vu comme un langage L, la forme de lentre apparatdans L par x code une instance valide . Il faudra donc toujours avoir lesprit que testersi lentre encode une instance valide fait partie de la complexit du problme ; mais enrgle gnrale, ce test est trs facile et rapide raliser et est donc omis des raisonnements.

  • 1.2. La machine de Turing 5

    Un peu de recul

    Dans la suite, nous tudierons surtout les problmes de dcision (langages). Mais il fautgarder lesprit quon peut la plupart du temps transformer un problme dvaluation enun langage de difficult quivalente .Par exemple, pour transformer trouver le plus petit diviseur non trivial de N , onajoutera une entre k pour obtenir la question existe-t-il un diviseur non trivial de Nqui soit infrieur k ? . Si lon sait rpondre cette question, alors on peut trouverrapidement le plus petit diviseur non trivial de N : il suffit deffectuer une recherchedichotomique en testant sil existe un diviseur N=2, puis si oui, sil existe un divisieurN=4 ou sinon sil existe un divisieur 3N=4, etc.De manire presque quivalente, plutt quun entier k on pourrait ajouter un mot a lentre pour obtenir la question existe-t-il un diviseur non trivial de N dont lcriturebinaire commence par a ? . On effectuerait alors une recherche prfixe la place de larecherche dichotomique.Enfin, une autre faon de procder est de demander le i-me bit de la rponse. Ainsi, pourtransformer calculer la somme de deux entiers x et y en un problme de dcision, onajoutera une entre i pour obtenir la question le i-me bit de la somme x+ y est-il 1 ? .

    Passons maintenant ltude du modle de calcul qui permet de travailler sur ces pro-blmes.

    1.2 La machine de TuringIl existe de nombreuses variantes de la machine de Turing : un ruban ou plusieurs, in-fini vers la droite seulement ou bi-infini, etc. Tous ces modles sont quivalents mais lemontrer nest pas lobjet de ce livre (on trouvera les simulations entre modles dans deslivres de calculabilit par exemple). Nous nous contenterons donc de dfinir une uniqueversion de machine de Turing, plusieurs rubans bi-infinis.

    1-B Remarque Nous avons pris le parti de dfinir rigoureusement ce modle de cal-cul ; ds lors, les dfinitions sont relativement laborieuses pour des concepts intuitifs. Uneapproche possible est de sauter le formalisme et de sattarder sur la description informelleet les exemples.

    1.2.1 DfinitionUne machine de Turing (figure 1.2) est compose dun nombre fini de rubans sur cha-cun desquels se dplace une tte de lecture/criture. Les rubans sont composs de casesqui contiennent chacune un symbole : il sagit de la mmoire de notre machine. Cestlinformation contenue sur ces rubans quon va lire et modifier. Pour cela, les ttes de

  • 6 Chapitre 1. Le modle de calcul

    lecture/criture peuvent se dplacer sur les rubans et lire ou modifier le contenu de la casequelles visitent.On distinguera trois types de rubans :

    le ruban dentre, en lecture seule (la tte peut seulement lire les symboles et pas lesmodifier) et sur lequel est crit le mot traiter ;

    le ruban de sortie, en criture seule (la tte ne peut qucrire des symboles sans lirele contenu des cases) et sur lequel on crira le rsultat du calcul ;

    les rubans de travail (en lecture et criture) permettant de mener bien le calcul.

    tte k

    tte k-1

    tte 2

    tte 1

    a a a ab b b b

    a a a a ab b b

    ab b b b b b b

    a a a a ab b b

    ruban de sortie

    ruban dentre

    rubans de travail...

    Figure 1.2 Machine de Turing k rubans.

    Les ttes de lecture/criture ont un pouvoir trs limit : elles ne peuvent que se dplacerdune case vers la gauche ou vers la droite et ont une mmoire finie, cest--dire quelles ne

    4. Ces conventions nous permettront de parler de manire homogne de complexit en espace ; la plu-part du temps, nous aurions pu considrer des machines dont les rubans dentre et de sortie sont aussi enlecture/criture.

  • 1.2. La machine de Turing 7

    peuvent prendre quun nombre fini dtats possibles. En dautres termes, lensemble desttes est un automate fini. Les rubans, quant eux, sont infinis et reprsentent la mmoirede la machine. Si lon indexe les cases dun ruban par Z, un dplacement droite dunette de lecture correspond incrmenter sa position (+1) et un dplacement gauche la dcrmenter (1) ; elle peut aussi rester sur place (0).

    Un peu de recul

    Nos ordinateurs nont pas une mmoire infinie : elle est certes consquente mais finie.Ce sont donc des automates finis. Mais cette modlisation nest pas satisfaisante : aucunprogrammeur naccepterait dutiliser un automate fini qui par essence est incapable decompter La mmoire infinie dune machine de Turing (ses rubans) semble reflter cequun ordinateur est capable de faire et on peut voquer deux raisons cela :

    en pratique, la taille de la mmoire dun ordinateur est suffisamment grande pourquelle soit considre infinie ;

    sil manque de mmoire pour raliser un calcul, on peut toujours en ajouter (sousla forme dun disque dur externe par exemple), donc la place dont on dispose est virtuellement infinie

    Au dbut du calcul, le ruban dentre contient le mot sur lequel la machine doit tra-vailler. Ce mot occupe un nombre fini de cases, les autres restant vides : un symbolespcial blanc reprsente une case vide. Tous les autres rubans sont vides (cest--direne contiennent que des symboles blancs). La tte du ruban dentre pointe sur la premirelettre du mot dentre et ltat des ttes est un tat particulier appel tat initial. Puis, enfonction de ltat des ttes et des symboles quelles lisent dans la case visite, chaque tteremplace ventuellement par un nouveau symbole le contenu de la case, se dplace gauche ou droite et change dtat. Le calcul se termine lorsquun tat terminal estatteint. Formalisons cette description avant de voir des exemples.Pour dfinir formellement une machine de Turing, nous devons donc spcifier plusieurslments : les symboles utiliss sur les rubans, les tats des ttes et la faon dont ellesagissent sur les rubans.

    1-C Dfinition (machine de Turing)

    Une machine de Turing k 2 rubans est un octuplet M = (, ,B ,Q, q0, qa , qr ,) o : est un ensemble fini non vide appel alphabet dentre (ce sont les symboles utilisspour crire le mot dentre) ;

    est un ensemble fini appel alphabet de travail, tel que (ce sont les symbolesutiliss dans les cases au cours du calcul) ;

    B est un symbole spcial blanc (reprsentant une case vide) tel que B 2 n ;

  • 8 Chapitre 1. Le modle de calcul

    Q est un ensemble fini appel ensemble des tats (les tats que peuvent prendre lesttes de lecture/criture) ;

    q0 2 Q est un tat spcial appel tat initial (indiquant ltat dans lequel les ttescommencent le calcul) ;

    qa 2Q et qr 2Q sont des tats spciaux appel tats terminaux (indiquant la fin ducalcul) : qa est ltat dacceptation et qr ltat de rejet ;

    : (Qnfqa , qr g) k1 !Q k1fG, S,Dgk est la fonction de transition dcrivantle comportement des ttes :

    (q ,a1, . . . ,ak1) = (r, b2, . . . , bk ,d1, . . . ,dk )

    si, lorsque les ttes sont dans ltat q et que la i-me tte lit le symbole ai (i k1car la tte du ruban de sortie ne lit rien), alors le nouvel tat des ttes est r , la ttei crit le symbole bi dans la case la place de ai (i 2 car la tte du ruban dentrencrit rien) et elle se dplace dans la direction di (G gauche, S sur place, D droite).

    1-D Remarques

    La fonction de transition nest pas dfinie sur les tats qa et qr puisque ce sontles tats terminaux qui marquent la fin du calcul : la machine sarrte ds que lundeux est atteint.

    De plus, il est commode dutiliser un alphabet de travail plus toff que celui den-tre afin de disposer de symboles permettant de sparer des mots, de marquer despositions, etc.

    Enfin, insistons une dernire fois sur le fait que, dans le modle que nous avonschoisi, le ruban dentre est en lecture seule (donc la fonction de transition nespcifie aucun symbole crire sur le ruban dentre) et le ruban de sortie en critureseule (donc la fonction de transition ne spcifie aucun symbole lire sur le rubande sortie).

    Les rubans de M sont infinis droite et gauche :

    sur chaque ruban, une case est repre par un entier relatif i 2 Z. La position dunette un instant donn est le numro de la case sur laquelle elle est situe. Toutesles ttes sont en position 1 au dbut du calcul.

    chaque transition, la machine volue dune configuration une autre. Pour dcrire laconfiguration de la machine, il faut dcrire le contenu des rubans, la position des ttes etleur tat :

    une configuration C de M est un lment de Q ( k )Z Zk : C dcrit ltat desttes, le contenu de chaque case des k rubans et les positions des ttes.

  • 1.2. La machine de Turing 9

    Le calcul prend fin lorsquun tat terminal est atteint :

    une configuration finale est une configuration pour laquelle ltat est un tat termi-nal qa ou qr .

    Le calcul dune machine de Turing est une succession de configurations dicte par lafonction de transition : on passe dune configuration une autre en changeant ltat desttes et le contenu des cases visites, et en dplaant les ttes. Plus formellement :

    Soit C = (q , (c (1)j , . . . , c(k)j ) j2Z, (i1, . . . , ik )) une configuration de M . Si

    (q , (c (1)i1 , . . . , c(k1)ik1

    )) = (r, (a2, . . . ,ak ), (d1, . . . ,dk ))

    avec r 2Q, (a2, . . . ,ak ) 2 k1 et (d1, . . . ,dk ) 2 fG, S,Dgk , alors la configuration quisuit C dans le calcul de M est C 0 = (r, (c 0(1)j , . . . , c

    0(k)j ) j2Z, (i

    01, . . . , i

    0k )) o :

    pour 1 m k, i 0m = im 1 si dm = G, i 0m = im si dm = S et i 0m = im + 1 sidm = D ;

    c 0(1)n = c (1)n pour tout n 2Z pour 2 m k, c 0(m)im = am et c

    0(m)n = c

    (m)n pour n 6= im .

    On notera C !M C 0. Une tape de calcul est le passage dune configuration la suivante. Le calcul de M sur lentre x = x1 . . . xn 2 ? est la suite potentiellement infinie deconfigurations C0,C1, . . . , o :

    C0 = (q0, (c(1)j , . . . , c

    (k)j ) j2Z, (1, . . . , 1)) avec c

    (1)j = x j si 1 j n, c

    (1)j = B sinon,

    et c (m)j = B pour tous 2 m k et j 2 Z (en dautres termes : tat initial,rubans vides sauf le ruban dentre contenant lentre x, ttes en position 1) ;

    pour tout j 0, C j !M C j+1 ; si la suite C0, . . . ,Ct est finie, alors Ct est lunique configuration finale. Lenombre dtapes de calcul est alors t .

    Il se peut que la machine natteigne jamais un tat final ; dans ce cas, la machine ne sarrtepas :

    la machine M sarrte sur lentre x (on dit aussi que M (x) sarrte) si le calcul de Msur x atteint une configuration finale.

    Si la machine sarrte, le mot dentre est accept ou rejet selon si la machine arrive ltat dacceptation ou de rejet :

    on dit que M accepte x (ou que M (x) accepte) si M sarrte sur x et que ltat de laconfiguration finale est qa . On dit que M rejette x (ou que M (x) rejette) si M sarrtesur x et que ltat de la configuration finale est qr . Sinon M (x) ne sarrte pas.

  • 10 Chapitre 1. Le modle de calcul

    Enfin, outre lacceptation ou le rejet, le mot crit la fin du calcul sur le ruban de sortieconstitue le rsultat du calcul :

    si M sarrte sur x, le rsultat du calcul de M sur x, not M (x), correspond aucontenu du ruban de sortie dans la configuration finale (sans compter les cases vides gauche et droite). Plus formellement, cest le plus petit mot y = y1 . . . ym 2 ? telque pour une certaine position j 2 Z, c (k)j+p = yp pour tout 1 p m et c (k)p 0 = Bpour tout p 0 > j +m ou p 0 j .

    Ainsi, deux fonctionnements sont possibles pour une machine de Turing : un mode ac-ceptation (M accepte ou rejette le mot x selon ltat qa ou qr la fin du calcul) et unmode calcul (le rsultat du calcul de M sur x est le contenu y du ruban de sortie la fin du calcul). Dans le mode acceptation, M accepte un ensemble de mots, tandis quedans le mode calcul, M calcule une fonction.

    1-E Dfinition

    Soit M une machine de Turing.

    Le langage accept (ou reconnu) par M est lensemble des mots x 2? tels que M (x)accepte.

    La fonction calcule par M est la fonction partielle fM :?! ? qui est dfinie parfM (x) =M (x) si M (x) sarrte.

    Enfin, une machine peut effectuer un plus ou moins grand nombre dtapes et visiter unplus ou moins grand nombre de cases pour mener bien son calcul, do la dfinitionsuivante.

    1-F Dfinition (temps et espace)

    Soit M une machine de Turing et x un mot sur lalphabet dentre. Si M (x) sarrte, alors :

    le temps de calcul de M (x) est le nombre dtapes effectues par le calcul M (x) ; lespace utilis par M (x) est le nombre total de cases diffrentes visites au cours ducalcul par les ttes sur les seuls rubans de travail.

    La raison pour laquelle les rubans dentre et de sortie ne sont pas compts dans lespacedeviendra claire dans le chapitre 4 consacr ce sujet.

    1.2.2 ExemplesAfin dillustrer ces concepts, voyons maintenant quelques exemples de machines de Tu-ring trs simples.

  • 1.2. La machine de Turing 11

    1-G Exemple Une machine trois rubans (un ruban dentre, un ruban de travail etun ruban de sortie) qui teste si un entier crit en binaire sur le ruban dentre est pairpeut fonctionner ainsi : dplacer la tte de lecture vers la droite sur le ruban dentrejusqu la fin du mot et tester si le dernier chiffre est 0. Pour reprer la fin du mot, onva une case trop loin pour trouver le premier symbole blanc (voir la figure 1.3 pourune illustration). La machine sera donc dcrite par :

    lalphabet dentre = f0,1g (pour crire lentre en binaire) ; lalphabet de travail = f0,1,Bg ; lensemble des tats Q = fq0, q1, qa , qr g ; la fonction de transition dfinie par

    (q0, (u,B)) = (q0, (B ,B), (D , S, S)) pour tout u 2 f0,1g (sur le ruban den-tre, aller droite sans changer dtat tant quun blanc nest pas lu, ne pasbouger sur les autres rubans),

    (q0, (B ,B)) = (q1, (B ,B), (G, S, S)) (revenir dun cran en arrire ds que lona trouv un blanc sur le ruban dentre et passer dans ltat q1),

    (q1, (0,B)) = (qa , (B ,B), (S, S, S)) (accepter si le dernier chiffre est 0), (q1, (1,B)) = (qr , (B ,B), (S, S, S)) (rejeter si le dernier chiffre est 1), toutes les autres transitions ne devraient pas se produire en fonctionnementnormal, donc on peut dfinir (q , (u,v)) = (qr , (B ,B), (S, S, S)) par exemplepour tous les (q , (u,v)) non prciss ci-dessus.

    On remarquera que les rubans de travail et de sortie ne servent pas ici.

    tte

    B B1 1 1 10 0 ruban dentre

    Figure 1.3 Machine pour tester la parit.

    1-H Exemple Une machine trois rubans qui multiplie par deux lentier crit enbinaire sur le ruban dentre peut fonctionner ainsi : recopier lentre sur le ruban desortie et ajouter un zro ds quon trouve un blanc. La machine sera donc dcrite par :

    lalphabet dentre = f0,1g (pour crire lentre en binaire) ; lalphabet de travail = f0,1,Bg ; lensemble des tats Q = fq0, qa , qr g ; la fonction de transition dfinie par

  • 12 Chapitre 1. Le modle de calcul

    (q0, (u,B)) = (q0, (B , u), (D, S,D)) pour tout u 2 f0,1g (recopier lentresur le ruban de sortie et aller droite),

    (q0, (B ,B)) = (qa , (B , 0), (S, S, S)) (crire un zro la fin du mot), toutes les autres transitions ne devraient pas se produire en fonctionnementnormal, donc on peut dfinir (q , (u,v)) = (qr , (B ,B), (S, S, S)) par exemplepour tous les (q , (u,v)) non prciss ci-dessus.

    On remarquera que le ruban de travail ne sert pas ici.

    1-I Exemple Une machine trois rubans qui teste si le mot en entre a autant de aque de b peut fonctionner ainsi : sur le ruban de travail, crire au dpart le symbole apour marquer la case initiale ; lire le mot dentre de gauche droite et, sur le rubande travail, se dplacer droite lorsquon lit un a, gauche lorsquon lit un b ; vrifierqu la fin la tte du ruban de travail est revenue la case initiale. La machine seradonc dcrite par :

    lalphabet dentre = fa, bg ; lalphabet de travail = fa, b ,Bg ; lensemble des tats Q = fq0, q1, qa , qr g ; la fonction de transition dfinie par

    (q0, (B ,B)) = (qa , (B ,B), (S, S, S)) (accepter si le mot est vide), (q0, (a,B)) = (q1, (a,B), (D ,D , S)) et(q0, (b ,B)) = (q1, (a,B), (D ,G, S)) (crire le symbole a pour reprer la caseinitiale et se dplacer droite ou gauche selon si on lit a ou b en entre),

    (q1, (a,B)) = (q1, (B ,B), (D ,D , S)),(q1, (b ,B)) = (q1, (B ,B), (D ,G, S)),(q1, (a,a)) = (q1, (a,B), (D ,D , S)) et(q1, (b ,a)) = (q1, (a,B), (D ,G, S))(se dplacer gauche ou droite selon si on lit b ou a en entre, en prenantgarde ne pas effacer le symbole a du ruban de travail),

    (q1, (B ,a)) = (qa , (B ,B), (S, S, S)) et (q1, (B ,B)) = (qr , (B ,B), (S, S, S)) (ac-cepter ou rejeter selon si on est revenu la case initiale du ruban de travail la fin de la lecture du mot dentre),

    toutes les autres transitions ne devraient pas se produire en fonctionnementnormal, donc on peut dfinir (q , (u,v)) = (qr , (B ,B), (S, S, S)) par exemplepour tous les (q , (u,v)) non prciss ci-dessus.

    Enfin, un dernier exemple plus compliqu : laddition de deux entiers cods en binaire.1-J Exemple Sur le ruban dentre se trouvent deux entiers x et y crits en binairespars par un symbole spcial #, cest--dire que le ruban dentre contient le motx#y. Nous voulons crire en binaire sur le ruban de sortie lentier z tel que z = x + y.Pour cela, nous allons dabord recopier x sur le ruban de travail, pour disposer de x

  • 1.2. La machine de Turing 13

    et de y sur deux rubans spars (ce qui nous vite de faire des allers-retours pour lirealternativement les chiffres de x et de y). Puis, en partant des bits de poids faibles,nous allons effectuer lalgorithme daddition de lcole primaire, en prenant soin depropager la retenue, pour crire le rsultat sur le ruban de sortie. La machine troisrubans sera donc dcrite par :

    lalphabet dentre = f0,1,#g ; lalphabet de travail = f0,1,#,Bg ; lensemble des tats Q = fq0, qbit faible, qsans retenue, qavec retenue, qa , qr g : ltat initialq0 sert recopier x, qbit faible se placer sur les bits de poids faibles de x et y,qsans retenue et qavec retenue servent faire laddition partir des bits de poids faibles(qavec retenue indiquant quil y a une retenue) ;

    la fonction de transition dfinie par (q0, (u,B)) = (q0, (u,B), (D ,D , S)) pour tout u 2 f0,1g (recopier x sur leruban de travail),

    (q0, (#,B)) = (qbit faible, (B ,B), (D , S, S)) (changer dtat pour aller la fin dey),(qbit faible, (u,B)) = (qbit faible, (B ,B), (D , S, S)) pour tout u 2 f0,1g (aller versla fin de y),(qbit faible, (B ,B)) = (qsans retenue, (B ,B), (G,G, S)) (se placer sur le bit de poidsfaible de y et de la copie de x),

    (qsans retenue, (u,v)) = (qsans retenue, (v, u + v), (G,G,G)) si u,v 2 f0,1g nesont pas tous deux gaux 1 (pas de retenue) et(qsans retenue, (1,1)) = (qavec retenue, (1,0), (G,G,G)) (donne lieu une rete-nue),(qavec retenue, (0,0)) = (qsans retenue, (0,1), (G,G,G)) (fin de la retenue),(qavec retenue, (1,1)) = (qavec retenue, (1,1), (G,G,G)) et(qavec retenue, (u,v)) = (qavec retenue, (v, 0), (G,G,G)) si u+v = 1 (propagationde la retenue),

    si x est plus court, on lit B sur le ruban de travail et il faut continuer lirey :(qsans retenue, (u,B)) = (qsans retenue, (B , u), (G, S,G)) (pas de retenue),(qavec retenue, (0,B)) = (qsans retenue, (B , 1), (G, S,G)) et(qavec retenue, (1,B)) = (qavec retenue, (B , 0), (G, S,G)),

    si y est plus court que x, alors on lit # sur le ruban dentre et il faut continuer lire x :(qsans retenue, (#, u)) = (qsans retenue, (u, u), (S,G,G)) (pas de retenue),(qavec retenue, (#,0)) = (qsans retenue, (0,1), (S,G,G)) et(qavec retenue, (#,1)) = (qavec retenue, (1,0), (S,G,G)),

    enfin, aprs avoir puis x et y, on lit # sur le ruban dentre et B sur le rubande travail :

  • 14 Chapitre 1. Le modle de calcul

    (qsans retenue, (#,B)) = (qa , (B ,B), (S, S, S)) (pas de retenue) et(qavec retenue, (#,B)) = (qa , (B , 1), (S, S, S)) (crire la retenue),

    toutes les autres transitions ne devraient pas se produire en fonctionnementnormal, donc on peut dfinir (q , (u,v)) = (qr , (B ,B), (S, S, S)) par exemplepour tous les (q , (u,v)) non prciss ci-dessus.

    On constate la difficult de dfinir prcisment des machines de Turing pour des tchespourtant simplistes. Cest la raison pour laquelle nous utiliserons gnralement, partirdu prochain chapitre, un langage de plus haut niveau (cf. section 1.2.4).

    . 1-K Exercice

    Donner la description de machines de Turing permettant de :

    tester si le mot en entre est un palindrome ; effectuer la multiplication de deux entiers donns en binaire.

    1.2.3 Code et machine universelle

    Un ordinateur peut tre programm pour effectuer diffrentes tches, alors quil semble premire vue quune machine de Turing est spcifique un problme particulier. Nousallons voir quil nen est rien et quil existe une machine universelle capable dexcuterun programme quon lui fournit en entre (selon le vocabulaire informatique, cette ma-chine est donc un interprteur). Lexistence dune telle machine capable dexcuter tout programme quon lui fournit en entre na rien dvident a priori, et il sagit dunedes particularits cruciales des machines de Turing (et de nos ordinateurs bien sr). Cettenotion apparat dj dans larticle fondateur de Turing [Tur37].Une telle machine prend en entre un programme et nous devons donc dabord voircomment coder ce programme, qui nest rien dautre que la description dune machinede Turing. Nous allons donc dfinir le code dune machine de Turing : il sagit essentiel-lement de coder les alphabets dentre et de sortie, lensemble des tats et la fonction detransition.

    1-L Dfinition (code dune machine de Turing)

    Soit M = (, ,B ,Q, q0, qa , qr ,) une machine de Turing k rubans. Nous supposeronssans perte de gnralit que = f1,2, . . . , jjg N, = f1,2, . . . , j jg N et B = j j, etque Q = f1,2, . . . , jQjg N, q0 = 1, qa = jQj 1 et qr = jQj (ainsi, la seule donne destailles de , et Q nous permettra de connatre , , B , Q, q0, qa et qr ).Pour dcrire la machine M , on spcifiera en unaire le nombre k de rubans ainsi que jj,j j et jQj, tandis que la fonction de transition sera code par un mot u donnant toutesles transitions possibles.

  • 1.2. La machine de Turing 15

    Plus prcisment, le code de M est le mot hM i= 1k01jj01j j01jQj0u sur lalphabet f0,1g,o u est dfini comme suit :

    tout dabord, pour tout lment s = (q ,1, . . . ,k1) 2 (Q n fqa , qr g) k1, si(s) = (r, 02, . . . , 0k ,d1, . . . ,dk ) alors on code la transition par le mot

    us = 1q011012 . . . 01k101r01

    0201

    03 . . . 01

    0k01d

    0101d

    02 . . . 01d

    0k

    o d 0i = 0 si di =G, 1 si di = S et 2 si di =D ; on note s1, . . . , st les lments de (Q nfqa , qr g) k1 (disons dans lordre lexicogra-phique, mais peu importe) ;

    on dfinit alors u = us10us20 . . . 0ust qui encode toutes les transitions possibles.

    Nous avons donn une dfinition prcise du code hM i dune machine de Turing M mais ilsuffit de retenir quun tel code est simple et dcoule directement de la dfinition de M . Ily aurait bien dautres codes possibles, notamment faisant intervenir des codages binairesplus compacts mais cela nest pas ncessaire. Il faut simplement que le code, en tantque mot sur f0,1g, soit manipulable aisment sur le ruban dune machine de Turing.Afin de prparer la construction dune machine universelle ci-dessous, nous allons voirque lon peut rduire la taille de lalphabet sans trop nuire lefficacit de la machine :en effet, on peut construire une machine quivalente sur un alphabet restreint. Nousdevons dabord dfinir la notion de machines quivalentes : nous dirons quune machineen simule une autre si elle a le mme comportement un codage prs des entres/sorties.Pour coder les entres/sorties, nous utiliserons unmorphisme, cest--dire une application' : ? ! 0? telle que '(uv) = '(u)'(v) (en dautres termes, il sagit de coder chaquelettre de par un mot sur 0, et limage dun mot de est alors la concatnation desimages de ses lettres). Un morphisme ' prserve les longueurs si 8u,v 2, j'(u)j= j'(v)j :cette notion est utile pour inverser aisment le morphisme (dcoder).

    1-M Dfinition (simulation)

    Soit M une machine de Turing dalphabets dentre et de travail . Une machine M 0(dalphabets dentre 0 et de travail 0) simule M sil existe un morphisme dentre ' : ? ! 0? et un morphisme de sortie injectif et prservant les longueurs : ? ! 0?tels que, pour toute entre x 2?, M (x) sarrte ssi M 0('(x)) sarrte, et dans ce cas :

    M (x) accepte ssi M 0('(x)) accepte (mme acceptation), et de plus M (x) = 1(M 0('(x))) (mme rsultat de calcul).

    Bien que la simulation soit une notion concernant les machines, si x est un mot, on dirapar abus de langage que le calcul de M 0 sur '(x) simule le calcul de M sur x (ou plussimplement que M 0('(x)) simule M (x)).

  • 16 Chapitre 1. Le modle de calcul

    1-N Remarque Le lemme suivant montre quon peut se ramener des machinessur lalphabet binaire (le symbole blanc en plus bien sr). On pourrait se contenter delide de la dmonstration esquisse ci-dessous, mais la dmonstration relativement for-melle que nous proposons ensuite poursuit deux objectifs : dabord, montrer que lonpeut manipuler formellement les machines de Turing, puis illustrer par la complexit desdtails ncessaires comparativement la simplicit des ides quil est inutile de le faireune fois quon a apprhend les capacits des machines de Turing. Par la suite, nous nen-trerons plus dans tant de dtails lorsquil sagira de manipuler les machines de Turing carils obscurcissent les ides sous-jacentes.

    1-O Lemme (rduction de lalphabet)

    Si M = (, ,B ,Q, q0, qa , qr ,) est une machine de Turing, alors il existe une machine M 0dalphabet dentre 0 = f0,1g et dalphabet de travail 0 = f0,1,Bg, qui simule M (avecun morphisme dentre ' :?!0?) et telle que :

    si M (x) sarrte en temps t alors M 0('(x)) sarrte en temps 6t log j j ; si M (x) utilise un espace s , alors M 0('(x)) utilise un espace 2s log j j.

    De plus, les deux machines ont le mme nombre k de rubans et il existe une machine deTuring fixe (indpendante de M ) qui calcule le code de M 0 partir du code de M .

    Ide de la dmonstration Chaque lettre de lalphabet sera code en binaire et occu-pera log j j cases sur les rubans de M 0 (voir la figure 1.4). La machine M 0 considreraalors ces blocs de cases comme une seule lettre de et pourra effectuer la transitionde M qui convient. Les ttes effectuent la vole les oprations de codage/dcodagequi ne ncessitent quune mmoire finie puisque le nombre de lettres est fini.

    a b c d B

    0 0 0 01 1 1 1 B B

    Figure 1.4 Changement de lalphabet fa, b , c ,d ,Bg en f0,1,Bg sur un ruban : chaquelettre est code sur deux bits.

    Dmonstration Soit (0), . . . , (j j2),B les lments de et : ? ! 0? le morphismequi (i ) associe le code binaire de i sur b = dlog(j j 1)e bits (en ajoutant des zrosen tte si ncessaire) et qui B 2 associe B b 2 0? : ce sera le morphisme de sortie,

  • 1.2. La machine de Turing 17

    tandis que le morphisme dentre ' :?!0? est simplement la restriction de (rappelons en effet que ).La machine M 0 a le mme nombre k de rubans que M et chaque ruban aura le mmerle que dans M (cest--dire quon fait une simulation ruban par ruban). Chaqueruban de M 0 est divis mentalement en blocs de b cases correspondant chacunau code des lettres se trouvant sur les rubans de M . Pour simuler une transition deM , les ttes de M 0 se trouveront sur la premire case des blocs correspondant auxcases lues par M , elles liront ce bloc de la gauche vers la droite en retenant le motlu au fur et mesure, puis reviendront en dbut de bloc en crivant le nouveau mot(correspondant la nouvelle lettre de crire) de la droite vers la gauche, et enfinse dplaceront ventuellement gauche ou droite de b cases pour se positionner endbut du nouveau bloc et simuler la transition suivante.Lors dun dplacement droite de b cases la fin de la simulation dune transition, ilfaut prter attention au ruban de sortie en criture seule. Sur ce ruban comme sur lesautres, lorsquon les survole on aimerait laisser inchanges les cases du bloc que lonvient de traiter, mais on ne peut pas les lire et on doit quand mme crire quelquechose la place (par dfinition, toute transition doit crire un symbole dans la caseo se trouve la tte). Pour remdier ce problme, dans les tats de dplacement onindiquera ce que la tte de sortie doit crire.Une tape de M sera alors simule par au plus 3b 2 tapes de M 0. Il nous faudra denombreux tats supplmentaires pour retenir le mot lire ou crire dans le bloc etpour les dplacements. Ainsi, chaque tat q de M , on associera les tats suivants :

    ltat de lecture q u1,...,uk1lec (pour tous mots u1, . . . , uk1 2 0? de taille b 1)signifie que les prfixes des blocs lus jusqu prsent de gauche droite sur lesk 1 premiers rubans (le ruban de sortie est en criture seule) sont u1, . . . , uk1 ;

    ltat dcriture q u2,...,ukecr pour tous mots u2, . . . , uk 2 0? de taille b 1 signifiequil faut encore crire, de droite gauche, les prfixes u2, . . . , uk dans les blocsdes k 1 derniers rubans (le ruban dentre est en lecture seule) ;

    ltat de dplacement q i1,...,ik ;xdep pour b i j b et x 2 0? (jxj b 1) signifiequil faut encore se dplacer de ji j j cases ( gauche si i j < 0 et droite sinon) etque le mot quil reste crire sur le ruban de sortie dans lordre des dplacementsest x ;

    on ajoute un tat dacceptation not qacc et un tat de rejet not qrej ( ne pasconfondre avec les tats qa et qr de M ) ;

    enfin, ltat initial est r ,...,lec (o dsigne le mot vide), pour r = q0 ltat initialde M .

    Les transitions de M 0 se dduisent alors aisment : pour un tat de lecture, tant quon nest pas la fin du bloc (jui j< b 1), on litla case courante qui complte le prfixe et on se dplace droite :

    0(q u1,...,uk1lec , (a1, . . . ,ak1)) = (qu1a1,...,uk1ak1lec , (a2, . . . ,ak1,B), (D , . . . ,D)) ;

  • 18 Chapitre 1. Le modle de calcul

    lorsquon arrive en fin de bloc (cest--dire jui j= b 1), il faut effectuer le chan-gement dtat correspondant la transition de M et commencer crire de droite gauche le nouveau mot sur le bloc.Plus prcisment, si on note (q , (1, . . . ,k1)) = (r, ( 02, . . . , 0k ), (d1, . . . ,dk )), et (i ) = uiai (pour jui j = b 1 et ai 2 0) et ( 0i ) = vi bi (pour jvi j = b 1 etbi 2 0) alors :

    0(q u1,...,uk1lec , (a1, . . . ,ak1)) = (rv2,...,vkecr , (b2, . . . , bk ), (G, . . . ,G)) ;

    pour un tat dcriture, tant quon nest pas au dbut du bloc, on crit la dernirelettre bi dans la case courante :

    0(r v2b2,...,vk bkecr , (a1, . . . ,ak1)) = (rv2,...,vkecr , (b2, . . . , bk ), (G, . . . ,G)) ;

    lorsquon arrive en dbut de bloc, si r est un tat terminal de M alors on passedans ltat qacc ou qrej selon que r est acceptant ou rejetant : ainsi, si b2, . . . , bksont des symboles de 0 alors

    0(r b2,...,bkecr , (a1, . . . ,ak1)) = (qacc, (b2, . . . , bk ), (S, . . . , S))

    si r = qa (et de manire similaire si r = qr ).Si en revanche r nest pas terminal, alors on crit la lettre correspondante et onpasse dans un tat de dplacement, en effectuant le premier mouvement de cedplacement.Ainsi, si comme prcdemment (q , (1, . . . ,k1)) = (r, ( 02, . . . , 0k ), (d1, . . . ,dk )),alors on dfinit :

    i j =b + 1 si d j =G, i j = 0 si d j = S, i j = b 1 si d j =D,

    et pour grer le ruban de sortie, si ( 0k ) = 1 . . . b : si dk =G alors x = B b1 (on crira des blancs en allant vers la gauche), si dk = S alors x = b11 (il faut toujours crire 1 car on reste sur place), si dk =D alors x = 2 . . . b (il faut crire ( 0k ) car on va droite).

    On a alors 0(r b2,...,bkecr , (a1, . . . ,ak1)) = (r

    i1,...,ik ;xdep , (b2, . . . , bk ), (d1, . . . ,dk )) ;

    pour un tat de dplacement, il sagit de se dplacer dun bloc vers la gauche oula droite (b cases) ou de rester sur place.Si toutes les ttes sont arrives destination (dbut du bloc pour la transitionsuivante), cest--dire si i j = 0 pour tout j et x = , alors on passe dans ltat delecture en effectuant le premier dplacement droite :

    0(r 0,...,0;dep , (a1, . . . ,ak1)) = (ra1,...,ak1lec , (a2, . . . ,ak1,B), (D , . . . ,D)).

  • 1.2. La machine de Turing 19

    Si les ttes sont encore en route, on continue leur trajet : on dfinit d j =G et i 0j = i j + 1 si i j < 0, d j = S et i 0j = 0 si i j = 0, d j =D et i 0j = i j 1 si i j > 0,

    et alors

    0(r i1,...,ik ;x1...xmdep , (a1, . . . ,ak1)) = (ri 01,...,i 0k ;x2...xmdep , (a2, . . . ,ak1, x1), (d1, . . . ,dk )).

    Chaque tape de M est ainsi simule par 3b 2 tapes de M 0 (b 1 tapes pour lire lebloc de gauche droite, b 1 pour crire les nouveaux symboles de droite gaucheet b pour se dplacer dun bloc vers la gauche ou la droite). Puisque

    b = dlog(j j 1)e 2 log j j,le temps mis parM 0 est 6t log j j. Demme, puisque chaque case deM est remplacepar b cases de M 0, lespace utilis par M 0 est 2s log j j.Nous venons dcrire explicitement la fonction de transition de M 0 en fonction decelle de M . La machine de Turing, indpendante de M , qui suivrait ces instructionscalculerait donc le code de M 0 partir de celui de M . Il serait bien sr fastidieux maistout fait faisable de donner le code dune telle machine. ut

    Cette rduction dalphabet est cruciale pour les machines universelles que nous construi-sons maintenant. En guise dchauffement, nous proposons lexercice suivant.

    . 1-P Exercice

    Montrer quune machine de Turing k > 1 rubans de travail fonctionnant en tempst peut tre simule par une machine de Turing un seul ruban de travail fonction-nant en temps O(t 2). Do vient la perte de temps ?Indication : cf. figure 1.6.

    Dans la plupart des cas, nous navons pas besoin dune machine universelle trs perfor-mante : cest pourquoi nous en prsentons dabord une dont le principe est simple etqui est capable de simuler une machine avec une perte quadratique en temps. Nous nedonnerons que lide de la preuve car nous verrons ensuite une machine plus efficace : onsimulera en O(t log t ) tapes une machine fonctionnant en temps t .

    1-Q Proposition (machine universelle simple mais non optimale)

    Il existe une machine U 5 rubans, sur lalphabet dentre U = f0,1g et lalphabet detravail U = f0,1,Bg, telle que pour toute machine M sur les alphabets M et M :

  • 20 Chapitre 1. Le modle de calcul

    il existe un morphisme 'M : ?M ! ?U tel que pour tout mot x 2 ?M , le calcul dela machine U sur le couple (hM i,'M (x)), not U (hM i,'M (x)), simule M (x) ;

    il existe une constante M telle que pour tout x 2 ?M , si M (x) sarrte en temps tet utilise un espace s , alors U (hM i,'M (x)) sarrte en temps M (1+ s t ) et utiliseun espace M (1+ s).

    Ide de la dmonstration Le lemme 1-O permet de travailler non sur M directement,mais sur la machine quivalente M 0 ayant pour alphabet U = f0,1,Bg (via un mor-phisme 'M ) : il suffit de calculer dans un premier temps le code de la nouvelle machine.En outre, par commodit, on peut dabord construire une machine universelle U 0 surun alphabet plus grand (utilisant, par exemple, des dlimiteurs ou des marqueurs),puis se ramener lalphabet U par le lemme 1-O.

    (ruban de sortie)sortie de M 0

    (ruban de travail 3)tat des ttes et contenu des cases lues

    (ruban de travail 2)contenu des rubans de M 0

    (ruban de travail 1)hM 0i

    (ruban dentre)hM i,'M (x)

    Figure 1.5 Machine universelle 5 rubans simulant M (x).

    Voici le principe de notre machine universelle U 0 (cf. figure 1.5) : le ruban dentre sert lire le mot x encod sur lalphabet U sous la forme 'M (x) :il se comportera comme le ruban dentre de M ;

    sur le premier ruban de travail, on a calcul le code de la machine M 0 quivalente M mais travaillant sur lalphabet U ;

    sur le deuxime ruban de travail, on encode les (k 2) rubans de travail de M 0en utilisant des blocs conscutifs de (k 2) cases (cf. figure 1.6) et on conservela position de chaque tte par un marqueur spcial (? sur la figure, en travaillantdonc sur lalphabet U [ (U f?g)) : tout se passe comme si lon disposait detous les rubans de travail de M 0 en parallle sur un unique ruban de U ;

    chaque instant, U 0 conserve sur son troisime ruban de travail ltat des ttesde M 0 ;

    le ruban de sortie se comporte comme celui de M 0 ; pour simuler une tape de calcul de M 0, la machine U 0 parcourt son deuxime

  • 1.2. La machine de Turing 21

    0 0 01 1 1 1

    0 0 0 0 01 1

    1 1 1 10 0 0

    1 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 0 0 0? ? ?

    tte 3 tte 1 tte 2

    ruban 2ruban 1 ruban 3

    Figure 1.6 Encoder 3 rubans sur un seul.

    ruban de travail la recherche des ttes de M 0, recopie sur le troisime ruban detravail le contenu des cases pointes par les ttes deM 0 :U 0 dispose maintenant deltat de M 0 et du contenu des cases sous les ttes, donc elle va lire dans le code deM 0 la transition effectuer et effectue cette transition en changeant ltat inscritsur le troisime ruban de travail, en modifiant le contenu des cases concernes eten dplaant le symbole de reprage des ttes de M 0 si ncessaire.

    Pour simuler chaque transition de M 0, la machine U 0 fait deux allers-retours sur leruban codant les rubans de travail de M 0, ce qui cote un temps linaire en le nombremaximal de cases utilises. Puisque M 0 utilise au plus 2s log jM j cases, on obtientun temps total O(s t log jM j) pour simuler les t tapes. ce temps de simulation ilconvient dajouter le temps de calcul du code de M 0 (une constante dpendant de M ),do un cot M (s t + 1).De mme pour lespace, si M a k rubans, lespace utilis par notre machine est uneconstante (dpendant de jhM ij) sur le premier ruban de travail,O((k2)s log jM j) surle deuxime et une constante (dpendant de jhM ij) sur le troisime : on obtient autotal un espace M (s + 1). ut

    1-R Remarque Puisquune machine fonctionnant en temps t ne peut pas utiliserun espace suprieur t , la machine universelle de la proposition prcdente fonctionneen temps M (1+ t 2), cest--dire O(t 2).

    Nous allons maintenant dcrire une machine universelle dont le principe est plus com-pliqu mais qui est capable de simuler une machine avec une perte en temps seulementlogarithmique. Cette construction est due Hennie et Stearns [HS66].

    1-S Thorme (machine universelle avec perte de temps logarithmique)

    Il existe une machine U 6 rubans, sur lalphabet dentre U = f0,1g et lalphabet detravail U = f0,1,Bg, telle que pour toute machine M sur les alphabets M et M :

  • 22 Chapitre 1. Le modle de calcul

    il existe un morphisme 'M : ?M ! ?U tel que pour tout mot x 2 ?M , le calculU (hM i,'M (x)) simule M (x) ;

    il existe une constante M telle que pour tout x 2?M , si M (x) sarrte en temps t etutilise un espace s , alors U (hM i,'M (x)) sarrte en temps M (1+ t log t ) et utiliseun espace M (s + log t ).

    Ide de la dmonstration Nous ne pouvons plus nous permettre comme prcdem-ment de parcourir tous les rubans chaque tape pour trouver la position des ttes.Lide est deffectuer les calculs autour de la position 0 et de ramener cet emplacementlinformation ncessaire contenue sur les rubans : ds quon doit lire une nouvelle case,on va chercher le contenu de la case et tout son voisinage pour le rapatrier autour dela case 0. Lintrt de ramener galement le voisinage est de limiter le nombre de telsrapatriements (car ceux-ci prennent du temps) : si lon a ramen un voisinage de taillem, alors on peut ensuite effectuer au moins m=2 transitions sans rapatrier dautresblocs .En adaptant la taille du voisinage chaque transition, on peut simuler une tape de Mpar log t tapes de U en moyenne : il sagit dun cot amorti sur lensemble du calcul,certaines transitions requrant plus de temps pour rapatrier de grands blocs, tandisque dautres ne ncessitent quun temps constant.

    DmonstrationDescription informelle Tous les rubans de travail de M seront regroups sur un seulruban de travail de U en les intercalant comme la figure 1.6, de sorte quon peut lestraiter les uns aprs les autres. Le contenu de chaque ruban de travail de M se retrouvesur le ruban de U dans le mme ordre, mais un symbole particulier peut venir sin-tercaler entre les cases (ce qui nous permettra de grer le rapatriement de blocs). Lasimulation de toute tape de M seffectue dabord en dplaant un groupe contigu decases afin damener en position 0 la case du ruban de M qui doit tre lue : pour cela,on recopie ces cases autour de la position 0 et on efface les cases originales grce ausymbole (on dira quon rapatrie un bloc ). On est ensuite mme deffectuerla transition puisquon dispose de la bonne case lire. Pour viter de perdre trop detemps dans les rapatriements, plus la case ramener est loin, plus on rapatrie un blocde grande taille autour delle : cela permet davoir autour de la position 0 linforma-tion ncessaire pour effectuer un grand nombre de transitions sans aller chercher unenouvelle case lointaine.Le ruban est virtuellement dcoup en zones de plus en plus grandes qui permettentde savoir quels blocs rapatrier. Lorsquon rapatrie un bloc, la construction est tellequentre ce bloc et la position 0 il ny a que des cases contenant le symbole , de sortequon ncrase aucun contenu lors du rapatriement. Les zones sont dfinies de sorteque les blocs de taille m sont distance O(m) et donc leur dplacement prend untemps O(m) en utilisant un ruban de travail auxiliaire : une fois leur rapatriementassur, on montre quil est alors possible de simuler O(m) transitions sans avoir 5. Attention, il sagit seulement de lintuition, ce ne sera pas exactement ce qui se passera dans la dmons-

    tration car chaque tape on rapatriera des blocs, petits la plupart du temps.

  • 1.2. La machine de Turing 23

    rapatrier un nouveau bloc si grand, ce qui permet dobtenir en analyse amortie lacomplexit de lnonc.Passons maintenant la dmonstration formelle, dans laquelle la gestion des blocs estassez technique.

    Alphabet et rubans Le morphisme 'M sera simplement celui du lemme 1-O codantlalphabet M sur U = f0,1,Bg ; la machine travaillant sur U quivalente M don-ne par ce lemme sera note M 0. Par commodit, nous aurons besoin dun symbolesupplmentaire pour reprsenter une case laisse volontairement vide : nous dcri-rons donc une machine U 0 travaillant sur lalphabet f0,1,,Bg. Il conviendra alorsdappliquer le lemme 1-O pour se ramener lalphabet U .Dans un premier temps, notre machine U 0 calcule le code de M 0 partir de celui de Met lcrit sur son premier ruban de travail. Comme la proposition 1-Q, le ruban den-tre de U 0 contenant (hM i,'M (x)) servira lire le mot 'M (x) et se comportera commele ruban dentre de M 0 ; le premier ruban de travail de U 0 contiendra le code de M 0 ;le deuxime ruban de travail contiendra le contenu de tous les rubans de travail de M 0 ;le troisime ruban de travail contiendra ltat des ttes de M 0 (ainsi que dventuelscompteurs pour dlimiter les zones mentionnes aprs) ; le quatrime ruban de travailservira de zone de stockage temporaire pour copier les blocs rapatrier ; enfin, le rubande sortie se comportera comme celui de M 0. En rsum, le rle des rubans est comme la figure 1.5 sauf un ruban de travail supplmentaire pour recopier temporairementles blocs rapatrier.

    Simulation dune transition Une transition de M 0 sera simule comme suit : allerchercher sur le deuxime ruban de travail les cases de M 0 lire et les ramener laposition 0 avec un certain nombre de cases les entourant (cette opration dtailleci-aprs sera appele rapatriement de blocs ), puis lire le code de M 0 sur le premierruban de travail pour effectuer la transition correspondante, cest--dire modifier lecontenu des cases du deuxime ruban de travail et ltat inscrit sur le troisime rubande travail. Il nous reste donc voir comment se comporte le deuxime ruban de travail.Comme auparavant, les k 2 rubans de travail de M 0 seront encods sur le deuximeruban de travail de U par des blocs conscutifs de k 2 cases (voir la figure 1.6, maisnous naurons pas besoin dun symbole ? pour reprer la position des ttes). Ainsi onpeut accder aisment au contenu des rubans de travail de M 0 et les grer de manirespare.Pour chaque ruban de travail de M 0 simul par U 0, on considre les zones suivantes :pour i 0, Di (resp. Gi ) est lensemble des cases de position 2i 2i+1 1 (resp. de2i+1+1 2i ). Ces zones recouvrent le ruban sauf la position 0 qui est traite sp-cifiquement (cf. figure 1.7). Notons que les zones Di et Gi possdent 2i cases chacune.

    Ces zones nous permettront de dterminer les blocs que lon rapatriera si ncessairelors de la simulation. Afin de grer le rapatriement de blocs de tailles diffrentes, ilfaudra laisser des cases volontairement vides et nous utiliserons pour cela le symbole : on aura bien le ruban avec ses cases dans lordre mais pas toutes contigus. Celapermet dviter de devoir dcaler le ruban en entier : on rapatrie le bloc qui nous

  • 24