livre.pdf

362
Complexité et algorithmique avancée une introduction Ivan Lavallée Hermann Ingéniorat - Doctorat édition revue et augmentée méthodes Informatique

Transcript of livre.pdf

Page 1: livre.pdf

Complexité et algorithmique avancéeu n e i n t r o d u c t i o n

Ivan Lavallée

Hermann

Ingéniorat - Doctorat

édition revue et augmentée

méthodes

Informatique

Page 2: livre.pdf
Page 3: livre.pdf

Complexité et algorithmique avancée

u n e i n t r o d u c t i o n

Ivan Lavallée

“Si l’essence et l’apparence des choses se confondaient,la science serait sans objet”

Karl Marx (Le capital)

Hermann éditeurs

Page 4: livre.pdf

Ouvrage publié avec le concours de l’École Pratique des Hautes Éudes. EPHE.

Isbn 978 27056 6726 9© 2008, Hermann éditeurs, 6 rue de la Sorbonne 75005 Paris

Toute reproduction ou représentation de cet ouvrage, intégrale ou partielle, serait illicitesans l’autorisation de l’éditeur et constituerait une contrefaçon. Les cas strictementlimité à usage privé ou de citation sont régis par la loi du 11 mars 1957.

Page 5: livre.pdf

Table des matières

Introduction xiiiPourquoi tant de théorie ? . . . . . . . . . . . . . . . . . . . . . xiv

I Historique 1

1 Histoires d’algorithmes 31.1 La notion naïve d’algorithme . . . . . . . . . . . . . . . . 5

1.1.1 L’algorithme d’Euclide . . . . . . . . . . . . . . . . 71.1.2 Algorithme de l’équation quadratique . . . . . . . 71.1.3 Un algorithme qui vient de loin . . . . . . . . . . . 91.1.4 L’algorithme du Labyrinthe . . . . . . . . . . . . . 11

II Survol 17

2 Un rapide tour d’horizon 192.1 Une stratégie de résolution . . . . . . . . . . . . . . . . . 202.2 Deux exemples . . . . . . . . . . . . . . . . . . . . . . . . 202.3 Les classes P et NP . . . . . . . . . . . . . . . . . . . . . 222.4 La classe NP . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.4.1 Réductibilité polynomiale . . . . . . . . . . . . . . 232.4.2 La classe NPC . . . . . . . . . . . . . . . . . . . . 24

2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 La Machine de Turing 273.1 La Machine de Turing, modèle d’algorithme . . . . . . . . 27

3.1.1 Description d’une machine de Turing . . . . . . . . 29

Page 6: livre.pdf

ii Complexité et Algorithmique avancée

3.1.2 Précision du concept d’algorithme . . . . . . . . . 323.2 Un peu de formalisme . . . . . . . . . . . . . . . . . . . . 343.3 Machines de Turing élémentaires . . . . . . . . . . . . . . 35

3.3.1 Machine qui s’arrête . . . . . . . . . . . . . . . . . 353.3.2 Machine "tout à gauche", machine "tout à droite" . 353.3.3 Machine à effacement et écriture . . . . . . . . . . 363.3.4 Machines chercheuses de 1 ou de 0 . . . . . . . . . 363.3.5 Composition de machines . . . . . . . . . . . . . . 37

4 La Machine de Turing Universelle 394.1 Le problème général . . . . . . . . . . . . . . . . . . . . . 39

4.1.1 Le problème du codage . . . . . . . . . . . . . . . 414.1.2 Numérotation des Machines de Turing . . . . . . . 46

4.2 Machine de Turing à plusieurs rubans . . . . . . . . . . . 474.3 Calculateur, calculateur universel . . . . . . . . . . . . . . 49

4.3.1 Calculateur universel . . . . . . . . . . . . . . . . . 514.3.2 Le nombre de Chaïtin . . . . . . . . . . . . . . . . 52

5 Complexité de Kolmogorov (rudiments) 535.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5.1.1 Interprétation intuitive . . . . . . . . . . . . . . . . 545.1.2 Paradoxe . . . . . . . . . . . . . . . . . . . . . . . 54

5.2 Description d’un objet . . . . . . . . . . . . . . . . . . . . 555.2.1 Fonction partiellement récursive . . . . . . . . . . 56

5.3 Descriptions et tailles . . . . . . . . . . . . . . . . . . . . 57

III Théorie 61

6 Considérations théoriques 636.1 Quelques définitions fondamentales . . . . . . . . . . . . . 63

6.1.1 Le problème, informellement . . . . . . . . . . . . 636.1.2 Essais de définitions . . . . . . . . . . . . . . . . . 646.1.3 Des ensembles bien particuliers . . . . . . . . . . . 68

6.2 Indécidabilité . . . . . . . . . . . . . . . . . . . . . . . . . 756.2.1 Plus ou moins indécidable . . . . . . . . . . . . . . 76

6.3 Mathématiques ou informatique ? . . . . . . . . . . . . . . 76

Page 7: livre.pdf

Table des matières iii

7 Ordres, Treillis et Algèbre de Boole 797.1 Relations d’équivalence . . . . . . . . . . . . . . . . . . . . 79

7.1.1 Ensemble quotient . . . . . . . . . . . . . . . . . . 797.2 Ordre, ordre partiel et préordre . . . . . . . . . . . . . . . 80

7.2.1 Isomorphisme et dualité d’ensembles ordonnés . . 817.3 Treillis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

7.3.1 Treillis distributifs . . . . . . . . . . . . . . . . . . 837.4 L’algèbre de Boole . . . . . . . . . . . . . . . . . . . . . . 847.5 L’algèbre de Boole des expressions logiques . . . . . . . . 847.6 Expressions booléennes et problème SAT . . . . . . . . . . 87

7.6.1 Satisfaction d’une expression . . . . . . . . . . . . 887.6.2 Algèbre de Boole . . . . . . . . . . . . . . . . . . . 907.6.3 Le problème SAT . . . . . . . . . . . . . . . . . . . 91

8 Circuits booléens 938.1 Portes et circuits digitaux . . . . . . . . . . . . . . . . . . 93

8.1.1 Base standard . . . . . . . . . . . . . . . . . . . . 958.2 Fonctions booléennes et circuits . . . . . . . . . . . . . . . 988.3 Circuits booléens . . . . . . . . . . . . . . . . . . . . . . . 99

9 Quelques problèmes de référence 1039.1 Introduction à la théorie des graphes . . . . . . . . . . . . 103

9.1.1 Petit vocabulaire de théorie des graphes . . . . . . 1049.1.2 Exemple de représentation de graphes . . . . . . . 1049.1.3 Sous-ensembles remarquables de sommets . . . . . 1069.1.4 Ensembles absorbants, nombre d’absorption . . . . 108

9.2 Existence de chemin . . . . . . . . . . . . . . . . . . . . . 1099.2.1 Complexité . . . . . . . . . . . . . . . . . . . . . . 113

9.3 Flot maximal . . . . . . . . . . . . . . . . . . . . . . . . . 1139.4 Couplage dans un graphe biparti . . . . . . . . . . . . . . 1169.5 La satisfiabilité . . . . . . . . . . . . . . . . . . . . . . . . 118

9.5.1 Une technique algorithmique : la réduction . . . . 1189.6 Le voyageur de commerce . . . . . . . . . . . . . . . . . . 120

10 Algorithme, résolution 12510.1 Faire son choix . . . . . . . . . . . . . . . . . . . . . . . . 12610.2 Pourquoi la complexité ? . . . . . . . . . . . . . . . . . . . 12710.3 Interpréter la complexité . . . . . . . . . . . . . . . . . . . 130

Page 8: livre.pdf

iv Complexité et Algorithmique avancée

10.4 Des mots . . . . . . . . . . . . . . . . . . . . . . . . . . . 13110.4.1 Problème, instance, solution . . . . . . . . . . . . . 13110.4.2 Algorithme . . . . . . . . . . . . . . . . . . . . . . 13110.4.3 Taille d’une instance . . . . . . . . . . . . . . . . . 132

10.5 Fonction de complexité en temps . . . . . . . . . . . . . . 13210.6 Problèmes de décision, langages, codage . . . . . . . . . . 133

10.6.1 Problème de décision . . . . . . . . . . . . . . . . . 13310.6.2 Langage . . . . . . . . . . . . . . . . . . . . . . . 13410.6.3 Codage . . . . . . . . . . . . . . . . . . . . . . . . 135

IV Complexité 137

11 Modèles de calcul, classes de complexité 13911.1 La Machine de Turing comme modèle de calcul . . . . . . 13911.2 Langages et fonctions . . . . . . . . . . . . . . . . . . . . 14211.3 Autres modèles de calcul . . . . . . . . . . . . . . . . . . . 147

11.3.1 Automates de Markov . . . . . . . . . . . . . . . . 14711.3.2 Machines RAM . . . . . . . . . . . . . . . . . . . . 14811.3.3 Circuits booléens ou digitaux . . . . . . . . . . . . 14911.3.4 Machine à plusieurs rubans . . . . . . . . . . . . . 151

11.4 Complexité en temps . . . . . . . . . . . . . . . . . . . . . 15311.5 Complexité en espace . . . . . . . . . . . . . . . . . . . . 15511.6 Relation entre les complexités . . . . . . . . . . . . . . . . 15511.7 La classe P . . . . . . . . . . . . . . . . . . . . . . . . . . 15611.8 La classe NP . . . . . . . . . . . . . . . . . . . . . . . . 157

11.8.1 Approche informelle de la classe NP . . . . . . . . 15811.8.2 Classe Co-NP . . . . . . . . . . . . . . . . . . . . 160

11.9 La classe NP ∩ Co−NP . . . . . . . . . . . . . . . . . . 16211.9.1 Dualité . . . . . . . . . . . . . . . . . . . . . . . . 163

12 Complétude NP 16712.1 Le monde de NP . . . . . . . . . . . . . . . . . . . . . . 167

12.1.1 La transformation polynomiale . . . . . . . . . . . 16712.2 La classe des problèmes NPC . . . . . . . . . . . . . . . . 169

12.2.1 Un problème NP − complet . . . . . . . . . . . . . 17112.2.2 Le problème SAT . . . . . . . . . . . . . . . . . . 171

12.3 SAT, problème NP − complet . . . . . . . . . . . . . . . . 173

Page 9: livre.pdf

Table des matières v

12.3.1 Le théorème de Lévine-Cook . . . . . . . . . . . . 17412.3.2 Équilibre . . . . . . . . . . . . . . . . . . . . . . . 18312.3.3 L’appartenance à NPC . . . . . . . . . . . . . . . 18412.3.4 Couverture d’un graphe . . . . . . . . . . . . . . . 18712.3.5 La classe Co-NPC . . . . . . . . . . . . . . . . . . 19112.3.6 Sur l’équivalence de certains problèmes . . . . . . 191

13 Le pire n’est pas toujours certain 19713.1 Autour de SAT . . . . . . . . . . . . . . . . . . . . . . . . 197

13.1.1 Le cas 2-SAT . . . . . . . . . . . . . . . . . . . . . 19713.2 Cas particuliers de SAT . . . . . . . . . . . . . . . . . . . 200

13.2.1 SET et SAT . . . . . . . . . . . . . . . . . . . . . . 20013.2.2 Validation, tautologie et non-satisfiabilité . . . . . 20113.2.3 Clauses de Horn . . . . . . . . . . . . . . . . . . . 202

13.3 Le sac à dos . . . . . . . . . . . . . . . . . . . . . . . . . . 20513.3.1 Pseudo-polynomialité . . . . . . . . . . . . . . . . 208

13.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 209

14 Complexité et efficacité 21114.1 Le produit matriciel . . . . . . . . . . . . . . . . . . . . . 21114.2 La multiplication de Straßen . . . . . . . . . . . . . . . . 21314.3 Complexité de la méthode de Straßen . . . . . . . . . . . 213

14.3.1 De la complexité à l’efficacité . . . . . . . . . . . . 21514.3.2 La programmation récursive . . . . . . . . . . . . . 216

14.4 Reformulation de la méthode de Straßen . . . . . . . . . . 21714.4.1 Hypothèses et notations préliminaires . . . . . . . 21714.4.2 Proposition de Straßen . . . . . . . . . . . . . . . . 21814.4.3 Généralisation . . . . . . . . . . . . . . . . . . . . 218

14.5 L’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . 22014.5.1 Idée de base . . . . . . . . . . . . . . . . . . . . . . 22014.5.2 Obtention des produits de Straßen . . . . . . . . . 221

14.6 Règles d’obtention des termes . . . . . . . . . . . . . . . . 221Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

V Que faire ? 223

15 Des algorithmes pour problèmes NPC 225

Page 10: livre.pdf

vi Complexité et Algorithmique avancée

15.1 L’exhaustivité des procédures . . . . . . . . . . . . . . . . 22515.1.1 La méthode PSEP . . . . . . . . . . . . . . . . . . 226

15.2 Le cas des jeux . . . . . . . . . . . . . . . . . . . . . . . . 23015.2.1 La méthode alpha/bêta . . . . . . . . . . . . . . . 232

15.3 En guise de conclusion . . . . . . . . . . . . . . . . . . . . 236

16 Introduction à l’algorithmique probabiliste 23716.1 Des algorithmes aux parfums de casinos . . . . . . . . . . 237

16.1.1 Algorithmes numériques probabilistes . . . . . . . 23916.1.2 Algorithmes de Las Vegas . . . . . . . . . . . . . . 23916.1.3 Algorithmes de Monte-Carlo . . . . . . . . . . . . 239

16.2 Probabilités versus déterminisme . . . . . . . . . . . . . . 24016.2.1 Le problème . . . . . . . . . . . . . . . . . . . . . . 240

16.3 Les probabilités pour réduire la complexité . . . . . . . . 24216.3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . 24216.3.2 Le Problème . . . . . . . . . . . . . . . . . . . . . 24216.3.3 L’algorithme de Borükva . . . . . . . . . . . . . . 24316.3.4 Arêtes "lourdes" et arbre couvrant . . . . . . . . . 24516.3.5 Échantillonnage aléatoire, arbre couvrant . . . . . 24616.3.6 Algorithme linéaire . . . . . . . . . . . . . . . . . . 24816.3.7 Algorithme probabiliste d’arbre couvrant . . . . . 248

16.4 Résoudre SAT de manière probabiliste . . . . . . . . . . . 25016.4.1 Rappel . . . . . . . . . . . . . . . . . . . . . . . . . 25016.4.2 2-SAT, solution probabiliste, analyse . . . . . . . . 25116.4.3 Chaîne de Markov et complexité en temps . . . . . 25416.4.4 Généralisation à 3-SAT . . . . . . . . . . . . . . . 25616.4.5 Proposition d’algorithme modifié . . . . . . . . . . 259

16.5 Un problème d’accord . . . . . . . . . . . . . . . . . . . . 26216.5.1 Un exemple issu de la Biologie . . . . . . . . . . . 262

16.6 Une solution synchrone . . . . . . . . . . . . . . . . . . . 26316.6.1 Le protocole . . . . . . . . . . . . . . . . . . . . . . 26416.6.2 Preuve de bon fonctionnement in absurdo . . . . . 26416.6.3 Évaluation de la complexité . . . . . . . . . . . . . 265

16.7 Le cas asynchrone . . . . . . . . . . . . . . . . . . . . . . 26516.7.1 Évaluation de la complexité . . . . . . . . . . . . . 26616.7.2 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . 267

Page 11: livre.pdf

Table des matières vii

17 De Shannon à Kolmogorov 26917.1 L’entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

17.1.1 L’information de Shannon . . . . . . . . . . . . . . 27017.1.2 Généralisation . . . . . . . . . . . . . . . . . . . . 273

17.2 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . 27517.2.1 Le théorème d’invariance . . . . . . . . . . . . . . 27717.2.2 Ne pas dépasser les bornes . . . . . . . . . . . . . . 28117.2.3 Compressibilité et incompressibilité . . . . . . . . . 282

18 Le modèle quantique 28518.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 28518.2 Retour sur les bits classiques - Cbits . . . . . . . . . . . . 28618.3 Opérations sur les Cbits . . . . . . . . . . . . . . . . . . . 288

18.3.1 Transformation de Hadamard . . . . . . . . . . . . 29218.4 Les bits quantiques ou Qbits . . . . . . . . . . . . . . . . 29218.5 Opérations sur les Q-bits . . . . . . . . . . . . . . . . . . 29418.6 Extraire l’information des Qbits ? . . . . . . . . . . . . . . 296

A Notations de Bachman-Landau 299A.1 Les symboles grand O, Ω,Θ . . . . . . . . . . . . . . . . . 299

A.1.1 Le symbole petit o . . . . . . . . . . . . . . . . . . 300

Index des noms cités 301Index des noms cités . . . . . . . . . . . . . . . . . . . . . . . . 301

Index des concepts et notions 303Index des concepts et notions . . . . . . . . . . . . . . . . . . . 303

Index des algorithmes 310Index des Algorithmes . . . . . . . . . . . . . . . . . . . . . . . 310

Bibliographie 313

Page 12: livre.pdf
Page 13: livre.pdf

Table des figures

1.1 Une page du traité des 9 procédures . . . . . . . . . . . . 51.2 Algorithme d’Al Khawarizmi . . . . . . . . . . . . . . . . 81.3 Labyrinthe . . . . . . . . . . . . . . . . . . . . . . . . . . 133.1 Machine de Turing . . . . . . . . . . . . . . . . . . . . . . 306.1 Hiérarchie des ensembles . . . . . . . . . . . . . . . . . . . 688.1 Graphes de schémas logiques de circuits digitaux . . . . . 958.2 Schéma logique de circuit booléen . . . . . . . . . . . . . 978.3 Opérateurs booléens vs graphes . . . . . . . . . . . . . . . 1008.4 Schématisation générale d’une expression booléenne . . . 1019.1 Exemple de graphe . . . . . . . . . . . . . . . . . . . . . . 1059.2 Ensemble stable intérieurement . . . . . . . . . . . . . . . 1069.3 Ensemble absorbant . . . . . . . . . . . . . . . . . . . . . 1099.4 Existence de chemin entre deux sommets . . . . . . . . . 1109.5 Exemple de graphe avec capacités . . . . . . . . . . . . . . 1169.6 Graphes bipartis avec et sans possibilité de couplage . . . 1189.7 Couplage et flot . . . . . . . . . . . . . . . . . . . . . . . . 1209.8 Échecs et recouvrement . . . . . . . . . . . . . . . . . . . 1229.9 Une instance du problème VRP . . . . . . . . . . . . . . . 12412.1 Classes de complexité . . . . . . . . . . . . . . . . . . . . 17213.1 Interprétation graphique de 2-SAT . . . . . . . . . . . . . 20015.1 Arborescence PSEP . . . . . . . . . . . . . . . . . . . . . 23215.2 Arbre partiel du jeu de nim . . . . . . . . . . . . . . . . . 23315.3 Arbre partiel du jeu de nim ré-évalué . . . . . . . . . . . . 23415.4 Arbre de jeu évalué pour alpha/béta . . . . . . . . . . . . 23515.5 Arbre de jeu et coupes alpha/béta . . . . . . . . . . . . . 238

Page 14: livre.pdf
Page 15: livre.pdf

Avertissement à ladeuxième édition

Cette deuxième édition de Complexité et algorithmique avancée aété complétée et étendue à la demande de lecteurs de la première

édition. On y trouvera du nouveau sur les classes de complexité (classeCo-NP entre autres) et sur les modèle de calcul, le chapitre 11 a étéentièrement remanié en introduisant plus formellement certains conceptssans, espérons le, avoir cédé sur l’aspect pédagogique et la compréhensiondu propos. Le chapitre 17 a également été profondément remanié, lelecteur peut y aborder de façon plus approfondie le concept d’entropieen relation avec la théorie de Shannon.

I.L.

Page 16: livre.pdf
Page 17: livre.pdf

Introduction

"Si chaque instrument pouvait, par ordre ou par pressentiment, accom-plir son œuvre propre, si, pareilles aux statues légendaires de Dédale ouaux trépieds d’Héphaistos, qui, au dire du poëte, "pouvaient d’eux-mêmesentrer dans l’assemblée des dieux" les navettes tissaient d’elles-mêmes etles plectres jouaient de la cithare, alors les maîtres d’œuvre n’auraientnul besoin de manœuvres, ni les maîtres d’esclaves."

Aristote (La Politique)

Même si la livraison d’un numéro spécial de Décembre 2003 de l’éditionfrançaise d’une prestigieuse revue scientifique américaine croît

pouvoir titrer La complexité, science du XXIeme siècle, la problématiquede la complexité est ancienne. Toute l’activité de compréhension dumonde qui nous entoure tend à maîtriser cette complexité.

Un premier essai implicite de systématisation de cette démarche demaîtrise est sans doute le Discours de la méthode de René Descartes quidate de 1637. Toutefois, ce texte fondateur d’une démarche à la fois scien-tifique et philosophique, les deux n’allant malheureusement pas souventde pair, n’identifie pas la complexité en tant que telle. Il faudra attendre297 ans pour qu’en 1934 Gaston Bachelard identifie la complexité commeétant en elle même sujet d’étude 1. Bien entendu cela ne s’est pas faittout seul, entre temps les sciences se sont développées, certaines limitessont apparues à la démarche cartésienne. Il est des phénomênes qu’onne peut aborder qu’en tant que systèmes et pour lesquels le tout est"plus" que la réunion des parties. Les concepts de probabilité et de nondéterminisme ont émergé, en particulier aprés les travaux sur la thermo-dynamique. C’est aprés 1936, avec les travaux de Burk (USA), Church

1. Il est peu de textes récents informés traitant de la complexité de façon phi-losophique, signalons toutefois l’excellent article du philosophe Lucien Sève dans[Sèv05].

Page 18: livre.pdf

xiv Complexité et Algorithmique avancée

(argentin), Couffignal (français), Goldstine (USA), Kolmogorov, Lebedev,Markov, Thratenbrot (URSS), Neumann (hongrois), Turing (anglais) 1,la naissance de l’informatique, qu’apparaissent les outils conceptuelspermettant de préciser le concept de complexité.

Pourquoi tant de théorie ?

L’objectif poursuivi ici est de montrer quelles sont les voies quipermettent de prévoir tant que faire se peut, les moyens à mettre enœuvre, voire les coûts sociaux, pour résoudre tel ou tel problème posé parle monde réel. Pour ce faire, l’exposé commence par l’algorithmique dont lepropos est bien circonscrit, puis nous essaierons chaque fois qu’apparaîtraune possibilité d’échappée, d’étendre le propos au delà du strict champinformatique. Ainsi, il s’agit d’indiquer au lecteur intéressé un champde recherche possible, les voies dans lesquelles il semble souhaitable des’engager.

Cet ouvrage est composé en cinq parties qui correspondent, grossomodo aux trois cycles universitaires, les parties 1 et 2 correspondent aupremier cycle, les parties 3 et 4 au deuxième cycle avec, pour la troisièmepartie des ouvertures vers la recherche.

La première partie de cet ouvrage, commence par montrer comment lesmathématiques, par leur pouvoir de modélisation, ont permis d’identifierles bornes de ce qui est possible, et raisonnable, avec les ordinateursactuels, c’est-à-dire dont le paradigme est la machine de Turing, oul’automate fini de Markov. C’est un exercice de rigueur peu accessible àquiconque n’a abordé l’informatique que comme une technique, un savoirfaire. Il s’agit ici de la science informatique.

La large diffusion des ordinateurs dans le monde, leur omniprésencedans quasiment toutes les sphères de l’activité humaine, de la conquêtespatiale à la cuisine en passant par la médecine ou la chorégraphie fait quetout ce qui concerne l’informatique en ses fondements concerne aussi denombreux domaines. Ainsi, sont concernés les disciplines et champs social,

1. À tout seigneur tout honneur, c’est Alan Mathison Turing qui est considérécomme le père fondateur de la science informatique lors de sa célèbre conférence du28 mai 1936. En fait même si d’autres étaient sur la voie, c’est lui qui, d’emblée avu l’ampleur du champ qu’il venait d’ouvrir qui dépassait très largement la simpleconstruction de machines logiques, mais créait une nouvelle discipline scientifique.

Page 19: livre.pdf

Préface xv

individuel, biologique et psychologique, technique et organisationnel,économique, politique, artistique... Il s’agit là d’activités et champsd’investigations qui, il y a peu encore étaient considérés comme étrangersl’un à l’autre. En effet, que peut-il bien y avoir de commun entre labiologie et le théâtre ou entre la météorologie et la circulation automobileaux feux tricolores ? He bien l’informatique justement est commune à cesdifférents domaines et ils sont régis par des lois communes. Précisément,pour appréhender cette diversité dans son unité, les hommes ont inventéles concepts, des théories, la science. Pour agir dessus ils ont inventé desoutils, les techniques afférentes et la technologie. Ainsi, pour voir arriverde plus loin les bateaux des marchands qui le parrainaient, Galillée a-t-ilconsidérablement amélioré la lunette dite "longue vue" et par conséquentfourni dans un même mouvement la lunette astronomique qui a permisaux hommes de "voir plus loin que le bout de leur nez" et pu mieuxconnaître l’espace qui entoure notre planète. Au delà de ces objetsmatériels la théorie fournit des outils pour "penser plus loin que le boutde son nez" et aborder des horizons qui seraient inaccessibles sans elle,y compris de façon trés concrète. Dans le domaine qui nous concerneici, la théorie est basée sur les mathématiques. La théorie centrale estl’ algorithmique qui comprend la théorie de la complexité à laquelle cetouvrage est consacré et de la calculabilité que mous effleurerons. Cesthéories expliquent de façon logique comment fonctionnent les ordinateurshors des aspects purements techniques, et quelles sont les limites de cequi est faisable avec ceux-ci, et plus généralement pour ce qui est de lacalculabilité, ce qui est calculable et ce qui ne l’est pas et pourquoi. Aupassage, il nous aura fallu définir ce que recouvrent les notions de calculet de problème.

C’est après une escapade de trente ans que je reviens sur ces terres.Au cours d’un travail [Lav74] qui m’a semblé à l’époque fort complexe,j’ai été amené à m’intéresser aux fondements théoriques de l’informatique.Concevant des algorithmes, je me suis posé la question : "mais qu’est-ce donc, fondamentalement qu’un algorithme ?". Après avoir fréquentéEuclide, Thésée et la reine Didon, je me suis tourné vers les travauxde Turing. Mon chemin était dès lors balisé pensais-je. Je concevaisdes algorithmes qui, codés devenaient programmes dont la destinéeétait d’être exécutés sur des ordinateurs. Ma formation de Recherche

Page 20: livre.pdf

xvi Complexité et Algorithmique avancée

Opérationnelle 1 m’incitait à "optimiser" mes algorithmes. Bien, optimiserd’accord, mais par rapport à quoi ? Je rencontrais alors les travaux deCook et Lévine [Coo71, Lév73a] puis de Edmonds et Karp [EK72]. Jesavais maintenant ce qu’optimiser un algorithme voulait dire. Puis jerencontrais les travaux pionniers de Lupanov [Lup63], injustement oubliéaujourd’hui me semble-t-il, le concept de complexité y prenait une autredimension. Le terme complexité y étant utilisé dans un sens a prioridifférent.

Le terme de complexité est utilisé dans différents domaines. Il aété bien défini en mathématique et en informatique, sciences 2 danslesquelles, on est même capable de donner une mesure de cette complexité.Nous allons donc, dans ce qui va suivre essayer de mieux cerner ceconcept, ce qui ne manquera pas de nous entraîner sur des rivagesinattendus. Visitant un été, dans le sud-ouest (à Plieu) de la France, uneexposition de sculptures de Miro avec un ami sculpteur, je lui posaisune question concernant une œuvre qui me laissait perplexe. Sa réponsem’entraînât dans un abîme de perplexité encore plus profond. - C’est unesculpture complexe me répondit-il. Saisissant la balle au bond, je lui posaisévidemment la question : - Qu’entends-tu-toi sculpteur par "complexe" ?Et je le surpris à utiliser des mots semblables à ceux qui vont suivre aulong de ces pages. Lisant récemment un ouvrage du paléontologue StephenJay Gould (voir [Gou93]), j’y trouvais à plusieurs reprises les expressionsorganisme complexe ou complexité de l’évolution dans un sens que, jepense, ne démentiront pas les pages qui suivent. Le concept de complexitéprend donc une dimension transversale, toutefois, nous nous limiteronsdans un premier temps à ce qui concerne l’informatique. Du reste, onpeut considérer, et nous verrons pourquoi, que l’ordinateur est, à l’heureactuelle, l’instrument adéquat pour étudier la complexité et l’affronterquand c’est possible. Comme l’écrit Hebenstreit 3, et contrairement à

1. La mode voudrait que j’utilise aujourd’hui les termes de Logistique ou d’Aide àla Décision.

2. Soyons clair d’emblée, pour moi l’informatique n’est pas la computer science,la science d’un instrument n’a aucun sens en Français. Une science manipule - etcrée - (quoi qu’en disent Deleuze et Gattari [DG91]) des concepts et des modèles,activité pour laquelle elle peut être amenée à utiliser des instruments. L’astronomien’est pas, que je sache, la science du télescope, pas plus que la biologie n’est la sciencedu microscope, aussi indispensable aient put être ces instruments au développementdes dites sciences.

3. Article "Informatique" dans l’encyclopédie universelle, Vol. 12, P. 304.

Page 21: livre.pdf

Préface xvii

Heinz Pagel [Pag90] qui affirme que "l’ordinateur est l’instrument de lacomplexité", on peut considérer que :

"L’ordinateur n’est donc à aucun degré un "cerveau électronique"ou une "machine intelligente", mais bien au contraire un outil sur le-quel l’homme se décharge de tâches qui, justement, se sont avérées nonintelligentes".

C’est à dire ici, des tâches dont on est capable de réduire la complexitéà celle du programme qui les résoud, et surtout qui résoud tous lesproblèmes de la classe, la classe étant réputée infinie et le programmecodé en un nombre fini de caractères. Certes l’ordinateur a à voir avec lacomplexité, mais seulement en ce qu’il est la réalisation matérielle d’unemachine abstraite, la Machine de Turing .

Cette machine abstraite nous donne l’aune à laquelle mesurer lacomplexité de tel ou tel algorithme (concept qu’elle permet au passagede refonder), et par voie de conséquence de tel ou tel problème. Lathéorie des machines abstraites, automates finis (voir [Mar54, Tra63]) oumachines de Turing nous permettra également de cerner les frontières dece qui est actuellement faisable avec les ordinateurs actuels, quelles sontles barrières fondamentales à faire sauter, et quelles voies semblent pro-metteuses pour ce faire. Faute de savoir aborder ces problèmes complexesautrement qu’avec nos ordinateurs, certains ont inventé l’expression "In-telligence Artificielle" qui, si on y regarde bien est au mieux un oxymore(voir [Lav91b]). Conscients de la profondeur du problème par rapportau déterminisme du modèle de base, les spécialistes ont introduit desconcepts "flous". Le problème encore une fois, est que, ensembles oulogiques flous, réseaux dits neuronaux 1 ( ? !), sont en termes de puissancede calcul strictement équivalents au modèle de base. Il est par conséquentimprobable qu’on en tire plus. Il s’avère par contre que pour certaines ap-plications, ces formulations et codes opératoires s’avèrent plus pratiques.Il n’est pas non plus dit qu’on ait tiré tout le possible du modèle de base.Le problème fondamental est précisément de dépasser ce modèle de base,des tentatives existent. Le raisonnement probabiliste semble central en lamatière, or, "L’aléatoire ça se calcule" comme l’aborde l’entretien dansun grand quotidien entre les Professeurs Didier Dacunha-Castel et Jean-Pierre Kahane (voir [DK96]), entretien qui jette un pont entre activitémathématique et problèmes de société, problèmes sociaux. Du reste, les

1. Anthropomorphisme quand tu nous tiens !

Page 22: livre.pdf

xviii Complexité et Algorithmique avancée

milieux financiers, vampires des temps modernes, ne s’y trompent pasqui embauchent aujourd’hui des mathématiciens, pour bâtir des modèlessusceptibles d’empêcher l’éclatement de la "bulle financière" (voir à cesujet [Bou98]) et surtout de leur permettre d’en tirer un maximum deprofit. Maîtrise de la complexité d’un marché où la soit disant rationalitééconomique est celle expliquée par Darwin dans son oeuvre principale,c’est la logique de l’hécatombe (voir [Dar59]).

Si la complexité d’une suite de nombres se mesure, à la façon deKolmogorov, à la longueur du plus petit énoncé permettant de décrire (i.e.de générer) cette suite, alors l’activité scientifique qui tend à exprimerpar des lois générales la généricité de classes de plus en plus grandes dephénomènes, n’est-elle pas une tentative de lutter contre une apparentecomplexité intrinsèque des phénomènes naturels ? Toute formulation,toute formalisation, n’est-elle pas en ce sens une tentative de maîtrisede la complexité ? L’écriture d’un programme d’ordinateur, sa taille,qui génère des solutions à un problème est la manifestation du degréde complexité dudit problème. Le programme s’écrit en un nombre finide symboles, et même au niveau exécutable, en un nombre fini de 0et de 1, et il peut potentiellement générer une suite infinie. Pourtantaucun ordinateur n’a une vie infinie, aucun ni tous ne peuvent parconséquent générer une suite infinie. Si on laisse calculer un ordinateurjusqu’à ce qu’il s’arrête "naturellement", la probabilité qu’apparaisse unchiffre aberrant par rapport à l’algorithme codé par le programme, croîtavec le temps, et si on fait tendre le temps vers l’infini, la probabilitéd’erreur tend vers 1. Or la suite ainsi générée n’est pas celle décrite parle programme, un paramètre est intervenu, le temps, deus ex machina.On retrouve là la problématique de l’évolution. Qu’est-ce qui fait qu’onpasse (sur un laps de temps respectable) des bactéries à l’homo sapienssapiens ? Qu’est-ce qui provoque le passage du simple 1 au complexe ?C’est le temps. Et quelle est la caractéristique de cette transformationsinon la transformation aléatoire et la survie des possibles, mais aussila mort massive et systématique de tous les autres, ce que Darwin asi bien décrit (voir [Dar59]). N’est-ce pas là le cœur du débat sur lacomplexité ? Le temps et l’aléatoire ! C’est en partie pour cela que lamachine de Turing, ou l’automate fini ne sont pas "les instruments dela complexité" car ils ne rendent pas compte de la même notion de

1. Pour autant qu’on soit capable de préciser ce terme, ce qui est complexe.

Page 23: livre.pdf

Préface xix

temps. Dans une machine de Turing (cf. infra), le temps est une variableendogène au système, de plus il n’y a pas place pour l’aléatoire. C’estpourtant bien là que le bât blesse, il y a sûrement un saut cognitif à opérer,utiliser l’aléatoire et la redondance. Si l’aléatoire ça se calcule commenous le rappelle l’article précédemment cité, la question est commentl’utiliser concrètement et de manière reproductible ? Le chapitre sur lesalgorithmes probabilistes, du au Professeur M. Bui montre comment onpeut aborder le problème. La maîtrise de la complexité passe-t-elle parun déterminisme probabiliste ? A quand des machines (on ne peut plusparler alors d’ordi- nateurs) probabilistes ? On commence tout juste àutiliser des algorithmes probabilistes, sur des machines qui elles ne lesont pas.

"il n’y a rien de moins familier ou de moins facile que de pensercorrectement en matière de probabilités..."[Gou93].

L’apparition du parallélisme en informatique, et plus particulière-ment des réseaux d’entités calculatoires indépendantes communiquantesconduit par un chemin analogue à la complexité. L’explosion combinatoiredes exécutions possibles d’un programme parallèle sur un réseau distribuéasynchrone rend quasiment impossible (et en tous cas, pas souhaitable)l’observation instantanée des états du système, ni même leur prévision.Si chaque entité calculatoire est vue comme une machine de Turing, alorschacune admet une notion de temps qui lui est propre, c’est, pour chaquemachine, le nombre d’itérations élémentaires qu’elle effectue durant lecalcul. Mais ce temps n’a plus de sens au niveau du réseau, sauf peut-êtreà considérer la plus grande partie aliquote des temps de transmission desmessages. D’autant plus si on veut prendre en compte les communicationsentre machines, communications "asynchrones" qui ne ressortissent enrien au modèle de machine de Turing. Il faut alors revenir au temps desphysiciens 1, exogène à tout système physique particulier, mais pourtantinexistant sans eux. Là aussi, il faut s’affranchir d’un déterminisme quiconfine au mécanisme.

Les machines quantiques, si elles apparaissent un jour, permettraientde poser ces problèmes d’une façon complètement nouvelle, c’est pourquoinous avons consacré un chapitre à une esquisse de ce que pourraît être le

1. On arrive quand même, pour les besoins de la technique à faire rentrer lacomplexité distribuée dans un modèle théorique, peu s’y sont risqués (voir [Lav95])mais, conceptuellement c’est peu satisfaisant.

Page 24: livre.pdf

xx Complexité et Algorithmique avancée

calcul quantique sur une telle machine.Dans ce qui suit nous limiterons notre propos à l’abord de la com-

plexité algorithmique (on dit aussi calculatoire 1). La méthode de l’exposéest circulaire, volontairement, comme, il nous semble, l’est l’activitécognitive. Les mêmes notions sont traitées à différents moments, paslinéairement. Nous allons du simple au complexe (nous l’appelleronsprovisoirement ainsi), approfondissant les concepts et les formalisant dèslors que le besoin s’en fait sentir, mais pas avant si possible. Nous feronsplus souvent appel à l’intuition qu’à la démonstration. La démonstrationne sera utilisée que lorsqu’elle apporte quelque chose à la compréhension.C’est la compréhension profonde des concepts et notions employés quinous intéresse. Nous faisons des mathématiques tout au long de ces pages,mais sans ostentation. Le bagage nécessaire à l’abord est relativementfaible. Un minimum de connaissances en calcul des probabilités, la maî-trise de la fonction logarithmique, la maîtrise des notations logiques,doivent suffire.

Très cher et honoré beau frère.Depuis que j’ai reçu le vin que vous m’avez envoyé, je ne vous ai plus

écrit faute de matière 2.

I.L. Lanton 30 septembre 2007

1. Computational complexity en anglais2. Galileo Galilei, Venise 29 Août 1609.

Page 25: livre.pdf

Première partie

Prolégomènes, histoiresd’algorithmes

Page 26: livre.pdf
Page 27: livre.pdf

Chapitre 1

Histoires d’algorithmes

La notion d’algorithme est connue depuis l’antiquité. De l’algo-rithme d’Euclide pour le PGCD, à l’algorithme qui permet à Thésée

de sortir du Labyrinthe, en passant par le rôle de la ceinture de la reineDidon 1 dans la fondation de Carthage, les traces dans la littératurecomme dans l’imaginaire collectif sont nombreuses. Cette notion a été re-formulée à plusieurs reprises dans l’histoire, par Euclide certes, mais aussipar le mathématicien Perse (ou plutôt originaire du pays de Khawarizm,c’est à dire de la mer d’Aral) Al-Djafar Mohamed ibn Mussa Khawarizmi(780-850 ?) qui écrivit un traité méthodologique intitulé Kitab fi hisab AlJabr w’al muqâbala (mettre bout à bout). Les noms Al Khawarizmi etAl jabr sont devenus au cours du temps Algorithme et Algèbre qui sontmaintenant passés dans le vocabulaire mathématique courant. Toutefois,le plus ancien traité d’algorithmique, récemment découvert, nous vientde Chine. En 186 avant notre ère un document intitulé Traité des neufprocédures recense les connaissances mathématiques de son époque enChine. L’existence d’un tel traité vient du fait que la gestion de l’empire

1. Didon, ou Elissa qui vivait à Tyr s’enfuit en Tunisie, avec sa soeur Anna etun groupe d’amis. Le roi du pays, Larbas, lui vendit un territoire aussi grand qu’ellepouvait enclore dans une lanière tirée de la peau d’un seul taureau. Elle obtint ainsiun territoire suffisant pour y bâtir une citadelle. Carthage porta ainsi, dans un premiertemps, le nom de Byrsa (peau). C’est la raison pour laquelle la ville de Carthage futconstruite en arc de cercle, le centre en étant , dit la légende, l’endroit précis où Didonposa le pied à la descente du bateau. La reine Didon, découvrit ainsi, à l’aide de saceinture que la figure géométrique qui donne une surface maximale pour un périmètredonné est le cercle.

Page 28: livre.pdf

4 Complexité et Algorithmique avancée

nécessitait des méthodes identiques de gestion et donc de comptage pourles différents madarins (i.e. préfets) qui étaient en charge des régionsdudit empire. Il ne semble pas que les mathématiciens chinois aientdéveloppé alors la géométrie au sens où les grecs l’ont fait, ceci bien queles dits chinois aient développé une démonstration originale du théorèmede Pythagore, visiblement par eux connu, bien avant les grecs. Par contreles lettrés chinois ont développé l’art du calcul à un niveau inégalé àl’époque (pour plus amples informations, lire [Yab00]). Plus encore, ilsont développé des méthodes de résolution, des "procédures" qui sont enfait des algorithmes, souvent certes présentés de manière qui ne nousest pas familière mais efficace. Ainsi leur façon de calculer des volumesparticuliers en les décomposant en volumes élémentaires connus préfigurele calcul intégral. La page dont on peut voir ici dans la figure 1.1 un facsimilé est celle d’un traité du troisième siècle de notre ère qui est unerecopie du traité des neuf procédures. Cette page décrit la méthode derésolution des systèmes de deux équations linéaires à deux inconnues,solution tout à fait inconnue dans le reste du monde à cette époque, dumoins pour ce qu’on en sait. Il faut noter que les chinois utilisent de fait,depuis la plus haute antiquité, une notation positionnelle des nombresqui est due à leur façon de présenter les calculs.

Comme on peut le voir sur la figure, les textes sont présentés encolonnes, l’écriture est verticale. Lorsque il y a un seul symbole par lignedans la colonne, il s’agit du texte original, lorsqu’il y a deux symboles,il s’agit d’un commentaire, le plus souvent d’un lecteur autorisé qui alaissé sa marque par l’intermédiaire de son tampon rouge sur la page.

Cette disposition en colonne autorise la notation positionnelle. Ainsi,par exemple, en supposant (ce qui est faux) que les chinois aient utiliséles nombres indiens (dits aussi -à tort- arabes), un nombre comme 10506s’écrit-il :

1 5 6

Le zéro positionnel n’existe pas dans cette notation, mais il estremplacé par une colonne vide. La disposition en colonnes permettantce qu’on nomme la notation positionnelle des nombres qui donne lemode opératoire que nous connaissons, alors qu’avec une notation nonpositionnelle comme celle des romains, il n’existe pas de mode opératoirepour les calculs.

Page 29: livre.pdf

Chapitre 1. Histoires d’algorithmes 5

1.1 La notion naïve d’algorithme

Aussi loin qu’on puisse remonter, il y a deux écoles en mathématiques,les intuitionnistes et les algoristes. Les premiers cherchaient des démon-strations directes donnant des solutions à des problèmes posés strictosensu, les seconds préféraient aux astuces des méthodes systématiques deconstruction, ce qui leur a valu aussi le nom moderne de constructivistes,l’un des plus brillants membres contemporain en est sans doute le logicienFrege, violemment critiqué lui aussi (comme Turing, mais pour d’autresraisons) par Witgenstein dans son Tractatus logico-philosophicus.

Figure 1.1 – Une page du traité des 9 procédures

Page 30: livre.pdf

6 Complexité et Algorithmique avancée

La notion d’algorithme ressortit aux fondements même des mathématiquesconstructivistes. Un algorithme y est vu comme une suite finie de règlesà appliquer dans un ordre déterminé à un nombre fini de données pourarriver, en un nombre fini d’étapes, à un certain résultat, et cela indépen-damment des données. Par exemple, un algorithme d’addition permet defaire l’addition de deux nombres quelconques représentés par un nombrefini de chiffres 1 en partant des chiffres les plus à droite et en opérantde droite à gauche, du moins dans notre système de numération. Unalgorithme étant une description de la suite des opérations à faire, lamanière de le rédiger (on dit spécifier) dépendra du dispositif (homme oumachine) chargé de l’exécuter. La propriété de finitude des règles et desétapes est ici primordiale, car, en caricaturant quelque peu, l’informatiqueest la science du calcul effectif par opposition à la mathématique qui estelle la science du calcul.

On entend donc (en attendant une définition formelle) par algorithmeune prescription précise qui dit d’exécuter dans un ordre déterminécertaines suites d’opérations, permettant ainsi de résoudre tous les pro-blèmes d’un type donné, on dit aussi une classe ou une famille deproblèmes.

On voit bien la faiblesse du propos, la phrase que nous venons d’énon-cer n’a rien d’une définition précise de la notion d’algorithme, c’estau mieux un commentaire rapide tendant à expliciter le sens du mot.C’est sous cette forme que cette notion a émergé spontanément en ma-thématiques dans l’antiquité.

Les algorithmes les plus simples sont des règles selon lesquelles doiventêtre effectuées les quatre opérations arithmétiques élémentaires. Ainsi,l’addition de deux grands nombres codés en numération décimale sedécompose en une séquence d’opérations élémentaires. Pour l’exécutionde chacune de ces opérations élémentaires, le calculateur ne s’intéressequ’à deux chiffres à additionner. Ces opérations élémentaires sont detrois types :

• écriture des chiffres correspondants de la somme ;• marque de la retenue sur le chiffre voisin à gauche ;• les opérations sont effectuées de droite à gauche.

1. En effet, si on veut additionner deux nombres transcendants, on ne peut le faire,au mieux, que formellement.

Page 31: livre.pdf

Chapitre 1. Histoires d’algorithmes 7

On pourrait aussi formuler des règles analogues pour les trois autresopérations arithmétiques, des modes opératoires. C’est du reste ainsi queles enfants apprennent à effectuer les grandes opérations.

1.1.1 L’algorithme d’Euclide

Par exemple, le calcul du PGCD de deux nombres entiers peut seramener à une suite de soustractions de la façon suivante :

• comparer les deux nombres puis continuer en séquence ;

• si les deux nombres sont égaux, le calcul est terminé, chacun desnombres donne le résultat. Sinon, continuer en séquence ;

• si le premier nombre est plus petit que le second, permuter les deuxnombres puis continuer en séquence ;

• soustraire le second nombre du premier puis continuer en séquence ;

• considérer comme nombres, le résultat de la soustraction et lenombre soustrait puis revenir en 1.

Pour un jeune adolescent par exemple, ces règles sont facilementcompréhensibles. Toutefois elles comprennent un certain nombre de"non dits" importants. Le processus de décomposition en opérationsélémentaires est loin d’avoir été poussé jusqu’au bout. Ainsi dans larègle 4, le verbe soustraire semble aller de soi, mais en fait, il s’agitd’une opération complexe qui peut encore être décomposée en opérationsélémentaires plus simples.

1.1.2 Algorithme de l’équation quadratique

L’ouvrage de Al Khavarizmi donne la méthode suivante pour résoudreles équations du second degré. La méthode est générale, mais, comme ilest habituel à l’époque, elle est donnée sur un cas particulier mais senséreprésenter la généralité, la résolution de l’équation :

x2 + 10.x = 39.

Page 32: livre.pdf

8 Complexité et Algorithmique avancée

Figure 1.2 – L’algorithme d’Al Khawarizmi pour résoudre l’équationdu second degré .

Un carré et dix de ses racines égale trente neuf. Autrement dit, trouverle nombre entier x tel que :

x2 + 10.x = 39

La traduction du texte en arabe est la suivante [C+94] :Quant aux carrés et aux racines qui égalent le nombre, c’est comme

lorsque tu dis : un carré et dix de ses racines valent trente-neuf dirhams.Sa signification est que tout carré, si tu lui ajoutes l’équivalent de dixde ses racines [est tel que] cela atteindra trente-neuf. Son procédé derésolution consiste à diviser les racines par deux, et c’est cinq dans ceproblème. Tu le multiplies par lui-même et ce sera vingt-cinq. Tu l’ajoutesà trente-neuf. Cela donnera soixante-quatre. Tu prends alors sa racinecarré qui est huit et tu en retranches la moitié[du nombre] des racinesqui est cinq. Il reste trois et c’est la racine que tu cherche et le carré estneuf.

Décryptons la méthode en la comparant à la formule classique :

x = −b±√b2 − 4.a.c2.a .

Dans ce texte, l’équation est mise sous une forme normalisée : a.x2+b.x =−c avec a = 1 et on retrouve la formule. En effet, revenons au texte :

Page 33: livre.pdf

Chapitre 1. Histoires d’algorithmes 9

• (...) diviser les racines par deux soit ici b/2 ;• tu le multiplies par lui même soit ici b2/4• tu l’ajoutes à trente neuf (i.e. à −c soit ici b2/4− c) ;• tu prends alors sa racine carrée soit

√b2/4− c ;

• tu retranches la moitié du nombre des racines soit√b2/4− c− b/2,

soit en faitb−√b2 − 4.c2

et si on se souvient que dans la standardisation de l’écriture deséquations quadratiques telle que donnée par le texte on a toujoursa = 1, alors on retrouve la formule classique.

Il s’agit là du premier algorithme connu de résolution des équations dusecond degré. On remarquera au passage que la notion de racine négativen’était alors pas connue.

1.1.3 Un algorithme qui vient de loin

On remarquera par ailleurs que les modes opératoires, les algorithmesnumériques, sont étroitement dépendants des systèmes de numérationdans lesquels ils sont effectués. Ainsi, il n’existe pas de mode opératoiregénéral pour multiplier deux nombres écrits en chiffres romains.

A contrario, lorsqu’il s’est agi d’automatiser les calculs sur des ma-chines, on a choisi le système de numération qui présentait le plus d’intérêteu égard aux performances attendues, le système binaire proposé parLeibniz jusqu’à nouvel ordre.

Le système peut être additif comme chez les Romains, positionnelcomme le nôtre, ou celui des chinois, il peut comporter ou non le zéro(pas de zéro chez les Romains ni les Chinois) il peut être une combinaisond’additif et de positionnel comme chez les Sumériens, 3 millénaires avantnotre ère.

Ce sont ces mêmes Sumériens qui inventeront le zéro positionnel 1,au temps des Séleucides, 4 siècles avant notre ère. Ce sont eux aussi qui,avec les chinois, nous livrent les plus anciens algorithmes numériques

1. Attention, il ya au moins trois zéros. Le zéro, symbole numérique, pour dire qu’iln’y a rien ; le zéro dit de position, dont il et question ici, et le zéro des informaticiensqui n’est pas rien, et qui au strict niveau du binaire dit "absolu" se décline en + 0 et−0 à ce niveau système, tous les nombres ayant un signe.

Page 34: livre.pdf

10 Complexité et Algorithmique avancée

connus, en particulier pour le calcul de l’inverse de nombres à l’aide detables.

Le système de numération des Sumériens est une composition desexagésimal et de décimal, ils nous ont du reste transmis notre écrituredes mesures des heures, minutes et secondes ainsi que nos mesures d’angleset d’arcs de cercle . Ainsi un nombre qui s’écrit chez les sumériens abcest en fait a ∗ 602 + b ∗ 60 + c ; mais c est ici en décimal, ce qui ne faciliteguère les calculs.

Pour effectuer des divisions, on opère en deux étapes :• Calcul de l’inverse du diviseur.• Multiplication du dividende par l’inverse du diviseur.Les nombres dont l’inverse possède une écriture sexagésimale finie

prennent alors une importance particulière. Ceci d’autant plus qu’àl’époque on ne savait pas traiter des nombres dont l’écriture n’étaitpas finie en termes de symboles. Les nombres dont l’inverse possèdeune écriture sexagésimale finie sont dits réguliers par les historiens desmathématiques. Ces nombres sont de la forme 2p3q5r où p, q, r sont desentiers évidemment. L’inverse d’un nombre régulier est régulier.

L’idée de base est d’utiliser la formule :

1x+ y

= 11y ∗ z + 1

∗ 1y

Ainsi peut on calculer l’inverse d’un nombre régulier x lorsqu’on saitl’écrire comme somme de deux nombres y et z ; y étant lui même régulieret d’inverse connu.

Le texte Sumérien peut se comprendre ainsi :Quel est l’inverse du nombre x ?La méthode est la suivante.Former l’inverse de y (le lire dans une table), on le note y′.Multiplier y′ par z, soit t le résultat.Ajouter 1 à t, soit u.Former l’inverse de u, soit u′.Multiplier u′ par y′ ; soit v le résultat.v est le nombre cherché !

Exemple 1.1.1 Soit le nombre [2; 13; 20] (c’est à dire 2∗602+13∗60+20).En conservant cette écriture, on a :

Page 35: livre.pdf

Chapitre 1. Histoires d’algorithmes 11

[2; 13; 20] = [3; 20] + [2; 10] soit x = y + z par identification terme àterme.

y est un nombre régulier dont l’inverse est 18 (donné par une tablestandard).

L’inverse de x est égal au produit des inverses de y et de u avec larelation :

u = t+ 1 = 1/y ∗ 1.u

Pour notre exemple, u = t + 1 = 18 ∗ [2; 10] + 1 = 39 + 1 = 40.Le nombre u est régulier parce qu’il est égal à x/y et que x et y sontréguliers. L’inverse de u, donné par une table standard est [1; 30]. Parconséquent l’inverse de x est égal à 18x[1; 30] = 27 1.

Les tablettes des scribes nous ont transmis ces procédés de calcul 2.Autre exemple, certainement le plus ancien algorithme non numérique

connu à ce jour et relaté dans l’Énéide, l’algorithme dit algorithme duLabyrinthe 3.

1.1.4 L’algorithme du Labyrinthe

Dans le roman Le nom de la rose, d’Umberto Ecco, les héros sont àun moment perdus dans une bibliothèque labyrinthique et ne peuventretrouver leur chemin que grâce à l’application de l’algorithme déjà utilisépar Thésée. Heureusement pour lui, Thésée applique correctement l’algo-rithme, ce qui n’est pas le cas de nos moines, mais la fiction romanesqueaidant, ils s’en sortent quand même.

Thésée voulant délivrer Athènes du tribut de chair humaine que laCité doit chaque année au Roi Minos, se porte volontaire pour aller en

1. Attention, il y a une précaution à prendre dans la lecture de ces nombres avecnotre système de numération. En fait il n’y a pas - pas encore pour les tablettesévoquées ici - de zéro, et il faut faire d’autant plus attention aux puissances de 60concernées qui peuvent aussi être négatives.

2. Tablette VAT 6505 du musée de Berlin pour les calculs, tablette A06456 dumusée du Louvre pour les tables d’inverses, environ 2000 ans avant notre ère.

3. On trouvera une description simple et complète de cet algorithme dans l’ouvrageL’homme et les Techniques aux éditions Messidor/La Farandole, 1991.

Page 36: livre.pdf

12 Complexité et Algorithmique avancée

Crête et entrer dans l’obscur Labyrinthe construit par Dédale et y tuerle Minotaure qui se repaît du sang des jeunes gens envoyés d’Athènes 1.

Pour cela, il faut que Thésée, entre dans le Labyrinthe, y trouve leMinotaure s’il y est, qu’il le tue et ressorte pour retrouver Ariane, fille deMinos dont il est amoureux. La légende veut qu’Ariane ait aidé Thésée àsortir du Labyrinthe en lui donnant une pelote de fil dont elle tenait uneextrémité (d’où l’expression toujours usitée de "fil d’Ariane"), et "unecouronne de lumière". En fait ce n’est pas suffisant, comme nous l’allonsvoir, il faut une craie à Thésée pour pouvoir repérer des couloirs.

Si l’utilisation du fil permet à Thésée de revenir près d’Ariane, ellen’assure en rien à elle seule le parcours exhaustif du Labyrinthe pour ytrouver le Minotaure.

Pour pouvoir parcourir le Labyrinthe sans s’y perdre, et en étant sûrd’en examiner tous les couloirs et toutes les places, il faut établir desrègles de parcours qui sont les suivantes :

• Déroulement du filPassage de la place considérée à une place contigüe par un couloirlibre (i.e. non encore parcouru par Thésée). Après ce passage, aucours duquel le fil est déroulé le long du couloir, le couloir estconsidéré comme traversé.• Enroulement du filRetour de la place considérée à une place contigüe par le derniercouloir traversé. Le fil d’Ariane qui était déroulé le long de cecouloir est alors enroulé et le couloir est dit examiné.C’est alors que la craie (ou tout autre moyen de marquage) estnécessaire. Thésée marque les couloirs examinés, ce qui lui permetde les distinguer des libres. Les couloirs traversés sont distinguéspar le fait que le fil y est déroulé.

Le comportement de Thésée en une place dépend de la situation qu’ily trouve. Les différentes situations possibles sont les suivantes :

• Minotaure. Le Minotaure se trouve dans la place considérée ;• Boucle. Le fil d’Ariane passe à travers la place considérée ;

1. Il s’agit là d’une des toutes premières opération de propagande d’intoxication,la civilisation Minoenne qui vivait sur l’île de Crête il y a quatre mille ans semblen’avoir pas connu la guerre pendant de nombreux siècles.

Page 37: livre.pdf

Chapitre 1. Histoires d’algorithmes 13

I

H

C B

A

F

D

E

Figure 1.3 – Labyrinthe

• Couloir libre. De la place considérée, on peut sortir par un couloirlibre au moins ;

• Ariane. Ariane se trouve dans la place considérée ;

• Autre. Absence de tous les cas précédents.

Le comportement de Thésée peut être résumé dans le tableau suivant :

Page 38: livre.pdf

14 Complexité et Algorithmique avancée

Situation en la place considérée Comportement de Thésée

1. Minotaure Arrêt

2. Boucle Enroulement du fil

3. Couloir libre Déroulement du fil

4. Ariane Arrêt

5. Autre Enroulement du fil.

Dans un Labyrinthe dont la forme serait celle de la figure 1.3, Afigurant l’entrée du Labyrinthe (A comme Ariane) et F figurant la placeoù se tapit le Minotaure, la séquence des actions serait alors la suivante :

Comportement en fonction de la place et de l’état

Itération no Place État Comportement Parcours

1 A Couloir libre déroulement couloir AB

2 B Couloir libre déroulement couloir BC

3 C Couloir libre déroulement couloir CH

4 H Couloir libre déroulement couloir HI

5 I Autre enroulement couloir IH

6 H couloir libre déroulement couloir HD

7 D couloir libre déroulement couloir DE

8 E couloir libre déroulement couloir EF

9 F couloir libre déroulement couloir FA

10 A boucle enroulement couloir AF

11 F Couloir libre déroulement couloir FD

12 D Couloir libre déroulement couloir DB

13 B boucle enroulement couloir BD

Page 39: livre.pdf

Chapitre 1. Histoires d’algorithmes 15

Itération no Place État Comportement Parcours

14 D couloir libre déroulement couloir DC

15 C boucle enroulement couloir CD

16 D autre enroulement couloir DF

17 F autre enroulement couloir FE

18 E autre enroulement couloir ED

19 D autre enroulement couloir DH

20 H autre enroulement couloir HC

21 C autre enroulement couloir CB

22 B autre enroulement couloir BA

23 A Ariane FIN

Si on considère que le minotaure se trouve en F et n’en bouge pas,alors l’exploration s’arrête à l’étape 8, et bien entendu Thésée étantinvincible, il vient à bout du monstre.

Pour revenir à Ariane, il ne reste plus alors à Thésée qu’à ré-enroulerle fil.

On remarquera qu’avec cet algorithme, lorsque le Labyrinthe estconnexe (i.e. il est en un seul "morceau"), on sait si le Minotaure y résideou non. En effet, dans le pire des cas pour la recherche, le Minotaure n’estpas dans le Labyrinthe. La méthode de parcours donnée ici nous permet dele savoir. Il se produit au bout d’un temps fini - car le Labyrinthe comporteun nombre fini de couloirs et de places, que la longueur des couloirs estfinie et qu’on suppose que le Minotaure reste toujours en la même place -le cas pour lequel la situation en la place considérée est Ariane, c’est le castraité ici. Le Labyrinthe a été entièrement exploré, on peut conclure quele minotaure n’y est pas. La craie ou tout instrument de marquage descouloirs est absolument nécessaire. En effet, si Thésée n’avait pas de craie,il pourrait réessayer plusieurs fois le même parcours sans qu’il puisse s’enrendre compte. Du point de vue strictement probabiliste, Thésée sortiraitaussi du Labyrinthe avec une probabilité non nulle, mais l’espérance

Page 40: livre.pdf

16 Complexité et Algorithmique avancée

mathématique de temps associée serait prohibitive si le Labyrinthe estassez grand.

Dans cet algorithme encore, on a essayé à chaque fois de codifier lesactions à accomplir sans laisser de place au hasard 1 et on a décomposéchaque action en moments élémentaires. Là encore, on aurait pu allerplus loin dans la décomposition.

Remarque : L’algorithme permet de résoudre le problème, mais leretour à Ariane ne s’effectue pas par le plus court chemin possible.

1. Bien qu’on puisse faire des algorithmes probabilistes, mais c’est un autre propos.

Page 41: livre.pdf

Deuxième partie

Tour d’horizon rapide

Page 42: livre.pdf
Page 43: livre.pdf

Chapitre 2

Un rapide tour d’horizon

Placé devant un problème à résoudre, plusieurs attitudes peuventêtre adoptées :• vous cherchez directement à le résoudre ;• vous vous demandez si c’est bien un problème ;• considérant que c’est bien un problème, il y a là aussi deux attitudespossibles :– vous vous contentez de savoir si le problème est résoluble -ou

non ;– vous voulez une solution. Vous vous posez alors la question des

moyens à mettre en œuvre pour pouvoir le résoudre, c’est-à-direcombien ça va coûter, en temps, en espace, en argent.

Dans cette dernière hypothèse, vous pouvez être amené à montrer qu’iln’est pas raisonnable de vouloir écrire un programme de résolution duditproblème. Pour ce faire, il vous faut préciser ce que raisonnable signifie.C’est ce dont nous traitons ici. Dire que votre problème est intraitable 1

en temps raisonnable signifie en les termes que nous préciserons dans leschapitres qui suivent, qu’on ne peut pas écrire un programme d’ordinateurpermettant de résoudre ce problème dans des délais acceptables, dèslors que le-dit problème atteint une taille relativement modeste. Dit end’autres termes, on ne connaît pas d’algorithme dont le temps de calculvarie en fonction polynomiale de la taille des données pour résoudre ceproblème.

1. Intractable en anglais

Page 44: livre.pdf

20 Complexité et Algorithmique avancée

2.1 Une stratégie de résolution

Pour aborder notre problème, il nous faut alors :• Renoncer à écrire un programme dont le temps de calcul varie au

plus en fonction polynomiale de la taille des données du problèmedans le cas général ;• essayer d’autres méthodes de résolution :– rechercher un algorithme efficace (i.e. polynomial en temps 1)∗ pour un problème proche par relaxation de certaines contrain-tes ;∗ résolution de cas particuliers ;∗ approximation en lieu et place de la solution optimale ;∗ solution ε-approchée ;∗ solution "acceptable" ;∗ utilisation d’arguments probabilistes pour atteindre l’optimumavec une certaine probabilité (méthodes de Monte-Carlo, oude Las Vegas) ;

– utiliser quand même l’algorithme de résolution du cas général,mais sur des tailles de données suffisamment petites pour que letemps de calcul ne devienne pas prohibitif

2.2 Deux exemples

Pour illustrer le propos, on peut prendre deux exemples d’algorithmes,l’un "polynomial" et l’autre pour lequel on ne connaît qu’un algorithme"factoriel" et dont on conjecture qu’il n’y en a pas d’autre.

Exemple 2.2.1 (Un algorithme polynomial en temps)Soit à résoudre le problème suivant :

Étant donnée une liste de nombres entiers, rechercher si 1838987 faitpartie de la liste. On imagine facilement un algorithme dont le temps decalcul est linéaire 2 en temps par rapport à la taille de la liste. Il s’agit decomparer un à un tous les éléments de la liste à 1838987 et de répondreoui si on le trouve, non sinon.

1. Nous préciserons plus loin, formellement, ce que cela signifie2. S’il s’agissait d’une liste déjà triée, le temps serait en logn

Page 45: livre.pdf

Chapitre 2. Un rapide tour d’horizon 21

+++++++++++++++++++++++++++++++++++++++++++++++BEGIN RECHLISTPOUR i DE 1 A n

SI Liste(i) = 1838987 ECRIRE oui;STOPFINSI

FINPOURECRIRE non

END RECHLIST+++++++++++++++++++++++++++++++++++++++++++++++

Il est ici évident que cet algorithme ne génère au plus que a × n ;n ∈ N ∗, a ∈ R∗ (où n est le nombre d’éléments de la liste et a uneconstante liée au temps de calcul élémentaire) itérations élémentaires,c’est-à-dire, les opérations élémentaires en question s’exécutant en tempsconstant, que l’algorithme calcule en temps polynomial.

On aurait pu prendre aussi comme exemple d’algorithme polynomial,l’algorithme du labyrinthe exposé dans le paragraphe précédent (voir1.1.4). On aurait alors l’algorithme dit de Trémeaux de parcours d’ungraphe.

Exemple 2.2.2 (Un algorithme non polynomial en temps)

Soit à résoudre le problème suivant :Étant donnée une expression booléenne, du type suivant (toute

expression booléenne peut s’y ramener), dite sous forme canonique :

SAT = (xi1 ∨xi2 ∨ ...xim)∧ ..∧ (xj1 ∨xj2 ∨ ...xjn)∧ ..∧ (xk1 ∨xk2 ∨ ...xkp)

dire s’il existe une affectation de valeurs 0, 1 aux variables de cettefonction telle que l’expression prenne la valeur 1. Il n’y a, dans le casgénéral, pas d’autre solution connue que d’essayer toutes les affectationspossibles des valeurs 0, 1 aux variables dans le pire des cas.

L’algorithme nécessite ici 2n opérations élémentaires. Pour quel’expression soit satisfaite (i.e. que sa valeur soit égale à 1), il fautet il suffit que chaque clause soit satisfaite, mais les affectations de va-leurs sur une clause retentissent sur les autres. dans le pire des cas,toutes les possibilités doivent être examinées.

Page 46: livre.pdf

22 Complexité et Algorithmique avancée

Cet algorithme nécessite 2n opérations élémentaires. On ne connaît pasde meilleur algorithme pour résoudre ce problème connu sous le nomSAT, abréviation de SATisfiabilité dans le cas général 1

2.3 Les classes P et NP

Supposons que quelqu’un vienne proclamer qu’il peut donner unesuite binaire de longueur n qui satisfasse SAT. Il nous faut alors vérifierce dire. La question maintenant s’est donc déplacée. Elle devient :sommes-nous en mesure de fournir un algorithme qui vérifie cetteassertion en temps polynomial ?

La réponse est oui et elle définit ainsi une classe de problèmes, quenous appelons NP dont on peut vérifier le résultat en temps polynomial.Bien évidemment, si un algorithme fournit une solution en temps poly-nomial, la vérification peut aussi en être faite en temps polynomial. Lesproblèmes résolubles par des algorithmes en temps polynomial formentla classe P , et on a donc :

Théorème 2.3.1P ⊆ NP

Preuve 2.3.1 Évident.

2.4 La classe NP

La classe P est la classe des problèmes qui peuvent être résolus entemps polynomial, alors que la classe NP est la classe des problèmespour lesquels la solution peut être vérifiée en temps polynomial.

L’un des grands problèmes de l’algorithmique est de savoir s’il y aégalité entre ces classes :

P = NP ? OU P 6= NP ?Pour répondre à cette question, deux cas sont à examiner :

1. Nous verrons par la suite que dans quelques cas particuliers, il existe desalgorithmes en temps polynomial.

Page 47: livre.pdf

Chapitre 2. Un rapide tour d’horizon 23

• Démontrer que P = NP Il faut alors montrer que tout problèmede NP peut être résolu par un algorithme polynomial, c’est-à-direque NP ⊆ P ;

• démontrer que P 6= NP . Pour ce faire il faut trouver au moins unproblème P de NP qui ne soit pas dans P, et il faut démontrerqu’il n’existe pas d’algorithme permettant de résoudre ce problèmeP en temps polynomial.

On ne sait faire ni l’un ni l’autre !Toutefois, pour continuer cette étude on fait la conjecture suivante :

Conjecture 2.4.1P 6= NP,

et plus précisément :P ⊂ NP

Si on fait cette conjecture, c’est qu’on a de bonnes raisons de penser quele cas 2.4 peut être vérifié. On ne sait pas le démontrer mais [Yab59a,Lup59] ont identifié le problème SAT comme répondant à la question et[Coo71, Lév73a] ont établi la théorie de la classe des problèmes NP.

Conjecture 2.4.2 (Conjecture de Lupanov-Yablonski) . Le prob-lème de la satisfiabilité d’une expression booléenne donnée sous formenormale conjonctive, appelé SAT, n’admet pas d’algorithme polynomialde résolution dans sa forme générale 1[Lup59, Yab59a, Yab59b].

A partir de cette conjecture, il faut identifier les autres problèmes, s’ilsexistent, qui possèdent les mêmes propriétés que SAT. Pour ce faire ilconvient de se doter d’outils d’identification adéquats. Ainsi en est-il dela réductibilité polynomiale.

2.4.1 Réductibilité polynomiale

Le principe de réductibilité polynomiale est basé sur un théorèmed’algèbre qui nous dit :

1. Bien qu’attribuée le plus souvent à Cook [Coo71] dans la littérature occidentale,cette conjecture date de 1959, revisitée en 1963 par O. Lupanov [Lup63] qui l’utilisepour définir déja des classes de complexité. Le mérite de Lévine et Cook, et il n’est pasmince, est d’en avoir déduit la théorie de la NP−complétude et d’avoir ainsi identifiéla classe des problèmes dits NPC qui est centrale en théorie de la complexité.

Page 48: livre.pdf

24 Complexité et Algorithmique avancée

Théorème 2.4.1 (Composition des polynômes) Un polynôme depolynômes est un polynôme.

Preuve 2.4.1 Se démontre par récurrence sur le corps des polynômes.

Ce théorème permet de mettre en évidence le caractère particulier deSAT.

Intuitivement, on dira qu’un problème P1 est réductible polynomiale-ment à un problème P2, qu’on notera alors P1 ∝ P2 si, et seulement sitoute instance de P1 peut être réécrite en une instance de P2 de façon àce que la taille de cette instance de P2 ne dépende de celle de P1 que defaçon polynomiale. En notant p1 la taille d’une instance de P1 et p2 celled’une instance de P2 ; on doit avoir après réécriture :

p1 ≤ Polp2

où Pol désigne un polynôme, quel qu’il soit.

2.4.2 La classe NPC

Ainsi, si il existe un algorithme qui résout P2 en temps polynomial,alors il en existe aussi un qui résout P1 en temps polynomial (l’exposantdu terme de plus haut degré du polynôme pouvant être très différent).On peut maintenant introduire la classe NPC.

Définition 2.4.1 (Classe NPC) Un problème P sera dit appartenantà la classe NPC si, et seulement si :• P est dans NP et ;• ∀P∗ ∈ NP ; P∗ ∝ P, à savoir que tout problème de NP estpolynomialement réductible à P.

On a alors le théorème suivant qui structure toute l’étude :

Théorème 2.4.2 S’il existe un problème de NPC résoluble en tempspolynomial, alors :

P = NP ;sinon, s’il existe un problème de NP qui n’est pas résoluble en tempspolynomial alors :

P 6= NPet aucun problème dans NPC n’est résoluble en temps polynomial.

Page 49: livre.pdf

Chapitre 2. Un rapide tour d’horizon 25

Cook et Lévine [Coo71, Lév73a], comme nous l’avons vu en 2.4.2 conjec-turent que SAT répond à la deuxième partie du théorème 2.4.2. Et que,par conséquent P 6= NP.

2.5 Conclusion

Cette présentation succinte des concepts ne saurait en constituerun exposé tant soit peu acceptable au plan scientifique. Pour menerà bien l’étude de cet ouvrage, il va nous falloir préciser les conceptsintroduits dans ce chapitre. Pour ce faire, des pré-requis mathématiquessont nécessaires que nous introduirons, mais il nous faut aussi donnerune base référentielle aux notions et concepts que nous allons manipuler.

Écrire sur la complexité en informatique nécessite de préciser etd’établir clairement quelques concepts paradigmatiques comme :• les concepts de calcul et de machine ;• les concepts de problème et de solution ;• le concept d’algorithme ;• le concept de "temps de calcul" ;• les concepts de mot et de langage.

Pour cela, il faut définir des objets mathématiques auxquels se référeret que nous allons introduire ci-après tout en exposant aussi les notionsmathématiques de base qui permettent de maîtriser le sujet.

Page 50: livre.pdf
Page 51: livre.pdf

Chapitre 3

La Machine de Turing

3.1 La Machine de Turing, modèle d’algorithme

Comme nous l’avons vu dans les énoncés précédents, pour la soustrac-tion dans l’algorithme d’Euclide par exemple, on peut pousser plus

loin encore la description de la procédure. C’est ce fait, remarqué depuislongtemps qui a guidé les chercheurs, Turing en particulier. L’idée direc-trice étant qu’à décomposer le plus possible, on devait pouvoir atteindreune forme élémentaire, commune à toutes les procédures, un langageélémentaire universel en quelque sorte permettant de décrire toute procé-dure opératoire. L’idée en fait était "en l’air" depuis longtemps, depuisque Leibniz (1646-1716) avait montré que tout pouvait être décrit avecseulement deux symboles, 0 et 1.

A la fin du XIXeme siècle (en 1900), le mathématicien Hilbert aucongrès des mathématiciens réunis à Paris pour la fin du siècle et surtoutpour l’annonce du siècle à venir énonce une double conjecture (10e et 23e

problèmes 1 de Hilbert) 2 que l’on peut formuler ainsi :• Il existe une façon unique de représenter tout énoncé de problèmede mathématiques ;• si la première partie de la conjecture est vraie, alors il existe une

1. Existe-t-il une procédure automatique qui résolve tous les problèmes de mathé-matiques les uns après les autres ?

2. En mathématique, on appelle conjecture un énoncé qu’on a toutes les raisonsde croire vrai mais qu’on ne sait pas démontrer, et sur lequel, bien sûr, on ne peutexhiber aucun contre exemple.

Page 52: livre.pdf

28 Complexité et Algorithmique avancée

façon unique de résoudre tout problème de mathématique.

On imagine l’émoi que provoqua cette conjecture et donc les travauxqu’elle suscita, en particulier, une part significative des développementsmodernes de la logique viennent de travaux liés à cette conjecture, enparticulier les théorèmes de Gödel sur la complétude des théories formellesqui furent l’un des premiers éléments de réponse à Hilbert. Nous donne-rons, dans le cadre de la théorie de la calculabilité, une démonstrationdu théorème d’incomplétude de Gödel.

C’est le 28 mai 1936 que Alan Mathison Turing apporta la réponsedéfinitive (pour l’instant) aux conjectures de Hilbert. En fait, Turing nes’intéressait pas directement à ces conjectures, mais plutôt à la représen-tation des nombres réels. En effet, un nombre transcendant (non entier,non rationnel, non géométrique, non complexe) n’est représentable parun nombre fini de symboles que si on donne la façon d’obtenir la suiteinfinie des chiffres qui le composent, si on lui donne un nom, ou si onconstruit un symbole spécial le désignant, comme par exemple π ou e.Pour pouvoir utiliser les nombres transcendants, on doit en fait donnerune méthode permettant de calculer tout ou partie de leurs décimales,c’est-à-dire en fait, on doit donner l’algorithme permettant de les générer.C’est en travaillant sur une redéfinition du concept d’algorithme queTuring en est venu à résoudre la double conjecture de Hilbert. Pour cefaire il avait conçu une «machine» théorique, modèle de tout calcul quiporte désormais le nom de Machine de Turing et sur les principes delaquelle sont fondés tous les ordinateurs modernes. Là aussi, il semble quel’idée d’une machine théorique ait été avancé bien avant par HermannWeyl [Wey49] 1 mais dans un contexte quelque peu différent .

L’idée de base est de ramener tout calcul, toute action à une série d’ac-tions élémentaires, toutes et toujours les mêmes, seul changeant l’ordredans lequel elles seraient exécutées. Ceci permettait la refondation mo-derne du concept d’algorithme, celui-ci devenant alors simplement l’ordredans lequel les dites opérations élémentaires devaient être exécutées.

On peut maintenant préciser les caractéristiques auxquelles doit ré-pondre une Machine de Turing :

– La décomposition du processus de calcul (au sens large) en opé-

1. Il semble que Weyl ait discuté dés 1927 sur une machine théorique basée sur leparadoxe dit de Zénon, précisément par rapport à la génération des réels mais publiéofficiellement seulement en 1949, l’édition allemande étant très peu connue.

Page 53: livre.pdf

Chapitre 3. La Machine de Turing 29

rations élémentaires est menée aux limites du possible. Ainsi enest-il par exemple de l’addition décimale qui peut être encoredécomposée en une suite d’opérations plus simples. Cette décom-position allonge les processus, mais en même temps, la structurelogique du processus est renforcée et mise en valeur et elle prendun aspect standard et systématique qui lui donne sa puissancethéorique.

– La mémoire d’une Machine de Turing est formée par un rubanillimité dans les deux sens et divisé en cases. C’est là l’un desaspects abstraits de la Machine de Turing. Aucune machine réellene peut avoir une mémoire illimitée, même si les machines actuellesont des mémoires de très grande capacité. La Machine de Turing esten fait un schéma idéal reflétant la possibilité théorique d’extensionnon bornée de la mémoire.

3.1.1 Description détaillée d’une Machine de Turingélémentaire

Nous pouvons maintenant passer à une description détaillée d’uneMachine de Turing élémentaire et de son fonctionnement.

Une Machine de Turing comprend trois types d’alphabets :

1. Un alphabet extérieur qui lui permet de communiquer avec lemonde extérieur, souvent appelé environnement et composé d’unnombre fini de symboles.

S1,S2, . . . ,Sk

Avec ces symboles, l’environnement code l’information fournie à lamachine et la machine code l’information qu’elle élabore. On doitintroduire un symbole de l’alphabet extérieur représentant le vide.Par convention, on prendra ici Λ . L’introduction ("l’écriture") de cesymbole dans une case du ruban correspond en fait à l’effacementdu symbole s’y trouvant précédemment. La présence de ce symboledans une case signifiant qu’elle est vide. De même nous dironsd’une case vide qu’elle contient le signe vide. Dans une case duruban, on ne peut, à un instant donné trouver plus d’un symbole del’alphabet extérieur. L’introduction du signe vide permet même de

Page 54: livre.pdf

30 Complexité et Algorithmique avancée

dire que dans toute case du ruban est inscrit un et un seul symbolede l’alphabet extérieur.

2. L’alphabet de mouvement composé des symboles N, D, G signi-fiant respectivement, neutre, droite, gauche, spécifiant ainsi lesmouvements de la tête de lecture par rapport au ruban. Ces mou-vements (G, D) ont toujours lieu d’une case et d’une seule à lafois.

3. L’alphabet dit intérieur qui décrit des "états" logiques du bloc decalcul de la machine. On l’appelle aussi espace d’états ou encorealphabet d’états, suivant les auteurs. Nous les noterons :

q0, q1, . . . , qm

La Machine de Turing fait correspondre à un couple composé dansl’ordre d’un symbole de l’alphabet extérieur et d’un symbole del’alphabet intérieur, un triplet, constitué dans l’ordre d’un symbole del’alphabet extérieur, d’un symbole de l’alphabet de mouvement, d’unsymbole de l’alphabet d’état. On peut donner une représentation gra-phique d’une Machine de Turing, comme dans la figure 3.1

Q

LL

L LI I I I IQ

q0 q1 q2

LL

Q

I LDq1 IDq1

QDq1

IGq2 LDq0

QGq2

IGq2

LL

Figure 3.1 – Machine de Turing

Page 55: livre.pdf

Chapitre 3. La Machine de Turing 31

La machine comprend alors une tête de lecture/écriture, et un bloclogique qui applique la correspondance décrite ci-dessus. Ainsi, si sousla tête de lecture apparaît le symbole I alors que le bloc logique est enl’état q0 la machine écrit sur la bande Λ (c.a.d. qu’éventuellement, elleefface ce qu’il y avait dans la case lue) puis elle décale la tête de lecturesur la droite, et le bloc logique passe en l’état q1 . À l’itération suivante,la tête de lecture lit I sur le ruban et le bloc logique est dans l’état q1 , lamachine inscrit I dans la case lue (i.e. en vrai, elle n’écrit rien puisqu’ily a déjà I), provoque un décalage à droite et reste dans l’état q1 et ainside suite comme illustré sur la figure 3.1 il s’agit d’une série de décalagesà droite jusqu’à ce que la machine lise un symbole Λ sur le ruban. Elleinscrit alors un I, décale sa tête de lecture vers la gauche et passe en l’étatq2 et elle entame une série de décalages à gauche jusqu’à de nouveaurencontrer un vide (i.e Λ) sur le ruban, elle se recale alors à droite etpasse dans l’état q0 et elle réitère tant qu’en l’état q0 elle lit un I. Si ellelit ∗ alors elle efface ce symbole et s’arrête (le symbole ! signifiant l’arrêt).

La machine de la figure 3.1 effectue une addition 1, le lecteur pourrale vérifier aisément en considérant que sur la figure, la machine est enposition de départ et que son état -initial ici- est q0, on trouvera quel estl’état final.

Dans cet exemple, l’alphabet extérieur comprend trois symboles,l’alphabet intérieur trois aussi et l’alphabet des déplacements trois égale-ment.

Si on mesure la difficulté d’exécution d’un algorithme au nombred’itérations nécessaires à la Machine de Turing associée pour passer desdonnées du problème à résoudre et de la position de départ à la solutiondu dit problème, alors dans l’exemple de l’addition ci-dessus la difficultése mesure en : 2 fois (nombre à gauche de l’astérisque + nombre à droite+ 1), soit sur l’exemple 12 itérations. Soit encore 2∗ (m+n+1) itérationspour additionner deux nombres m et n, ce qui est particulièrement lourd.On peut obtenir le même résultat en Max(m,n) itérations en modifiantla position de départ, ce qui est nettement plus intéressant.

Le tableau à double entrée du bloc logique de la Machine de Turing

1. Cette façon de faire est loin d’être optimale, il y a beaucoup plus simple pourfaire effectuer une addition à une machine de Turing, mais ce n’est pas le propos ici.

Page 56: livre.pdf

32 Complexité et Algorithmique avancée

s’appelle un schème fonctionnel. Nous pouvons maintenant revenir surla notion d’algorithme et essayer de la préciser.

3.1.2 Précision du concept d’algorithme

Le caractère systématique du fonctionnement d’une Machine deTuring conduit à se poser la question de la systématisation de sonutilisation pour exécuter des algorithmes. À quel point les notions deMachine de Turing et de schème de Turing sont elles générales ? À cela,la théorie des algorithmes répond :

Tout algorithme peut être donné par un schème fonctionnel de Turinget exécuté par la Machine de Turing correspondante.

Si cela n’est pas encore une définition formelle, on voit comment ons’en rapproche. D’un côté, il est question ici de tout algorithme c’est à direde la notion générale d’algorithme, qui n’est pas une notion mathématiqueprécise, et de l’autre côté, il est question de schème d’une Machine deTuring qui est un concept mathématique précis.

On cherche à préciser la notion générale, mais vague de « toutalgorithme » à l’aide d’un concept plus particulier mais bien défini,celui de schème fonctionnel de Turing (et son exécution par une Machinede Turing). De cette façon, la théorie des algorithmes, l’algorithmique,a pour objet de ses recherches tous les schèmes fonctionnels de Turing(toutes les machines de Turing) possibles, et leurs propriétés.

Sur la figure 3.1, la machine de Turing est en position de départ, l’étatde la machine est q0 ; la table à double entrée qui constitue le schème defonctionnement de la machine donne la marche à suivre :

Exemple 3.1.1 (Fonctionnement) Voir la figure 3.1. Au démarrage,l’index est sous la case la plus à gauche contenant un bâtonnet et lamachine est dans l’état q0.

Iq0 → Λ,D, q1

Λ Λ I I ∗ I I I Λ Λ∆q0

Iq1 → I,D, q1

Λ Λ Λ I ∗ I I I Λ Λ∆q1

Page 57: livre.pdf

Chapitre 3. La Machine de Turing 33

∗q1 → ∗,D, q1

Λ Λ Λ I ∗ I I I Λ Λ∆q1

Iq1 → I,D, q1

Λ Λ Λ I ∗ I I I Λ Λ∆q1...

Après une série de décalages à droite...Λq1 → I, G q2

Λ Λ Λ I ∗ I I I Λ Λ∆q1

Iq1 → I, G q2

Λ Λ Λ I ∗ I I I I Λ∆q1...

∗q2 → ∗, G q2

Λ Λ Λ I ∗ I I I I Λ∆q1...

Λq2 → Λ, D q0

Λ Λ Λ I ∗ I I I I Λ∆q1

Là, on retrouve la position initiale mais avec un bâtonnet de moinsqu’initialement du côté gauche de l’astérisque et un bâtonnet de plus ducôté droit. Cette addition consiste donc à "transporter" un bâtonnet de lagauche vers la droite. Voyons maintenant comment s’opère l’arrêt de lamachine. Après avoir effacé le bâtonnet (Iq0 → ΛDq1) et effectué doncune nouvelle série de déplacements de gauche à droite jusqu’à trouver une

Page 58: livre.pdf

34 Complexité et Algorithmique avancée

case vide (i.e. contenant le symbole Λ), la machine inscrit dans la caseen question un nouveau bâtonnet Λq1 → I, G q2 et entame une nouvellesérie de décalages à gauche en état q2 jusqu’à trouver la première casevide à gauche (i.e. contenant le symbole Λ). La machine est alors dansla configuration suivante :

Λ Λ Λ Λ ∗ I I I I I∆q0

Ainsi la machine est revenue en position de départ en l’état q0. Leprocessus continuerait ainsi indéfiniment si l’arrêt n’était pas prévu. Iciaprés encore une boucle d’exécution, la machine sera dans la configuration∗q0 et elle effacera alors l’astérisque :

∗q0 → Λ

Il faut alors lui donner l’ordre de s’arréter. On utilise pour ce faire,conventionnellement, le symbole " !". Soit ici :

∗q0 → Λ!

3.2 Un peu de formalisme

Le concept de machine de Turing étant désormais introduit, on peutle formaliser un peu plus.

Formellement, une machine de Turing M sera considérée comme étantun quadruplet

M = (Q,Σ, δ, q0)

où Q est l’alphabet d’états, q0 ∈ Q étant l’état initial. Σ est l’alphabetextérieur de M ; avec : Q ∩ Σ = ∅. On considère pour simplifier que Σcontient un symbole spécial 1 Λ qui marque l’absence de symbole, ou lesymbole blanc.

δ est alors la fonction de transition (i.e. le Schème) :! est le symbole de l’arrêt, oui est l’état d’acceptation, et non est l’état

de rejet. Il n’est pas absolument nécessaire d’introduire les symboles oui

1. Certains auteurs en introduisent un deuxième, ψ qui est alors le premier symboleà lire, mais cela est superfétatoire. Il suffit que la position de départ soit donnée.

Page 59: livre.pdf

Chapitre 3. La Machine de Turing 35

et non pour construire des machines de Turing élémentaires comme nousallons le faire. L’introduction de ces deux symboles est par contre utilepour développer la théorie de la complexité car elle permet d’introduire leconcept de problème de décision qui donne un façon standard de présenterles choses. Les symboles→,←, l représentant respectivement, le décalageà droite de la tête de lecture/écriture de la machine, le décalage à gauche,la stagnation.

Q× Σ→ Q ∪ !, oui, non × Σ× →,←, l

3.3 Machines de Turing élémentaires

Une façon de construire des machines complexes est de commencerpar se doter d’un certain nombre de machines élémentaires et du moyende les combiner entre elles (voir [Vol85]).

3.3.1 Machine qui s’arrête

La première et la plus simple est celle qui s’arrête !L’alphabet extérieur peut être quelconque (mais fini bien sûr)

S0,S1, . . . ,Si, . . . ,Sn, les états sont q0 et q1.L’action de la machine se résume alors à :

(Si, q0)→ (Si, q0, STOP)(i = 0, . . . , n).

Cette machine lit la case sous sa tête de lecture écriture et s’arrête.

3.3.2 Machine "tout à gauche", machine "tout à droite"

Symboles S0,S1, . . . ,Si, . . . ,SnEtats : q0, q1, q2Actions :

(Si, q0)→ (Sj , q1,G); (i, j = 1, . . . , n)

(Sk, q1)→ (S1, q2,STOP)

Cette machine décale la tête de lecture d’une case vers la gauche ets’arrête.

Page 60: livre.pdf

36 Complexité et Algorithmique avancée

Par symétrie on construit la machine qui décale la tête vers la droite.

(Si, q0)→ (Sj , q1,D); (i, j = 1, . . . , n)

(Sk, q1)→ (S1, q2,STOP)

3.3.3 Machine à effacement et écriture

(Si, q0)→ (Λ, q1,N); (i, j = 1, . . . , n)

(Λ, q1)→ (Λ, q1, STOP) ou !

Cette machine efface le symbole de la case lue et s’arrête.

(Si, q0)→ (1, q1,N); (i, j = 1, . . . , n)

(1, q1)→ (1, q1, STOP) ou !

Cette machine remplace le symbole dans la case lue par 1 et s’arrête.

3.3.4 Machines chercheuses de 1 ou de 0

(Si, q0)→ (Si, q1,D); (i, j = 1, . . . , n)

(1, q1)→ (1, q1,STOP) ou !

Cette machine cherche le premier 1 à droite sur le ruban, à partir dela position de départ et s’arrête une fois qu’elle l’a trouvé. Si le ruban necontient que des 1, la machine ne s’arrêtera jamais.

On peut faire la même chose à gauche, en remplaçant D par G et onpeut faire la même chose pour 0 au lieu de 1.

Exercice 1 Écrire le schème d’une machine de Turing qui chercheun 1 sur le ruban sachant qu’elle démarre de n’importe ou, qu’il y anécessairement au moins un 1 et qu’il n’y a que des 1 et des 0 sur leruban.

Page 61: livre.pdf

Chapitre 3. La Machine de Turing 37

3.3.5 Composition de machines de Turing élémentaires

On peut constituer des machines complexes par mise en séquence oubranchement de machines de Turing élémentaires.

3.3.5.1 Mise en séquence de machines

Supposons deux machines de Turing T1 et T2 données d’alphabetsintérieurs (espaces d’états) respectifs : q0, . . . , qn et r0, . . . , rm où q0 et r0sont les états initiaux de T1 et T2 et qn et rm sont les états terminaux.Les alphabets extérieurs sont identiques pour T1 et T2.

La machine obtenue par mise en séquence, ou enchaînement, seranotée

T1 → T2

.L’alphabet extérieur de cette machine est celui de T1 et T2 et

l’alphabet intérieur sera obtenu par concaténation, de la façon suivante :q0, . . . , qn−1, r0, . . . , rm .

Et on transforme :

(Si, qk)→ (qn,STOP)

en :

(Si, qk)→ (Si, r0).

En fait lorsque la première machine a terminé son travail, la deuxièmeprend la main et agit sur les résultats de la première. La deuxième machineadmet comme état du ruban d’entrée l’état du ruban résultant du calculde la première machine.

On remarquera que cette opération sur les machines de Turing estassociative.

(T1 → T2)→ T3 ≡ T1 → (T2 → T3);

Par contre elle n’est évidemment pas symétrique.

Page 62: livre.pdf

38 Complexité et Algorithmique avancée

3.3.5.2 Branchement de machines

C’est l’opération qui permet de faire des tests et de modifier le coursd’un calcul en fonction de résultats intermédiaires.

À trois machines T1,T2 et T3 d’espaces d’états respectifs q0, . . . , qn ;r0, . . . , rm ; t0, . . . . , tp on associe par exemple une machine construite dela façon suivante : Alphabet interne q0, . . . , qn−1 ; r0, . . . , rm−1 ; t0, . . . , tpet ;

(0, qi)→ (r0, 0) Signifie que, si la machine T1 se trouve dans l’état qiet lit 0 sur le ruban, alors la machine T2 enchaîne ;

(1, qi)→ (t0, 1) Signifie que, si la machine T1 se trouve dans l’état qiet lit 1 sur le ruban, alors la machine T3 enchaîne.

Page 63: livre.pdf

Chapitre 4

La Machine de TuringUniverselle

Dans ce qui précède, nous avons défini ce qu’est une Machine deTuring, ainsi que son schème, spécifique pour chaque classe de pro-

blème. Dans cette problématique, des algorithmes différents s’exécutentsur des machines différentes. On n’a donc pas encore atteint le degréd’universalité cherché. Si on y regarde d’un peu plus près, on s’aperçoitque ce qui distingue deux telles machines de Turing, ce sont leurs schèmesfonctionnels, et eux seuls. La question vient donc naturellement de savoirsi on ne pourrait pas pousser la standardisation un peu plus loin et avoirune Machine de Turing capable de simuler toute autre Machine de Turing.la réponse est positive, mais il faut résoudre quelques difficultés pourconstruire cette machine universelle.

4.1 Le problème général

On peut par exemple commencer par décrire, pour un opérateurextérieur (un humain), la façon d’opérer de toute Machine de Turingparticulière par les règles opératoires élémentaires suivantes (voir aussi[Tra63]) :

1. lire le symbole contenu dans la case pointée par l’index de lamachine ;

2. dans la table à double entrée du schème fonctionnel, identifier la

Page 64: livre.pdf

40 Complexité et Algorithmique avancée

colonne correspondant à l’état courant de la machine ;3. dans la table à double entrée du schème fonctionnel, identifier la

ligne correspondant au symbole lu ;4. dans la table à double entrée du schème fonctionnel, lire le triplet

situé dans la case à l’intersection des lignes et colonnes ci-dessusidentifiées ;

5. écrire dans la case du ruban pointée par l’index de la machine, lepremier symbole à gauche du triplet ;

6. si la deuxième lettre du triplet est !, arrêter la machine, l’exécutionest terminée ;

7. si la deuxième lettre du triplet est G, décaler d’une case et d’uneseule du ruban sur la gauche l’index de la machine ;

8. si la deuxième lettre du triplet est D, décaler d’une case et d’uneseule du ruban sur la droite l’index de la machine ;

9. changer l’état courant noté par un caractère de l’alphabet inté-rieur de la machine en celui indiqué par le troisième symbole, del’alphabet intérieur, du triplet ;

10. réitérer la règle 1.Cette procédure, bien décrite et exécutable par un humain peut aussi

être codifiée dans un schème fonctionnel et exécutée par une Machine deTuring.

Remarque 4.1.1 C’est aussi ce qui est appelé la thèse de Church, àsavoir que toute fonction calculable par un humain est calculable par unemachine 1.

Pour Church, le modèle de la calculabilité c’est la notion de fonctionrécursive.

C’est la Machine de Turing Universelle qui va nous permettre degénéraliser le concept de machine de Turing. Pour une telle machine, leschème qu’elle doit simuler doit être codé sur son ruban, exprimé dansles symboles de l’alphabet extérieur. Si on arrive à réaliser un tel codage

1. Cette thèse se comprend de la façon suivante : l’homme peut inventer desaxiomes, ce qu’une machine ne saurait faire car ils ne pourraient qu’être déduits desaxiomes qui ont présidé à sa conception. De ce point de vue, le calcul humain nes’entend donc que comme l’exécution par un humain d’une procédure bien définie.

Page 65: livre.pdf

Chapitre 4. La Machine de Turing Universelle 41

et à donner un schème général capable de lire ce codage, ou montrerqu’il en existe un, alors on aura réalisé la Machine de Turing universelle.C’est maintenant ce que nous allons faire.

4.1.1 Le problème du codage

Il apparaît dès lors deux difficultés :– Le schème fonctionnel d’une Machine de Turing particulière est

une table à double entrée, or toute écriture ou lecture sur le ruband’une Machine de Turing est séquentielle, et de plus, l’accès àl’information non contigüe à la case face à l’index est impossibledirectement.

– l’autre problème est celui de la finitude des alphabets utilisés.En effet, dans une Machine de Turing particulière, nous avonsconsidéré jusqu’ici que l’alphabet extérieur et l’alphabet intérieurde la machine étaient constitués d’un nombre fini de symboles,mais ce nombre, en particulier pour l’alphabet intérieur, dépend del’algorithme utilisé et de la façon de le réaliser sur la machine deTuring. Ainsi, ce nombre de symboles pourrait sembler dépendredu problème particulier à résoudre. Pour une machine universelle,il nous est a priori impossible de prévoir quel sera le nombre desymboles nécessaires à la réalisation de telle ou telle autre Machinede Turing spécifique d’un problème donné.

Il nous faut donc résoudre maintenant ces deux problèmes de finitudede l’alphabet et d’unidimensionnalité de l’information du ruban.

4.1.1.1 L’unidimensionnalité

Nous allons représenter une table à double entrée à k lignes et mcolonnes dans laquelle chaque case contient un triplet par une suitede m.k quintuplets. Chacun des quintuplets étant formé de la façonsuivante :

– le premier symbole désigne une ligne de la table ;– le deuxième symbole désigne une colonne de la même table ;– les trois symboles suivants étant dans l’ordre les symboles du triplet

se trouvant à l’intersection de la ligne et de la colonne de la table duschème fonctionnel de la machine de Turing particulière étudiée..

Ainsi, le schème de la Machine de Turing de la figure 3.1 page 30 s’écrit-il :

Page 66: livre.pdf

42 Complexité et Algorithmique avancée

Λq1Igq2Λq2ΛDq0 ∗ q0ΛN! ∗ q1 ∗Dq1 ∗ q2 ∗Gq2Iq0ΛDq1Iq1Idq1Iq2IGq2

Il est évident qu’il est possible de rétablir le schème bi-dimensionnelinitial à partir de cette séquence. Toutefois, c’est une séquence et non untableau, ce qui signifie que l’accès à deux groupes non contigus ne peutse faire de manière directe. Il y faudra des intermédiaires, mais cela restepossible. De même, on peut adopter une convention générale d’écritured’une configuration donnée. On notera le symbole caractérisant l’état dela machine immédiatement à gauche du symbole pointé par l’index de lamachine. Ainsi, la première configuration de la figure 3.1 se représentepar :

ΛIq0I ∗ IIIΛ

Avec cette règle, il n’y a pas d’ambiguïté, on peut rétablir d’une façonunique la configuration correspondante.

4.1.1.2 La finitude du codage

Il est évident que les symboles de l’alphabet extérieur n’ont aucunesignification particulière en eux-mêmes. On peut remplacer un symbolepar un autre, un carré par un cercle sans que cela influence le résultat.Par exemple, dans le schème de Turing de la figure 3.1, si on remplace lesymbole I par &, rien ne sera pour autant changé dans le travail de lamachine. La seule chose importante est que des objets différents soientreprésentés par des codes différents, et que l’on puisse distinguer sansambiguïté, les symboles de l’alphabet extérieur de ceux de l’alphabetde positions et chacun des données du problème . De même, on peutprendre des symboles différents de G,D,N pour désigner les déplacementsà condition de spécifier quel symbole induit quel déplacement.

Quel que soit le système de codage utilisé, il doit permettre :

1. de diviser le ruban d’une façon unique en groupes codés distincts ;2. que l’on puisse distinguer clairement quels sont les groupes codés

relatifs à chaque type d’alphabet, et à chaque symbole de ceux-ci.

Ces deux conditions sont remplies par le procédé de codage suivant.

Page 67: livre.pdf

Chapitre 4. La Machine de Turing Universelle 43

On construit 3 + k + m groupes codés de forme βα . . . αβ, ce quiimplique que deux β successifs marquent le passage d’un groupe à unautre. On peut utiliser alors le procédé de codage suivant (emprunté à[Tra63]) :

Lettres Groupes codésG βαβN βααβD βαααβ

Alphabet extérieurS1 βααααβ 4 alphas Nombre deS2 βααααααβ 6 alphas alphas pair,

supérieur à 2...........................................................

Sk βα . . . . . . αβ 2.(k + 1) alphasAlphabet de position

q0 βαααααβ 5 alphas Nombre deq1 βαααααααβ 7 alphas alphas impair,

supérieur à 5...........................................................

qm−1 βα . . . . . . αβ 2.(m+ 1) + 1 alphas

reprenons maintenant le ruban suivant :

ΛNq1IGq2ΛNq2ΛDq0

Le codage en sera le suivant :

βααααββααββαααααααββααααααββαββαααααααααββααααββααββαααααααααββααααββαααββαααααβ

Les symboles utilisés important peu, on peut remplacer les α par des 0et les β par des 1 (ou l’inverse), et on retombe alors sur un codage binaireclassique comme on en rencontre dans les ordinateurs. Les ingénieurssystèmes qui ont été amenés à débogger des systèmes au niveau le plusbas du logiciel connaissent cette forme de codage 1. Le codage précédentdevient alors :

1. Par utilisation d’images mémoires, dump en anglais.

Page 68: livre.pdf

44 Complexité et Algorithmique avancée

10000110011000000011000000110110000000001100001100110000000001100001100011000001

Toute telle suite de 0 et de 1 est appelée chiffre d’une configuration.La raison de l’utilisation d’un codage binaire est toujours celle qui nousa guidée et continuera tout au long de l’élaboration des concepts de lathéorie des machines de Turing, c’est « l’économie » de ressources àmettre en œuvre. Ici, nous n’utilisons que deux symboles. L’alphabetextérieur de notre machine universelle ne contient que deux symboles ! 1

On pourrait se demander s’il est possible de descendre à un seul symbole.Malheureusement non, ce n’est pas possible car de toute façon s’il n’yavait qu’un seul symbole ce serait le symbole vide et il ne permet pasde coder quoi que ce soit d’autre que lui même. Avec deux symboles onpeut tout coder y compris le vide. On pourrait penser se contenter d’unsymbole et du vide, mais ce serait encore un alphabet à deux symboles.

On remarquera par ailleurs que dans le codage ci-dessus, unesuccession de deux 1 marque en fait une séparation entre deux groupescodés.

4.1.1.3 Codage de l’instance

Un schème de machine de Turing est destiné à la résolution de tous lesproblèmes d’une même classe. Par exemple il y a la classe des additions oudes multiplications de nombres entiers, dans ce cas un schème d’additiondoit permettre d’additionner, respectivement multiplier, tout groupe de 2nombres, etc. La donnée de deux nombres dans ces exemples s’appelle uneinstance. On distingue deux types d’instances, les instances génériques etles instances particulières. Comme son nom l’indique, l’instance génériqueest celle qui décrit la forme et la nature des données, l’instance particulièrec’est la valeur donnée à l’instance générique dans le cas particulier duproblème à résoudre. Le fait de donner ces valeurs aux variables del’instance générique s’appelle instanciation.

Sans nuire à la généralité du propos, et sans augmenter le nombrede symboles de l’alphabet de la machine universelle, on peut donner unrôle particulier au groupe codé 11, à savoir qu’il est ajouté à tout début

1. Le codage binaire a été introduit par Leibniz. (1646-1716) qui, philosophe etmathématicien, avait élaboré une théorie monadisme cherchant à ne représenter lemonde qu’à partir de deux symboles, en l’occurence, 0 et 1.

Page 69: livre.pdf

Chapitre 4. La Machine de Turing Universelle 45

et toute fin de chaîne signifiante. Ceci permet de séparer la donnée duchiffre du schème de la machine de celle de l’instance des données surlesquelles il faut calculer. Tant que ni le chiffre ni l’instance ne sont vides,cette méthode est pertinente. De plus, cette méthode permet aussi dedresser, sur le ruban, les limites des données 1 d’un problème, schème etinstanciation. Ainsi, en fait un ruban de Machine de Turing Universellesur lequel on a codé une donnée d’un problème est constitué d’uneinfinité de 0 et d’un nombre fini de 1 (éventuellement aucun).

Maintenant, il nous est assez aisé d’énoncer les règles de fonction-nement de notre machine universelle pour transformer le chiffre de laconfiguration initiale en chiffre de la configuration résultante. Sous laforme ci-dessus, on devine que les transformations sont certes élémen-taires, mais très longues et fastidieuses. Sans être exhaustif, disons queces transformations vont consister à lire successivement un 1 puis unesérie de 0 jusqu’à un autre 1.

De même la séparation des deux séquences binaires du chiffre et del’instance seront détectées par la survenance de la suite

. . . 01111110 . . . .

On détecte - suivant le nombre de 0 et sa parité - qu’il s’agit d’unsymbole de l’alphabet extérieur de la machine à simuler, on va regardersi la séquence de 1 et de 0 puis de 1 immédiatement à droite est unsymbole de l’alphabet intérieur, "on sait" qu’on est dans la lecture duschème de la Machine de Turing à simuler, schème qu’on peut désormaisappeler programme 2 .

Ainsi chaque groupe de symboles est facilement discriminable enfonction de l’arité du nombre de 0 compris entre deux 1.

Nous n’entrerons pas dans le détail de l’écriture du schème de laMachine de Turing universelle 3, cela n’a désormais plus d’intérêt pour lasuite de notre étude. Il nous suffit de savoir que cette écriture est réalisable,même si elle est longue et fastidieuse, et nous pouvons maintenant parler

1. Ici nous appelons données la donnée du schème de résolution plus l’instanceparticulière sur laquelle les calculs doivent être effectués. On est dans le cas classiquedes ordinateurs, pour lesquels on ne distingue pas la mémoire contenant le programmede celle contenant les données.

2. En fait, lorsque c’est du binaire comme ici, l’usage a consacré le terme de code,c’est du code.

3. C’est ce qui correspond au système d’exploitation d’un ordinateur.

Page 70: livre.pdf

46 Complexité et Algorithmique avancée

de LA Machine de Turing Universelle, ou plus simplement de laMachine de Turing en général. Nous y viendrons ultérieurement sansqu’on ait à se poser le problème de l’écriture de chaque schème. De plus,comme pour les ordinateurs, on pourrait concevoir un alphabet extérieurbeaucoup plus évolué que 0,1 et qu’en un premier passage, la machinecompile ce qui est écrit sur le ruban pour le réécrire dans le langageci-dessus défini.

Il convient de noter que si la méthode de codage binaire que nousavons donnée ici est une des méthodes possibles, ce n’est pas la seule,ni peut être la « meilleure 1», mais cela prouve la possibilité de le faire,ça fournit ce qu’on appelle un théorème d’existence ce qui est largementsuffisant pour notre propos.

Sous sa forme la plus générale telle qu’elle est présentée ci-dessus, lamachine de Turing universelle est difficilement praticable. Il nous fallaitprouver la possibilité de la réaliser, maintenant que ce but est atteint,nous pouvons nous affranchir du modèle sachant qu’on peut toujourss’y ramener. Ce qui nous intéresse en fait, ce sont les propriétés qu’onpeut déduire des algorithmes et des problèmes à partir de ce modèleconceptuel. Sous cette forme la Machine de Turing Universelle ne nouspermet pas de mettre facilement en évidence certaines propriétés. Enfait notre but étant de revenir sur la notion de calcul, nous pouvonsmaintenant prendre quelques libertés avec la définition formelle afin depouvoir manipuler plus facilement le concept dans un contexte qui nousintéresse. On a bien sûr le droit de le faire tant que le modèle que nousutilisons se ramène in fine à celui de Machine de Turing Universelle.

4.1.2 Numérotation des Machines de Turing

On peut assimiler la Machine de Turing Universelle à la suite finiedes instructions du programme codé sur le ruban. On peut alors, "à lamanière de" Gödel associer des nombres arithmétiques à ces suites de 0 et1 qui codent les programmes. On pourrait prendre le nombre entier codéen binaire représenté par la suite des 0 et 1 inscrits sur le ruban. Nousconsidérerons seulement ici le nombre de symboles constituant la suite,et en cas d’égalité, on tranchera par un ordre lexicographique (positiondu premier 1 ou du premier 0 différent, etc.). On peut ainsi numéroter les

1. Encore faudrait-il préciser par rapport à quel critère.

Page 71: livre.pdf

Chapitre 4. La Machine de Turing Universelle 47

machines de Turing ; Mi, désignant la i ème machine. Mi(n) désigne lerésultat éventuel du calcul de la ième Machine de Turing Mi, ayant reçul’entier n en entrée (ce faisant, nous confondons suite binaire et entiercodé binaire). De même, Mi(n1, n2, . . . , np) désigne le résultat éventuelde Mi, avec les données n1, n2, . . . , np.

Wi ⊂ N désigne alors l’ensemble des entiers pour lesquels Mi(n)fournit un résultat.

4.2 Machine de Turing à plusieurs rubans

La définition du temps et de l’espace sur une machine de Turing,nécessaires à une bonne compréhension de la mesure de complexité estplus aisée sur un modèle de calcul équivalent mais légèrement différentdans sa présentation, la machine de Turing à plusieurs rubans. Dans unemachine à plusieurs rubans, chaque ruban est spécialisé et possède sapropre tête de lecture/écriture.

La fonction de transition change de forme, de façon à permettre lagestion simultanée des différents rubans. La transition continue de fairepasser la machine d’un état à un autre et serait donc représentable parun automate à états.

Soit k le nombre de rubans de la machine, alors la fonction detransition se définit comme suit :

δ : Q× Γk −→ Q× Γk × G,D,Nk (4.1)

Exemple 4.2.1 Considérons le cas k = 3, alors la fonction de transitiondonne par exemple :

δ(qi, αi, βi, γi) = (qj , αj , βj , γj ,D,D,G

ce qui signifie que la machine est dans l’état qi, qu’elle lit αi sur le premierruban 1, βi et γi sur les deuxième et troisième ruban. Elle fait alorscorrespondre à cet état l’action suivante : elle passe dans l’état qj, écritαj, βj, et γj respectivement sur les premier, deuxième et troisième ruban,puis elle décale les têtes de lecture/écriture des premiers et deuxième

1. Les notions de premier deuxième et troisième ruban sont totalement arbitraires,la spécialisation des rubans ressortit à la notion de calculateur sur laquelle nousreviendrons.

Page 72: livre.pdf

48 Complexité et Algorithmique avancée

ruban d’une case sur la droite et celle du troisième ruban d’une case surla gauche.

Du point de vue qui nous intéresse, celui de la complexité, il estnécessaire de montrer une certaine équivalence entre les différents mo-dèles. On doit pouvoir simuler une machine de Turing à un seul rubanpar une machine à k rubans et réciproquement.

Théorème 4.2.1 (Équivalence de machines ) Soit une fonctionT(n) telle que T(n) ≥ n. Alors tout calcul effectué en temps T(n) parune machine de Turing à plusieurs rubans peut être effectué en temps auplus O(T2(n)) sur une machine de Turing à un seul ruban.

Schéma de preuve :L’idée directrice consiste à simuler la machine de Turing à k rubans

par une machine à un seul ruban. Pour cela, il faut :– pouvoir conserver les informations codées sur les k rubans et les

identifier, on utilise un caractère spécial comme délimiteur, commepar exemple ¶ ;

– identifier la position de chacune des k têtes de lecture/écriture parutilisation d’un symbole spécial indiquant que le symbole considéréest face à une tête de lecture/écriture. Ainsi si a est un symbolede l’alphabet, la notation a signifie que le symbole a est face à unetête de lecture/écriture ;

– lorsque une tête de la machine à plusieurs rubans atteint une zônenon lue d’un ruban, la machine à un seul ruban marque d’un blancle début de la séquence correspondante identifiée par ¶ et décaled’un rang à droite tout le contenu de cette séquence jusqu’ausymbole ¶ suivant sur sa droite 1.

Preuve 4.2.1 Soit donc MTk une machine de Turing à k rubans calcu-lant en temps T(n). On construit en suivant le schéma ci-dessus 4.2 unemachine de Turing MT1 à un seul ruban simulant MTk.A chaque itération de MTk, la machine MT1 exécute les étapes suivantes :

– collecter les symboles contenus dans les cases sous les différentestêtes de lecture afin de déterminer le mouvement suivant ;

1. Par convention évidemment.

Page 73: livre.pdf

Chapitre 4. La Machine de Turing Universelle 49

– opérer une seconde passe pour mettre à jour les positions des têteset le contenu des cases correspondantes ;

– exécuter au plus k décalages à droite.Chacune de ces opérations prend un temps proportionnel au nombre

de cases lues par MT1 ou sur lesquelles MT1 a écrit. A chaque étapede calcul de MTk, il y a au plus une case vide d’atteinte sur chaqueruban. Or, MTk calcule en temps O(T(n)) et possède k rubans, il y a auplu n+ k positions à considérer à une étape (n décalages éventuels +ksymboles ¶) ; après T(n) étapes de calcul, il y en a n+ k + k.T(n), cequi est bien en O(T(n)). Chaque étape de simulation d’une itération deMTk nécessite un temps O(T(n)). Le nombre total d’étapes de calcul deMTk étant O(T(n)), le nombre d’étapes de calcul de MT1 est de l’ordrede

O(T(n))×O(T(n)) = O(T2(n)).

4.3 Calculateur, calculateur universel

Une formulation pratique de la Machine de Turing universelle est dedistinguer les différentes séquences de symboles du ruban. L’alphabetextérieur sert à coder :

1. le schème (programme) de la machine (l’algorithme) particulièreconsidérée ;

2. l’instance particulière de données sur laquelle il faut exécuterle programme ;

3. le résultat du calcul de la machine elle même.

On peut sans perte de généralité considérer un ruban pour chacunede ces séquences de symboles, ce qui nous conduit à utiliser le concept demachine à plusieurs rubans. Ici nous considérerons qu’il y a trois rubans.

Un calculateur est une machine de Turing à trois rubans dont on aspécialisé les rubans, c’est à dire :

– sur le premier ruban se trouve le programme. Ce ruban est infini àdroite (respectivement à gauche) et rempli de 0 et de 1, la machinepeut en lire le contenu et ne peut faire que ça sur ce ruban. Audépart seul ce ruban possède une écriture, il n’y a rien sur les

Page 74: livre.pdf

50 Complexité et Algorithmique avancée

autres, le programme à exécuter. La tête de lecture ne se déplaceque vers la droite 1 ;

– le deuxième ruban est un ruban de travail, pour les calculs intermé-diaires sur lequel la machine peut lire, effacer, écrire et décaler latête de lecture/écriture vers la droite, la gauche, ou rester stable,ce ruban est infini à droite et à gauche. Au début du calcul, ceruban comprend une suite finie de 0 et de 1, et des blancs partoutailleurs. Au début du calcul ce ruban contient, codée en 0 et 1 ladonnée (l’instance) s du calcul ;

– le troisième ruban est le ruban de résultat entièrement blanc audébut du calcul, une tête d’écriture vient écrire le résultat (codéuniquement en 0 et 1), le ruban est infini à droite, la tête d’écriturene peut se déplacer que vers la droite, uniquement et elle ne peutqu’écrire.

Une telle version de Machine de Turing à 3 rubans sera désormaisappelée Calculateur. De même que pour les machines de Turing, nouspouvons classer ces calculateurs C0,C1,C2 . . . ,Cn, . . .

Si on considère une suite infinie p de 0 et de 1 sur le premier ruban, ets une suite finie de 0 et de 1 sur le troisième ruban (celui des résultats),on note Ci(p, s) la suite finie de 0 et de 1 qui se trouve sur le rubande résultats quand le calculateur Ci s’arrête pour le programme p et ladonnée s (quand ça se produit). Dans le cas où Ci ne s’arrête pas pour pet s on dit que Ci(p, s) n’est pas défini. Lorsque Ci(p, s) est défini, Ci n’alu qu’un nombre fini de symboles de p (évident, sinon il ne s’arrêteraitpas). Cette suite finie est appelée programme réduit et notée pri(p, s) cequi se lit, "programme réduit du calculateur i pour le programme p et ladonnée (l’instance) s ".

On est fondé à parler alors de programme réduit. En effet, considéronsla suite binaire infinie pr|t où pr est le programme réduit et t une suitebinaire infinie arbitraire, et pr|t la concaténation de pr avec t. AlorsCi(pr|t, s) ne dépend pas de t. Toutefois on ne peut pour autant con-sidérer pr comme étant le programme minimal au sens du nombre desymboles. Nous reviendrons sur cet aspect.

Proposition 4.3.1 Pour tout entier i donné et toute suite finie s, l’en-semble Pri(p, s) des programmes réduits de C pour s est à "préfixe libre",

1. C’est cette dernière propriété qui fait la caractéristique du calculateur parrapport à la machine de Turing universelle.

Page 75: livre.pdf

Chapitre 4. La Machine de Turing Universelle 51

(aucun n’est préfixe d’un autre).

Preuve 4.3.1 La démonstration est évidente, elle découle de la définitiondu programme réduit. Supposons en effet que le programme réduit pr∗soitpréfixe de pr, alors on peut écrire :

pr = pr∗|k∗ où k∗ est une suite binaire finie.On peut toujours transformer toute suite binaire finie k∗ en suite

binaire infinie k en concaténant k∗ avec une suite binaire infinie k′ ;k = k∗|k′.

Si pr est un programme réduit de Ci alors le calculateur Ci pour lesdonnées pr∗|k∗|k′ et s s’arrête en ayant lu uniquement pr∗.Par conséquent pr n’est pas un programme réduit pour Ci et s.

L’ensemble 0, 1N est muni d’une mesure standard qui s’étend àtoute partie libre de préfixe « prefixe free » en posant :

prob(pr) = mes(pr|s; s ∈ 0, 1N)

ce qui donne :

prob(pr) = 12longueur(pr)

Ce qui signifie que pour un calculateur donné Ci et une donnée sfixée, l’ensemble des programmes réduits associés se trouve muni d’unemesure prob() de poids total inférieur à 1 :

(prob(Pri(s)) ≤ mes(0, 1N)).Ici, le poids total, c’est la probabilité pour que Ci avec la donnée

s s’arrête lorsque le programme écrit sur son ruban de programme estchoisi au hasard, par jet de pièce par exemple.

4.3.1 Calculateur universel

On appelle calculateur Universel, et on note U un calculateur Ci telque pour tout calculateur Ck il existe une constante simul(Ck) avec lapropriété :

∀s, ∀pr,Ck(pr, s) defini ∃pr′ ; Ci(pr′, s) defini Ci(pr

′, s) =

Ck(pr, s) et |pr′ | ≤ |pr|+ simul(Ck)

Page 76: livre.pdf

52 Complexité et Algorithmique avancée

Un calculateur universel est, comme pour la Machine de Turinguniverselle, un calculateur qui doit être capable d’effectuer le travail detout autre calculateur.

4.3.2 Le nombre de Chaïtin

La théorie précédente permettant de préciser la mesure associée à unprogramme réduit permet d’introduire un concept important lorsqu’onapplique cette mesure à un calculateur universel.

Le nombre de Chaïtin, appelé aussi nombre Ω 1 est la probabilité pourqu’un calculateur universel U s’arrête lorsqu’on lui donne un programmetiré au hasard. En vertu de ce qui précède, on définit comme suit cenombre.

Ω =∑

pr : programme reduit de U quis′arrete pour la donnee ∅

12longueur(pr)

≤ 1

On définit de même le deuxième nombre de Chaïtin par :

Ω1 =∑n∈N

12H(n)

H(n) désigne comme auparavant, le contenu en information de l’entiern écrit en binaire. Ce nombre possède des propriétés analogues au premier.En effet, le codage binaire de tout entier est composé d’une suite de 0 et1.

Ce sont ces considérations et tous les résultats qu’elles entraînent,théoriques certes, mais aussi pratiques (qu’on pense tout simplement àl’utilisation quasi-systématique de la compression dans les échanges dedonnées à travers les réseaux) qui permettent de fonder la théorie deKolmogorov dont nous donnons une introduction au chapitre qui suit.De plus, complexité de Kolmogorov ou complexité "à la Turing" commenous l’étudions ici sont liées comme on peut le pressentir à la lecture desrésultats précédents.

1. Qu’il ne faut pas confondre avec la notation Ω pour la complexité dans lanotation de Landaü

Page 77: livre.pdf

Chapitre 5

Complexité de Kolmogorov(rudiments)

5.1 Introduction

L’ensemble des programmes réduits pour un calculateur Ci et unedonnée s étant dénombrables (chacun d’entre eux est une partie

finie de 0, 1N) il existe une taille minimale pour un programme ré-duit (la borne est 0 puisque la taille est entière). C’est un programmeréduit minimal. De même l’ensemble C des calculateurs possibles telsque Ci(pr, s) = Ck(pr′, s) est lui même dénombrable, il existe donc aumoins un calculateur de C tel qu’il admette pour programme réduit unprogramme de cardinal minimal prcm. En d’autres termes, il n’existe pasde calculateur Cl tel que Cl(pr∗, s) étant définie, on ait |pr∗| ≤ |prcm|.|prcm| a une signification bien précise, pour U(prcm, ∅), c’est la

complexité (de Kolmogorov) de s, ou contenu en information des. On note H(s) cette complexité.

Cette valeur ne dépend pas réellement du calculateur universel choisi.Supposons qu’on ait pris U′ à la place de U, la complexité H′ obtenueest telle que :

|H(s)−H′(s)| ≤ c (c constante). (5.1)

On a vu comment on pouvait réaliser une Machine de Turing universelle,en fait, il s’agit d’une question de codage. On aurait pu prendre uncodage différent, la longueur des programmes en serait affectée.

Page 78: livre.pdf

54 Complexité et Algorithmique avancée

5.1.1 Interprétation intuitive

Le contenu en information, au sens de Kolmogorov se définit parrapport à chaque objet pris individuellement. Le contenu en informationest alors le nombre de bits nécessaires à la description dudit objet. Cettedescription n’est valable que si elle permet de restituer en entier l’objet 1.

Il y a là une différence fondamentale avec la théorie de l’informationde Shannon qui définit l’information par rapport à un support techno-logique, la ligne de transmission. On a aussi appelé l’information deShannon, Information de transmission puisqu’elle est définie commeétant la quantité d’information à transmettre pour permettre la sélectiond’un objet parmi toute une collection d’objets prédéfinis.

L’information de Kolmogorov peut être vue comme l’informationabsolue d’un objet puisqu’elle mesure la quantité d’information qui, parelle même, c’est-à-dire intrinsèquement, permet de décrire complètementl’objet. Il s’agit d’une mesure intrinsèque à l’objet considéré, et il n’y anul besoin à une référence extérieure autre qu’une MTU ou un calculateuruniversel pour ce faire. La complexité de Kolmogorov ou quantité absolued’information d’un objet est de même nature que, en physique, la massed’un objet, c’est une valeur attachée à chaque objet et qui ne dépend derien d’autre que l’objet lui-même, c’est une caractéristique dudit objet.

On voit immédiatement qu’il est des objets plus complexes que d’au-tres, parce que leur description est moins aisée, c’est à dire nécessiteun énoncé plus long. Ainsi le nombre 21789 est-il certainement moinscomplexe que la suite suivante :

2653589793238462643383279502884197169399375105820974944592307816406286208998628034825342647093844609550582231725359408128117067982148086513282306.Toutefois, en adoptant ce point de vue , on s’expose au paradoxe

suivant :

5.1.2 Paradoxe

Ce paradoxe a été formulé par Bertrand Russell en 1908 qui proposede définir le nombre entier suivant :

1. Pour une autre façon d’aborder le problème, on peut consulter [CLN04]

Page 79: livre.pdf

Chapitre 5. Complexité de Kolmogorov (rudiments) 55

Le plus petit entier positif ne pouvant être décrit en moins de millesymboles

Soit ce nombre existe et nous l’avons décrit en moins de mille symboles,en contradiction avec la définition, soit il n’existe pas et alors TOUS lesentiers peuvent être décrit en moins de mille symboles ce qui est uneabsurdité. Ce paradoxe objective la nécessité de préciser ce qu’on entendpar «description» d’un objet, fut-il mathématique.

On remarquera au passage qu’il existe des entiers ne pouvant êtredécrits en moins de mille symboles, la preuve en est que N est infini etque l’ensemble des entiers pouvant être définis en moins de mille symbolesest fini.

Au delà, lorsqu’on est confronté à un paradoxe en mathématiques, celasignifie le plus souvent que les notions ou concepts qui y sont manipuléssont mal formalisés, ainsi, si ici la notion de plus petit élément est bienformalisée ; on sait que tout sous-ensemble strict non vide de N+ admetun plus petit (un plus grand pour N−) élément. Par contre, ce qui estmal formalisé, c’est la notion de description.

5.2 Description d’un objet

Si notre méthode de description est discriminante, il ne saurait yavoir confusion entre deux objets, par conséquent, chaque descriptionreprésente au plus un seul objet. Il y a alors une méthode de description,soit D qui associe au plus un objet x avec une description y.

D est une fonction de l’ensemble de description Y qui contient tousles éléments y dans l’ensemble X des objets x. De même pour chaqueobjet x, il existe D(x) description de x telle que deux objets différentsont chacun une description différente de l’autre :

De plus, pour des raisons opératoires on ne considérera que les des-criptions de longueur finie. On en déduit immédiatement qu’il n’y a qu’unensemble dénombrable d’objets.

D : Y→ X ∧ ∀x1 ∈ X,∀x2 ∈ X; x1 6= x2 ⇒ D(x1) 6= D(x2)

Revenons à notre description à partir des calculateurs.Les descriptions sont alors des séquences de 0 et de 1.

Page 80: livre.pdf

56 Complexité et Algorithmique avancée

Comme nous l’avons vu précédemment, le coût d’une telle descriptionpeut être mesuré par la longueur de la chaîne de bits de cette description,et plus précisément par la longueur de la chaîne la plus courte représentantl’objet considéré. On appelle cette longueur, Complexité descriptionnellede l’objet x avec la méthode D.

5.2.1 Fonction partiellement récursive

Le rôle de D est ici primordial. Si on veut pouvoir comparer lescomplexités d’objets différents, il y faut une aune commune. Pour cefaire, on doit s’assurer que cette complexité est donnée par une méthodeuniverselle de description, commune à tous (c’est une abstraction biensûr, comme le calculateur universel). Pour pouvoir assurer la réalité dela méthode D, il faut que le passage de y à D(y) puisse être effectué.L’existence d’une telle façon de faire se nomme ici fonction partiellementrécursive.

L’ensemble des fonctions partiellement récursives admet une fonc-tion qui minimise la description de toute autre. Soit D0 cette fonctionpartiellement récursive optimale.

La longueur de description de l’objet x conformément à D0 seraappelée ici Complexité algorithmique descriptionnelle .

L’existence de D0 renvoie à l’existence du calculateur universel et duprcm. Cela signifie, que pour une méthode de représentation donnée, op-timale, la hiérarchie des complexités des objets est conservée. Autrementdit la comparaison des complexités descriptionnelles ne dépend pas dela méthode de mesure dés lors qu’elle est cohérente et appliquée à tousles objets considérés 1. La signification profonde en est que la complexitéde Kolmogorov, ou complexité algorithmique descriptionnelle est unemesure intrinsèque à l’objet considéré. On l’appelle aussi suivant lesauteurs quantité absolue d’information ou pour faire court informationabsolue de l’objet x.

La puissance de la théorie de Kolmogorov tient précisément à cetteindépendance de la complexité intrinsèque par rapport à la méthode dedescription des objets (algorithmes ou problèmes) considérés.

1. Comme pour les mesures des longueurs, peu importe qu’on utilise le systèmemétrique ou le système anglo-saxon, l’essentiel est qu’on reste pour les comparaisonsdans un même système, et que la hiérarchie (c’est-à-dire la relation d’ordre) dans unsystème soit conservée dans l’autre.

Page 81: livre.pdf

Chapitre 5. Complexité de Kolmogorov (rudiments) 57

Le paradoxe 5.1.2 réapparaît alors sous une autre forme, le théorèmed’incomplétude de Gödel sur lequel nous aurons l’occasion de revenir.

5.3 Descriptions et tailles

On sait depuis Leibniz que toute information peut-être codée par uneséquence de bits. C’est pourquoi, le souci d’universalité de la théorie deKolmogorov conduit à ne s’intéresser qu’à ces objets mathématiques quesont les suites binaires. L’objet est formellement bien défini et ce sansperte d’universalité.

Soit donc B = 0, 1 l’alphabet binaire et B∗ l’ensemble des suitesfinies, ou mots finis, construits avec les symboles de B.

Considérons maintenant N ∗, c’est-à-dire l’ensemble des entiers posi-tifs, N privé de 0.

N ∗ = 1, 2, 3, ...on va identifier B avec N ∗ en utilisant l’ordre lexicographique. Le

mot vide est associé à 1, puis, dans l’ordre, 0 → 2 ; 1 → 3 ; 00 → 4 ;01→ 5, · · · . Une façon simple de faire est de faire précéder chaque motbinaire ainsi formé d’un 1 et on identifie le nombre binaire ainsi obtenu àson écriture décimale pour obtenir le nombre associé au mot considéré 1.Par conséquent, la longueur 2 d’un mot |m| codé comme décrit ci-dessussera la partie entière de log2m.Définition 5.3.1 Soit une fonction calculable : f : B∗ =⇒ B∗.

La complexité de x ∈ B∗ par rapport à f est la valeur :

Kf(x) =min|t| tel que f(t)x∞ si t n′existe pas

(5.2)

t est alors dit description de x relativement (par rapport) à f .

Théorème 5.3.1 (Fonction optimale) Il existe une fonction diteoptimale f0 telle que, quelle que soit une autre fonction fi, il existeCi; Ci ∈ N tel que :

∀x Kf0(x) ≤ Kfi(x) + Ci. (5.3)

1. Par exemple, à la séquence binaire 01 on associe le nombre binaire 101, soit 5en décimal, donc 01→ 5

2. L’écriture |m| représente ici la longueur du mot m et pas sa valeur absolue

Page 82: livre.pdf

58 Complexité et Algorithmique avancée

Remarque 5.3.1 La constante Ci ne dépend pas de x mais de la naturede la fonction fi, ce que note l’indice i.

Preuve 5.3.1 On trouvera la démonstration formelle complète de cethéorème dans le chapitre 17.

Dès lors, on peut énoncer le corollaire évident suivant :

Corollaire 5.3.1 Si fi et fj sont deux fonctions optimales, alors il existeune constante C, ne dépendant que de i et j telle que :

∀x |Kfi(x)−Kfj (x)| ≤ C (5.4)

On retrouve là l’inégalité 5.1. Ainsi, la complexité de Kolmogorov est-elledéfinie à une constante additive près, et on la note alors K(x) et lorsqu’onl’utilise, on peut fixer a priori la fonction optimale.

Exemple du théorème d’incomplétude de GödelEtant donnée une suite binaire x, celle-ci sera dite aléatoire si la

plus petite description binaire qu’on en puisse faire (i.e. le prcm) est delongueur au moins égale à celle de la séquence x elle même. Or, il existedes séquences binaires aléatoires de toutes longueurs. La question quise pose est de savoir s’il existe une méthode permettant de dire si uneséquence binaire est, ou non, aléatoire. La réponse est NON ! commenous l’allons voir.

Supposons un système formel F (définitions, axiomes et règles d’in-férence) descriptible entièrement en f bits sur le calculateur universel U,f est la taille du prcm associé à F. Un système formel est dit consistantsi, et seulement si, on ne peut y trouver une proposition qui soit à la foisvraie et fausse, il est dit sain si les propositions vraies peuvent y êtredémontrées comme vraies.

On peut entamer une recherche exhaustive de preuve d’aléatoirité deséquences de taille n nettement supérieures à f .

n >> f

La procédure est alors la suivante :Pour toute séquence binaire x de longueur n >> fSI x est aléatoire ALORS imprimer xCette procédure qui consiste à décrire x de longueur n utilise seule-

ment une donnée de longueur log2 n+ f bits sur U Cette longueur est

Page 83: livre.pdf

Chapitre 5. Complexité de Kolmogorov (rudiments) 59

considérablement inférieure à n, ce qui est contradictoire avec le faitque x soit aléatoire puisqu’étant telle, une séquence binaire aléatoire den bits ne peut être représentée, par définition, en moins de n bits. Laséquence x ne peut à la fois être décrite en log n bits sur le calculateuruniversel et être aléatoire.

La plupart des séquences binaires ne présentent pas de régularitécalculable, ce qui signifie quelles sont incompressibles. Nous avons qualifiéde telles séquences d’aléatoires.

Page 84: livre.pdf
Page 85: livre.pdf

Troisième partie

Rudiments mathématiques

Page 86: livre.pdf
Page 87: livre.pdf

Chapitre 6

Considérations théoriques

6.1 Quelques définitions fondamentales

6.1.1 Le problème, informellement

Si un algorithme ne permet pas d’arriver au résultat en un nombrefini d’étapes, on parle alors de pseudo-algorithme 1. Pour déceler la

propriété de pseudo-algorithme, il faudrait pouvoir construire un algo-rithme qui, appliqué à un quelconque pseudo-algorithme, permettrait detrancher la question. Malheureusement, et ce résultat est d’une extrêmeimportance, on démontre qu’il est impossible de construire un tel algo-rithme ; ce problème est indécidable. En termes de programmation, celarevient à dire qu’il est impossible d’écrire un programme de MTU qui,prenant un autre programme comme donnée, permettra de savoir si ceprogramme fournira des résultats au bout d’un temps fini.

Du reste, on affine les définitions en distinguant entre le fait pourune MTU de dire simplement qu’une donnée est un pseudo-algorithmequand il en est un et qu’elle n’en est pas un sinon, et le fait qu’elle soituniquement capable de répondre qu’une donnée n’est pas un pseudo-

1. Attention, il y a des programmes qui ne s’arrêtent que lorsque la machine surlaquelle ils sont implémentés s’arrête, c’est le cas par exemple des systèmes opératoiresdes machines, ou au-delà des machines elles-mêmes, c’est aussi le cas dans les réseauxde processeurs ou d’ordinateurs en ce qui concerne les programmes qui concernentles communications, ou plus simplement le contrôle des réseaux, voir [Lav91b]. Il enest ainsi par exemple des programmes d’acheminement des messages dans le réseauinternet.

Page 88: livre.pdf

64 Complexité et Algorithmique avancée

algorithme (c’est à dire que c’est alors un algorithme) mais qu’elle soitincapable de répondre sinon.

Pour un schème donné et une instance particulière, une Machine deTuring particulière (en fait un programme et une instance) s’arrêtera-t-elle et si oui comment doit-on l’interpréter ? Telle est la question quise pose. En effet, le fait qu’une Machine de Turing ne s’arrête pasne signifie nullement qu’elle ne s’arrêtera jamais. Cela peut durer desmilliers d’années (nous le verrons lorsque nous étudierons la complexité.)Ça ne signifie rien. On aimerait pouvoir dire si la machine va un jours’arrêter. Eh bien, malheureusement, cette question, connue sous le nomde problème de la halte n’est pas résoluble. Il n’existe pas d’algorithme(c.a.d. de Machine de Turing) capable de décider si une Machine deTuring va, ou non s’arrêter pour une -ou toute- instance d’un problèmedonné.

Par contre, on peut utiliser cette propriété d’arrêt pour particulariserdes ensembles.

6.1.2 Essais de définitions

6.1.2.1 Ensembles récursifs

On se souvient ici comment on peut assimiler tout programme deMTU à un nombre, (voir 4.1.2), ce qui nous permet de donner unedéfinition simple de la récursivité.Définition 6.1.1 Un ensemble E est dit récursif si et seulement si ilexiste une MT permettant de savoir, pour tout entier n s’il est dans E,ou non, c’est à dire que, pour tout entier n la MT répond OUI ou NONsuivant que n est dans E ou pas.

Exemples d’ensembles récursifs :– E = ensemble des nombres impairs ;– E = ensemble des nombres pairs ;– E = ensemble des multiples de p donné ;– E = ensemble des nombres premiers ;– E = (1, 0, 1, 0, . . . , . . . , . . .) Suite binaire caractéristique des nom-bres impairs associée à N ;

– E = ensemble des axiomes de Peano AxPeano ;– E = Les tautologies du calcul propositionnel ;– ....

Page 89: livre.pdf

Chapitre 6. Considérations théoriques 65

Pour le dire autrement, un problème est représenté par le langaged’encodage de ses instances "oui". On appelle R -comme Récursive-la classe des langages décidables par une MT, on dit aussi classe dedécidabilité. C’est cohérent avec la Thèse de Church-Turing qui dit qu’unlangage reconnaissable par une procédure effective est décidable parune machine de Turing.

6.1.2.2 Ensembles récursivement énumérables

Il s’agit là d’une propriété plus faible 1

Définition 6.1.2 E est dit récursivement énumérable si et seulement siil existe une MT Mi telle que Wi = E avec 2 :

Wi ⊂ N : ∃Mi(n).

On peut énoncer cela autrement.

Définition 6.1.3 Est récursivement énumérable un ensemble E pourlequel existe un algorithme permettant seulement de décider si un élé-ment quelconque est dans l’ensemble E, donc d’énumérer cet ensemble.L’algorithme «boucle» si on lui demande de statuer sur un élément quin’est pas dans l’ensemble.

Exemple d’ensembles récursivement énumérables :– Tous les ensembles récursifs ;– L’ensemble des MTU qui s’arrêtent pour la donnée ∅ ;– L’ensemble des formules d’arithmétiques démontrables dans le

système d’axiomes formels de Peano : ThPeano ;– E = i : Mi(i) existe ;– ....

On note RE l’ensemble des langages acceptés par une MTU, c’est-à-direl’ensemble des langages récursivement énumérables.

Cela entraîne un certain nombre de résultats. Ainsi, si un ensembleet son complémentaire sont récursivement énumérables, l’ensemble luimême est récursif.

1. Au sens mathématique du terme, c’est-à-dire plus générale2. Rappel : Mi(n) désigne le résultat éventuel du calcul de la i ème Machine de

Turing Mi, ayant reçu l’entier n en entrée. De même Wi ⊂ N désigne l’ensemble desentiers pour lesquels Mi(n) fournit un résultat.

Page 90: livre.pdf

66 Complexité et Algorithmique avancée

D’où le théorème :

Théorème 6.1.1 R ⊂ RE

Remarque 6.1.1 Un nombre réel sera dit récursif si l’on connaît unalgorithme permettant de déterminer la suite de ses décimales.

En conséquence, l’ensemble des réels récursifs est dénombrable.Question : Existe-t-il des nombres réels non récursifs ?Cette question pose un problème majeur car on n’a jamais manipulé

de réel non récursif. Chaque fois que les mathématiciens manipulent unnombre réel, ils le définissent par une série, une intégrale, des produitsinfinis, etc. Si tout réel est récursif, alors l’ensemble des nombres réels Rest dénombrable. On voit bien le problème puisque le côté non dénombrablede l’ensemble R des réels est le fondement de l’analyse moderne 1.

6.1.2.3 Ensembles approximables et inapproximables

Définition 6.1.4 (Approximable) E est approximable si et seulementsi il est fini ou s’il contient un ensemble infini récursivement énumérable.

Lorsque E est un ensemble infini approximable qui contient un en-semble infini récursivement énumérable B , alors les ensembles construitsde la façon suivante :

En = (E ∩ 0, 1, . . . , n) ∪ B

sont tous infinis récursivement énumérables car chaque En est réunionde deux ensembles récursivement énumérables. La suite des En permetd’approximer E par union :

E = ∀n ∈ N⋃n

En

Si E est récursivement énumérable, il est a fortiori approximable.Mais la réciproque est fausse. On retrouve là sur notre chemin le théorèmed’incomplétude de Gödel, théorème central que nous retrouverons encoresous la forme suivante qui est en fait un corollaire 2

1. Le mathématicien Borel a longuement disserté en son temps sur la nature del’ensemble R des nombres réels.

2. Le théorème de Gödel s’énonce comme suit : pour tout système formel Scontenant le langage de l’arithmétique (par exemple la théorie des ensembles), il existe

Page 91: livre.pdf

Chapitre 6. Considérations théoriques 67

Théorème 6.1.2 (Gödel) L’ensemble Arith des formules d’arithmé-tique vraies dans l’axiomatique de Peano est un ensemble non récursive-ment énumérable.

Preuve 6.1.1 [Del94]Supposons que Arith soit un ensemble récursivement énumérable,

en ce cas, il existe une MT M énumérant tous les énoncés vrais d’arith-métique. Supposons alors la formule F(i) dépendant de l’entier i priscomme paramètre exprimant «la Machine de Turing Mi s’arrête pour ladonnée i».

A partir de M, on peut alors construire la MTU MM qui pour toutentier i donné recherche simultanément F(i) ou ¬F(i) dans Arith et quiécrit OUI ou NON sur son ruban suivant ce qu’elle trouve. Pour tout iune telle machine s’arrête car soit Mi s’arrête et F(i) est vraie et doncdans Arith, et donc MM écrit OUI ; ou bien Mi ne s’arrête pas pour ladonnée i et alors ¬F(i) est vraie et donc dans Arith et MM écrit NON,et MM s’arrête. Une telle machine ne peut exister, sinon le problème dela Halte serait décidable (Turing 1936) et donc si MM n’existe pas, Mnon plus, et par conséquent Arith n’est pas récursivement énumérable.

Ce résultat signifie qu’aucun système formel n’est complet pourl’arithmétique.

Exemples d’ensembles approximables :– Tous les ensembles récursifs ou récursivement énumérables ;– Arith l’ensemble des formules arithmétiques vraies est approxi-mable et non récursivement énumérable. Ceci est dû au fait qu’ilcontient des sous ensembles de formules vraies récursivement énu-mérables (ex : les formules du type a+ b = c).

Exemples d’ensembles inapproximables :– L’ensemble des formules d’arithmétique vraies de la forme« la suite s est de complexité O(n) » où s est une suite infinie de 0et de 1 et n un entier.

une proposition G indémontrable dans S (sauf si S est contradictoire, auquel cas ildémontre n’importe quoi).

Un autre théorème de Gödel, de complétude celui-ci et au moins aussi importantnous dit que si une proposition est indécidable, alors il existe un modèle où elle estvraie (au sens déductible du système d’axiomes) et un modèle où elle est fausse.

Page 92: livre.pdf

68 Complexité et Algorithmique avancée

Récursivementénumérables

Récursifs

Nonrécursivementénumérables

approximables Incompressibles

Inapproximables

Figure 6.1 – Hiérarchie des ensembles

6.1.3 Des ensembles bien particuliers

On a vu précédemment que les programmes des calculateurs et doncdes machines de Turing pouvaient être identifiés par des nombres entiers.Cette propriété mérite d’être exploitée plus avant et va nous permettred’entrevoir un certain nombre de choses sur la puissance des calculateurs.

Le raisonnement est simple, on va comparer l’ensemble des pro-grammes possibles des calculateurs avec des ensembles d’autres objets.L’ensemble des programmes de calculateurs contient un nombre infinid’éléments.

6.1.3.1 Taille d’un ensemble

Nous allons commencer par les ensembles finis. Il est difficile de définirformellement ce que l’on entend par «taille» d’un ensemble. L’intuitionvoudrait qu’on définisse la taille d’un ensemble comme étant le nombrede ses éléments. Cela suppose déjà beaucoup de choses, en particulierque l’on sache compter, ce qui est beaucoup trop fort comme supposition.De plus, on va avoir des ennuis dès qu’on va aborder le cas de N.

Page 93: livre.pdf

Chapitre 6. Considérations théoriques 69

Si on ne sait pas compter, on peut utiliser une des plus vieille méthodede calcul - qui est à l’origine du mot calcul - qui nous a été enseignée parles bergers de la haute Egypte, il y a 4000 ans. Cette méthode consiste àtester l’égalité entre deux ensembles. Pour ce faire, il suffit de mettre encorrespondance les éléments de l’un des ensembles avec ceux de l’autre,et ce d’une manière unique, afin que l’opération soit faisable dans lesdeux sens. Si tous les éléments de chacun des ensembles sont utilisésd’une manière unique, alors les deux ensembles sont équivalents du pointde vue de leur taille, taille qu’on appellera désormais cardinal.

Lorsque les bergers égyptiens menaient leurs troupeaux en transhu-mance, ils les menaient à pacager plusieurs mois dans des enclos. Aumoment de laisser les bêtes pénétrer dans l’enclos, on les faisait passerpar une porte qu’elles ne pouvaient franchir qu’une par une. Chaque foisqu’une bête entrait dans le pré, le berger mettait un caillou (d’où le motcalcul issu du mot calculus qui signifie caillou en latin) dans une urne.Lorsque tous les moutons étaient entrés, on scellait l’ouverture de l’urneavec de la glaise sur laquelle le berger portait une marque distinctive, sonsceau en quelque sorte. Lorsque la transhumance était finie, il suffisaitau berger d’ouvrir l’urne et de procéder en sens inverse, à savoir sortirun caillou de l’urne chaque fois qu’un mouton sortait du pré. Ainsi, leberger savait si les fauves ou la maladie avaient mangé plus de moutonsqu’il n’en était né durant la saison ou si au contraire il était né plusd’agneaux qu’il n’était mort de moutons et brebis. C’est cette méthode,la bijection que nous allons utiliser.

Exemple 6.1.1 Les ensembles 2; 6; 9; 4 , ł ; c ; M ; a , Paul ;Nicole ; Maurice ; Gérard ont même cardinal.

Comparer les cardinaux de ces deux ensembles consiste à les mettreen bijection, c’est à dire qu’à un élément de l’un on fait correspondreun et un seul élément de l’autre 1. Dans l’exemple, on peut prendre parexemple :

2↔ ł ; 9↔ c ; 6↔ a ; 4↔ Mou encore :Paul ↔ 2 ; Nicole ↔ 9 ; Maurice ↔ 6 ; Gérard ↔ 4

1. Il y a une difficulté dans la définition de la bijection. En fait pour qu’il y aitmême cardinalité (et donc bijection), il faut que la façon de faire correspondre deux àdeux les éléments d’un ensemble et de l’autre soit exprimable en un nombre fini determes ou symboles.

Page 94: livre.pdf

70 Complexité et Algorithmique avancée

Et ainsi de suite.

6.1.3.2 Des cardinaux à l’infini

Puisque nous savons comparer les cardinalités de deux ensembles,nous allons regrouper les ensembles de même cardinalité dans des classes.

Définition 6.1.5 S’il existe une bijection d’un ensemble X sur un en-semble Y, alors X est dit équipotent à Y. Cette relation est notéeEq(X,Y). (voir [Bou67] p.38)

La relation d’équipotence est une relation d’équivalence. En effet, ennotant Card(A) le cardinal d’un ensemble A, on démontre les propriétéssuivantes :

réflexivité Eq(A,A) est vraie, en effet, on a :Card(A) = Card(A), on peut toujours mettre un ensemble enbijection avec lui-même ;

symétrie Eq(A,B)⇔ Eq(B,A),en effet ;Card(A) = Card(B) ⇔ Card(B) = Card(A), labijection étant elle-même symétrique ;

transitivité Eq(A,B) et Eq(B,C) ⇒ Eq(A,C) ;en effet Card(A) = Card(B)et Card(B) = Card(C) ⇒ Card(A) = Card(C) vrai car lacomposition de deux bijections est une bijection.

Cette relation d’équivalence permet de regrouper les ensembles enclasses d’équivalence. Feront partie d’une même classe deux ensemblesde même cardinal. La cardinalité d’un ensemble est donc réciproquementcaractérisée par la classe de cardinalité à laquelle il appartient. Dansle cas des cardinalités finies, on désigne ces classes par le nombre d’élé-ments qu’elles contiennent. Ainsi dans l’exemple précédent les troisensembles appartiennent à la classe 4. l’ensemble vide appartient à laclasse 0. Les nombres caractérisant la cardinalité d’un ensemble sont lesnombres cardinaux. On peux aussi définir les nombres ordinaux pourdes ensembles sur lesquels est définie une relation d’ordre (ensembleordonnés). Deux ensembles ont même ordinalité s’il existe une bijectionentre eux préservant leurs relations d’ordre respectives. Pour les ensemblesfinis, cardinalité et ordinalité coïncident, mais ce n’est pas le cas dans lesensembles infinis.

Page 95: livre.pdf

Chapitre 6. Considérations théoriques 71

C’est d’ailleurs ainsi qu’on introduit les définitions des entiers, parles cardinaux. Ainsi :

0 est la classe d’équipotence de l’ensemble vide ∅ ou ;1 est la classe d’équipotence de l’ensemble qui admet pour élément

l’ensemble vide ∅ ;On note 1 = |∅| qui se lit 1 est le cardinal de la classe d’équipotence

de l’ensemble admettant l’ensemble vide comme seul élément.2 = |∅, ∅| et ainsi de suite , on définit ainsi tous les entiers .

Cardinaux infinis

Définition 6.1.6 [Bou67] On dit qu’un ensemble est infini s’il n’est pasfini.

Si a est un cardinal infini et n un entier quelconque, on ne peut avoira ≤ n ; on a donc n < a pour tout entier n, ce qui prouve que l’ensemble< a contient tous les entiers.

On est obligé pour continuer d’introduire l’axiome suivant qu’on nesait pas déduire des autres axiomes ou schémas d’axiomes connus, etbien que la question ne soit pas tranchée (c’est une conjecture), il est àprésumer qu’il est indépendant.

Axiome 6.1.1 Il existe un ensemble infini.

Calcul sur les cardinaux infinis

Théorème 6.1.3 Pour tout cardinal infini a, on a : a2 = a

La démonstration se conduit en introduisant les deux lemmes sui-vants :

Lemme 6.1.1 Tout ensemble infini E contient un ensemble équipotentà N.

Lemme 6.1.2 L’ensemble N×N est équipotent à N.

Nous ne démontrerons ni le théorème, ni les lemmes, ce qui nousferait sortir du cadre de ce cours, nous les citons car ils permettent demieux comprendre les propriétés des ensembles infinis et les particularitésdes calculs y afférant.

On en déduit trois corollaires :

Page 96: livre.pdf

72 Complexité et Algorithmique avancée

Corollaire 6.1.1 Si a est un cardinal infini, on a an = a pour toutentier n ≥ 1.

La démonstration est évidente par récurrence 1 sur n.

Corollaire 6.1.2 Le produit d’une famille finie (ai)i∈I⊂N de cardinauxnon nuls dont l’un est un cardinal infini a est égal à a.

Corollaire 6.1.3 Si a et b sont deux cardinaux non nuls dont l’un estinfini, on a : a.b = a+ b = sup(a, b).

Ensembles dénombrables Le premier et plus connu des ensemblesinfinis est celui des entiers naturels :

N = 0, 1, . . .

Définition 6.1.7 On dira qu’un ensemble est dénombrable s’il fait partiede la même classe de cardinalité que N, c’est à dire s’il est équipotent àune partie de N.

La classe de cardinalité de N est notée ℵ0 (ℵ s’écrit aleph et seprononce alef)

Exemple 6.1.2 1. L’ensemble des nombres impairs est dénombrable.En effet, à tout nombre impair p > 0 on peut faire correspondre lenombre entier q = p+1

2 .Plus particulièrement, tout sous ensemble de N est dénombrable ;

2. L’ensemble Z des entiers relatifs est dénombrable la bijection sedéfinit alors comme suit :

∀x ∈ Z; x > 0 ⇒ y = 2.x ∧ x < 0⇒ y = (−2.x)− 1

3. L’ensemble Q des fractions rationnelles est dénombrable. Un ra-tionnel peut être considéré comme une paire ordonnée de naturels(a, b) a étant le numérateur et b 6= 0 le dénominateur et tels que

1. Ce qui suppose quand même, si on veut être puriste, qu’on sache correctementdéfinir ce qu’est une récurrence, ce qui nécessiterait de longs développements théoriques.

Page 97: livre.pdf

Chapitre 6. Considérations théoriques 73

a et b n’aient pas de facteur commun. On peut ordonner Q de lafaçon suivante :On classe les paires suivant l’ordre induit par la somme a+b et pourchaque valeur de cette somme par ordre de numérateur croissant.On a alors la bijection suivante 1 :

(0, 1)↔ 0; (1, 1)↔ 1; (1, 2)↔ 2; (2, 1)↔ 3; (1, 3)↔ 4; . . .

4. L’ensemble des chaînes de caractères de longueur finie sur unalphabet. La bijection se construit de la façon suivante :

(a) On fixe un ordre arbitraire sur les lettres de l’alphabet ;(b) on classe les chaînes de caractères par ordre de taille

croissante ;(c) pour des mots de même taille on les range suivant l’ordre

lexicographique (comme celui du dictionnaire).(d) On numérote les chaînes ainsi obtenues.

De plus en plus infini La question se pose de l’équipotence desensembles infinis. Existe-t-il des ensembles infinis non équipotents à N ?

On sait dans les ensembles finis que l’ensemble des parties d’unensemble admet un cardinal exponentiellement supérieur à l’ensemble dedépart. Soit E un ensemble fini ; on a :

Card(P(E)) = 2Card(E)

Par exemple, l’ensemble des parties de 0, 1 est :∅, 0, 1, 0, 1Qu’en est-il de l’ensemble des sous-ensembles d’un ensemble dénom-

brable ?

Théorème 6.1.4 L’ensemble des sous-ensembles d’un ensemble dénom-brable n’est pas dénombrable.

1. On peut en imaginer d’autres, à partir d’un tableau à double entrée par exemple,en ligne les numérateurs, en colonne les dénominateurs, et un entier différent danschaque case ...

Page 98: livre.pdf

74 Complexité et Algorithmique avancée

Preuve 6.1.2 La technique de démonstration de ce théorème s’appellediagonalisation ou technique de la diagonale.

Soit E un ensemble dénombrable E = e0, e1, e2, . . . et soit S l’en-semble de ses sous-ensembles. Si S est dénombrable, on peut le noter enextension S = s0, s1, . . ..

Considérons le tableau construit de la façon suivante :A chaque colonne correspond un élément de E et à chaque ligne un

élément de S. Chaque ligne est la fonction caractéristique de l’ensemblesi considéré s’il y a un « 1 » dans la ligne si et la colonne ej cela signifieque l’élément ej fait partie de l’ensemble si.

Considérons l’ensemble D = ei|ei 6∈ si.C’est celui des symboles ∗ de la diagonale du tableau. C’est un sous

ensemble de E. En effet, D contient tous les éléments ej de E tels qu’ontrouve ∗ sur la diagonale du tableau et sur la ligne sj . L’ensemble Dexiste donc, et étant composé d’éléments de E et seulement d’élémentsde E, c’est un sous ensemble de E, mais ce ne peut pas être un dessous-ensembles si.

Supposons que D = sk alors ek ∈ D ce qui est impossible puisqueek ∈ D si et seulement si ek 6∈ sk . Il y a donc contradiction.La contradiction porte sur notre hypothèse de dénombrabilité de E.

e0 e1 e2 e3 e4 e5 . . .s0 1 1 0 1 0 0s1 1 0 0 1 0s2 0 1 1s3 1 1 1 0s4 0 1 0 1 0. . .

L’une des conséquences, et non des moindres de ce théorème, on en al’intuition, est que l’ensemble des suites finies étant dénombrable maisinfini, l’ensemble de ses sous ensembles n’est lui pas dénombrable. Dansces conditions on «sent» intuitivement qu’il n’existe pas de suite finie,programme de calculateur, capable de nous dire pour toute suite finie sic’est un programme de calculateur, ou non. C’est à dire que le problèmede la halte est indécidable. On ne sait pas le démontrer, c’est la thèse deChurch (qu’on a utilisée pour démontrer le théorème de Gödel).

Page 99: livre.pdf

Chapitre 6. Considérations théoriques 75

6.2 Indécidabilité

Cette technique de diagonalisation est très féconde, elle permet dedémontrer un certain nombre de cas d’impossibilité, ou plutôtd’indécidabilité. Ainsi, considérons le tableau T suivant où chaque lignecorrespond à une MTU (Machine de Turing Universelle) et chaque co-lonne à un mot. Chaque case du tableau est remplie de la manièresuivante par un O ou un N :

– T [MTUi,mj ] = O si la ième machine de Turing, notée MTi acceptele mot mj ;

– T [MTUi,mj ] = N si la ième machine de Turing, notée MTi n’ac-cepte pas le mot mj (elle calcule indéfiniment ou rejette le mot).

T m0 m1 m2 · · · mj · · ·MTU0 O N N · · · O · · ·MTU1 N N O · · · O · · ·MTU2 O O N · · · N · · ·· · · · · · · · · · · · · · · · · · · · ·MTUi N O O · · · N · · ·· · · · · · · · · · · · · · · · · · · · ·

Considérons maintenant le langage L défini comme suit :

Définition 6.2.1

L = m|m = mi ∧MTUi n′accepte pas mi, i ∈ N ∗

Comme on travaille ici avec des Machines de Turing Universelles, on n’apas de problème d’alphabet, il est connu, c’est 0, 1. Tous les mots sontdonc codés à partir de cet alphabet.

Théorème 6.2.1 L 6∈ RE, L est dit indécidable.

Preuve 6.2.1 La méthode d’énumération des MTU ci-dessus estexhaustive, toutes les MTU sont décrites ainsi, ou plutôt tous les langagespossibles de MTU. Au passage, on notera que l’ensemble des MTU estdénombrable. L est le langage des mots de la diagonale, c’est-à-dire lemot mi qui occupe la i-ème position pour la machine MTUi. Si L appar-tenait à la classe RE, il y aurait une MTU qui l’accepterait. mais unetelle machine ne pourrait être une des machines de l’énumération. En

Page 100: livre.pdf

76 Complexité et Algorithmique avancée

effet, supposons que la machine MTUk accepte le mot mk, c’est-à-direqu’on ait T [MTUk,mk] = O, dans ce cas, on doit avoir, par définitionde L, mk 6∈ L et bien sur si T [MTUk,mk] = N, c’est-à-dire si la MTUk

n’accepte pas le mot mk, on a mk ∈ L ce qui est contradictoire etdémontre le théorème.

6.2.1 Plus ou moins indécidable

Il en va de l’indécidabilité comme des cardinaux infinis, il est deslangages plus indécidables que d’autres. Revenons à notre langage L.Il n’est pas dans RE, mais le langage complémentaire de L y est, pardéfinition même de RE. Soit L∗ ce langage :

L∗ = m|m = mi ∧MTUi accepte mi, i ∈ N ∗

Or on sait que si un ensemble et son complémentaire sont dans RE alorsils sont aussi dans R c’est en particulier vrai pour les langages. Ici on estconfrontés au phénomène suivant ; L 6∈ RE et L∗ ∈ RE. On peut doncénoncer le théorème suivant :

Théorème 6.2.2 Le langage L∗ défini comme

L∗ = m|m = mi ∧MTUi accepte mi, i ∈ N ∗

n’appartient pas à R, il est donc indécidable, mais il appartient à RE.

On est donc en présence de deux langages indécidables, L∗ et L, l’undans RE et l’autre non.

Il existe une hiérarchie des indécidables comme il existe une hiérar-chie des cardinaux infinis, ou des classes de complexité. L’étude fine del’indécidabilité n’étant pas l’objet de cet ouvrage, nous n’entrerons pasdans la construction des classes d’indécidabilité. Toutefois, un lecteurintéressé pourra consulter l’ouvrage [Wol91].

6.3 Mathématiques ou informatique ?

On navigue là aux frontières entre mathématiques et informatique.En effet, la «diagonalisation» précédente nous introduit à un

problème mathématique qui a fait couler beaucoup d’encre et qui n’est,à notre connaissance, pas encore bien résolu.

Page 101: livre.pdf

Chapitre 6. Considérations théoriques 77

Considérons l’ensemble R des nombres réels. Prenons par exemplele nombre bien connu Π, on ne peut l’écrire exactement que «pi» oupar une définition telle que c’est le rapport du périmètre de tout cercleà son rayon. Mais si on veut l’écrire dans un système de numérationpositionnelle, comme la base 10 par exemple, on ne peut le faire (enfaisant abstraction de la virgule) avec un nombre fini de chiffres. Toutesubstitution, suppression ou rajout (insertion) d’un chiffre à la suite deschiffres constituant pi désigne un autre nombre réel. On peut faire çaautant de fois qu’on le veut.

On peut donc identifier R à l’ensemble des suites, finies et non finiesde chiffres. C’est à dire à l’ensemble de toutes les parties de N. Parconséquent, R n’est pas équipotent à N en vertu du théorème ci-dessus,et de plus, on a R ⊃ N. On est donc tenté d’écrire :

|N| < |R|

mais on note ℵ0 le cardinal de N et en vertu de ce que nous savonssur le cardinal de l’ensemble des parties d’un ensemble, on peut écrire :

Card(R) = 2ℵ0 Et on note : Card(R) = ℵ1

Se pose alors une double question,Existe-t-il un ensemble contenant N, ne contenant pas R et non

équipotent à N ni à R, c’est à dire un ℵi tel que 1 :

ℵ0 < ℵi < ℵ1

Autre question du même genre, existe t’il

ℵ2 > ℵ1 ?

Quelle serait la nature d’un ensemble équipotent à ℵ2 ?

1. C’est une question indécidable.

Page 102: livre.pdf
Page 103: livre.pdf

Chapitre 7

Ordres, Treillis et Algèbrede Boole

Nous introduisons dans ce chapitre les structures mathématiques quipermettent en grande partie la base théorique de l’informatique.

L’informatique ne travaillant que sur des objets discrets (des bits), doncénumérables, elle manipule essentiellement des ensembles ordonnés dis-crets qui confèrent aux données et aux calculs les particularités qui sontutilisées pour les traitements informatiques.

7.1 Relations d’équivalence

Soit E l’ensemble des droites de R3. Soient deux droites a et b, nouspouvons déterminer facilement si a et b sont parallèles ou non.La relation // " est parallèle à" possède les propriétés suivantes :

1. Réflexivité ∀a, a//a ;2. Symétrie a//b =⇒ b//a ;3. Transitivité a//b et b//c =⇒ a//c.

Une relation binaire possédant ces trois propriétés est dite d’équivalence.

7.1.1 Ensemble quotient

Soit un ensemble E muni d’une relation d’équivalence ρ et un élémenta ∈ E. L’ensemble des éléments de E qui sont équivalents à a par larelationρ forment la classe d’équivalence de a. Notons là ρa.

Page 104: livre.pdf

80 Complexité et Algorithmique avancée

Propriété 7.1.1 1. Deux éléments quelconques de ρa sontéquivalents ;

a, b ∈ ρa =⇒ a ρ b ;

2. deux classes d’équivalence possédant un élément en commun sontidentiques.

c ∈ ρa et c ∈ ρb =⇒ ρa ≡ ρb;

3. tout élément de E appartient à sa propre classe d’équivalence, etcomme les sous-ensembles ainsi formés, à partir d’éléments nonéquivalents, ne peuvent contenir d’élément commun, les classesd’équivalence de E forment une partition de E.

On nomme Ensemble quotient de E par ρ l’ensemble des classesd’équivalence déterminé par ρ sur E.

Exemple 7.1.1 La relation est parallèle à est une relation d’équivalencedans R3. Cette relation crée une partition de l’espace tridimensionnelR3 en ce qu’il est convenu d’appeler en géométrie dans l’espace, dessous-espace vectoriel (on dit aussi variétés linéaires) qui sont constituéeschacune de droites parallèles entre-elles. L’ensemble des variétés linéairesest l’ensemble quotient R3

//. De même pour la parité et la non paritédans N . Dans ce cas, la partition de N se fait entre nombres entierspairs et impairs.

7.2 Ordre, ordre partiel et préordre

[Bir67] La relation binaire ≤ qui peut être interprêtée par "plus petitou égal à" ; "contenu dans" ; "est une partie de" possède des propriétésqui lui confèrent le statut de préordre ou aussi ordre partiel. Un ensemblemuni d’une telle relation est dit partiellement ordonné ou, par angliscisme,poset.

Définition 7.2.1 Un ensemble partiellement-ordonné 1 est un ensembledans lequel est définie une relation binaire ≤ qui, pour tout triplet x, y, zsatisfait aux conditions suivantes :

1. Réflexivité ∀x; x ≤ x ;

1. Certains utilisent les symboles suivants qui signifie en fait successeur et ≺qui signifie précédent.

Page 105: livre.pdf

Chapitre 7. Ordres, Treillis et Algèbre de Boole 81

2. Antisymétrie x ≤ y et y ≤ x =⇒ x = y ;3. Transitivité x ≤ y et y ≤ z =⇒ x ≤ z.

Si la propriété d’antisymétrie n’est pas respectée (2), il s’agit alors d’unpréordre et tout ensemble muni d’une telle relation est dit préordonné.

Exemple 7.2.1 La relation d’inclusion dans un ensemble E est un ordrepartiel. Soit Σ(E) l’ensemble de tous les sous-ensembles de E, dont Elui-même et ∅. La relation x ≤ y signifiant que x est sous-ensemble de yest un préordre.

Exemple 7.2.2 Soit N ∗ l’ensemble des entiers positifs non nuls, larelation x ≤ y signifiant x divise y est un préordre.

7.2.1 Isomorphisme et dualité d’ensembles ordonnés

Une fonction θ : P −→ Q d’un ensemble partiellement ordonné P surun ensemble partiellement ordonné Q est dite isotone si elle satisfait :

x ≤ y =⇒ θ(x) ≤ θ(y). (7.1)

Une fonction isotone possédant un inverse est appelée un isomorphisme.Dit autrement, un isomorphisme entre deux ensembles partiellementordonnés P et Q est une bijection qui satisfait l’équation 7.1. Un iso-morphisme d’un ensemble partiellement-ordonné sur lui-même est appeléautomorphisme. Deux ensembles partiellement ordonnés P et Q sont ditsisomorphes (noté P ∼= Q) si, et seulement si ils sont liés par isomorphisme.

L’inverse d’une relation ρ est, par définition, la relation ρ telle quexρy ⇐⇒ yρx.

Théorème 7.2.1 (Principe de dualité) L’inverse d’un ordre partielest un ordre partiel.

Preuve 7.2.1 C’est la conséquence directe de ce qui précède.

Définition 7.2.2 Le Dual d’un ensemble pré-ordonné X est l’ensemblepré-ordonné X défini par le préordre inverse de celui de X sur les mêmeséléments.

Propriété 7.2.1 On déduit de ce qui précède que X ∼= ˘X. La relation dedualité est symétrique.

Page 106: livre.pdf

82 Complexité et Algorithmique avancée

7.3 Treillis

Une borne supérieure d’un sous-ensemble X d’un ensemble pré-ordonné P est un élément a ∈ P supérieur (par la relation d’ordre partiel)à tout x ∈ X. La borne supérieure de toutes les bornes supérieures detous les sous-ensembles de P est notée supX. Par antisymétrie (propriété2) cette borne est unique lorsqu’elle existe. On définit de la même façonla borne inférieure qui est également unique lorsqu’elle existe.

Définition 7.3.1 (Treillis) Un treillis 1 est un ensemble partiellementordonné tel que tout couple d’éléments admet une borne supérieure notéex∧ y et une borne inférieure notée x∨ y. Un treillis est dit complet si etseulement si tous ses sous-ensembles possèdent une borne supérieure etune borne inférieure.

Les opérations binaires ∧ et ∨ des treillis possèdent des propriétésalgébriques importantes :

1. Idempotence x ∧ x = x et x ∨ x = x ;2. Commutativité x ∧ y = y ∧ x etx ∨ y = y ∨ x ;

3. Associativité x ∧ (y ∧ z) = (x ∧ y) ∧ z etx ∨ (y ∨ z) = (x ∨ y) ∨ z ;

4. Consistance x ≤ y ⇐⇒ x ∧ y = y etx ≥ y ⇐⇒ x ∨ y = x ;

5. Absorption x ∧ (x ∨ y) = x ∨ (x ∧ y) = x ;6. Isotonie y ≤ z =⇒ x ∧ y ≤ x ∧ z et x ∨ y ≤ x ∨ z ;7. Distributivité faible x ∧ (y ∨ z) ≥ (x ∧ y) ∨ (x ∧ z) etx ∨ (y ∧ z) ≤ (x ∨ y) ∧ (x ∨ z) ;

8. Modularité faible x ≤ z =⇒ x ∨ (y ∧ z) ≤ (x ∨ y) ∧ z.Les propriétés 1 et 2 sont évidentes, elles découlent de la définition mêmedes opérateurs. La propriété 3 vient du fait que x∧ (y∧z) = (x∧y)∧z etx∨(y∨z) = (x∨y)∨z sont des expressions égales respectivement à la borneinférieure et à la borne supérieure de l’ensemble x, y, z. La propriété 4se vérifie aisément et implique 5. L’Isotonie 6 découle directement des

1. On trouvera aussi dans la littérature française ancienne l’expression "ensembleréticulé", mais elle s’applique plutôt aux cas où les treillis considérés sont continus.

Page 107: livre.pdf

Chapitre 7. Ordres, Treillis et Algèbre de Boole 83

propriétés 1 à 5 et du principe de dualité. La distributivité faible vient dece que on a évidemment x∧ y ≤ x et aussi x∧ y ≤ y, ainsi que x∨ y ≥ yet x ∨ y ≥ x ; donc aussi x ∧ y ≤ y ≤ y ∨ z ; d’où x ∧ y ≤ x ∧ (y ∨ z).Or x ∧ z ≤ x ; x ∧ z ≤ z ≤ y ∨ z ; d’où x ∧ z ≤ x ∧ (y ∨ z). En fait,x ∧ (y ∨ z) est une borne supérieure de x ∧ y et de x ∧ z, ce qui implique7, le deuxième terme étant obtenu à partir du premier par applicationdu principe de dualité.

7.3.1 Treillis distributifs

La distributivité forte ou distributivité x ∧ (y ∨ z) = (x ∧ y) ∨(x ∧ z) et x ∨ (y ∧ z) = (x ∨ y) ∧ (x ∨ z) n’est pas vérifiée dans tousles treillis. Les propriétés 7 deviennent alors des égalités. De plus, enarithmétique classique, la distributivité ne s’applique pas pour l’additionx+ (y.z) 6= (x+ y).(x+ z).La distributivité d’un treillis ou d’un sous-treillis fini lui confère despropriétés qui sont hors du propos du présent ouvrage mais qui peuventpermettre de résoudre nombre de problèmes du monde réel 1. Aussi,disposer d’un algorithme performant pour ce faire est-il important. Ainsi,alors que la distributivité est une propriété qui porte sur les tripletsd’éléments et dont on pourrait penser qu’il faut la vérifier pour tousles triplets, une propriété sur les paires d’éléments permet d’obtenir unalgorithme ne nécessitant que O(n2) opérations élémentaires.Notons T l’ensemble des sup-irréductibles d’un treillis T qu’on définicomme suit :

x ∈ T ⇐⇒ x = u ∨ v =⇒ x = v ou x = u.

Et [x] section commençante de x :

t ∈ [x] ⇐⇒ t ≤ x et T[x] = T ∩ [x].

On peut alors énoncer :[Lav76]

Théorème 7.3.1 (Reconnaissance de la distributivité) Un treillisfini T est distributif si et seulement si ∀x, y ∈ T on a l’égalité :

T[x] ∪ T[y] = T[x∨y]

Exercice 2 Démontrer le théorème 7.3.1.1. Comme l’optimisation d’un réseau électrique par exemple

Page 108: livre.pdf

84 Complexité et Algorithmique avancée

7.4 L’algèbre de Boole

Définition 7.4.1 (Treillis booléen) Un treillis booléen est un treillisdistributif complémenté.

Dans un treillis distributif, les compléments sont uniques quand ilsexistent car on a la relation :

Théorème 7.4.1 Dans un treillis distributif T ;, ∀c ∈ T ; c ∧ x = c ∧ y et c ∨ x = c ∨ y =⇒ x = y

Preuve 7.4.1 x = x ∧ (c ∨ x) = x ∧ (c ∨ y) = (x ∧ c) ∨ (x ∧ y) =(c ∧ y) ∨ (x ∧ y) = (c ∨ x) ∧ y = (c ∨ y) ∧ y = y

Théorème 7.4.2 Dans un treillis booléen, tout élément x possède unet un seul complément noté ¬x ou x possédant de plus les propriétéssuivantes :

1. Complémentarité : x ∧ x = 0 et x ∨ x = 1 les éléments 0 et 1sont dits universels ;

2. Ipsonégation : x = x ;

3. Formules de De Morgan : (x ∧ y) = x ∨ y et (x ∨ y) = x ∧ y.

7.5 L’algèbre de Boole des expressions logiques

Les variables booléennes, ou logiques, sont susceptibles de prendredeux valeurs et deux seulement, à savoir vrai ou faux ou encore 0, 1avec 1 pour vrai et 0 pour faux. Ces éléments 0 ; 1 ou vrai ; faux sontles éléments universels.

Comme nous avons pu le constater ci-dessus, l’algèbre de Boolecomporte trois opérateurs appelées connecteurs qui sont ∨ qui correspondau ou logique ; ∧ qui correspond au et logique et ¬x qui est la négationqu’on note aussi x. Les deux premiers connecteurs sont des opérateursbinaires, le troisième est un opérateur unaire, la négation. Le modeopératoire correspondant peut être visualisé par le tableau suivant :

Page 109: livre.pdf

Chapitre 7. Ordres, Treillis et Algèbre de Boole 85

x y x ∨ y x ∧ y x y

vrai vrai vrai vrai faux faux

vrai faux vrai faux faux vrai

faux vrai vrai faux vrai faux

faux faux faux faux vrai vrai

Ou, en utilisant la notation en 0, 1 ;

x y x ∨ y x ∧ y x y

1 1 1 1 0 0

1 0 1 0 0 1

0 1 1 0 1 0

0 0 0 0 1 1

Au-delà de ces opérateurs, il existe des fonctions booléennes qui, à unensemble de valeurs booéennes font correspondre un ensemble des mêmesvaleurs, f : B f−→ B. ces fonctions sont formées à partir de fonctionsélémentaires qui sont au nombre de 16 ; ce sont :

Tableau des 16 fonctions de 2 variables booléennes f(X2)dit aussi Table de vérité

x1 x2 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15

0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Page 110: livre.pdf

86 Complexité et Algorithmique avancée

Tableau des 222 opérations booléennes à 2 variables

Nx2 = 1100 Opérateur fonction de base

Libellénom

x1 = 1010 booléen équivalente commun

0 0000 0 FAUX Jamais

1 0001 x1 ↓ x2 x1 ∧ x2 = x1 ∨ x2 NOR ni-ni a

2 0010 x1 ∧ x2 = x1 ∨ x2 inhibition 1

3 0011 x2 ¬x2 Négation 2 non x2

4 0100 x1 ∧ x2 = x1 ∨ x2 inhibition 2

5 0101 x1 ¬x1 Négation 1 non x1

6 0110 x1 ⊕ x2 (x1 ∧ x2) ∨ (x1 ∧ x2) XOR OU exclusif

7 0111 x1 | x2 x1 ∨ x2 = x1 ∧ x2 NAND Non-et

8 1000 x1|x2 x1 ∧ x2 ET et

9 1001 x1⊕x2 (x1 ∧ x2) ∨ (x1 ∧ x2) EQ SSI b

10 1010 x1 projection x1 identité 1

11 1011 x1 ⇒ x2 x1 ∨ x2 Implication 1 Si 1 -alors

12 1100 x2 Projection x2 identité 2

13 1101 x1 ⇐ x2 x1 ∨ x2 Implication 2 Si 2 -alors

14 1110 x1↓x2 x1 ∨ x2 OU ou

15 1111 1 VRAI Toujours

a. Ou aussi Aucunb. Si et seulement si.

L’opérateur NOR est aussi appelé fonction de Pierce ; l’opérateur XOR,Addition modulo 2 ; l’opérateur NAND fonction de Sheffer, l’opérateurET conjonction ; EQ, équivalence ; OU disjonction ; et VRAI, tautologie

Page 111: livre.pdf

Chapitre 7. Ordres, Treillis et Algèbre de Boole 87

7.6 Expressions booléennes et problème SAT

On peut, à partir des opérateurs ainsi définis, définir de manièreinductive, le concept d’ expression booléenne.

Définition 7.6.1 (Expression booléenne) Nous appellerons expres-sion booléenne et noterons en général φ, une expression formée commesuit :

– soit par une seule variable booléenne xi ;– soit par une expression de type ¬φ ou encore φ appelée alors néga-

tion de φ, où φ est elle-même une expression ;– soit une expression de forme (φ1 ∨ φ2) où φ1 et φ2 sont des expres-

sions booléennes. Une telle expression est appelée une disjonction ;– soit encore une expression de la forme (φ1 ∧ φ2) où φ1 et φ2 sontdes expressions booléennes. Une telle expression est appelée uneconjonction.

Une expression booléenne (ou une expression logique 1) n’a de valeur quesi l’on affecte des valeurs de vérité aux variables qui la composent. Unefonction qui affecte de telles valeurs de vérité à des variables booléennes oulogiques s’appelle fonction d’interprétation. Une fonction d’interprétationparticulière confère à une expression booléenne une valeur de vérité.

Exemple 7.6.1 Soit l’expression booléenne :

(x1 ∧ x2) ∨ (x2 ∧ (x3 ∧ x1))

La fonction d’interprétation x1 ←− 1, x2 ←− 1, x3 ←− 0 confère lavaleur 1 à l’expression.

Par contre, la fonction d’interprétation x1 ←− 1, x2 ←− 0, x3 ←−1 implique la valeur 0 pour l’expression considérée.

Les expressions booléennes prennent donc des valeurs de vérité vrai,ou faux ou 0, 1. Par la suite, nous ne différencierons plus 1, 0 etl’écriture vrai, faux, on identifiera par convention 1 à vrai et 0 àfaux 2 utilisant indifféremment l’une ou l’autre notation. La valeurd’une expression booléenne est obtenue par combinaison des opérateursci-dessus. Allant du cas simple de la variable unique aux expressionscombinant les divers opérateurs, nous dirons procéder par induction.

1. On dit aussi proposition logique et on parle alors de calcul propositionnel2. On pourrait très bien faire le contraire, à savoir identifier 1 à faux et 0 à vrai.

Page 112: livre.pdf

88 Complexité et Algorithmique avancée

Définition 7.6.2 (Valeur de vérité) Une valeur de vérité V associéeà un ensemble de variables booléennes, est une application d’un en-semble fini X′ de variables booléennes, X′ ⊆ X sur les valeurs logiquesvrai, faux, ou ce qui revient au même 1, 0.

Soit φ une expression booléenne. On définit inductivement l’ensembleX(φ) des variables booléennes tel que X(φ) ⊆ X dans φ comme suit :

– si φ est composé d’une seule variable booléenne xi, alorsX(φ) = xi ;

– si φ = φ1 alors X(φ) = X(φ1) ;– si φ = (φ1 ∨ φ2) ou φ = (φ1 ∧ φ2) alors X(φ) = X(φ1) ∪ X(φ2).

L’algèbre booléenne de la logique s’intéresse aux expressions dites valides,c’est à dire à celles qui prennent la valeur de vérité vrai (resp. 1) quelle quesoit les affectations de valeurs de vérité aux variables qui les composent.

Définition 7.6.3 (Expression valide ou Tautologie)

∀xi ∈ 0, 1, i = (1, 2, ., j, .n);f(x1, x2, ., xj , ., xn) = 1 ⇔ f est valide.

Exemple 7.6.2 L’expression φ = ( x1 ∧ x2) ∨ x1 est valide (est unetautologie). En effet, la table de vérité de cette expression est la suivante :

x1 x2 x1 ∧ x2 x1 ∧ x2 φ

1 1 1 0 1

1 0 0 1 1

0 1 0 1 1

0 0 0 1 1

7.6.1 Satisfaction d’une expression

Soit donc V une valeur de vérité associée à un ensemble X′ de variablesbooléennes tel que X(φ) ⊆ X′ ; on appelle une telle affectation, affectationappropriée à φ. Supposons maintenant que V soit appropriée à φ.

On définit alors ce que signifie " V satisfait φ", noté V φ.

Page 113: livre.pdf

Chapitre 7. Ordres, Treillis et Algèbre de Boole 89

Définition 7.6.4 (Satisfaction) Si φ est une variable xi ∈ X(φ), alorsV φ si V(xi) prend la valeur vrai . Si φ = φ1, alors V φ seulementsi V 2 φ1. Dans le cas contraire, on a bien sûr V φ1.

Ainsi ;– Si φ = φ1 ∨ φ2, alors V φ =⇒ V φ1 ou V φ2 ;– et, si φ = φ1 ∧ φ2, alors V φ =⇒ V φ1 et V φ2.Informellement, dire que l’affectation V de valeurs aux variables boo-

léennes d’une expression booléenne φ est une valeur de vérité appropriéepour φ, notée V φ, signifie que cette affectation n’entraîne pas decontradiction dans φ.

Exemple 7.6.3 (valeur de vérité appropriée non satisfaisante)Soit l’expression booléenne φ = ((x ∨ y) ∧ z). Une valeur de vérité

appropriée à φ serait :V(x) = V(z) = vrai et V(y) = faux. La questionmaintenant est de savoir si V satisfait φ, c’est à dire si : V φ ? En fait,ici V z. Mais comme φ est une conjonction, pour que φ soit satisfaite,il faut que les deux termes de la conjonction le soient, c’est à dire ici,il faut que V (x ∨ y). Supposons V x ; alors V 2 x. Comme ona V(y) = faux, c’est à dire encore V 2 y, il s’ensuit que V 2 (x ∨ y).Par conséquent V 2 φ.(d’après[Pap95])

Exemple 7.6.4 (Valeur de vérité "satisfaisante") Par contre :V(x) = V(z) = V(y) = vrai =⇒ V φ;

et alors V : x = y = z = vrai satisfait φ et est aussi une valeur de véritéappropriée pour φ (en fait v satisfait φ =⇒ V φ).

Il peut être plus court et surtout plus explicite d’utiliser les im-plications. Ainsi (φ1 =⇒ φ2) est une expression plus explicite et pluscourte pour (φ1 ∨ φ2). De même, (φ1 ⇐⇒ φ2) est une écriture condensée(i.e. abrégée) pour ((φ1 =⇒ φ2) ∧ (φ2 =⇒ φ1).

On dit alors que les expressions φ1 et φ2 sont équivalentes, et on note :φ1 ≡ φ2.

Deux expressions φ1 et φ2 sont dites équivalentes si et seulement sitoute valeur de vérité appropriée à l’une des deux est aussi appropriée àl’autre.

φ1 ≡ φ2etV φ1 =⇒ V φ2Des expressions équivalentes peuvent être considérées comme représenta-tives du même objet mathématique et elles sont alors interchangeables.

Page 114: livre.pdf

90 Complexité et Algorithmique avancée

7.6.2 Algèbre de Boole

Les opérateurs booléens (connecteurs logiques) munissent l’ensembledes propositions logiques (des variables et expressions booléennes) d’unestructure appelée Algèbre de Boole.

Ainsi, on a les propriétés suivantes :1. Complémentarité φ ∨ φ ≡ 1 et φ ∧ φ ≡ 0 ;2. Commutativité (φ1 ∨ φ2) ≡ (φ2 ∨ φ1) et (φ1 ∧ φ2) ≡ (φ2 ∧ φ1)

qui sont des conséquences directes de la symétrie des définitions de∨ et ∧ ;

3. Ipsonégation φ ≡ φ qui découle de la définition de la négation ;4. Associativité ((φ1 ∨ φ2)∨ φ3) ≡ (φ1 ∨ (φ2 ∨ φ3)) ≡ (φ1 ∨ φ2 ∨ φ3)

et ((φ1 ∧ φ2) ∧ φ3) ≡ (φ1 ∧ (φ2 ∧ φ3)) ≡ (φ1 ∧ φ2 ∧ φ3). Ce sont làaussi des conséquences immédiates des définitions ;

5. Distributivité (φ1 ∧ (φ2 ∨ φ3)) ≡ (φ1 ∧ φ2) ∨ (φ1 ∧ φ3) et(φ1 ∨ (φ2 ∧ φ3)) ≡ (φ1 ∨ φ2) ∧ (φ1 ∨ φ3) ;

6. Formules de De Morgan (φ1 ∨ φ2) ≡ (φ1 ∧ φ2) et(φ1 ∧ φ2) ≡ (φ1 ∨ φ2) ;

7. Idempotence φ1 ∨ φ1 ≡ φ1 et symétriquement φ1 ∧ φ1 ≡ φ1 .

Exercice 3 Démontrer les formules 5 (distributivité) et les formulesde De Morgan 6.

7.6.2.1 Formes normales

Notation Comme en arithmétique classique, pour les symboles∑

et∏

on utilise des opérateurs (i.e. des connecteurs) généralisés∧

et∨.

De plus, les expressions booléennes présentent une particularité tréspratique, elles peuvent toutes s’écrire suivant deux formes standarts.

Définition 7.6.5 (Forme normale conjonctive) On appelle Formenormale conjonctive ou FNC une expression booleénne formée de conjonc-tions de disjonctions. Chaque disjonction est alors appelée clause.

Exemple 7.6.5 (FNC) L’expression (x1∨x3)∧(x2∨x3) est une formenormale conjonctive. (x1 ∨ x3) et (x2 ∨ x3) en sont les clauses.

Page 115: livre.pdf

Chapitre 7. Ordres, Treillis et Algèbre de Boole 91

Définition 7.6.6 (Forme normale disjonctive) On appelle Formenormale disjonctive ou FND une expression booleénne formée dedisjonctions de conjonctions. Chaque conjonction est alors appeléemonôme.

Exemple 7.6.6 (FND) L’expression (x1∧x3)∨(x2∧x3) est une formenormale conjonctive. (x1 ∧ x3) et (x2 ∧ x3) en sont les monômes.

Théorème 7.6.1 (Théorème général des formes normales )Toute expression booléenne peut s’écrire sous forme normale conjonctiveou sous forme normale disjonctive.

Preuve 7.6.1 La preuve s’obtient par application systématique desformules de De Morgan et de la propriété d’idempotence pour ne pasavoir de variable répétée.

Exercice 4 Démontrer le théorème 7.6.1 On procèdera par inductionet éventuellement idempotence, en examinant d’abord le cas où l’expres-sion ne contient qu’une seule variable, φ = x, puis le cas de la négationφ = φi etc...

On peut remarquer que le passage d’une forme de l’expression à uneautre, l’écriture sous forme normale conjonctive ou disjonctive s’obtientpar un procédé algorithmique, plusieurs solutions sont possibles, voir[Lav74].

7.6.3 Le problème SAT

Le problème central auquel se heurtent les logiciens et identifié parLévine et Cook comme central en théorie de la complexité est celui ditde la satisfiabilité . il s’énonce comme suit :

Étant donnée une FNC, existe-t-il une valeur de vérité satisfaisantepour cette FNC, ou, dit autrement, existe-t-il une affectation de valeurs0, 1 aux variables constituant cette FNC et lui conférant la valeur 1 ?

Comme nous le verrons, la théorie de la complexité calculatoire sepose la question de savoir s’il existe toujours, c’est-à-dire dans le pire descas, un algorithme, polynomial en temps susceptible de répondre à cettequestion.

Page 116: livre.pdf
Page 117: livre.pdf

Chapitre 8

Circuits booléens

8.1 Portes et circuits digitaux

Les circuits électroniques, digitaux représentent la réalisationphysique des propriétés logiques d’algorithmes de calcul. On peut

"coder dans le dur" les algorithmes, c’est à dire réaliser physiquement descircuits électroniques qui exécutent des fonctions précises. Pour cela, onutilise les propriétés de l’algèbre de Boole et de ses opérateurs, auxquelson ajoute en général un opérateur, ou disjonctif noté ⊕, appelé aussiXOR qui de définit par la table de vérité suivante dont le schéma deréalisation physique est donné par le graphe C1 de la figure 8.1 :

x1 x2 X = (x1 ∧ x2) Y = (x1 ∧ x2) x1 ⊕ x2 = X ∨Y

1 1 0 0 0

1 0 1 0 1

0 1 0 1 1

0 0 0 0 0

Mais au delà de l’aspect physique de réalisation des dits circuits, c’està leur aspect logique et graphique que nous nous attachons.Une table comme celle-ci ou comme celles des opérateurs

∧;∨

; ¬s’appelle une porte logique. Une porte logique est une unité de calcul

Page 118: livre.pdf

94 Complexité et Algorithmique avancée

logique possédant des entrées et une sortie (en général une ou deuxentrées et une sortie). Lorsqu’on assigne des valeurs 0 ou 1 aux entrées,on obtient une telle valeur en sortie en accord avec la table de véritécorrespondant à la porte considérée. Les fils (les arcs sur le graphereprésentatif) permettent de transmettre les valeurs d’une sortie de porteà l’entrée d’une autre. Dans ce cas, nous dirons que la deuxième portedépend de la précédente. On utilise aussi le terme de porte d’entrée. Uneporte d’entrée n’a pas de sortie, la valeur qu’elle transmet est décidéepar un agent extérieur, c’est l’assignation de valeur à une variable. Surla figure 8.1 ce sont les variables x et y qui jouent ce rôle pour le circuitC et x, y et c pour le circuit C∗.

Un circuit digital 1 est constitué de portes logiques et portes d’entréereliées par des fils.

Lorsqu’on assigne des valeurs aux portes d’entrées, on obtient unevaleur en sortie du circuit, on dit alors que le circuit a calculé cette valeuret a exécuté la fonction (i.e. l’algorithme correspondant).

Dans la figure 8.1, le circuit C1 calcule l’expression booléenne :

(x ∧ y) ∨ (x ∧ y)

Il s’agit en fait de l’opérateur ⊕ vu précédemment.Par contre le schéma C2 ne peut être formulé en termes d’une seule

expression booléenne directement pour deux raisons :– le schéma possède deux sorties ;– la porte XOR (⊕) inférieure a aussi deux sorties. Bien sûr dans un

tel cas, il n’y a pas deux sorties, c’est-à-dire deux valeurs, différentes,c’est deux fois la même sortie ou même valeur de sortie.

Par contre ce schéma C2 est celui de deux fonctions différentes Z et Tdépendantes des mêmes valeurs de 3 variables x, y, c. Ici, on a pour leschéma C2 :

T = (x ∧ y) ∨ ((x⊕ y) ∧ c) et Z = (x⊕ y)⊕ c.

1. Le mot digital est un mot de la même famille que doigt et désigne un nombre,par opposition ici à circuit analogique.

Page 119: livre.pdf

Chapitre 8. Circuits booléens 95

¬

X Y

¬ ¬

Z

∧ ⊕

⊕ ∧

X Y C

T

Z

Circuit C1 Circuit C2

Figure 8.1 – Graphes de schémas logiques de circuits digitaux

8.1.1 Base standard

Pour construire un circuit de façon générale, on utilise des "briques"de base, c’est à dire des portes déjà prêtes qu’on assemble entre elles.C’est la "base" du circuit.

Définition 8.1.1 (Base) Une base d’une fonction booléenne F est unensemble de fonctions booléennes à partir desquelles ont peut générer lafonction F. Une base universelle est une base à partir de laquelle on peutgénérer toutes les fonctions booléennes.

Exemple 8.1.1 ∨,∧,¬ est une base, universelle, alors que ∧,∨, ⊕n’en est pas une.

Définition 8.1.2 (Base standard) On appelle base standard, la baseformée des opérateurs et, ou, non soit symboliquement ∧;∨;¬.

Page 120: livre.pdf

96 Complexité et Algorithmique avancée

La base standard est en fait universelle, ce qui signifie que toute fonctionbooléenne f peut-être représentée par un circuit à partir de cette base.

Exemple 8.1.2 Supposons la fonction f donnée par sa table de véritécomme suit :

ligne n x y z f

1 0 0 0 0

2 0 0 1 1

3 0 1 0 1

4 0 1 1 0

5 1 0 0 1

6 1 0 1 0

7 1 1 0 0

8 1 1 1 1

On peut faire correspondre une expression booléenne à ce tableau. Ainsi,à chaque valeur 1 de la fonction, on peut associer une clause conjonctiveou monôme. Pour une fonction f à n variables booléennes, le nombre declauses est au plus 2n, soit ici 8 qui est le nombre de lignes du tableau.Par exemple :

– pour la ligne n 8 on a le monôme (x ∧ y ∧ z) ;– pour la ligne n 5, le monôme (x ∧ y ∧ z) ;– pour la ligne n 3 ; le monôme (x ∧ y ∧ z) ;– pour la ligne n 2 ; le monôme (x ∧ y ∧ z).

Ainsi, la fonction f s’écrit en Forme Normale Disjonctive et contientquatre monômes et s’écrit alors :

f = (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) ∨ (x ∧ y ∧ z)

Page 121: livre.pdf

Chapitre 8. Circuits booléens 97

La figure 8.2 permet de voir le schéma de principe du circuit associé à lafonction f , schéma dans lequel on n’a pas détaillé les schémas propresaux monômes.

f

∨f

(x ∧ y ∧ z) (x ∧ ¬y ∧ ¬z) (¬x ∧ y ∧ ¬z) (¬x ∧ ¬y ∧ z)

Figure 8.2 – Schéma logique du circuit booléen :f = (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) ∨ (x ∧ y ∧ z)

En fait, dans la figure 8.1 C2 représente la combinaison de deuxcircuits, l’un qui calcule l’expression

T = (x ∧ y) ∨ ((x⊕ y) ∧ c)

et l’autre évidemmentz = (x⊕ y)⊕ c

On vérifiera qu’en fait le circuit C1 est une porte logique ⊕, et ainsi, onpeut toujours remplacer dans les schémas la porte ⊕ par son schéma. Ainsion n’est amené à ne considérer que la base standard qui est universelle,toute fonction booléenne pouvant être calculée (au sens des circuits) avecces trois opérateurs.

Page 122: livre.pdf

98 Complexité et Algorithmique avancée

8.2 Fonctions booléennes et circuits

Définition 8.2.1 (Fonction booléenne) Une fonction booléenne f àn variables est une application :

f : 0, 1n −→ 0, 1

ou encore ;f : vrai, fauxn −→ vrai, faux

Une expression booléenne φ peut être vue comme une fonction boo-léenne à n variables fφ, avec n = | X(φ) |. En effet, pour toute valeur devérité V assignée aux variables de φ, une valeur de vérité est définie pourφ ; vrai si V φ et faux si V 2 φ.On peut ainsi préciser le rapport entre expression et fonction booléenne.Une expression booléenne φ de variables x1, x2, ..., xn représente unefonction booléenne f(x1, x2, ..., xn) si, pour tout n-uple de valeurs devérité

∀v : v = (v1, ..., vn); vi ∈ 0, 1; f(v) = 1 ⇐⇒ V φ

etf(v) = 0 ⇐⇒ V 2 φ

De cette façon, toute expression booléenne représente une fonctionbooléenne. Comme nous allons le voir, la réciproque est vraie.

Théorème 8.2.1 Toute fonction booléenne f , à n variables peut s’écriresous forme d’une expression booléenne φf de variables x1, x2, . . . , xn.

Preuve 8.2.1 Soit F le sous ensemble de 0, 1n de tous les n-uples,valeurs de vérité telles que f prenne la valeur vrai F ⊆ 0, 1n : ∀X ∈F, f(X) = 1 et ∀X∗ ∈ 0, 1n − F; f(X∗) = 0. Il est alors facile deconstruire une expression booléenne. À chaque n-uple v = v1, v2, ..., vnde F, on fait correspondre un monôme de l’expression générale, parconjonction des variables ayant pris la valeur 1 (resp. vrai) et la négationde toutes les variables ayant pris la valeur 0 (resp. faux). Soit Cv untl monôme. L’expression booléenne représentative de la fonction f estalors obtenue par réunion de tous les monômes de type Cv pour toutes les

Page 123: livre.pdf

Chapitre 8. Circuits booléens 99

valeurs de v. On a donc la forme normale disjonctive :φf =∨∀v∈F Cv ;

c’est à dire :

φf = (xi1 ∧ ... ∧ xik) ∨ ... ∨ (xil ∧ ... ∧ xin) (8.1)

Chacun des monômes (xij ∧ ... ∧ xil) de l’équation 8.1 représentantune configuration de variables booléennes ayant toutes la valeur 1 (i.e.respectivement vrai).

Bien entendu, il s’agit là d’une démarche théorique en vue de ladémonstration, il est en général hors de question de construire φf quipossède un nombre de symboles de l’ordre de O(n2 × 2n).

8.3 Circuits booléens

En 1963, Lupanov [Lup63] partant du principe que toute expressionbooléenne n’utilise que la base standard (dite aussi base canonique) c’est-à-dire in fine que trois opérateurs, deux binaires (∧ noté aussi en logiqueet et par certains auteurs (russes en particulier : & ) ainsi que le symbole∨ pour le ou logique -il aurait pu y rajouter ⊕ sans que cela ait d’incidencesur la suite-), et un opérateur unaire noté ¬x ou x pour la négation dela valeur prise par la variable x. Il en déduit une écriture "graphique" desexpressions booléennes basée sur deux éléments graphiques de base etdeux seulement comme nous l’avons noté précédemment.

Lupanov en déduit un schéma général d’une expression booléennequi peut alors être visualisée comme montré par la figure 8.4.

Dans ce type de représentation, seuls les symboles associés aux opé-rateurs apparaissent. De plus, Lupanov mesure la complexité d’uncircuit booléen au nombre minimal de composants de base nécessairesà sa réalisation.

En fait, on utilise plusieurs mesures :– Le nombre total de "composants" qu’on appelle la taille du circuit ;– le nombre d’arcs, qui est en fait représentatif du nombre de sommets(et donc de composants, chaque sommet du schéma représentatifétant associé à un composant) à un coefficient multiplicatif près ;

Page 124: livre.pdf

100 Complexité et Algorithmique avancée

ET/OU∧∨ NON ¬

« Briques » de base des graphiques de Lupanov

Figure 8.3 – Opérateurs booléens vs graphes

– la longueur de la plus longue chaîne du graphe associé appelée alorsla profondeur du circuit.

En considérant le demi-treillis associé à un tel schéma, on pourraitrajouter le nombre minimal de générateurs nécessaires à sa construction.On peut ainsi créer une algèbre des circuits, à partir de portes (circuitsde base) et des lois pour les composer, il s’agit alors du domaine de lacomplexité algébrique, domaine qui sort du propos du présent ouvrage.

Définition 8.3.1 (Circuit booléen) Un circuit booléen est un grapheorienté C = (X,Γ) dont les sommets X = x1, x2, ..., xn sont appelés lesportes du circuit C. Les arcs (xi, xj) ∈ Γ relient les portes entre-elles,dans l’ordre induit par les arcs 1. De plus, un circuit booléen possède lescaractéristiques suivantes :

1. Γ−(x) ≤ 2 et Γ+(x) ≤ 1

1. Les arcs sont orientés dans le sens de parcours du circuit par les impulsionsélectroniques

Page 125: livre.pdf

Chapitre 8. Circuits booléens 101

x1 ∈ 0,1 x2 ∈ 0,1

xi ∈ 0,1

xn-1 ∈ 0,1

xn ∈ 0,1

0,1

Figure 8.4 – Schématisation générale d’une expression booléenne

2. C est sans circuit, le graphe d’un circuit booléen est dit acyclique,en termes de théorie des graphes, c’est un arbre ;

3. à chaque porte xi est associé un type t(i) ∈ vrai, faux,∨,∧,¬.– t(i) ∈ vrai, faux =⇒ Γ−(xi) = 0. La porte xi est alors

considérée comme une porte d’entrée du circuit (ou encore intrant,ou en anglais input) ;

– t(i) = ¬ alors Γ+(xi) = Γ−(xi) = 1 ;– t(i) ∈ ∨,∧ =⇒ Γ−(xi) = 2

4. pour une porte xi, si Γ+(xi) = 0 alors celle-ci est dite une sortiedu circuit (ou extrant ou encore, en anglais output) .

Une famille de circuits C = C0,C1, ...,Ci, ...,Cn, ... est dite cal-culant f : 0, 1∗ −→ 0, 1 si et seulement si Cn calculefn et quefn : 0, 1n −→ 0, 1 est une restriction de f sur 0, 1n, ∀n ∈ N .

La fonction f est alors dite posséder une taille de circuit polynomialesi il existe une famille C de circuits et un polynôme p(n) tel que C calculef et qu’on a : taille(Cn) ≤ p(n).

Page 126: livre.pdf

102 Complexité et Algorithmique avancée

En fait, la complexité en temps d’un tel circuit est mesurée par laprofondeur dudit circuit, c’est-à-dire la longueur du plus long chemin quimène d’une entrée du circuit à la sortie.

8.3.0.1 Circuit-SAT

Comme on pouvait s’y attendre, il existe une variante de SAT pourles circuits (voir [Pap95] p. 81) appelée CIRCUIT-SAT. Étant donné uncircuit C, existe t’il une fonction d’interprétation T telle que T(C) = 1 ?CIRCUIT-SAT est équivalent à SAT en termes de temps calcul et doncsans doute très difficile.

Page 127: livre.pdf

Chapitre 9

Quelques problèmes deréférence

Pour la suite de l’exposé, nous ferons référence à quelques problèmestypes qui sont représentatifs des situations auxquelles nous serons

confrontés. La plupart des problèmes intéressants en informatique sontposés en termes discrets, c’est à dire combinatoires. L’une des structuresde modélisation couramment employée est le graphe. C’est une façontrès simple de décrire une structure ou une situation, en biologie ou enmétéorologie comme en neurologie ou en sciences sociales. Le grapheillustre le dicton français "un bon dessin vaut mieux qu’un long discours".Qu’il s’agisse de représenter un réseau (route, métropolitain, réseauinformatique, réseau d’eau...) ou une relation (entre mots dans un texte,entre personnes, entre pièces détachées, ...), la structure la plus employéeest celle de graphe.

9.1 Introduction à la théorie des graphes

Un graphe (voir [Ber58, Ber69] et aussi [Roy70]) est une structuremathématique composée d’un ensemble fini de sommets X = x1, ..., xn etd’un ensemble fini d’arcs Γ ⊆ X×X.

Un graphe G = (X,Γ) est le graphe au sens des applications d’unensemble discret (fini ou non, mais plutôt fini pour les applicationscourantes) dans lui-même.

Page 128: livre.pdf

104 Complexité et Algorithmique avancée

9.1.1 Petit vocabulaire de théorie des graphes

Le concept de graphe est un concept orienté, mais on utilise aussisouvent des graphes non-orientés (c’est à dire alors qu’entre deux sommetsliés dans le graphe, il y a toujours deux arcs, l’un dans un sens, l’autredans l’autre). Lorsqu’il s’agit de graphes non-orientés, on parle d’arêtesen lieu et place d’arcs. Les graphes sont de précieux outils de modélisationpour maintes situations du monde réel, des neurones aux réseaux routiersou aux oléoducs.

– degré Le nombre d’arcs issus d’un même sommet donne le degréextérieur de ce sommet, et le nombre d’arcs incidents en unsommets (i.e. y arrivant) donne le degré intérieur dudit sommet.Ces degrés sont notés respectivement pour un sommet x : Γ+x etΓ−x et le degré du sommet est : Γx = Γ+x+ Γ−x. Ainsi,dans la figure 9.1, on a : Γ+E = 2 et Γ−E = 3 et Γx = 5.

– adjacence et voisinage Deux sommets sont dits adjacents s’ilssont reliés par un arc ou une arête et ils sont alors dits voisins ;

– chemin Un chemin entre deux sommets x et y est une successiond’arcs tels que l’extrémité de l’un soit origine du suivant, x étantorigine et y extrémité du chemin. Un chemin élémentaire [x. .y]est un chemin dans lequel, quel qu’il soit, un sommet n’apparaîtqu’une seule fois. Dans la figure 9.1 [A,E,D,F] est un cheminélémentaire de A à F. Un chemin simple [x. .y] est un chemindans lequel, quel qu’il soit, un arc n’apparaît qu’une seule fois ;

– chaîne Les mêmes notions, non orientées sont utilisées. Au lieu dechemin on parle alors de chaîne . Ainsi [A,E,D,F] est une chaîneélémentaire de A à F, et [A,B,E,D,C,F] aussi.

– connexité, forte connexité Un graphe sera dit connexe s’ilexiste une chaîne entre tout couple de sommets, il sera dit forte-ment connexe s’il existe un chemin entre tout couple de sommets.

9.1.2 Exemple de représentation de graphes

On peut représenter le graphe G de la figure 9.1 comme suit :G = X,Γ ;X = A,B,C,D,E,F ;

Page 129: livre.pdf

Chapitre 9. Quelques problèmes de référence 105

A

E F

B D

C

Figure 9.1 – Exemple de graphe

Γ = (A,B); (A,E); (B,D); (C,A); (C,D); (C,E); (C,F);(D,F); (E,B); (E,D); (F,E)Ou comme suit, par la matrice d’adjacence G :

A B C D E FA 0 1 0 0 1 0B 0 0 0 1 0 0C 1 0 0 1 1 1

G = D 0 0 0 0 0 1E 0 1 0 1 0 0F 0 0 0 0 1 0

On verra plus loin, sur la figure 9.3 une représentation de graphe parmatrice booléenne. On pourrait encore décrire le graphe d’une façonplus informatique, par file des successeurs et/ou des prédécesseurs. Nousreviendrons sur ce problème de la représentation et du codage de l’énoncédu problème et des données.

Page 130: livre.pdf

106 Complexité et Algorithmique avancée

9.1.3 Quelques sous-ensembles remarquables de sommets

A

B C

D

EFEnsembles stables intérieurement,maximaux!:A,C,D!; A,E,C!; D,F!;D,B!.

Les trois sommets en noir, A, C, D forment un ensemble stable intérieurement,maximal au sens de l’inclusion (c.a.d qu’on ne peut y rajouter un sommet)!et aussiau sens du cardinal (i.e. en nombre de sommets); le nombre de stabilité interne dece graphe est donc égal à 3.

Figure 9.2 – Ensemble stable intérieurement

Dans un graphe, orienté ou non, un sous-ensemble de sommets peut-êtrejugé remarquable par rapport à des propriétés de connexion :

– deux sommets du sous-ensemble sont toujours reliés par une chaîne(resp. un chemin) ;

– il n’y a ni chemin ni chaîne entre tout couple de sommets dusous-ensemble considéré ;

– toute chaîne (resp. chemin) joignant deux sommets n’appartenantpas au sous-ensemble considéré passe obligatoirement par un som-met du sous-ensemble ;

– ...Ainsi peut-on définir des ensembles dits stables, tant intérieurementqu’extérieurement :

Page 131: livre.pdf

Chapitre 9. Quelques problèmes de référence 107

Définition 9.1.1 (Stabilité interne) Soit G = (X,V) un graphe non-orienté, I ⊆ X forme un ensemble stable intérieurement (e.s.i) si,et seulement si deux sommets quelconques de cet ensemble ne sont pasadjacents.

I ⊆ X est un e.s.i. ⇐⇒ ∀xi, xj ∈ I; (xi, xj) 6∈ V

La figure 9.2 illustre cette notion de stabilité interne. De plus, les en-sembles stables ici sont maximaux au sens de l’inclusion, c’est-à-direqu’on ne peut pas leur rajouter un sommet sans perdre la propriétéde stabilité interne. De plus, l’e.s.i A,C,D est maximal au sens ducardinal, c’est à dire qu’il n’existe pas d’e.s.i dans ce graphe qui contienneplus de trois sommets. Ce nombre est le nombre de stabilité internedu graphe.

Définition 9.1.2 (Stabilité externe) Soit un graphe orientéG = (X,Γ) ; un ensemble E ⊂ X est dit stable (e.s.e. en abrégé), ouabsorbant si, et seulement si :

E ∪ Γ(E) = X.

C’est à dire que : ∀xi 6∈ E ∃xj ∈ E : (xj , xi) ∈ Γ . On note en généralE l’ensemble des e.s.e. d’un graphe. On peut remarquer que E n’est jamaisvide puisque X est toujours un e.s.e.. De plus, dans un graphe connexe,tout complémentaire d’un e.s.i. est aussi un e.s.e..La réunion de deux e.s.e. d’un même graphe est encore un e.s.e. ; parconséquent, E muni de la relation d’inclusion est un sup-demi-treillis.Les éléments minimaux de ce sup-demi-treillis, notés ici e.s.e.m. sontdéfinis par le fait qu’aucun de leurs sous-ensembles stricts n’est un e.s.e..Le cardinal minimal pour un e.s.e.m. fournit le nombre de stabilité externe,appelé aussi nombre d’absorption du graphe considéré. Pour un grapheG, on le note : β(G). Le concept d’ensemble stable extérieurement esttrés important en théorie des graphes, il conduit au problème connusous la dénomination de problème du recouvrement 1. Dans un réseau parexemple, identifier un e.s.e.m. peut s’avérer crucial pour déterminer lesnoeuds stratégiques en cas de panne. En théorie des jeux le concept peuts’avérer fondamental (voir [Roy70] T.2, p.25).Les problèmes de recherche d’ensembles stables ou absorbants se posenten termes de minimisation de fonction booléennes.

1. Set covering problem en anglais.

Page 132: livre.pdf

108 Complexité et Algorithmique avancée

9.1.4 Ensembles absorbants et nombre d’absorption

Soit G = (S,Γ) un graphe, S étant l’ensemble des sommets et Γcelui des arcs, P est dit absorbant [Ber58, Ber69] ou stable [Roy70] si etseulement si :

∀si ∈ S; si ∪ Γ(si) ∩ P 6= ∅ (9.1)

Si A = (ai,j) est la matrice booléenne associe à G, et si on associe auxsommets si de S les variables booléennes xi, la condition 9.1 nous indiquequ’un ensemble absorbant (i.e. stable extérieurement) doit, soit contenirsi soit au moins un de ses descendants. Donc, dans l’expression booléennede P, l’expression xi ∨

∨j ai,j ∧ xj =

∨j ai,j ∧ xj doit prendre la valeur 1

quelque soit xi.On peut donc ré-écrire la condition 9.1 sous forme d’équation booléenne :

Cp ≡∧i

∨jai,j ∧ xi = 1 (9.2)

La solution de cette équation booléenne 9.2 donne tous les ensemblesstables extérieurement (i.e. absorbants). Le nombre d’absorption estalors :

β(G) = min | P |

qui est la valeur du cardinal minimal d’un ensemble stable de G. (d’après[Lav74]) qui est aussi le plus petit cardinal de couverture. Ainsi, leproblème de la recherche des ensembles stables d’un graphe peut-il êtreposé sous forme de minimisation d’une fonction booléenne et donc sousune forme standard sur laquelle nous reviendrons et qui est centrale enthéorie de la complexité, à savoir le problème dit de satisfiabilité ouencore SAT.

Exemple 9.1.1 Soit un graphe G (voir figure 9.3) de matrice booléenneassociée :

Page 133: livre.pdf

Chapitre 9. Quelques problèmes de référence 109

112

1

31

41

51

61

71

X1 X2 X3 X4 X5 X6 X7_________________1 0 0 0 0 0 01 1 0 0 0 0 01 0 1 0 1 0 10 1 0 1 1 0 00 1 0 0 1 0 00 1 0 0 0 1 10 0 0 0 1 0 1

A =

P ensemble stable minimal de cardinalminimal!: P = 1,2,5

G

Figure 9.3 – Ensemble absorbant

9.2 Existence de chemin

Soit un graphe G = (X,Γ), |X| ∈ N et Γ ⊆ X×X. Un élément x ∈ Xest appelé un sommet et (xi, xj) ∈ Γ un arc. Un couple de sommets(xa, xb) étant donné, la question est : existe-t-il un chemin d’origine xaet d’extrémité xb ?Comme nombre de problèmes, il y a une grande quantité d’instancespossibles à ce problème, c’est-à-dire en fait de façons de poser le problèmelui même. Nous serons amenés à distinguer entre instances génériqueset instances particulières pour un problème donné, l’une décrivant uneclasse de problèmes, l’autre un élément de la classe.

G = (X,Γ), |X| ∈ N et Γ ⊆ X×X , existe-t-il un chemin de xi à xj ?est une instance générique ; alors que

Page 134: livre.pdf

110 Complexité et Algorithmique avancée

S

P

A B

C

D

E

FG

Figure 9.4 – Existence de chemin entre deux sommets

X = A,B,C,D,E,F,G,S,P ;Γ = (A,C); (A, S); (B,A); (B,P); (C,B); (C,D); (C,E); (D,E);(D,G); (E,A); (F,E); (F,G); (P,D); (S,F); (S,G), et existe-t-il un cheminde S à P ? est une instance particulière et caractérise le problème sur legraphe de la figure 9.4 :

Chaque instance, générique ou particulière est un objet mathéma-tique (ici un graphe et deux de ses sommets) sur lequel on pose unequestion à laquelle on espère une réponse. La forme prise par la questioncaractérise le problème. On remarquera que le problème précédent poseune question dont la réponse est soit oui, soit non. De tels problèmes,à réponse oui, non seront par la suite appelés problèmes de décision .Nous verrons que cette forme est très riche et a joué un rôle central dansl’élaboration de la théorie.

Page 135: livre.pdf

Chapitre 9. Quelques problèmes de référence 111

Notre propos est de nous intéresser aux algorithmes qui résolvent ceproblème. Dans le chapitre suivant, nous reviendrons sur le concept demachine de Turing, modèle formel, permettant à la fois de préciser lesconcepts de problème et d’algorithme, d’exprimer ceux-ci et d’en mettreen évidence quelques propriétés permettant de les comparer à une aunecommune.

L’algorithme le plus classique pour résoudre notre problème d’exis-tence est connu sous le nom d’algorithme de recherche, ou algorithmeglouton . La forme la plus élémentaire en est la suivante :On maintient une structure de données qui est un ensemble de sommetsS, vide au début ; on a alors S = ∅. Chaque sommet peut se trouver dansun des deux états, marqué ou non marqué .À chaque étape de l’algorithme, si un sommet est non marqué, celasignifie qu’il n’a jamais fait partie de S. À chaque itération, on choisitun sommet i ∈ S et on considère un sommet j ∈ X non marqué tel que(i, j) ∈ Γ et j 6∈ S. On marque alors j, et on inclut j dans S puis on enexclut i si et seulement si ∀x ∈ Γ+i;x ∈ S. On continue jusqu’à cequ’on ait de nouveau S = ∅. Lorsque l’arrêt de l’algorithme a lieu, on aS = ∅, alors si xj est marqué, la réponse est oui ; sinon elle est non.

Au départ, on initialise l’algorithme en marquant xi et en l’incluantdans S. Exprimé ainsi, il s’agit d’un principe algorithmique, sans plus.Il conviendrait ici de préciser la forme sous laquelle sont présentées lesdonnées d’une part, les structures de données utilisées d’autre part pourreprésenter les données intermédiaires comme l’ensemble S, pile, file, tas...D’autres aspects de spécification sont laissés dans l’ombre comme la façond’opérer le choix d’un élément dans S par exemple. S’il s’agit d’une pile,comme dans l’exemple de spécification ci-dessus, on utilise une méthodedite en profondeur d’abord, inspirée de l’algorithme de Trémaux, si lastructuration de S est une file, on obtient un parcours dit en largeur quinous assure, si y est marqué que c’est par le plus court chemin au sens dunombre d’arcs. D’autres structures de données comme le Tas, ou d’autrescritères de choix d’un élément de S (aléatoire par exemple) peuventêtre utilisés. Ainsi les performances de l’algorithme dépendent-elles denombreux éléments. On peut remarquer qu’une première améliorationintuitive est d’ajouter un test de terminaison. Si on marque xj , il n’estplus nécessaire de continuer. C’est ce que nous avons ajouté dans laspécification sous forme de commentaire à la ligne 18 bis.

Page 136: livre.pdf

112 Complexité et Algorithmique avancée

----------------------------------------------------

Algorithme glouton à pile:

----------------------------------------------------01 Procedure Exist(succ: GrapheSuc; n: entier; x,y:Sommet);02 var03 pile: pile;04 x, y, xx : Sommet;05 i, j, n, d: entier;06 successeurs : tableau(n):entier;07 mark : tableau(n), booléen;08 begin/* initialisation de la pile /*09 empiler(x,pile);10 mark(x) := 1;/* parcours "en profondeur d’abord" /*11 tantque pile <> vide12 xx:= sommet(pile);13 dépiler(sommet(pile));14 d := deg(xx);15 pour i = 1 à d faire16 si mark(succ(xx,i)) = 0 alors17 empiler(succ(xx,i)), pile);18 mark(succ(xx,i)) := 1/* 18 bis /* si mark(y) = 1 alors print "oui" stop /*19 finsi20 finpour21 fintantque22 si mark(y) =1 alors imprimer "oui"23 sinon imprimer "non"24 finsi25 end Exist----------------------------------------------------

Page 137: livre.pdf

Chapitre 9. Quelques problèmes de référence 113

9.2.1 Complexité

Si on s’intéresse au nombre d’opérations élémentaires nécessaires àl’exécution de cet algorithme, plusieurs cas peuvent se présenter.

Dans la version "basique" ci-dessus de l’algorithme, on marque en faittous les sommets atteignables à partir de x. On obtient une arborescencede racine x qui est l’arborescence de Trémaux. Si y est un des sommetsde l’arborescence, alors il est marqué et la réponse à l’algorithme est"oui" comme nous l’avons vu.

Dans le meilleur des cas, l’arborescence est de hauteur 1 et se réduità un arc, y est directement successeur de x et est le seul ! Dans ce cas,le nombre d’opérations élémentaires effectuées par l’algorithme est uneconstante arithmétique (i.e. un nombre entier).

Dans le pire des cas, tous les sommets du graphe sont dans l’arbo-rescence de trémaux, donc il existe des chemins d’origine x permettantd’atteindre tous les sommets du graphe. Le nombre d’opérations élémen-taires est de l’ordre de n2. En effet, pour chaque sommet inclus dansla pile, il faut tester tous ses successeurs pour savoir lequel est marquéet lequel ne l’est pas, en fait il faut donc s’intéresser à tous les arcs dugraphe, soit n2 arcs.

On pourraît penser que l’adjonction de la ligne de code 18 bis amé-liorerait les choses. Il n’en est rien du point de vue fondamental. En effet,la théorie de la complexité raisonne en "pire des cas" et le pire des casreste le même avec ou sans cette instruction. Par contre, "en moyenne 1"cette instruction est censée améliorer les performances de l’algorithme.

9.3 Flot maximal

Notre deuxième problème type est le problème dit du flot maximal,bien connu, et pour la résolution duquel on dispose du théorème fon-damental dû à Ford et Fulkerson [FF62] sur lequel tous les algorithmesde flot sont basés, le théorème dit Flot-max = Coupe min, et qui ontdonné le premier algorithme (malheureusement de complexité minimaleO(n5) et [Din70] qui donne le meilleur algorithme connu (en O(n2,5)) ;

1. Là, on soulève un autre problème qui est : qu’est-ce que la moyenne dans cecas ? Les notions de cas moyen ou moyenne des cas ou graphe aléatoire sont loin d’êtreévidentes.

Page 138: livre.pdf

114 Complexité et Algorithmique avancée

voir aussi [GTT89] pour une revue des algorithmes de flot. Le problèmes’énonce comme suit :

On donne un graphe avec capacités G = (X,Γ, s, p,C), graphe danslequel, X est l’ensemble fini des sommets, |X| ∈ N∗ , Γ ⊂ X×X, s ∈ X,p ∈ X, C : Γ → N∗ ; où c(i, j) ∈ C est un entier positif non nul associéà un arc (on peut toujours se ramener au cas entier) et appelé capacitéde l’arc (i, j). Les deux sommets s et p sont deux sommets privilégiés, sétant appelé source, et p étant appelé puits. Un tel graphe est appeléréseau de transport. Le problème est de faire passer un flot F maximalde s à p en respectant les contraintes de capacité dans un graphe dutype de celui de la figure 9.5, c’est-à-dire tel que pour chaque arc on ait :c(i, j) ≥ f(i, j) et que :

Maxf(p, s) : ∀i ∈ X;∑j

f(j, i) =∑k

f(i, k); (9.3)

Sous cette forme, le problème FLOT MAX n’est pas un problèmede décision, c’est un problème dit d’optimisation que nous noteronsdésormais FLOT MAX_O .

Plus généralement, ce type de problème dans lequel il s’agit de maxi-miser ou minimiser une fonction est appelé aussi problème d’optimisation.Sa forme générale est la suivante :

Problème d’optimisation : [Max ou Min f(x)]A.g(X) ≤ (≥) B

X ∈ E (E ensemble sur lequel X prend ses valeurs)

Trouver la valeur X = x1, x2, . . . , xn permettant de maximiser (respec-tivement minimiser) la fonction f sous les contraintes représentées parla matrice A et le vecteur B.

Par exemple, lorsque f , et les contraintes sont linéaires comme g(X)telle que : (g(X) = x1, x2, . . . , xn, ), il s’agit d’un problème dit deprogrammation linéaire dont le premier algorithme de résolution, connuaujourd’hui sous le nom de simplexe, est dû à Kantorovitch et Tolstoï en1939, [Kan60, Tol39] reformulé en 1954 par Dantzig qui lui a donné lenom de simplexe. Toutefois, l’utilisation de l’algorithme du simplexe pourrésoudre un problème de flot à contraintes linéaires s’avère extrêmement

Page 139: livre.pdf

Chapitre 9. Quelques problèmes de référence 115

décevant en termes de performances, précisément pour des problèmesde complexité dus à la nature profonde de l’algorithme du simplexe.C’est pourquoi on a élaboré des algorithmes spécifiques. On verra par lasuite comment transformer tout problème d’optimisation en problèmede décision.

Toutefois, ici, on peut poser le problème FLOT MAX_O sous formede problème de décision de la façon suivante :

Pour le réseau G, on pose la question : Existe-t-il un flot de valeursupérieure à V par exemple, et la réponse attendue ne peut être queoui ou non. Nous noterons désormais cette formulation du problème parFLOT MAX_D. Souvenons nous ici que la seule chose qui nous intéressepar rapport aux algorithmes que nous étudions, c’est leur complexité, etplus particulièrement le temps de calcul 1 qu’ils induisent. De ce pointde vue, mais de ce point de vue seulement, FLOT MAX_D et FLOTMAX_O sont équivalents.

s

a

b

c

d

e

g l

k

h

f

p

6

8

14

4

6

2

5

1 7

3

8

2

8

2

9

1 6

7

11 4

9

2

3 9

8

6

12

Source Puit

Graphe avec capacités : réseau de transport

Figure 9.5 – Exemple de graphe avec capacités

1. Nous verrons plus loin à quelle aune mesurer ce temps.

Page 140: livre.pdf

116 Complexité et Algorithmique avancée

Par ailleurs, il y a souvent de fortes analogies entre les problèmes.Ainsi, ici, l’algorithme de Ford-Fulkerson fait appel au problème précédent,celui de l’existence de chemin.

En effet, dans l’algorithme de Ford-Fulkerson, on utilise le conceptde chaîne améliorante. (. . .) étant donné un flot F sur un graphe aveccapacités G = (X,Γ, s, p,C), on considère le graphe G∗ = (X,Γ∗, s, p,C∗)dit d’écart construit comme suit :

c(i, j)− f(i, j) > 0 =⇒ (i, j) ∈ Γ∗, (j, i) ∈ Γ∗

et

c∗(i, j) = c(i, j)− f(i, j) et c∗(j, i) = f(i, j)

c(i, j)− f(i, j) = 0 =⇒ (j, i) ∈ Γ∗ et c∗(j, i)= f(i, j) et (i, j) 6∈ Γ∗

Lorsqu’on a comme ci-dessus l’égalité c(i, j)− f(i, j) = 0 (c’est-à-direque le flux qui traverse l’arc (i, j) du graphe est égal à la capacité duditarc) l’arc (i, j) de G est alors dit saturé.

Dire si F est maximal, c’est déterminer s’il existe une chaîne amé-liorante dans G, c’est-à-dire s’il existe un chemin de s à p dans G∗, cequi est notre premier problème de référence. De plus, on sait que c’est enconstruisant le chemin de nombre d’arcs minimal sur G∗ qu’on obtientles meilleures performances en temps pour l’algorithme, on utilise doncun parcours en largeur.

9.4 Couplage dans un graphe biparti

Ce problème, simple à poser, est central, comme les autres problèmesévoqués ici. Il a donné lieu à une abondante littérature, c’est un casparticulier d’un problème plus général connu sous le nom de Problèmedu recouvrement minimal (voir [Lav74] par exemple).

Un graphe biparti se définit comme suit :Soit un graphe B = (U,V,A). U et V sont des ensembles de sommets,

et A l’ensemble des arcs d’origine dans U et d’extrémité dans V. Il n’y apas d’arcs d’extrémité dans U, ni d’arc d’origine dans V.

Page 141: livre.pdf

Chapitre 9. Quelques problèmes de référence 117

U = u1, u2, . . . , un,V = v1, v2, . . . , vn; A ⊆ U×VLes graphes bipartis dont il est question ici sont tels que les deux

ensembles de sommets contiennent le même nombre d’éléments. Uncouplage (on dit aussi parfois couplage parfait) dans un tel graphe estun ensemble C ⊆ A comprenant n arcs tels que, pour tout couple(x, y); (x′, y′) d’arcs de C, on ait x 6= x′, et y 6= y′. Dans le couplage, iln’y a pas deux arêtes adjacentes à un même sommet.

Le problème du couplage s’énonce comme suit :Etant donné un graphe biparti B = (U,V,A), existe-t-il un couplage

contenant n arcs (|U| = |V| = n) ? C’est-à-dire un couplage tel que toutsommet soit extrémité d’une arête et d’une seule.

Un problème qui s’en déduit immédiatement est le problème dit ducouplage maximal lorsque on a |U| 6= |V|. (voir des algorithmes pourrésoudre ce problème en [HK73], [Lav74]).

sans couplage possible avec couplage possible

Graphes bipartis

Figure 9.6 – Graphes bipartis avec et sans possibilité de couplage

Page 142: livre.pdf

118 Complexité et Algorithmique avancée

9.5 La satisfiabilité

Il s’agit là d’un problème qui va être décisif dans notre étude ultérieureet qui est étroitement lié à celui du couplage. Par ailleurs, il ne s’agit passpécialement d’un «cas d’école», ce problème a de nombreuses applicationsconcrètes dont la moindre est la minimisation du nombre de composantsélectroniques de base dans un processeur, ce qui est d’une importancecapitale pour toute l’industrie informatique.

Le problème se pose comme suit :Soit S = s1, s2, . . . , sn un ensemble de variables booléennes,

si ∈ vrai, faux; i ∈ 1, ..., n .Une forme conjonctive d’une fonction booléenne serait alors :

(si ∨ . . . ∨ sj) ∧ . . . ∧ (sk ∨ . . . ∨ sl) avec i, j, k, l ∈ 1, . . . , n

Le problème de la satisfiabilité consiste à trouver une assignationde valeurs vrai ; faux aux variables booléennes de telle sorte que lavaleur de la fonction f soit vrai

9.5.1 Une technique algorithmique : la réduction

Une technique très féconde en algorithmique, et plus généralementen mathématique est de transformer un problème qu’on ne sait pasrésoudre en un autre, qu’on sait résoudre. Cette technique a donné lieuen algorithmique à ce qu’on nomme la réduction.

On peut en donner un exemple avec le problème du couplage. Étantdonné un graphe biparti B = (U,V,A), on peut construire un graphe deflot R = (X,Γ) tel que représenté sur la figure 9.7.

Le lecteur vérifiera facilement qu’alors, chercher un couplage (éventuelle-ment maximal) sur B revient à chercher un flot maximal sur R.

Un autre exemple, particulièrement significatif et qui nous servirapar la suite, consiste à poser un problème directement sous forme SAT.En fait, on verra dans la suite de l’ouvrage que la démarche consisteprécisément à tout ramener à SAT. Cela peut se faire parfois directement.

Page 143: livre.pdf

Chapitre 9. Quelques problèmes de référence 119

S P

Figure 9.7 – Transformation d’un problème de couplage en problèmede flot

Prenons par exemple le problème dit de la couverture d’un échiquier pardes chevaux, voir ([Lav74]). soit la configuration de la figure 9.8 :

X = s, p ∪U ∪V; Γ = (s, u) : u ∈ U ∪ (v, p) : v ∈ V ∪A

et dont toutes les capacités sont égales à l’unité.Le lecteur vérifiera facilement qu’alors, chercher un couplage (évent-

uellement maximal) sur B revient à chercher un flot maximal sur R.Un autre exemple, particulièrement significatif et qui nous servira

par la suite, consiste à poser un problème directement sous forme SAT.En fait, on verra dans la suite de l’ouvrage que la démarche consisteprécisément à tout ramener à SAT. Cela peut se faire parfois directement.Prenons par exemple le problème dit de la couverture d’un échiquier pardes chevaux, voir ([Lav74]). soit la configuration suivante :

Il s’agit alors de trouver ce qu’on nomme aussi une couverture mini-

Page 144: livre.pdf

120 Complexité et Algorithmique avancée

male de la fonction booléenne suivante :

fcheval = (a3 ∨ a5 ∨ b2 ∨ d2 ∨ e3 ∨ e5 ∨ d6 ∨ b6)∧(f2 ∨ g3) ∧ (h5 ∨ f5 ∨ e6 ∨ e8) ∧ · · · ∧ · · ·

Remarque 9.5.1 (Interprétations) On peut remarquer que cette écri-ture supporte deux interprétations symétriques l’une de l’autre. En effet,considérons ici la première clause (a3 ∨ a5 ∨ b2 ∨ d2 ∨ e3 ∨ e5 ∨ d6 ∨ b6)elle peut effectivement être interprétée comme représentant l’ensembledes cases de l’échiquier accessibles par le cheval placé en c4. Mais ellepeut également être interprétée comme étant l’ensemble des cases à partirdesquelles un cheval, placé en chacune d’elle peut atteindre la case c4.

Cette remarque montre comment poser directement un problème derecouvrement sous forme SAT. En effet, supposons un ensemble

E = e1, . . . , ei, . . . , en, n ∈ N ∗

P(E) l’ensemble des parties de E, S ⊂ P(E) famille de sous-ensemblesde E, avec S = s1, .., sj , .., sm.

On associe alors à chaque élément de E, ei, une clause Ci de SAT,soit Ci = (si1 ∨ · · · ∨ sik ∨ sip) telle que ∀sik ∈ Ci; ei ∈ sik . Ainsi, onassocie une clause à chaque élément de S. Le problème est alors

SATE = C1 ∧ · · · ∧ Ci ∧ · · · ∧ Cn. (9.4)

C’est-à-dire qu’il faut trouver une conjonction de variables booléennestelle que SAT = 1, ou dans le cas ci-dessus de la couverture de l’échiquierpar des chevaux, fcheval = 1. Qui plus est, dans le cas présent, il faudraitque cette conjonction contienne un minimum de variables auxquelles onaffecte la valeur 1 de façon à obtenir la couverture minimale de cardinalminimal de l’échiquier par des chevaux, ici en utilisant un minimum dechevaux.

9.6 Le voyageur de commerce

Il s’agit là d’un problème central en algorithmique qui représentel’archétype du problème pour lequel il n’existe pas jusqu’à présent,d’algorithme polynomial pour le résoudre et il y a tout lieu de penserqu’un tel algorithme n’existe pas (mais on ne sait pas le démontrer).

Page 145: livre.pdf

Chapitre 9. Quelques problèmes de référence 121

" 8 7 " " " 6 " " " " 5 4 " " 3 " " " 2 1 h g f e d c b a

Figure 9.8 – Transformation d’un problème d’échecs en termes derecouvrement ou FNC

Considérons donc le désormais classique problème du voyageur decommerce (VRP) . Les paramètres de ce problème consistent en unensemble fini de villes

C = c1, c1, . . . , cn

et pour chaque paire d’entre elles, la distance qui les sépare d(ci, cj).Une solution de ce problème est une permutation sur C,

< c(i), c(j), . . . , c(k) > des villes (un parcours de celles-ci) ou en termesde théorie des graphes, un cycle hamiltonien si le graphe est non orienté,un circuit hamiltonien s’il est orienté, sur le graphe G = (C,D), où

Page 146: livre.pdf

122 Complexité et Algorithmique avancée

C = c1, c2, . . . , cn et D est l’ensemble des routes reliant les villes (entermes de graphes, ce sont les arêtes ou les arcs). Cette solution doit enoutre minimiser la somme :

d(c(i), c(j)) + d(c(j), . . .) + . . .+ d(. . . , c(k)) + d(c(k), c(n)) + d(c(n), c(l)).

Exemple 9.6.1 La figure 9.9 illustre une instance particulière de ceproblème qui est :

C = c1, c2, c3, c4;d(c1, c2) = 10; d(c1, c3) = 5; d(c1, c4) = 9; d(c2, c4) = 9;

d(c2, c3) = 6; d(c3, c4) = 3.Pour cette instance, < c1, c2, c3, c4 > est une solution de valeur 28.

Dire qu’on a obtenu une solution réalisable de valeur 28 ne signifiepas pour autant qu’on ait résolu le problème. On ne sait pas si cettesolution est celle de longueur (ou de coût) minimale. Pour un problème àn villes, le nombre de solutions réalisables est (n−1)! et on ne connaît pasd’autre algorithme fournissant la solution exacte que celui qui consiste àtout énumérer, calculer à chaque fois la valeur associée à chaque circuitou cycle hamiltonien trouvé et conserver celui de valeur minimale. Si legraphe n’est pas orienté, il suffit d’énumérer 1

2(n− 1)! cycles.

C1

C3C4

C210

5

9

99

6

3

Figure 9.9 – Graphe pour une instance du problème du voyageur decommerce (V.R.P.)

Page 147: livre.pdf

Chapitre 9. Quelques problèmes de référence 123

On remarquera toutefois que si cet algorithme s’avère prohibitif en tempscalcul, ce n’est pas le cas en espace mémoire. Le stockage des donnéesnécessite au plus de l’ordre de a.n2 positions mémoire, a étant uneconstante multiplicative. L’exécution de l’algorithme proprement ditene nécessitant quand à elle que de l’ordre de n positions mémoire. Ils’agit ici, conformément à ce que nous avons vu ci- dessus, d’un problèmed’optimisation, nous noterons donc cet énoncé de problème, VRP_O.

Comme dans le cas du problème de flot maximal, on peut transformerce problème en problème dit de décision de la façon suivante :

Etant donnée une instance générique, c’est à dire un ensemble devilles C = c1, c2, . . . , cn , et une valeur numérique Max, existe t’il unepermutation de l’ensemble des villes < c(i), c(j), . . . , c(k) > (un parcoursde celles-ci) ou en termes de théorie des graphes, un cycle ou un circuithamiltonien sur le graphe G = (C,D), où C = c1, c2, . . . , cn et D estl’ensemble des routes reliant les villes entre elles (en termes de graphes,ce sont les arêtes). telle que l’on ait :

d(c(i), c(j)) + d(c(j), ..) + ..+ d(.., c(k)) + d(c(k), c(n)) + d(c(n), c(l)) > Max

La réponse là aussi ne peut être que oui ou non. Le problème ainsiposé sera noté, comme pour les flots, VRP_D.

Page 148: livre.pdf
Page 149: livre.pdf

Chapitre 10

Algorithme, résolution

Étant donnés des algorithmes pour résoudre un même problème,lequel est le meilleur, pourquoi et qu’est-ce que cela signifie ? Quelle

est la nature profonde du problème, a-t-on un espoir de trouver unalgorithme plus performant (i.e. de complexité moindre) que ceuxexistants ?

C’est ce à quoi nous allons essayer d’apporter des éléments de réponsedans ce qui suit. Nous allons essayer d’abord de voir sur quoi nouspouvons fonder notre jugement.

On est intéressé, étant donné un algorithme, à connaître une évalua-tion du temps nécessaire pour résoudre des problèmes de taille de plusen plus grande. Au lieu de raisonner en termes de temps, on peut aussi lefaire en termes d’espace. Plus généralement on parle alors de ressourcesnécessaires.

De même pour un problème donné, on est intéressé à savoir quelleest sa «nature profonde» en termes de complexité, c’est à dire savoirsi on a espoir un jour de pouvoir disposer d’un algorithme résolvant ceproblème, pour de « grandes tailles », « en un temps raisonnable ».

Plus généralement, on va se poser la question, pour une classe deproblèmes donnée, de savoir comment évolue la quantité de ressourcesnécessaires à sa résolution en fonction des tailles de problèmes traités,et ceci, pour un algorithme donné. A chaque problème, on associera unentier (ou plusieurs) appelé taille du problème qui est la mesure de laquantité minimale de données à fournir à l’algorithme considéré pourrésoudre le problème.

Page 150: livre.pdf

126 Complexité et Algorithmique avancée

Par exemple, la taille d’un problème de graphes peut-être le nombre nde sommets, ou le nombre m d’arêtes, ou encore le couple (n,m) lorsquem < n2. La taille d’un problème de multiplication de matrices peut-êtrela plus grande dimension des matrices multipliées, ou encore la tailledes nombres dans le cas de nombres réels, ou les deux. La mesure du«temps d’exécution» d’un algorithme exprimé en fonction de la tailled’un problème est appelée complexité en temps du dit algorithme.

La limite de la fonction mesure ainsi formée, lorsque la taille duproblème tend vers l’infini, s’appelle complexité asymptotique en temps.On peut donner des définitions analogues pour la complexité en espace,et en espace, asymptotique.

10.1 Faire son choix

lorsqu’il s’agit d’écrire un programme, et donc élaborer unalgorithme, il faut se resituer dans le contexte. Le problème à résoudreest-il générique ? C’est-à-dire cet algorithme ou programme est-il appeléà servir une seule fois ou au contraire à résoudre de nombreux problèmeséquivalents, c’est-à-dire à traiter une classe de problèmes ? Si il s’agitd’un programme destiné à n’être utilisé qu’une seule fois et dans un casrelativement simple puis abandonné, on a intérêt à choisir l’algorithmele plus simple sans trop se préoccuper de ses performances (à conditionque la taille des données soit réduite). Par contre s’il s’agit d’un moduled’une chaîne de programmes qui est appelé à fonctionner longtemps et detrès nombreuses fois, être maintenu et remanié par différentes équipes, ils’agit alors d’y regarder à deux fois. Dans ce dernier cas on se posera lesproblèmes de simplicité et intelligibilité dudit programme. On se tourneradonc vers des algorithmes les plus simples possibles à efficacité égale. Onappliquera ici la règle des avionneurs qui disent "un bel avion vole bien".

Lorsqu’un programme est appelé à être exécuté souvent, on s’intéres-sera à son efficacité qui est liée à la complexité de l’algorithme sous-jacent,mais aussi qui dépend de la complexité du problème à résoudre. Horsles problèmes propres à la programmation, lesquels sont liés au systèmeinformatique sur lequel est implémenté le programme, l’efficacité se réduità la complexité de l’algorithme et comporte en général deux paramètres :

1. le temps ;2. l’espace.

Page 151: livre.pdf

Chapitre 10. Algorithme, résolution 127

Il faut ici faire attention au fait qu’on parle bien de complexité del’algorithme et non de l’efficacité du programme. En effet cette dernière,l’efficacité du programme, est fonction de l’habileté du programmeur,de la configuration du système sur lequel le programme est implémenté(réseau, ordinateur parallèle, machine simple...). Ainsi, le fait d’avoir àutiliser des mémoires annexes comme des disques ou à gérer des échangesde messages peut influer sur l’efficacité d’un programme.

Mais quoiqu’on fasse, quelle que soit l’habilité du programmeur ou,comme nous l’allons voir quelle que soit la rapidité de la machine, c’est lacomplexité du problème qui est déterminante. Le meilleur programmeurcodant le meilleur algorithme pour un problème, ne pourra obtenir, dansle cas général, un programme d’une efficacité supérieure à la complexitédu problème.

Il s’agit donc ici de pouvoir comparer les algorithmes entre eux, etsuivant la spécificité des problèmes à résoudre et de la taille des données,choisir la solution la plus efficace.

10.2 Pourquoi la complexité ?

C’est la complexité intrinsèque d’un algorithme ou d’un problèmequi est déterminante, et non comme on pourrait le penser en premièreapproche, la rapidité de la machine sur laquelle il est exécuté, ou l’espacemémoire dont elle dispose.

Si un algorithme «exécute» un problème de taille n en un temps c.n2

pour une constante c, nous dirons alors que la complexité en temps decet algorithme est O(n2).

Plus précisément, une fonction g(n) est dite en O(f(n)) s’il existeune constante c telle que 1 :

|g(n)||f(n)| ≤ c, ∀n ∈ N∗

On pourrait penser que le facteur déterminant dans la taille desproblèmes traités sur ordinateur est la vitesse des dits ordinateurs, eten particulier que l’énorme accroissement de vitesse dû aux progrèstechnologiques est déterminant en la matière.

1. On trouvera en annexe les définitions précises des notations de Bachmann &Landau.

Page 152: livre.pdf

128 Complexité et Algorithmique avancée

En fait il n’en est rien, ou relativement peu de choses. La coursetechnologique à la vitesse des machines paraît dérisoire à côté de certainsproblèmes, dont nous allons traiter. Ce n’est pas la technologie quipermettra de résoudre les problèmes aux tailles dont nous avons besoin,l’avancée décisive viendra des méthodes de résolution, des algorithmes(ou peut-être aussi de la façon de poser les problèmes). En dernier ressort,ce qui est déterminant c’est la complexité de l’algorithme utilisé.

Une amélioration notable viendrait du dépassement du modèlethéorique d’ordinateur, c’est-à-dire de l’automate déterministe de Markovou de la machine de Turing. Une avancée décisive aussi et qui relanceraitnotablement la recherche serait la mise en évidence d’un algorithme derésolution en temps polynomial du problème SAT, nous y reviendrons.

Supposons que nous disposions des six algorithmes A1,A2, . . . ,A6avec les complexités en temps suivantes :

Algorithme Complexité en temps

A1 n

A2 n logn

A3 n2

A4 n3

A5 2n

A6 n!

La complexité en temps étant mesurée ici par un nombre d’unités detemps nécessaires pour exécuter l’algorithme sur une donnée de taille n.

Supposons, pour fixer les idées, que l’unité de temps soit ici lamilliseconde, l’algorithme A1 peut, en une seconde, effectuer un calculsur une donnée de taille 1000, alors que dans le même laps de temps,l’algorithme A5 ne pourra dépasser la taille 9. Le tableau ci-dessous donneles tailles des problèmes d’une même classe qui peuvent être résolus enune seconde, une minute et une heure par chacun des six algorithmesdéjà évoqués :

Page 153: livre.pdf

Chapitre 10. Algorithme, résolution 129

Algorithme Complexité Taille maximale du problème traitée

en temps 1 seconde 1 minute 1 heure

A1 n 1000 60 ∗ 1000 3, 6 ∗ 106

A2 n logn 140 4893 2 ∗ 105

A3 n2 31 244 1897

A4 n3 10 39 153

A5 2n 9 15 21

A6 n! 6 8 10

On remarque, si on veut comparer par rapport à une taille fixe pourune donnée de problème, que pour une donnée de taille 20 par exemple,cela signifie en temps pour les six algorithmes :

Pour A1 0, 02 secondes

A2 0, 32 secondes

A3 0, 4 secondes

A4 8 secondes

A5 1048, 576 secondes, soit 17’ 28” 576

A6 environ 263 ∗ 1015 secondes, environ 3 ∗ 1012 jours,

soit encore environ 8 ∗ 109 années !Une complexité de ce dernier type n’a rien d’une absurdité. Ainsi,

si on veut résoudre un programme linéaire par énumération exhaustivede tous les sommets du polytope des contraintes, on a un algorithmede complexité en temps O(n!). On saisit de suite les limites d’un telalgorithme, même avec des machines un million de fois plus rapides.Rappelons pour mémoire que le plus grand programme linéaire traitéà ce jour 1 représente une donnée de plus de 9.1010 variables (i.e. unematrice de taille 300.000× 300.000).

On peut aussi relativiser les progrès de la technique. Posons-nous eneffet la question :

quel est l’impact de l’accroissement de la puissance des ordinateurs,

1. En 2000.

Page 154: livre.pdf

130 Complexité et Algorithmique avancée

sur les tailles d’un problème donné pour un algorithme donné exécuté enun temps donné ?

Le tableau ci-dessous donne un aperçu de la réponse. Ainsi pour desinstances T1,T2,T3,T4 traitées toutes en un même temps de base, donnéet des algorithmes de complexités données, on aurait les résultats suivantspermettant d’apprécier, en fonction de la puissance des ordinateurs,mesurée en vitesse de calcul, les augmentations de tailles auquelles onpeut prétendre.

Taille maximale du problème traitéComplexité

en temps 100 fois plus 1000 fois plusde base rapide rapide

O(n) T1 100× T1 1000× T1

O(n2) T2 10× T2 31× T2

O(2n) T3 T3 + 6 T3 + 9

O(n!) T4 T4 + 1 T4 + 1

C’est aussi en cela que l’informatique est une science et non un conglo-mérat de techniques comme pourrait le laisser penser le terme américaincomputer science lequel, traduit en français signifierait «science du cal-culateur» ce qui, répétons le, en français, n’a pas de sens, la science d’uninstrument n’étant pas un concept pertinent.

10.3 Interpréter la complexité

Attention toutefois à ce qui précède. Dire qu’un algorithme est enO(n), et un autre en O(n2) pour un même problème, ou en O(2n), nesignifie pas que dans tous les cas, il faille utiliser l’algorithme en O(n) depréférence à celui en O(n2), ni ce dernier de préférence à celui en O(2n).En fait, tout dépend du coefficient de proportionnalité, et de la taille duproblème à traiter, comme nous l’avons fait remarquer au début. Ainsi,si on a un algorithme en O(1000.n), un autre en O(10.n2) et un autreen O(1.2n), alors ce dernier est meilleur pour les tailles de problèmescomprises entre 2 et 9, l’algorithme en O(10.n2) est meilleur pour les

Page 155: livre.pdf

Chapitre 10. Algorithme, résolution 131

problèmes dont la taille est comprise entre 10 et 100 (bornes incluses),et l’algorithme en O(1000.n) est meilleur en temps pour tout problèmede taille supérieure à cent.

10.4 Des mots

Le temps est venu d’essayer de préciser le vocabulaire employé.Malheureusement, on ne peut définir les mots qu’avec des mots, eton est donc confronté à la base minimale admissible pour communiquer.Nous n’entrerons donc pas dans le jeu formel qui consiste à tout définiren détail, nous donnerons les acceptions et définitions des mots clésemployés. Remarquons toutefois que les mots peuvent donner du grain àmoudre, Mot est en effet le dieu de la moisson au XI ème siècle avantnotre ère chez les phéniciens.

10.4.1 Problème, instance, solution

Nous appellerons problème une question possédant différentsparamètres, ou variables libres, dont les valeurs ne sont pas spécifiées.

Un problème est décrit par la donnée de :– une description générale de tous ses paramètres ;– les contraintes auxquelles doit satisfaire la réponse à la question,c’est-à-dire la solution du problème.

La donnée d’un ensemble de valeurs des paramètres du problème seraappelée une instance particulière du problème, et la description formelledes paramètres une instance générique.

10.4.2 Algorithme

En première approche, nous dirons qu’un algorithme est une pro-cédure pas à pas, séquentielle dans le temps, permettant de résoudreun problème. Pour en avoir une idée plus concrète, on peut imaginerun algorithme comme un programme d’ordinateur écrit en un langageprécis sur la sémantique duquel tout le monde serait d’accord, en faitune Machine de Turing.

Un algorithme est dit résolvant un problème Π si, cet algorithmeétant appliqué à une instance particulière I de Π, il fournit la (ou une)solution de Π , et si cela reste vrai pour toute instance particulière I de

Page 156: livre.pdf

132 Complexité et Algorithmique avancée

Π. En fait, on nuancera le jugement suivant que la solution est fournieen un temps fini ou non.

10.4.3 Taille d’une instance

On parle souvent de la taille des données d’un problème, ou de lataille d’une instance, d’une façon informelle. Ainsi, pour le problème duvoyageur de commerce (désormais V.R.P.) 1, (voir 9.6 et la figure 9.9),on parlera d’une donnée de taille 4 (i.e. le nombre de villes) alors qu’unV.R.P. nécessite la donnée de n villes, puis de n(n−1)

2 nombres donnant lesdistances entre les villes. De plus, la taille de ces nombres elle même peutentrer dans la mesure de la taille des données, et que dire des nombrestranscendants lorsque le problème en traite ? En fait, il existe différentesfaçons de décrire les données d’un même problème. Ce qui est important,c’est que ces différentes façons de faire soient polynomialement liées entreelles, c’est à dire que le passage d’une façon de faire f1 induisant unetaille de données t1 à une autre façon de faire f2 induisant une taille t2n’entraîne qu’une variation de taille polynomiale, c’est à dire que :

t1 = a1(t2)q + a2(t2)q−1 + . . .+ aq+1;ai ∈ R et i = 1, 2, . . . , q + 1, q ∈ N∗.

On peut écrire toutes ces données d’une manière unique, sur unmodèle unique, la Machine de Turing Universelle comme étudié auchapitre 4 page 39 (voir aussi [Tra63] et [Tur36]) et utilisant un alphabetpermettant de coder instances, solutions, algorithmes et utilisant les deuxseuls symboles 0 et 1.

10.5 Fonction de complexité en temps

La fonction de complexité en temps pour un algorithme exprimele nombre d’unités de temps nécessaires pour chaque taille d’instancedonnée, pour produire la solution du problème dans le pire des cas (nousreviendrons sur ce dernier aspect.)

1. V.R.P. signifie : Voyageur Représentant Placier, ce qui est la dénominationofficielle du voyageur de commerce.

Page 157: livre.pdf

Chapitre 10. Algorithme, résolution 133

Bien sûr, il ne s’agit là que de généralités tant que l’on n’a pasdéfini plus précisément ce qu’est un algorithme, comment sont codées lesinstances d’un problème, et les résultats de l’application de l’algorithmeaux dites instances.

Il existe plusieurs modèles, RAM (Randomized Access Memory 1),Machine de Turing et automates (voir [Mar54] & [Tur36]). Historique-ment, c’est la Machine de Turing qui est le modèle théorique ayantpermis de refonder le concept d’algorithme et qui fournit le paradigmede l’informatique. Ce concept a permis à Burk, Goldstine, Neumann auxUSA (voir [BGN46]), à Lebedev [Leb51] et Trathenbrot [Tra63] en URSSde concevoir et construire les premiers ordinateurs dont sont issus tousnos ordinateurs séquentiels modernes. Il faut noter tout de même qu’enFrance, une note envoyée par Louis Couffignal à l’Académie des Sciences,en 1930, est consacrée à une nouvelle machine à calculer. En 1932, ildonne au Collège de France une conférence sur les "machines à calculer,leur principe et leur avenir". En 1936, paraît la note décisive sur "l’em-ploi de la numération binaire dans la machine à calculer". L’innovationn‘est pas des moindres puisque c’est là la préfiguration des ordinateurs.L’ensemble de ces résultats a été réuni dans sa thèse de doctorat d’étaten 1938 [Cou38], indépendamment des travaux de Markov et Turing.

10.6 Problèmes de décision, langages, codage

10.6.1 Problème de décision

La théorie de la complexité des algorithmes et des problèmes a étéconçue en premier lieu pour les problèmes de décision. Il s’agit d’uneforme standard qui permet de considérer une forme unique de problème.

On appelle problème de décision un problème dont la solution est ouiou (exclusif) non.

Formellement, un problème de décision Π consiste simplement en unensemble d’instances DΠ et en un ensemble YΠ ∈ DΠ d’instances-oui(c’est à dire d’instances pour lesquelles la réponse au problème de décision

1. Attention, une traduction littérale pourrait faire penser qu’il s’agit de mémoiresà accès aléatoire. Ce qui ne veut rien dire, en fait cela signifie seulement qu’à uninstant donné, un observateur extérieur ne peut dire si l’accès à la mémoire concerneune lecture ou une écriture, c’est-à-dire que ce type de mémoire est à accès libre,direct, contrairement aux mémoires de type ROM où à une bande par exemple.

Page 158: livre.pdf

134 Complexité et Algorithmique avancée

-la solution- est oui). Evidemment, tout problème ne possède pas a prioriune structure de problème de décision, mais on peut toujours s’y ramener,et nous allons voir comment.

Le format standard utilisé pour spécifier les problèmes est constituéde deux parties :

– la première partie spécifie une instance générique du problème entermes d’ensembles, de graphes, de fonctions ... ;

– la deuxième partie pose une question dont la réponse ne peut êtreque oui ou (exclusif) non, en les termes de l’instance générique,et sur cette instance.

La façon dont sont spécifiés YΠ et DΠ doit être claire. Une instanceappartient à DΠ si et seulement si elle peut être obtenue à partir de l’ins-tance générique par substitution de types aux composantes génériques,et l’instance appartient à YΠ si et seulement si la réponse à la questionposée pour l’instance particulière considérée est « oui ».

Exemple 10.6.1 Le problème de décision lié au V.R.P. peut être décritcomme suit :

instance générique : C = c1, c2, . . . , cn;n ∈ N∗ ensemble des villes,une distance d(cii, cj) ∈ N∗ pour toute paire de villes, et une borneB ∈ N∗ .

question : Existe-t-il un cycle hamiltonien des villes de C, ayant unelongueur totale inférieure ou égale à B ; c’est à dire une permutation< c(1), c(1), . . . , c(1) > des villes telle que :

d(c(i), c(j)) + d(c(i), ) + . . .+ d( , c(k)) + d(c(k), c(n)) + d(c(n), c(l)) ≤ B?

10.6.2 Langage

La raison principale de la restriction de la théorie aux problèmes dedécision tient à ce qu’ils ont une forme « naturelle » qui est pratique pourune étude mathématique précise. Cette forme est appelée un langage,terme que nous définissons comme suit :

Définition 10.6.1 Pour un ensemble fini de symboles, Σ, nous notonsΣ∗ l’ensemble de toutes les chaînes finies de symboles de Σ. Par exemple,pour Σ = 0, 1, alors Σ∗ est constitué de la chaîne vide « ε » (on utiliseaussi Λ), des chaînes 0, 1, 00, 01, 10, 11, 000, 001, 010, 1000, . . ., et de

Page 159: livre.pdf

Chapitre 10. Algorithme, résolution 135

toutes les autres chaînes finies de 0 et de 1. Si L est un sous ensemblede Σ∗, on dira que L est un Langage sur l’alphabet Σ.

Ainsi, 01, 001, 111, 1101010 est un langage sur 0, 1. Il en est demême pour la représentation binaire des entiers, et pour Σ∗ lui même.10.6.3 Codage

La liaison entre problème de décision et codage est due au schéma decodage qu’on utilise pour coder une instance d’un problème chaque foisqu’on veut faire un calcul sur cette instance.

Un schéma de codage (ou schème d’encodage) e pour un problème Πfournit une façon systématique de décrire toute instance particulière (i.e.non générique) de Π par une chaîne appropriée de symboles pris dans unalphabet fixé Σ.

De cette façon, le problème Π et le codage e pour Π partitionnentΣ∗ en trois classes de chaînes de caractères ;

– celles qui ne représentent pas des instances de Π ;– celles qui codent des instances de Π pour lesquelles la réponse estnon ;

– celles qui codent des instances de Π pour lesquelles la réponse estoui.

Ces trois classes de séquences de caractères constituent le langageassocié à Π et e, qui s’écrit :

L(Π, e) = x ∈ Σ∗ : Σ alphabet utilisé par e et xcodage par e d’une instance I ∈ YΠ.

La consistance de cette théorie formelle, appliquée aux problèmesde décision tient à ce que, si un résultat est consistant pour le langageL(Π, e), alors il l’est aussi pour le problème Π codé par e.

Définition 10.6.2 On appelle codage raisonnable tout codage quiinduit une taille de donnée qui est fonction polynomiale de la taille del’instance codée.

Cela signifie que pour un codage raisonnable e de Π , il existe deuxpolynômes P et P′ tels que si I ∈ DΠ et x une chaîne de symboles codantl’instance I de Π sur e, alors :

longueur(I) ≤ P(|x|) ;

Page 160: livre.pdf

136 Complexité et Algorithmique avancée

|x| représentant la longueur, exprimée en nombre de symboles, de x, et|x| ≤ P(longueur(I))

Remarque 10.6.1 En fait, les propriétés d’un algorithme ou d’unproblème sont indépendantes du codage raisonnable employé.

On en arrive là à un de nos buts, intermédiaire, propre à toute démarchethéorique, l’abstraction que nous justifions ici par cette remarque. Eneffet, cette remarque nous autorise désormais à parler des algorithmes etdes problèmes indépendamment de tout codage. La remarque signifiantque tout problème de décision possède une fonction de codage.

DΠ −→ Z+

qui est polynomialement liée à la longueur des données obtenue pourun schéma de codage raisonnable.

Cette abstraction va nous simplifier notablement la tâche car nousn’aurons pas, à chaque fois que nous évoquerons un problème, à revenirsur les formes prises par sa formulation et son codage ni aux propriétésde ceux-ci.

Page 161: livre.pdf

Quatrième partie

Les concepts fondamentauxde la complexité

Page 162: livre.pdf
Page 163: livre.pdf

Chapitre 11

Modèles de calcul, classesde complexité

11.1 La Machine de Turing comme modèle decalcul

La Machine de Turing, comme nous l’avons vu précédemment estle modèle de calcul le plus général. Il va nous permettre d’introduire

le concept de classe de complexité.On a vu (Cf. Chapitre 4 page 39) une présentation «naïve» des ma-

chines de Turing, la plus générale étant la Machine de Turing universelle.En fait, il en existe bien d’autres comme les machines de Turing à plu-sieurs rubans dont le concept permet d’inférer celui de calculateur, lesmachines «tout à droite» ou «tout à gauche», les machines de Turingalternantes, et certains auteurs introduisent le concept de machine deTuring non-déterministe 1.

Nous allons revenir maintenant sur ce concept de Machine de Turing,laissant de côté les «oiseaux rares» pour nous intéresser plus particuliè-rement aux machines de Turing universelles, ainsi qu’à ces machines àplusieurs rubans ci-dessus évoquées.

1. Nous nous contentons ici d’évoquer le fait que certains auteurs introduisent ceconcept. Pour la suite de notre exposé, ce concept n’est pas pertinent, nous verronsqu’on peut très bien s’en passer. Il est un principe en science qui consiste à n’introduirede nouveau concept que si l’absolue nécessité s’en fait sentir, ou si cela permet desimplifier de manière significative l’exposé, ce qui n’est pas le cas ici.

Page 164: livre.pdf

140 Complexité et Algorithmique avancée

Définition 11.1.1 Une Machine de Turing (désormais MT) à un rubanest un quintuplet

M =< Q,Σ, q0, t,F >

tel que :– Q = q0, . . . , qn, n ∈ N ∗ est un ensemble fini d’états (ou alphabet

intérieur) ; q0 étant l’état initial ; F ⊆ Q , F étant l’ensemble desétats finaux, c’est à dire pour un problème de décision :

F = qoui; qnon;

– Σ est l’alphabet (alphabet extérieur), c’est un ensemble de sym-boles tel que ; Q et Σ sont totalement disjoints, c’est-à-dire :Q ∩ Σ = ∅ . De plus, Σ contient toujours le symbole vide, notés ou Λ suivant les auteurs (Λ dans le présent ouvrage). Certainsauteurs ajoutent un symbole particulier comme premier symbolesignifiant comme par exemple ; indiquant que là doit commencerla lecture des symboles sur le ruban mais si on donne la positionde la tête de lecture-écriture en position de départ, ce symbole n’estplus nécessaire 1 ;

– t est la fonction de transition ;t : Q× Σ→ Q× Σ× G,D,N.t peut être considéré en fait comme le "programme" de la machine.On utilise aussi le terme de dérivation pour une transition simpleou un pas de calcul.

Le fonctionnement de la MTU est alors simple. La fonction t étant leprogramme 2 de la machine, elle spécifie, pour toute paire formée d’unétat q ∈ Q, et un symbole de l’alphabet extérieur, σ ∈ Σ un et un seultriplet.

t(q, σ) = (p, τ,m) avec p ∈ Q. (11.1)

1. Dans la littérature, on peut aussi trouver d’autres façons de formaliser le conceptde machine de Turing, par exemple en caractérisant le symbole blanc ce qui conduit àdistinguer l’alphabet de travail d’un alphabet plus général. On décrit alors formellementune machine de Turing comme un septuplet :

M =< Q,Σ,Γ,B, q0, t,F >

où B est le symbole "blanc", tel que B ∈ Γ et B /∈ Σ ; Γ l’alphabet de travail (on aalors Σ ( Γ)

2. On utilise en général le terme schème pour une machine de Turing particulièreou naïve, et le terme programme lorsqu’on code ladite machine sur la machine deTuring universelle, partout notée ici MTU.

Page 165: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 141

– p est le nouvel état courant atteint par la machine ;– τ ∈ Σ est le symbole qui est écrit dans la case considérée parla machine en remplacement de σ, et on a : τ, σ ∈ Σ. On peutévidemment avoir τ = Λ dans ce cas, cela signifie que la machineefface le contenu de la case considérée.

– m précise le déplacement, ou non, de la tète de lecture/écrituredela machine ; m ∈ G,D,N.

La donnée de la MT est une chaîne uv ∈ Σ∗. La tête de lectureest placée sur la première lettre de v, la machine étant dans l’état qi.La chaîne uv est placée dans des cases contigües du ruban, à raisond’un symbole par case, dans l’ordre induit par uv. Initialement, les casescontiennent le symbole blanc.

L’état dans lequel se trouve la machine au départ est toujours parconvention ici q0. La position de départ, c’est-à-dire le premier symboleplacé sous la tête de lecture de la machine doit être spécifiée au départ.Ce n’est pas nécessairement le premier symbole de u. C’est pourquoicertains auteurs ajoutent un symbole particulier qui est alors parconvention le premier symbole lu par la machine. Nous n’en ferons rienici, ce n’est pas nécessaire.

On peut formaliser un peu plus :

Définition 11.1.2 (Configuration) On appelle configuration d’unemachine de Turing universelle :

Conf = uqiv;u, v ∈ Σ∗

où qi est l’état courant de la machine. Le mot uv est écrit sur le ruban ettoutes les autres cases du ruban sont vides (ou occupées par le caractère"blanc" ; Λ).

Définition 11.1.3 (Transition élémentaire) On appelle Transitionélémentaire 1 le passage d’une configuration à une autre :

(Confj = uqv) −→ (Confj+1 = u′q′v′)

avec éventuellement q = q′. On suppose que uv = wστw′ avec u = wσoù w ∈ Σ∗ est une suite de lettres (i.e. un mot), σ ∈ Σ une lettre etv = τw′ où τ ∈ Σ est une lettre et w′ ∈ Σ∗ est un mot.

Conformément à 11.1, on a :1. Ou dérivation chez certains auteurs.

Page 166: livre.pdf

142 Complexité et Algorithmique avancée

1. t(q, τ) −→ t(q′, τ ′,G) =⇒ u′ = w et v′ = στ ′w′ ;2. t(q, τ) −→ t(q′, τ ′,N) =⇒ u′ = u et v′ = τ ′w′ ;3. t(q, τ) −→ t(q′, τ ′,D) =⇒ u′ = uτ ′ et v′ = w′.

Dans une machine de Turing universelle, on a au plus simple, Σ = 0, 1,et donc σ, τ ∈ 0, 1 et u, u′, v, v′, w, w′ ∈ 0, 1k, k ∈ N ∗.

Définition 11.1.4 (Transition)

Conf0 −→ Confn ⇔ ∃i : 0 ≤ i ≤ n; Confn = uqfv; qf ∈ Fet ∀i ∈ 1..n,Confi −→ Confi+1 (11.2)

Remarque 11.1.1 Cette définition de la transition suppose bien sûrque n ∈ N , c’est-à-dire que la machine M considérée s’arrête.

11.2 Langages, récursifs, récursivementénumérables, fonctions

Une machine de Turing M peut être vue comme calculant une fonctionΣ∗ − Λ −→ Σ∗ − Λ ou comme reconnaissant un langage. Le motu ∈ Σ∗ − Λ 1 est dit reconnu par la machine M si, démarrant sur uneconfiguration initiale u, q0 (la position ici de q0 ne préjuge pas de laposition de départ de la tête de lecture) la machine s’arrête au bout d’untemps fini dans une configuration de type qoui, v. C’est ce qui permet dedéfinir un langage reconnu par M :

LM = u ∈ Σ− Λ∗|u, q0 −→ u′, qoui, v;

D’où une définition formelle des langages récursifs :

Définition 11.2.1 (Langages récursifs) Étant donnée une machinede Turing M =< Q,Σ, q0, t,F > , et le langage L,

M reconnaît L ⇐⇒

u ∈ L ⇔ u, q0 → u′, qoui, v

u /∈ L ⇔ u, q0 → u′, qnon, v

∀u ∈ LM termine

1. Rappel : Λ est le symbole associé au vide.

Page 167: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 143

Et on note L = LM qui se lit : Le langage L est reconnu 1 par lamachine M. Le langage L est dit alors récursif

Si la machine termine dans l’état qoui, pour la donnée u, on dit qu’elleaccepte u. Dans le cas contraire, si la machine termine dans l’état qnonpour la donnée u, la donnée u est dite rejetée.

Si M ne fait qu’accepter le langage L, c’est-à-dire que pour tout mot telque u ∈ Σ − Λ∗ ∧ u ∈ L on a : M(u) = oui, c’est-à-dire que lamachine M pour la donnée u s’arrête en un temps fini dans l’état qouiet si u /∈ L, M ne s’arrête pas (M(u) =) 2. Alors le langage L est ditrécursivement énumérable.

Remarque 11.2.1 Il s’agit là d’une commodité de raisonnement caron ne peut pas savoir que la machine ne s’arrêtera pas. C’est juste unmoyen pratique de classifier les problèmes au plan théorique.

Théorème 11.2.1 Si un langage L est récursif, alors il est récursivementénumérable.

Preuve 11.2.1 Considérons la machine M qui reconnaît le langage L.On peut alors construire comme suit, la machine M′ qui reconnaît L.La machine M′ agit exactement comme M, sauf qu’au lieu de passer enl’état qnon, elle s’engage dans une série ininterrompue de décalages.

Avec ces définitions, la MT de l’exemple 11.2.1 ci-après reconnaît lelangage :

x ∈ 0, 1∗ : Les deux symboles les plus à droite sont des zéros

Ce qui, en d’autres termes, signifie que cette MT reconnaît le caractèrede divisibilité par 4 d’un nombre codé en binaire.

Cette définition de la reconnaissance d’un langage ne signifie nullementque M s’arrête pour toutes les séquences d’entrée de Σ∗, mais seulementpour celles qui sont dans LM . Si x appartient à Σ∗ − LM alors le calculde M sur x peut s’arrêter dans l’état qnon comme il peut ne pas s’arrêter.Toutefois, hors la théorie de la décidabilité, pour un programme donnéde MT qui correspond à notre définition d’algorithme, il doit s’arrêter en

1. Certains auteurs disent décidé.2. Nous empruntons cette notation à [Pap95].

Page 168: livre.pdf

144 Complexité et Algorithmique avancée

un temps fini pour toutes les séquences finies possibles sur l’alphabetdonné. En ce sens, le programme de MT ci-dessus est un algorithme caril s’arrête pour toute séquence finie sur 0, 1∗.

La correspondance entre reconnaissance de langage et résolution deproblème de décision est alors la suivante :

Définition 11.2.2 (Résolution des problèmes de décision) Ondira qu’un programme M de MTU résoud le problème de décisionΠ avec le codage e si M s’arrête pour toute séquence finie de symboles del’alphabet extérieur, et LM = L(Π, e).

11.2.0.1 Fonction récursive

Si f est une fonction Σ− Λ∗ f−→ Σ∗ et M une machine d’alphabetextérieur Σ, on dira que M calcule f si et seulement si pour tout motu ∈ Σ − Λ∗ ; M(u) = f(u). Si une telle machine M existe, alors fest dite fonction récursivement calculable ou simplement fonctionrécursive.

Exemple 11.2.1 Soit le programme (schème) de MT suivant :Σ = 0, 1,Λ;Q = q0, q1, q2, q3, qoui, qnon et la fonction de

transition δ :Schème :

δ q0 q1 q2 q3

0 0, q0,D 0, q1,D 0, q3,G qoui!

1 1, q1,D 1, q1,D qnon! qnon!

Λ qnon! Λ, q2,G

Avec, pour position initiale :

Λ Λ 1 1 1 0 0 Λ Λ

q0

Page 169: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 145

Dans cet exemple, le calcul s’arrête après huit itérations ;le symbole ! signifiant l’arrêt de la machine.

Ici, la donnée étant 11100, le calcul s’arrête en l’état qoui , donc laréponse est oui.

Le schème de la MT, ou programme, M, est donné par la tableci-dessus. C’est la fonction de transition δ qui à 11100 faitcorrespondre qoui .

δ(11100) = qoui

Dans cet exemple la position initiale de la machine est le premier1 à gauche, mais ce n’est pas une obligation générale. On voit bien iciqu’il serait extrêmement simple de faire démarrer le calcul sur le derniersymbole (0 ou 1) à droite, la modification du schème serait facile pource faire et conduit à un schème beaucoup plus simple.

δ q0 q1

0 0, q1,G qoui !

1 qnon ! qnon !

Λ qnon!

Avec, pour position de départ :

Λ Λ 1 1 1 0 0 Λ Λ

∆q0

Un autre exemple pourrait être la reconnaissance des palindromes :Un palindrome est un texte qu’on peut lire de gauche à droite et de

droite à gauche.Par exemple :ESOPE RESTE ICI ET SE REPOSE ce qui donne de droite à gauche

ESOPERESTEICIETSEREPOSE.Si on ne tient pas compte des espaces, cette proposition peut être

lue dans les deux sens ; de gauche à droite ou de droite à gauche et elle

Page 170: livre.pdf

146 Complexité et Algorithmique avancée

conserve le même sens. Ici, nous ne nous intéresserons qu’aux palindromesbinaires comme par exemple 101 ou 1111 etc.

Exemple 11.2.2 Soit le programme (schème) de MT suivant :Σ = 0, 1,Λ, α;Q = q0, q1, q2, q3, q4, q5 et la fonction de

transition δ :Schème :

δ q0 q1 q2 q3 q4 q5

0 α,D, q4 0,D, q1 NON, ! 0,G, q3 0,D, q4 Λ,G, q3

1 α,D, q1 1,D, q1 Λ,G, q3 1,G, q3 1,D, q4 NON!

Λ OUI! Λ,G, q2 Λ,D, q0 Λ,G, q5

α Λ,D, q0 α,G, q3

Avec, pour position initiale :

Λ Λ 1 1 0 1 1 Λ Λ

∆q0

Cette machine de Turing répond donc OUI si la chaîne binaire qui lui estfournie est bien un palindrome, et NON si tel n’est pas le cas. Ainsi, pourla chaîne de l’exemple, soit 11011 la réponse sera OUI, mais pour unechaîne telle que 1110 par exemple la réponse sera NON. On remarqueraque la chaîne vide est un palindromeIci on a utilisé les mots OUI et NON, mais ce n’était pas obligatoire,c’est pour la clarté de l’exposé. Il suffirait de rajouter deux états qoui etqnon et de remplacer Λ, q0 −→ OUI! par Λ, q0 −→ Λ,N, qoui ;0, q2 −→ NON! par 0, q2 −→ 0,N, qnon et 1, q5 −→ NON!par 1, q5 −→ 1,N, qnon.

Ainsi on reste cohérent avec la définition de la machine de Turingsans introduire de mot en plus dans l’alphabet. De plus on revient à laforme standard de problème de décision. Le schème devient alors :

Page 171: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 147

δ 0 1 Λ α

q0 α,D, q4 α,D, q1 Λ,N, qoui Λ,D, q0

q1 0,D, q1 1,D, q1 Λ,G, q2

q2 0,N, qnon Λ,G, q3

q3 0,G, q3 1,G, q3 Λ,D, q0 α,G, q3

q4 0,D, q4 1,D, q4 Λ,G, q5

q5 Λ,G, q3 1,N, qnon

qoui !

qnon ! !

11.3 Autres modèles de calcul

On ne s’étendra pas plus avant sur ces modèles au delà de ce chapitre(sauf pour les circuits booléens et le modèle quantique). Nous voulonsici signaler l’existence de modèles de calcul permettant d’aborder sousun autre angle les problèmes de complexité. En effet, la particularité desmodèles ici présentés est qu’ils permettent tous de traiter de la théoriede la complexité.

11.3.1 Automates de Markov

On peut aussi présenter différemment la théorie des machines deTuring par un concept théorique équivalent, les automates de Markov.

11.3.1.1 Automate fini

Définition 11.3.1 Un automate fini est un n− uple A = (Q,Σ, δ, q0,F)où :

Page 172: livre.pdf

148 Complexité et Algorithmique avancée

– Q est un ensemble fini d’états appelé espace d’états ;– Σ est un alphabet fini ; ΣΛ = a ∪ Λ ;– δ : Q× ΣΛ −→ 2Q est la fonction de transition ;– q0 est l’état initial par convention ;– F ⊆ Q est l’ensemble des états finaux (dits aussi accepteurs).

Un automate fini est dit déterministe si les transitions forment uneinjection, c’est-à-dire si à un état et un symbole de l’alphabet corres-pond une et une seule transition, |δ(q, a) ≤ 1|, (q, a) ∈ Q×Σ. Sinon, si|δ(q, a) ≥ 1| l’automate est dit non déterministe 1

Une séquence de transitions telle que σ = t1, t2, . . . , tl, l ≥ 1 avec1 ≤ i ≤ l où ti = (si, ai, si+1) est appelé chemin σ de longueur l.Les automates étant souvent visualisés sous forme de graphes orientés,les si jouent le rôle de sommets et les ai d’arcs.

11.3.1.2 Langage accepté, régulier

La succession des ai, a1a2 . . . al est appelée parfois trace du chemin,ou plus souvent mot associé. On note alors w = a1a2 . . . al et le langage :

L(q,A) = w ∈ Σ∗|∃ qf ∈ F : q w−→ qf

est dit langage accepté par A, et L(q0,A) est noté L(A).

Définition 11.3.2 (Langage régulier) Un langage L ⊆ Σ∗ est ditrégulier s’il est accepté par un automate fini, déterministe ou non.

11.3.2 Machines RAM

Ce modèle est plus proche des machines réelles, du moins à leur origine.Étant donné un alphabet Σ = a1, . . . , an, n ∈ N ∗, une machine RAM 2

est formée d’un nombre considéré comme infini de registres identifiéset dont chacun contient un mot de Σ, y compris le mot vide. La RAMcomprend de plus un programme composé de 7 instructions, à savoir :

1. Cette définition n’a pas grand chose à voir avec le concept de Machine de Turingnon-déterministe introduit par certains auteurs pour étudier la classe NPC.

2. Pour Random Access Memory, ce qui ne signifie nullement machine à accèsmémoire aléatoire, mais seulement que la mémoire peut être lue et écrite à toutmoment.

Page 173: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 149

1. ADDjY(1 ≤ j ≤ k) provoque la concaténation de aj à la fin dumot contenu par le registre Y ;

2. DEL Y suppression du premier caractère du mot contenu dans Y ;3. CLEAR Y effacer le contenu du registre Y, ce qui revient aussi à

y "écrire" le mot vide ;4. Y←− Z substituer le contenu du registre Z à celui de Y ;5. JMP X′ (jump) passer à la ligne X′ ;6. Y JMPjX′ (jump conditionnel) aller à a ligne X′ si le mot contenu

dans Y commence par aj ;7. continue FIN.

11.3.3 Circuits booléens ou digitaux

Nous avons abordé déjà dans le court chapitre consacré aux circuitsdigitaux, le problème qui consiste à réaliser physiquement une fonctionbooléenne par un dispositif électronique (voir le chapitre Circuits booléenspage 93).

Ci après nous allons en donner une approche un peu plus formelle,toujours dans l’esprit toutefois de [Lup63].

C’est un modèle de calcul qui part de l’équivalence entre une fonctionà variables booléennes et une formule elle-même booléenne.

Si on a une fonction booléenne à n variables f : 0, 1n f−→ 0, 1,alors on peut lui associer une formule booléenne canonique ψf qui pourune assignation u de valeurs booléennes aux variables est telle que :

f(u) = 1 ⇐⇒ u satisfait ψf

La réciproque et vraie, toute formule booléenne ψ à n variables définitune fonction f : 0, 1n f−→ 0, 1 telle que ψ est satisfiable si et seulementsi f(u) = 1. En s’abstrayant de l’aspect électronique du circuit, on peutdéfinir un circuit comme suit :

Définition 11.3.3 (Circuit booléen) Un circuit booléen est un graphesans cycle C = (S,Γ) tel que les sommets S = s1; . . . , sn représententles portes du circuit. Tout arc (i, j) ∈ Γ est tel que i < j représenteune connexion unidirectionnelle. Les portes s1, . . . , sn−1 sont de demi-degrés extérieurs Γ+ = 1 ou Γ+ = 2, seule la porte sn étant de degré 0,

Page 174: livre.pdf

150 Complexité et Algorithmique avancée

elle est dite "porte de sortie". Toute porte telle que Γ− = 0 est les diteporte d’entrée.

Les portes sont typées dans 0, 1,∨,∧,¬. Si si est une porte, sontype sera noté t(i), et on a :

Si

t(i) ∈ 0, 1 =⇒ Γ−si = 0, c’est une porte d’entrée;

t(i) = ¬ =⇒ Γ−si = 1, c’est la négation;

t(i) ∈ ∧,∨ =⇒ Γ−si = 2.

Théorème 11.3.1 (Taille minimale d’un circuit)

∀n ≥ 2,∃f : 0, 1n −→ 0, 1|@C : |C| < 2n

2.n , C calcule f

Preuve 11.3.1 1 Soit m la taille d’un circuit (i.e. le nombre de sommetsdu graphe 2) : pour chaque porte si, on a m2.(n+ 5) choix possibles. Parconséquent avec m portes, on a (m2.(n+ 5))m choix. On sait par ailleursqu’il y a 22n fonctions booléennes 0, 1n −→ 0, 1.

En considérant pour m la taille, m = 2n

2.n , alors :

log((m2.(n+ 5))m) = 2n.2.n− log 2.n2

n+52.n < 2n.

Il y a donc des fonctions qui ne sont pas calculées par ces circuits.

Il existe encore d’autres modèles de calcul comme le modèle de Post,ou encore les systèmes acceptables de programmation, l’étude sort dupérimètre de cet ouvrage qui est essentiellement basé sur les machinesde Turing et calculateurs universels.

1. D’après le polycopié de Bruno Grenet de l’ENS-Lyon auquel nous avons empruntéquelques notions.

2. On trouvera dans le chapitre consacré aux circuits, d’autres mesures de com-plexité d’un circuit.

Page 175: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 151

11.3.4 Machine de Turing à plusieurs rubans

Définition 11.3.4 (Machine à plusieurs rubans) Une machine deTuring à k rubans est un quintuplet M =< Q,Σ, q0, t,F > où :

– Q est l’ensemble des états de la machine ou alphabet intérieur ;– Σ l’alphabet extérieur, fini, et tel que Λ ∈ Σ ;– q0 ∈ Q l’état initial ;– t la fonction de transition t : Q × Σk t−→ Q × Σk × G,D,Nkla fonction de transition ;

– F ⊂ Q l’ensemble des états d’arrêt.

Comme le montre la définition ci-dessus, la seule chose qui change, c’estla fonction de transition qui travaille maintenant sur un k-uplet aulieu d’un caractère seul. Dans ce modèle, les rubans sont indépendants,le déplacament de la tête de lecture diffère d’un ruban à l’autre. Lesconfigurations sont toujours représentées par des mots. Comme pour laMTU séquentielle, il est indifférent de considérer que ce sont les rubansou les têtes de lecture qui se déplacent, par contre, il convient de lepréciser une fois pour toutes.

Exemple 11.3.1 Sur l’exemple de test des palindrômes ci-dessus, 11.2.2,on peut voir facilement l’intérêt d’une machine à plusieurs rubans.Supposons qu’on dispose d’une machine à 2 bandes.

La première chose à faire, c’est de dupliquer la chaîne de bits à testerde façon à ce qu’elle soit inscrite sur les deux bandes en sens contraire.Ensuite on positionne les têtes de lecture de chacune des bandes à uneextrémité de la chaîne de bits sur chaque bande. On peut visualiser unetelle situation comme suit :

Première bande

Λ Λ I I 0 I I Λ Λ Λ

État q0

Page 176: livre.pdf

152 Complexité et Algorithmique avancée

Seconde bande

Λ Λ I I 0 I I Λ Λ Λ

Alors en faisant déplacer les têtes de lecture en parallèle, de la gauchevers la droite, étant entendu que sur les deux bandes les têtes de lecturesont positionnées en état q0 sur le bit le plus à gauche, la vérification dupalindrome est facilitée. Des configurations possibles seraient alors lessuivantes :

0, 0∗, q0 → 0, 0∗, D, D∗, q0

1, 1∗, q0 → 1, 1∗ ,D ,D∗ , q0

Λ, Λ∗, q0 → Λ, Λ∗, OUI !

· · · · · · · · ·

Tout autre configuration entraînant une réponse NON !

L’astérisque en exposant ne signifie rien d’autre que le fait que lalecture ou l’écriture est celle du deuxième ruban.

Une autre configuration de départ aurait pu être :

Première bande

Λ Λ I I 0 I I Λ Λ Λ

État q0

Seconde bande

Λ Λ I I 0 I I Λ Λ Λ

Page 177: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 153

Les têtes de lecture se déplaçant alors en sens contraire, celle de lapremière bande de gauche à droite et bien sûr celle de la seconde bandede droite à gauche, ce qui suppose dans ce cas que la chaîne de bits àtraiter est dupliquée sur la deuxième bande dans le même sens qu’elle aété écrite sur la première bande.

Les configurations significatives seraient alors :

0, 0∗, q0 → 0, 0∗, D, G∗, q0

1, 1∗, q0 → 1, 1∗ ,D ,G∗ , q0

Λ, Λ∗, q0 → Λ, Λ∗, OUI !

· · · · · · · · ·

11.4 Complexité en temps

On peut maintenant aborder le problème de la définition de la com-plexité en temps des algorithmes et des problèmes.

Définition 11.4.1 On appelle temps pour un programme M d’une MTsur une donnée x, le nombre d’étapes du calcul jusqu’à l’état final, c’està dire l’arrêt de la machine.

On peut aussi dire que c’est le nombre de fois où la MT a lu ou écrit surle ruban.

Remarque 11.4.1 Cette définition est endogène à la machine deTuring. Comme on peut le voir, le temps ici se définit par rapport àla machine elle-même. Dans l’immédiat, pour l’étude qui nous intéresseici, ce n’est pas gênant. Nous étant ramené à la Machine de TuringUniverselle, nous sommes descendus au niveau "le plus fin" du calcul etles opérations y sont les plus élémentaires possibles, on considère doncici que chacune d’entre elles nécessite le même temps de calcul que nousprenons alors comme unité de temps puisqu’indivisible. Si nous étionsamenés à comparer ces unités de temps avec des temps exogènes, il nousfaudrait prendre la plus grande partie aliquote de ceux-ci comme unité.C’est en particulier le cas en algorithmique distribuée où on ne possèdepas d’un modèle universellement reconnu pour estimer la complexité entemps des algorithmes, en particulier dans le cas des communications

Page 178: livre.pdf

154 Complexité et Algorithmique avancée

asynchrones (et même pour définir les algorithmes). Toutefois, pour uneMTU particulière l’étude resterait pertinente à un coefficient multiplicatifprès.

Définition 11.4.2 (Complexité en temps) Pour un programme Md’une MT qui s’arrête en un temps fini pour toute donnée x de Σ∗, safonction de complexité en temps

TM : N ∗ −→ N ∗

est donnée par :

TM(n) = maxm : ∃x ∈ Σ∗; |x| = n | le calcul de M sur la donnéex prend un temps .m

Définition 11.4.3 (Classe de complexité en temps) Soitt : N −→ N . On définit la classe de complexité en temps TEMPS(t)comme étant la classe des langages reconnus (i.e. décidés) par unemachine de Turing travaillant en temps t(n).

Théorème 11.4.1 (Accélération linéaire) Soit une constante c > 0,

t : N −→ N , et limn→∞t(n)n

=∞, alors :

TEMPS(ct) = TEMPS(t)

Ce qui signifie que ce qui nous intéresse, c’est la nature de la variationdu temps en fonction de la taille de la donnée d’entrée (le nombre devariables) et non le temps passé au calcul en lui même. À une constantemultiplicative près, des variations de temps sont considérées, pour lathéorie de la complexité, comme équivalentes.

Corollaire 11.4.1 (Cas des machines à plusieurs rubans) Si lelangage L est reconnu par une machine à k + 1 rubans en temps t,alors il existe une machine à k rubans qui reconnaît L en temps (1 + c).t,avec 1 c > 0.

1. Attention toutefois, il faut bien remarquer le "il existe" sinon on risque unegrossière erreur. En effet dans certains cas réels de calcul sur ordinateur parallèle parexemple, l’exécution d’un programme SEP (Séparation et Évaluation Progressive)peut prendre plus de temps avec p+ 1 ou même p+ k, k ∈ N ∗ processeurs qu’avec p.On trouvera un exemple et la justification théorique dans [Lav91a].

Page 179: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 155

11.5 Complexité en espace

On est intéressé aussi à savoir quel est l’espace occupé sur le ou lesrubans durant le calcul effectué par la MT.

Si on considère des MT à plusieurs rubans d’entrée, plusieurs rubansde sortie, plusieurs rubans de travail, on n’évalue l’espace utilisé pendantun calcul que sur le ou les rubans de travail. L’espace comptabilisé sur lei-ème ruban durant le calcul C se note li(C) et est égal au nombre decellules visitées sur ce ruban.

On définit comme suit la complexité spatiale :

Définition 11.5.1 (Complexité spatiale) Pour un programme Md’une MT qui s’arrête en temps fini pour toute donnée x de Σ∗, ondéfinit sa complexité en espace

EM : N ∗ −→ N ∗

par :

EM(n) = maxm : ∃x ∈ Σ∗; |x| = n| le calcul deM sur la donnéex utilise m cellules.

Et on en déduit la définition de la classe de complexité en espace.

Définition 11.5.2 (Classe de complexité en espace) Soite : N −→ N . On définit la classe de complexité en espace ESPACE(m)comme étant la classe des langages décidés (i.e. reconnus) par une MTutilisant m cellules de rubans pour son calcul.

11.6 Relation entre complexités temporelle etspatiale

Les complexités spatiale et temporelle sont liées par le théorèmesuivant :

Théorème 11.6.1 (complexités spatiale vs temporelle)

EM(u) ≤ TM(u) ≤ 2cMEM(u)

Preuve 11.6.1 On commence par démontrer le lemme suivant :

Page 180: livre.pdf

156 Complexité et Algorithmique avancée

Lemme 11.6.1EM(u) ≤ TM(u)

C’est évident, on ne peut pas "visiter" plus de cellules que d’unités detemps utilisées pour le calcul sachant qu’en une unité de temps on nepeut lire ou écrire que dans une seule cellule à la fois.

La seconde partie de l’inégalité TM(u) ≤ 2cMEM(u) est due au faitque la machine M termine sur u et donc ne "voit" u qu’une fois etune seule (elle ne peut s’arrêter qu’une fois) et que le nombre possiblede configurations de la machine est déterminé par l’espace utilisé, iciEM(u). La constante cM caractéristique de la machine ne jouant qu’unrôle multiplicateur.

11.7 La classe PUn programme de MT est dit programme polynomial en temps s’il

existe un polynôme p tel que :

∀n ∈ N∗,TM(n) ≤ p(n)

En d’autres termes, on s’intéresse à l’évolution de la fonction tempslorsqu’on fait tendre la taille des instances particulières vers l’infini, dansle pire des cas pour l’algorithme.

On note aussi cette classe : PTemps 1. Nous sommes maintenant enmesure de définir la classe de langages ou encore de problèmes la plusimportante que nous ayons à considérer, la classe P.

Définition 11.7.1 (Classe de langages P)

P = L : ∃M; L = LM : ∃p|TM(x) ≤ p(x).

Ou encore, en réutilisant la définition et le formalisme de 11.4.3 de lapage 154 :

P =⋃k≥1

TEMPS(nk)

Définition 11.7.2 (Complexité d’un problème) La complexité d’unproblème est celle du meilleur algorithme qui le résout, dans le pire descas.

1. PTIME en anglais

Page 181: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 157

Définition 11.7.3 (Appartenance à la classe P) Un problème de dé-cision Π appartient à la classe P pour le codage e si L(Π, e) ∈ P,c’est-à-dire s’il existe un programme de MTU "résolvant" Π dans lecodage e.

On parlera désormais d’algorithme polynomial en temps aux lieu etplace de programme polynomial en temps pour une MTU.

Pour des raisons pratiques évidentes, on ne ramènera pas tous lesalgorithmes étudiés à la forme programme de MTU, ce serait long etfastidieux. Chaque fois que nous parlerons d’un algorithme polynomial,nous ferons en fait le raccourci qui consiste à parler de l’algorithme formelqu’on étudie, en rapport avec les propriétés d’un programme de MTU,dans un codage approprié, représentant cet algorithme.

Remarque 11.7.1 L’appartenance à la classe P pour un problème sup-pose l’existence d’un algorithme polynomial en temps pour résoudre ceproblème. Le plus souvent l’algorithme est connu.

Remarque 11.7.2 Parmi ces problèmes de la classe P il convient designaler un nouveau venu dont on a longtemps pensé, à l’instar de laprogrammation linéaire qu’il était non-polynomial, à savoir le test deprimalité déterministe (voir [AKS04]). Il est non seulement polynomial,mais de plus en O(logn)12.

11.8 La classe NP

Nous introduisons maintenant notre deuxième classe de problèmesde décision (ou de langages, comme on veut), la classe NP 1.

Essayons d’abord de nous faire une idée intuitive de cette classe NP .

1. Ces initiales prêtent à confusion, elles sont souvent interprétées en françaiscomme signifiant Non Polynomiale ce qui est pour le moins abusif. En anglais, ellessignifient Non deterministic Polynomial soit en français Polynomial non déterministe.Si on voulait créer un acronyme équivalent à l’anglais il faudrait donc nommer cetteclasse PND. Nous garderons toutefois NP car, si pour introduire cette classe lesanglo-saxons utilisent le concept de Machine de Turing Non Déterministe, ce conceptn’est pas ici nécessaire.

Page 182: livre.pdf

158 Complexité et Algorithmique avancée

11.8.1 Approche informelle de la classe NP

Revenons à notre exemple du voyageur de commerce qui s’énoncecomme suit sous la forme de problème de décision :

Problème du VRP sous forme décisionnelleEtant donnés un ensemble de villes, les distances entre celles-ci,

et une borne B(B ∈ N ∗), existe-t-il un circuit de toutes les villes, delongueur B au moins ?

Dans l’état actuel de nos connaissances, on ne connaît pas d’algo-rithme polynomial permettant de résoudre ce problème exactement.

Supposons que pour une instance particulière I de ce problème quel-qu’un annonce que pour cette instance du problème de décision, il existeun circuit hamiltonien pour lequel, la réponse est oui.

Si on est sceptique, on va demander à la personne concernée deprouver son assertion en fournissant une permutation des villes possédantles propriétés voulues. Il doit alors exister une façon simple de vérifierque la solution fournie par la personne en question est bien un circuithamiltonien 1 d’une part, et d’autre part, que la valeur de celui-ci est biensupérieure ou égale à B. En fait, pour que cette démarche soit praticable,il faut absolument que la vérification de la solution fournie soit simple.Qu’est-ce à dire ?

Il ne faut pas que cette vérification prenne un temps prohibitif.On fixe donc la règle suivante ; la procédure de vérification doit se

faire en un temps polynomial sur une MTU par rapport à la taille de lasolution à vérifier.

Nous formulerons donc la procédure de vérification comme un algo-rithme général dont la complexité en temps sur une MTU est polynomialepour l’instance I.

C’est cette notion de vérifiabilité polynomiale qui vacaractériser la classe NP.

C’est de même par rapport à cette propriété que nous allons pouvoirmettre en évidence des sous-classes dans NP .

Remarque 11.8.1 La vérifiabilité polynomiale n’implique pas la réso-lubilité polynomiale. Ce n’est pas parce que la procédure de vérificationde la solution prend un temps polynomial qu’il en est de même pour

1. Rappel : un circuit hamiltonien dans un graphe est un circuit qui passe unefois et une seule par tous les sommets du graphe considéré.

Page 183: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 159

l’algorithme de résolution. Par contre, la résolubilité polynomiale entraîne,de façon triviale la vérifiabilité polynomiale.

On peut définir la classe NP en termes de vérifiabilité.La classe NP ne concerne que les problèmes, pas les algorithmes. On

peut dire qu’un problème fait partie de la classe NP mais dire qu’unalgorithme en fait partie n’a pas de sens.

Pour caractériser l’appartenance d’un problème à la classe NP il fautconsidérer en première approche deux étapes :

1. on possède une chaîne de caractères de l’alphabet du problèmecensée coder une solution du problème ;

2. on sait vérifier si une chaîne de caractères de l’alphabet du problèmeest oui ou non une solution du problème, ce que certains auteursappellent un certificat..

Lorsque pour une instance I du problème, on possède une chaîne decaractères S de l’alphabet de I (alphabet extérieur de la MT) qu’onappelle en général alors structure sur I, on teste alors la dite structure Ssur une MT.

Trois cas peuvent alors se produire :1. on obtient une réponse oui ;2. on obtient une réponse non ;3. la MT ne s’arrête pas.

Dans ce dernier cas, on ne sait pas distinguer le cas de la réponse nondu cas où la machine ne s’arrête pas. C’est ce qu’on nomme le problèmede la halte.

On considérera qu’un problème de décision Π est candidat à la classeNP si pour toute instance particulière I ∈ DΠ on a les deux propriétéssuivantes :

– Si I ∈ YΠ , alors il existe une structure S qui, lorsqu’elle est issuede l’instance I, provoque une réponse oui pour la seconde phase del’algorithme.

– Si I 6∈ YΠ, alors il n’existe aucune structure S issue de I provoquantune réponse oui pour la seconde phase de l’algorithme.

La difficulté est dans ce "aucune" car, comme nous l’allons voir, cen’est pas parce qu’on ne connaît pas d’algorithme polynomial qu’il nepeut en exister.

Page 184: livre.pdf

160 Complexité et Algorithmique avancée

Ainsi en est-il du problème du voyageur de commerce ou VRP. Onne connaît aucun algorithme polynomial susceptible de le résoudre et, enl’état actuel des connaissances on est incapable de dire s’il en existeraun, un jour. Toutefois, étant donnée une séquence de toutes les villes onsait vérifier en temps polynomial si cette permutation est -ou non- unesolution attendue du problème (attention, à la condition que le problèmesoit un problème de décision). En clair, pour une instance particulièreI du problème, il doit exister au moins une structure S issue du calculsur I telle que l’algorithme de vérification répondra oui pour I et S si, etseulement si, S est un circuit hamiltonien de longueur voulue.

Définition 11.8.1 (Problème polynomialement vérifiable) Unproblème de décision Π est à solution polynomialement vérifiable ouvérifiable polynomialement s’il existe un polynôme p tel que, pour touteinstance I ∈ YΠ il y a une structure S pour laquelle il existe un algorithmede vérification de la solution en temps p(longueur(I)) polynomial.

Définition 11.8.2 (La classe NP des problèmes) La classe NP(Polynomialement vérifiables) est donc la classe de tous les problèmes dedécision polynomialement vérifiables.

Ainsi, suite à l’étude préalable concernant le problème du voyageurde commerce, nous pouvons dire qu’il fait partie de la classe NP.

La résolubilité polynomiale implique trivialement la vérifiabilité poly-nomiale, comme l’énonce le théorème du chapitre 2, qu’on rappelle (voir2.3.1 page 22) :

ThéorèmeP ⊆ NP

11.8.2 Classe Co-NP

Il n’y a pas de symétrie pour les problèmes de NP . Si un problème ala structure générale : Etant donné I, est-ce que X est vrai sur I ?

On dira que son problème complémentaire se formule de la façonsuivante :

Etant donné I, est-ce que X est faux sur I ?Si le problème est résoluble en temps polynomial par un algorithme,

alors son complémentaire aussi. Ceci vient du fait qu’un algorithme

Page 185: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 161

s’arrête quelle que soit la séquence initiale. La réponse est alors oui ounon. Il suffit d’inverser les instances qoui et qnon dans un programme deMT. D’où :

Théorème 11.8.1

Π ∈ P ⇐⇒ Π ∈ P

Et aussi

Théorème 11.8.2

Π ∈ P =⇒ Π ∈ Co−NP

Cette propriété est généralement fausse dans le cas de la vérifiabilité,en particulier pour les problèmes dans NP pour lesquels on ne connaîtpas d’algorithme polynomial pour les résoudre.

Par exemple, revenons au problème du VRP. Le problème complém-entaire s’énonce comme suit :

Etant donné un ensemble de villes, les distances entre celles-ci, etune borne B, est il vrai qu’il n’y ait aucune tournée sur toutes les citéesde valeur inférieure à B ?

Dans le pire des cas, dans l’état actuel des connaissances, on neconnaît aucun algorithme qui ne doive examiner toutes ou presque toutesles tournées possibles (le nombre de telles tournées est (n − 1)!). End’autre termes, il n’existe pas d’algorithme, polynomial en temps, pourrésoudre ce problème. La même situation se reproduit dans de nombreuxcas dans NP . Au passage, on voit apparaître là une famille de problèmespires 1 que les pires de NP.

Ainsi, bien que l’appartenance à P pour un problème implique aussil’appartenance à P pour son complémentaire, on ne peut rien dire de telpour les problèmes de NP.

Nous venons d’étudier ci-dessus des modèles de calcul dans le cadrede la complexité en temps. La théorie de la complexité concerne en faittoute ressource de calcul mesurable.

Commentaire : En fait, la complexité d’un langage ou d’un problèmeest concernée par trois éléments d’appréciation ou de mesure, à savoir :

1. On reviendra sur les problèmes qui sont les "pires" de NP

Page 186: livre.pdf

162 Complexité et Algorithmique avancée

• la ressource consommée pour la résolution ou la reconnaissancesuivant qu’il s’agit d’un langage ou d’un problème. Ce peut êtrele temps, l’espace, l’énergie, la quantité d’information..., ce quisuppose qu’on sache quantifier et mesurer la ressource en question ;• le type de problème ou langage considéré, optimisation, décision ;• le modèle de calcul considéré, la machine de Turing, le modèle des

circuits booléens, le système de Post, le lambda-calcul , le modèlequantique...

C’est ce qui conduit à considérer les choses in abstracto sans sepréoccuper de savoir de quelle ressource il s’agit. Le problème restetoutefois de définir quel type de fonction utiliser pour mesurer la-ditecomplexité.

Ces fonctions doivent toutes être de type f : N ∗ f−→ N ∗ . De plus ellesdoivent être uniformément croissantes, à savoirf(n+ 1) ≥ f(n) ∀n ∈ N . La complexité (c’est-à-dire, la valeur prise parla fonction) ne doit dépendre que de la taille de la donnée d’entrée.

Des points de vue théorique et pratique, ce qui est intéressant pour unalgorithme ou un problème, c’est sa complexité asymptotique, c’est-à-direla fonction représentative de la variation de la complexité lorsqu’on faittendre la taille de la donnée vers l’infini.

11.9 La classe NP ∩ Co−NP

Les problèmes de NP sont tels que toute séquence de l’alphabetextérieur Π candidate à être solution peut-être acceptée ou rejetée entemps polynomial. Les problèmes de Co−NP sont tels qu’on peut vérifieren temps ou espace polynomial que Π n’admet pas de solution.

co−NP = Π|Π ∈ NP;

Soit, en termes de langage :

co−NP = Σ∗ − L|L langage sur l’alphabet Σ et L ∈ NP

Il est évident, comme noté ci-dessus que P ⊂ NP ∩ Co−NP. Parcontre la réciproque est fausse.

Page 187: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 163

11.9.1 Dualité

Un problème comme celui du flot maximal (voir 9.3 page 113) faitpartie deNP∩Co−NP en effet, il est dans P , les algorithmes bien connusde Ford-Fulkerson ([FF56, FF62]) d’abord, de Dinic-Karzanov ensuite([Din70, Kar74]) donnent des algorithmes polynomiaux. Le théorème deFord-Fulkerson qui s’énonce comme suit :

Flot maximum = Coupe minimale

exprime en fait un principe dit de dualité. Le problème dit du Flotmaximal et celui de la coupe minimale sont polynomialement réduc-tibles l’un à l’autre et tous deux dans NP, on dit qu’ils sont duaux. Ilen est de même du problème de la Programmation linéaire qui s’écrit :

PL

Maximiser(c1, c2, . . . , cn

x1x2· · ·xm

sous les contraintesa1,1 . . . a1,na2,1 . . . a2,n· · · · · · · · ·am,1 . . . am,n

×x1x2· · ·xm

≤b1b2· · ·bm

xi ∈ R

soit plus simplement en notation matricielle :

PL

Maximiser C.X sous les contraintes

A.X ≤ BX ∈ Rm

Le dual 1 en est alors :

PL

Minimiser B.Y sous les contraintesA.Y ≥ CY ∈ Rn

1. La notation matricielle A signifie transposée de A.

Page 188: livre.pdf

164 Complexité et Algorithmique avancée

La filiation entre les deux problèmes, programmation linéaire et flotmaximal, vient du fait que le problème du flot maximal peut facilementse poser sous forme d’un programme linéaire (mais ce n’est pas efficace entermes de performances, c’est pourquoi on a mis au point des algorithmesspécifiques).

Exercices

Exercice 5 En partant du schème de la machine décrit en 11.2.1, lemodifier pour que la machine reconnaisse :

1. si la chaîne binaire inscrite sur le ruban comprend deux zéros dansses bits les plus à droite ;

2. si la chaîne de bits contient au moins un bit à la valeur "un".

Exercice 6 Écrire un schème d’une machine de Turing reconnaissantsi une chaine de digits binaires forme un palindrome, en prenant pourposition de départ le dernier bit à droite de la chaîne d’instance. Onpourra s’appuyer sur l’exemple donné dans le chapitre. Position dedépart :

Λ Λ 1 1 0 1 1 Λ Λ∆q0

Exercice 7 Écrire un schème d’une machine de Turing reconnaissantsi une chaine de digits binaires forme un palindrome, sans détruire lachaine initiale.

Exercice 8 Écrire le schème de l’addition de deux nombres unairesséparés par une astérisque :

Λ Λ 1 1 ∗ 1 1 1 Λ∆q0

Ici, on est en position de départ pour l’addition 2 + 3 codée unaire.Attention, il y a plusieurs solutions à cet exercice dont une ne nécessite

que max(x, y) + 1 itérations si x et y sont les nombres à additionner.

Page 189: livre.pdf

Chapitre 11. Modèles de calcul, classes de complexité 165

Exercice 9 Sachant que la multiplication est une succession d’addi-tions, modifier le schème précédent pour obtenir celui de la multiplicationd’entiers codés unaires.

Attention, c’est assez difficile, il ne faut pas hésiter à rajouter dessymboles dans chaque alphabet.

Exercice 10 Écrire un schème d’une machine de Turing effectuantla soustraction de deux nombres unaires, la position de départ étant ledernier batonnet à droite du nombre de gauche qui est à soustraire decelui de droite. Position de départ :

Λ Λ 1 1 1 1 1 Λ Λ∆q0

Il s’agit là de soustraire le nombre deux (2) à trois(3)

Exercice 11 À partir de la solution de l’exercice précédent, écrire leschème de la division euclidienne.

Exercice 12 À partir de la solution de l’exercice précédent, écrire leschème du calcul du PGCD 1 de deux nombres comme donnés comme àl’exercice précédent.

Exercice 13 Imaginez un algorithme programmable sur un ordinateurclassique permettant de construire un cycle hamiltonien sur un graphequelconque.

Exercice 14 Le problème du VRP est posé comme étant celui dela recherche d’un circuit hamiltonien de valeur minimale sur un graphe.Imaginez un algorithme programmable sur un ordinateur classique per-mettant de résoudre ce problème.

Exercice 15 À partir de la solution de l’exercice précédent, écrireun programme permettant de savoir s’il existe -ou non- un circuithamiltonien sur un graphe donné.

Exercice 16 [carré d’un mot]1- On considère l’alphabet Σ = 0, 1. Soit w un mot d’entrée sur

Σ∗. Déterminer une machine de Turing à un seul ruban qui remplace

1. Plus Grand Commun Diviseur

Page 190: livre.pdf

166 Complexité et Algorithmique avancée

alternativement le symbole 0 ou 1 le plus à droite par A ou B (0 seraremplacé par A, 1 sera remplacé par B) puis le symbole 0 ou 1 le plusà gauche par a ou b (0 par a, 1 par b). Par exemple, si le mot d’entréeest 0101110, les exécutions successives vont donner A101110, A10111a,AB0111a, AB011ba, ABA11ba, ABA1bba, ABABbba.

2- En déduire une machine de Turing à un seul ruban qui reconnaîtle langage L = ww/w ∈ Σ∗.

3- Vérifier votre calcul pour w=011

Exercice 17 [Reconnaissance de langage]1. Soit L un langage régulier. Montrez qu’il existe une machine de

Turing reconnaissant L en temps polynomial.2. Soit A un automate à pile déterministe. Montrez qu’il existe une

machine de Turing reconnaissant le langage de A en temps polyno-mial.

3. Montrez qu’un langage défini par une grammaire LR(k) est reconnuen temps polynomial par une machine de Turing.

Exercice 18 [Conversion unaire-binaire]Ecrire une machine de Turing à un ruban (bi-infini) réalisant la

conversion d’un entier écrit en unaire en binaire.Vous expliquerez au préalable de manière succincte la stratégie de

votre machine, le rôle de chaque état utilisé.Exécuter votre machine sur le mot d’entrée . . . B111111B. . . . Vous

devez obtenir . . . B110B. . . .

Page 191: livre.pdf

Chapitre 12

Complétude NP

12.1 Le monde de NP

Nous nous intéressons ici aux relations existant entre problèmespolynomiaux et problèmes de la classe NP. Nous allons être amenés

à introduire une nouvelle classe de problèmes que nous nommerons NPCpour problèmes NP− Complets.

Dans un premier temps nous allons nous donner une méthode permet-tant de comparer des problèmes entre-eux, eu égard à leur complexité.En effet, la question se pose de savoir si l’introduction du concept declasse NP a un sens, c’est à dire de savoir s’il existe des problèmes quisont dans NP et qui ne sont pas dans P.

12.1.1 La transformation polynomiale

Si la classe P est différente de NP, alors la distinction entre P etNP − P revêt une signification primordiale. Tous les problèmes de Ppeuvent être résolus par des algorithmes en temps polynomial alors quepour les problèmes qui sont dansNP − P , on ne connaît pas d’algorithmepolynomial le permettant, et nombre de chercheurs conjecturent qu’il nepeut y en avoir.

Dans ce qui suit nous supposerons que P 6= NP et même plusprécisément que :

P ⊂ NP

Nous allons donc nous intéresser à des problèmes de NP − P en

Page 192: livre.pdf

168 Complexité et Algorithmique avancée

supposant qu’il y en a. L’idée principale que nous allons être amenés àutiliser est celle de transformation polynomiale à partir de laquelle on semunit de l’outil correspondant.

En effet, dans la mesure où nous nous intéressons au caractèrepolynomial -ou non polynomial- une telle transformation conserve ledit caractère. On sait qu’un polynôme de polynômes est un polynôme,par conséquent le caractère polynomial sera conservé. De même, unpolynôme de fonctions non-polynomiale reste non-polynomial. Les carac-téristiques qui nous intéressent sont donc conservées.

L’idée, puisqu’on utilise ici le terme de "classe" polynomiale ou declasse NP est donc de mettre en évidence une relation d’équivalence quigénérera la classe qui nous intéresse.

Définition 12.1.1 Une transformation polynomiale d’un langageL1 ⊆ Σ∗1 en un langage L2 ⊆ Σ∗2 est une fonction f : Σ∗1

f−→ Σ∗2 quisatisfait aux conditions suivantes :

1. il existe un programme de MTU qui peut calculer f ;2. ∀x ∈ Σ∗1, x ∈ L1 ssi f(x) ∈ L2 ;3. le programme de la transformation est polynomial en temps.

La transformation polynomiale entre deux langages, L1 et L2, quandelle existe, se note L1 ∝ L2

Lemme 12.1.1 Si L1 ∝ L2 , alors on a

L2 ∈ P =⇒ L1 ∈ P;

et réciproquement :

L1 6∈ P =⇒ L2 6∈ P.

Si Π1 et Π2 sont des problèmes de décision, avec les schèmes d’en-codage associés e1 et e2, on écrira Π1 ∝ Π2 (avec respect des schèmesdonnés) lorsqu’il existe une transformation polynomiale de L(Π1, e1) enL(Π2, e2).

Si on parle en termes de problème, on peut regarder une transforma-tion polynomiale du problème de décision Π1 en un problème Π2 commeune fonction f : DΠ1

f−→ DΠ2 satisfaisant aux deux conditions suivantes :

Page 193: livre.pdf

Chapitre 12. Complétude NP 169

1. f est calculable en temps polynomial par un algorithmedéterministe ;

2. ∀I ∈ DΠ1 , I ∈ YΠ1 ssi f(I) ∈ YΠ2

La relation de transformabilité polynomiale est transitive, ce qui larend opérationnelle pour ce qui nous intéresse.

Lemme 12.1.2 L1 ∝ L2et L2 ∝ L3 =⇒ L1 ∝ L3

La démonstration est assez facile pour qu’on puisse la laisser aulecteur.

12.2 La classe NPC des problèmes NP-complets

Dans le chapitre précédent, on a entrevu de façon intuitive qu’il existedes problèmes plus difficiles que d’autres. Nous allons maintenant nousemployer à les caractériser.

La classe des problèmes NP − complets est une classe d’équivalencede problèmes qui sont les plus difficiles de NP. Informellement, on diraqu’un problème de décision Π est NP − complet si Π ∈ NP et que,pour tout autre problème de décision Π′ ∈ NP, on a Π′ ∝ Π. Ce quiformellement s’énonce :

Définition 12.2.1 Un langage L est dit NP − complet si L ∈ NP et,pour tout autre langage L′ ∈ NP, on a L′ ∝ L.

Ainsi, si un problème Π fait partie de la classe NP−complet, tous lesproblèmes de la classe NP sont transformables en Π par une transforma-tion polynomiale. Par ailleurs, les problèmes de la classe NP − completsont les problèmes réputés pour être les plus difficiles de la classe NP.Cela signifie que si on sait démontrer qu’un des problèmes de la classeNP − complet est résoluble en temps polynomial sur une MTU, alors ilsle sont tous, et tous les problèmes de la classe NP sont alors résolubles entemps polynomial sur une MTU, et donc, on aurait en ce cas démontréque P = NP. Pour ce qui nous concerne ici, et jusqu’à plus ampleinformation, on conjecture que :

P 6= NP.

Page 194: livre.pdf

170 Complexité et Algorithmique avancée

Et même plus précisément :

P ⊂ NP.

On a ainsi une vue plus précise de la classe NP qu’on peut visualiserpar un dessin comme suit :

NP

NP-Complets

P-Polynomiaux

Figure 12.1 – Visualisation des classes élémentaires de complexité

Dans ce qui suit, nous allons introduire la classe des problèmes de déci-sion dits NP − complets qu’on notera également NPC .La figure 12.1 peut conduire à penser que :

1. P⋂NPC = ∅ ;

2. et aussi NP − P⋃NPC 6= ∅

Or, à la vérité, on n’en sait rien. Tout ce qu’on sait faire, c’est démontrerqu’un certain nombre de problèmes sont équivalents entre eux eu égardà leur complexité en temps, par transformation polynomiale, et qu’on ne

Page 195: livre.pdf

Chapitre 12. Complétude NP 171

possède pas d’algorithme polynomial en temps dans le pire des cas pouren résoudre au moins un, mais c’est tout. Par ailleurs on connaît d’autresproblèmes pour lesquels on dispose d’algorithmes polynomiaux dans lepire des cas. S’agissant des problèmes pour lesquels on ne possède pasd’algorithme polynomial, on ne sait pas démontrer non plus qu’il n’enexiste pas. Il est déja arrivé que pour un problème réputé non polynomialon trouve un algorithme polynomial (cela a été le cas par exemple de laProgrammation Linéaire pourtant largement pratiquée et pour laquelleon utilise l’algorithme dit du simplexe dû à Kantorovitch et Tolstoï en1939 [KAN39] et [TOL39] et popularisé en 1956 par Dantzig 1). De mêmepour le test de primalité d’un nombre dont on a longtemps pensé qu’iln’y avait pas d’algorithme polynomial pour le résoudre (voir [AKS04]).Toutefois, la classe de problèmes auxquels nous allons maintenant nousintéresser est telle que si on trouvait un algorithme polynomial en tempspour l’un d’entre eux, alors tous seraient résolubles en temps polynomial,et tous donc appartiendraient à P et en conséquence, on aurait de plus :P = NP.

12.2.1 Un problème NP − complet, la satisfiabilité

De façon littérale, pour qu’un problème de NP soit dit NP- complet(i.e. NPC), il faut (mais il ne suffit pas) que tout problème de NP puisse,par transformation polynomiale, s’y ramener. Si on admet que P 6= NP ,la réciproque n’est pas vraie, les problèmes de la classe NPC ne peuventêtre, par transformation polynomiale, transformés en tout autre problèmede la classe NP. De plus un problème auquel tout autre problème deNP peut se ramener par transformation polynomiale doit, pour fairepartie de la classe NPC, se prêter à une vérification de solution qui soitfaisable en temps polynomial (resp. espace).

12.2.2 Le problème de la satisfiabilité

Le problème dit de satisfiabilité (voir [Coo71, Lév73a]) que nous avonsdéjà rencontré, s’énonce comme suit :

1. Dans des cas extrêmes cet algorithme est non-polynomial en temps, il est mêmeexponentiel, c’est pourquoi on a pensé longtemps que le problème lui-même était denature non-polynomiale, mais en 1974, Khatchiyan (voir[Kha79] a fourni un algorithmepolynomial pour résoudre ce problème et de nombreux autres on suivi (Karmarkar[Kar84a, Kar84b], Murty [CM89]).

Page 196: livre.pdf

172 Complexité et Algorithmique avancée

Etant données des littéraux booléens 1 x1, x2, . . . , xi, . . . xn (doncprenant leurs valeurs dans vrai, faux ou dans 0, 1), quelles sontles valeurs à assigner à ces variables pour que l’expression, aussi appeléeFNC pour Forme Normale Conjonctive :

F = (xi ∨ xj . . . ∨ xk) ∧ (xl ∨ xm . . . ∨ xp) ∧ . . . ∧ (xq ∨ . . . ∨ xt) 2

i, j, k, l,m, p, q, t ∈ 1, ..., n ; i, j, k, l,m, p, q, t ∈ 1, . . . , nprenne la valeur vrai ou 1. Les termes de base (les monômes) en sontaussi appelés des mintermes. Les termes clause et monôme étant plutôtutilisés en algèbre de Boole et les termes minterme, maxterme en logiqueet électronique.

Exemple 12.2.1 (FND) Une forme normale disjonctive serait :F′ = (xi ∧ xj ... ∧ xk) ∨ (x1 ∧ xm... ∧ xp) ∨ · · · ∨ (xq ∧ ... ∧ xt) ;i, j, k, l,m, p, q, t ∈ 1, ..., n ; i, j, k, l,m, p, q, t ∈ 1, . . . , net la question devient : quelle doit être une assignation de valeurs vrai(resp. 1) ou faux (resp. 0) aux variables pour que F′ prenne la valeurvrai ou 1 ?

Les expressions du type (xi ∨ xj . . . ∨ xk) ou du type (xq ∧ . . . ∧ xt),respectivement dans les cas de forme conjonctive et de forme disjonctive,seront appelées respectivement clauses et monômes.

Remarque 12.2.1 Pour qu’une FNC soit satisfaite il faut que chacunede ses clauses le soit. Pour qu’une FND soit satisfaite, il suffit qu’unseul de ses monômes le soit.

Définition 12.2.2 Une expression booléenne φ est dite satisfiable si ilexiste une assignation de valeurs à ses variables (une instanciation decelles-ci) telle que l’expression prenne la valeur vrai (ou 1 en algèbre deBoole) 3.

1. L’expression littéraux booléens désigne ici des variables booléennes indépen-damment du fait qu’elles apparaissent niées ou non dans les clauses, c’est-à-dire que"littéral x" désigne x (ou ¬x) ou x.

2. RAPPEL : Cette fonction est dite écrite sous forme normale conjonctive etchaque terme entre parenthèses (clause) est aussi appelé un maxterme. L’écritureduale est une forme normale disjonctive .

3. On ne fera pas la différence ici

Page 197: livre.pdf

Chapitre 12. Complétude NP 173

Définition 12.2.3 Une expression booléenne φ est dite valide si pourtoute assignation de valeurs à ses variables (toute instanciation de celles-ci) l’expression prend la valeur vrai. (on dit aussi alors que l’expressionest une tautologie).

Exemple 12.2.2 l’expression ((x1 ∨ x2) ∧ x2) est satisfiable.En effet, elle prend la valeur vrai pour f(x1) = f(x2) = faux. Par contre,l’expression (x1∨x2)∧ (x1∨x2)∧x1∧x2 ne peut être satisfaite. L’expres-sion (x1 ∨ x2) ∧ (x1 ∨ x2) est quant à elle, une tautologie. Le lecteur ledémontrera facilement par utilisation des formules de De Morgan.

La situation de l’exemple 12.2.2 ressortit à un cas plus général :

Propriété 12.2.1 Une expression booléenne est satisfiable si et seule-ment si sa négation n’est pas une tautologie (i.e. est valide).

Dans le cas général, en l’état actuel de nos connaissances, pour trouverune assignation de valeurs satisfaisant la condition de satisfiabilité, iln’y a pas d’autre solution que d’essayer, dans le pire des cas, toutes lescombinaisons possibles ou presque, de valeurs pour toutes les variablesjusqu’à en trouver une qui satisfasse l’égalité F = vrai.

Un autre problème très proche est :Étant donnée une fonction booléenne quelconque, l’écrire sous forme

normale conjonctive (respectivement : disjonctive) en minimisant le nom-bre de mintermes (resp. de maxtermes). Ce problème, de même natureque celui de la satisfiabilité s’y ramène directement (voir [Lav74] pourl’algorithmique qui s’y rapporte). Ce problème s’appelle aussi problèmedu recouvrement d’un ensemble par un sous ensemble de ses parties (Setcovering problem en anglais).

12.3 SAT, problème NP − complet

Le premier problème de décision à avoir été considéré comme NP −complet est précisément celui de la satisfiabilité. La raison du choix deSAT vient du fait qu’il s’agit d’un problème central, sur lequel maintsmathématiciens et informaticiens se sont penchés sans jamais en exhiberune solution en temps polynomial. Par conséquent nombre de chercheurs

Page 198: livre.pdf

174 Complexité et Algorithmique avancée

conjecturent que pour ce problème, il n’existe pas d’algorithme permet-tant de le résoudre en temps polynomial dans le pire des cas. Par facilitéd’écriture, nous nommerons désormais, dans ce qui suit, ce problème :SAT. Une autre raison qui a conduit à prendre SAT comme problèmecentral est liée à l’algèbre de Boole qui est l’algèbre de la logique. Pratique-ment tous les problèmes classiques de mathématique peuvent s’exprimeren expressions de la logique formelle (ce qui ne signifie en rien que ce soitfacile à faire) et toute fonction booléenne peut se ramener à une formenormale conjonctive (là non plus, pas facilement). La forme normaleconjonctive (ou FNC), c’est-à-dire SAT est donc centrale.

Pour introduire la classe NPC des problèmes, il nous faut doncmaintenant mener la démonstration en deux temps.

12.3.1 Le théorème de Lévine-Cook

Théorème 12.3.1 (Théorème de Lévine-Cook) :SAT est NP−complet.

La démonstration se mène donc en deux parties (voir [Coo71, GJ79]),une première, brève, pour laquelle il faut montrer que SAT fait partiede NP ; l’autre beaucoup plus longue et difficile, qui consiste à montrerque tout problème de NP peut, par transformation polynomiale, s’écriresous forme d’une instance de SAT.

12.3.1.1 Première partie : SAT est dans NP

Lemme 12.3.1 SAT ∈ NP

Soit C l’ensemble des clauses d’un problème SAT ; on a évidemment :

SAT ∈ NP,

Étant donnée une assignation de valeurs (un vecteur booléen) auxvariables d’une instance de SAT, une MTU vérifie en temps polynomialsi cette assignation (ou instanciation réelle) valide -ou non- l’instancegénérique en question. La machine vérifie en effet en temps polynomialque chacune des clauses de C prend la valeur vrai pour cette assignationde variables. La vérification se fait évidemment en temps polynomial. Eneffet si la proposition est vraie, la vérification prend un nombre de pas de

Page 199: livre.pdf

Chapitre 12. Complétude NP 175

calcul sur une MTU qui s’exprime linéairement en le nombre de variableset le nombre de clauses du problème SAT considéré. Si la proposition estfausse également.

En fait cela revient à dire que la vérification, sur une MTU, du faitque la fonction booléenne, instance de SAT, prend la valeur vraie pourl’affectation de valeurs aux variables prend un temps polynomialementborné.

C’est évident, il suffit pour ce faire que la MTU remplace dansl’instance générique, chaque variable par sa valeur, ce qui entraîne uncalcul dont la complexité en temps est de l’ordre d’un polynôme "en n"où n est le nombre de variables à instancier.

12.3.1.2 Seconde partie

Lemme 12.3.2 Tout problème dans NP est polynomialementtransformable en SAT

Pour la deuxième partie de la démonstration, qui consiste à mon-trer le lemme, à savoir que tout problème dans NP est transformablepolynomialement en SAT, nous utiliserons la forme langage. SAT estalors représenté par le langage LSAT = L[SAT, e], e étant un schèmed’encodage «raisonnable» au sens où nous l’avons précédemment défini :

Rappel : On appelle codage raisonnable tout codage qui induit unetaille de donnée qui est fonction polynomiale de la taille de l’instancecodée.

Le passage à la forme langage vient de ce qu’il nous faut pouvoirparler de tout problème de NP. L’utilisation des langages permet parabstraction de parler de «tout langage» et donc de ramener le problèmegénéral à sa forme générique, laquelle est d’autant plus facilement mani-pulable qu’on ne connaît pas de méthode générique formelle autre pourcaractériser "tout problème" de NP (sinon SAT).

Il nous faut donc montrer maintenant que tout langage de NP peutêtre transformé polynomialement en LSAT, soit formellement :

∀L ∈ NP,L ∝ LSAT

Une façon standard de pouvoir traiter de tous les problèmes de NPde façon générique, c’est de considérer tous les langages de NP et dedonner une transformation fL polynomiale du langage associé en LSAT.

Page 200: livre.pdf

176 Complexité et Algorithmique avancée

En d’autres termes, il faut pouvoir poser tout problème de NPsous forme de résolution d’une instance SAT. De plus il faut que cettetransformation se fasse en temps polynomial (c’est le rôle de fL). Notrepropos ici est donc de construire, de façon générique, le programme deMTU capable d’effectuer cette transformation.

Soit M un programme reconnaissant en temps polynomial le langageL = LM spécifié par :

Γ,Q,Σ,Λ, q0, qY, qN, δ

avec :– Q espace des états de la machine (appelé aussi alphabet intérieur).L’état q0 étant l’état initial de la machine ;

– Σ alphabet extérieur de la machine restreint à la donnée de départ,c’est à dire l’ensemble des symboles disponibles pour écrire ladonnée sur le ruban 1. Le symbole Λ en faisant partie, qui symbolisele blanc ou absence de symbole ;

– qY et qN étant les états d’arrêt de la MTU associés aux états OUIet NON respectivement, qY étant associé à OUI et qN à NON.

– Γ pour la généralité du propos, on distinguera Γ et Σ, avec Σ ⊂ Γoù Γ est l’ensemble, fini, de tous les symboles de l’alphabet extérieuret Σ l’ensemble des symboles utilisés pour coder la donnée d’entrée ;

– δ (ou t) est la fonction de transition :

δ : (Q− (qY, qN))× Γ −→ Q× Γ× G, D, N).

Soit p(n), avec n ∈ N et p(n) ≥ n ∀n ; un polynôme , bornant lafonction de complexité en temps :

TM(n).

La fonction fL peut être vue comme une application des séquences deΣ sur les instances de SAT. C’est à dire que s’il existe une affectation devaleurs vrai, faux aux variables booléennes satisfaisant SAT, fL doitêtre telle que, à chaque séquence x de Σ∗ doit correspondre un mot dulangage L si et seulement si SAT prend la valeur vrai. Il s’agit donc ici

1. Attention, on est ici dans un contexte de MTU (Machine de Turing Universelle)c’est-à-dire que la donnée en question est l’énoncé d’un problème donné sous sa formegénérique.

Page 201: livre.pdf

Chapitre 12. Complétude NP 177

de construire fL, ce qui consiste à montrer comment faire correspondreun ensemble de clauses à une séquence x acceptable par le programmeM de la MTU, c’est à dire lorsque x ∈ L.

Si x ∈ Σ∗ est accepté par M, cela signifie qu’il y a un calcul de M(pour la commodité de l’exposé, on confond ici le programme M et lamachine qui l’exécute) sur x tel que tant le temps de calcul de vérificationde la séquence 1 que la longueur de la séquence elle-même (peu importecomment elle a été obtenue) sont bornés par un polynôme p(n) avecn = |x|.

Sachant que la tête de lecture/écriture de la MTU démarre, parconvention, sur la case 1, et ne peut à chaque étape que lire/écrire dansune des cases contigüe (voir chapitre 2 le fonctionnement détaillé d’uneMTU) un tel calcul de la MTU ne peut concerner, sur la bande, au plus,que les cases −p(n) à p(n) + 1 .

La phase du calcul de vérification peut alors être complètement décriteen trois points, à savoir :

– la donnée du contenu des cases concernées ;– l’état correspondant de la machine (la lettre de l’alphabet inté-rieur) ;

– la position de la tête de lecture/écriture.La construction de fL va donc consister à affecter des clauses vraies quispécifient clairement ces trois éléments à chaque étape du calcul. De plus,comme il doit y avoir au plus p(n) étapes, on n’a à considérer au plusque p(n) + 1 itérations (i.e. temps) différentes.

Soit l’espace (i.e. l’alphabet intérieur) des états décrit par :

Q = q0, q1 = qY, q2 = qN, q3 . . . qr; avec r = |Q| − 1

et l’alphabet extérieur

Γ = s0 = Λ, s1, s2, . . . , st; avec t = |Γ| − 1

.Soit U l’ensemble des variables de fL permettant de décrire une

itération particulière ; U est composé de trois parties permettant donc despécifier l’état qk de M, l’indice de la case en jeu, le contenu de celle-ci.

1. rappel : il s’agit d’un problème de décision, donc ici il s’agit de vérifier si laréponse est OUI.

Page 202: livre.pdf

178 Complexité et Algorithmique avancée

U = Q[i, k] ∪ H[i, j] ∪ S[i, j, k] où i caractérise l’itération (l’item detemps).

– Q[i, k] caractérise le fait qu’à l’itération (i.e.temps) i la machine Mest dans l’état qk, et on a alors P(n) ≥ i ≥ 0 ainsi que r ≥ k ≥ 0 ;

– H[i, j] caractérise la case j lue par la tête à l’itération (i.e.temps)i. On a alors P(n) ≥ i ≥ 0 ainsi que P(n) + 1 ≥ j ≥ −P(n) ;

– S[i, j, k] caractérise le contenu k de la case j à l’itération (i.e.au temps) i. On a alors P(n) ≥ i ≥ 0 ; P(n) + 1 ≥ j ≥ −P(n)et t ≥ k ≥ 0.

ce qui peut se résumer dans le tableau suivant (voir aussi [GJ79]) :

Variable Rang Signification

Q[i, k] P(n) ≥ i ≥ 0; r ≥ k ≥ 0 Au temps i, M estdans l’état qk

H[i, j] P(n) ≥ i ≥ 0 ;P(n) + 1 ≥ j ≥ −P(n)

Au temps i la tête litla case j

S[i, j, k]P(n) ≥ i ≥ 0 ;P(n) + 1 ≥ j ≥ −P(n) ; t ≥k ≥ 0

Au temps i la case jcontient k

La position de départ est constituée de deux grandes parties, lapremière est le codage de l’instance particulière du problème considéré,elle consiste en la donnée de la séquence x de Σ, langage décrivant lesproblèmes de NP, écrite dans les cases 1 à n et la séquence candidateà être solution une fois l’instance paramétrée instanciée en instancenumérique 1, w écrite dans les cases −1 à −|w|, toutes les autres cases

1. Il y a là une difficulté d’interprétation due aux niveaux auxquels on se place.Pour bien faire, dans certains cas, on peut être amené à distinguer trois niveauxd’instanciation,

1. l’ instance générique qui est représentative de TOUS les problèmes d’uneclasse ;

2. une instance particulière ou encore instance paramétrée qui définit unesous classe, souvent une topologie ;

Page 203: livre.pdf

Chapitre 12. Complétude NP 179

étant vides. La transformation fL construit un ensemble de clausesimpliquant ces variables de telle façon qu’une affectation vrai soit uneaffectation satisfaisante (i.e. satisfaisant SAT) si et seulement si c’est uneaffectation dont le nombre d’itérations de la phase de vérification de laséquence candidate et la longueur de w sont bornés supérieurement parp(n). Ainsi, on a :

x ∈ L– ⇔ Il existe un calcul de M sur x en p(n) itérations au plus pour

l’étape de vérification et une longueur w exactement égale à p(n) ;– ⇔ Il existe une affectation vrai satisfaisant SAT pour l’ensembledes clauses dans fL(x).

Ainsi, fL satisfait une des deux conditions de la transformationpolynomiale. L’autre condition, à savoir que fL doit calculer en tempspolynomial va être vérifiée par la suite. Les clauses de fL peuvent êtredivisées en 6 groupes imposant chacun des types séparés de contraintesà chaque affectation vrai satisfaisant SAT. Ces contraintes sont en faitcelles, classiques, associées au fonctionnement de toute machine de Turing.

Groupe Clauses du groupeG1 A toute itération i correspond un et un seul état de M

G2A toute itération i la tête de lecture/écriture lit une caseet une seule

G3A toute itération i, chaque case contient un et un seulsymbole de Γ

G4A l’itération 0, le calcul est dans l’état initial de vérificationde x

G5A l’itération p(n), M est dans l’état qY et x est accepté

3. une instance numérique dans laquelle on a attribué une valeur aux para-mètres.

Page 204: livre.pdf

180 Complexité et Algorithmique avancée

G6

A toute itération i, p(n) > i ≥ 0, la configuration au tempsi+ 1 est obtenue par simple application de la fonction detransition δ à la configuration i.

Groupe Clauses du groupe

La question qui se pose maintenant est de savoir comment sontconstitués ces groupes. Ainsi, G1 est constitué des clauses :

Q[i, 0];Q[i, 1]; . . . ;Q[i, r], p(n) ≥ i ≥ 0

et

Q[i, j];Q[i, k]p(n) ≥ i ≥ 0, r ≥ k > j ≥ 0

Les p(n) + 1 premières de ces clauses peuvent être simultanémentsatisfaites si et seulement si, a chaque itération i, M est dans un état deQ au moins. Les clauses suivantes (il y en a (p(n) + 1).(r+ 1).(r/2)) sontévidemment satisfaites puisque M ne peut être en plus d’un seul état.On construit pareillement les groupes G2 et G3.Les groupes G4 et G5consistent chacun en une seule clause.

Le nombre de clauses dans chaque groupe, ainsi que le nombre delittéraux dans chaque clause sont bornés par une fonction polynomialeen n.

Le groupe G6 est constitué de deux sous-groupes de clauses, G6,1et G6,2. Le premier garanti que si la tête de lecture/écriture n’est pasen cours de lecture de la case j au temps (i.e. à l’itération) i, alors lesymbole dans la case j ne doit pas changer entre les itérations i et i+ 1.Ces clauses s’expriment comme suit :

G6,1 = S[i, j, l]; H[i, j]; S[i+ 1, j, l], p(n) > i ≥ 0;p(n) + 1 ≥ i ≥ −p(n), t ≥ l ≥ 0.

Pour toute itération i, case j, symbole sl , si la tête de lecture n’est pasentrain de lire la case j au temps i et que la case j contient sl à l’itérationi mais plus à l’itération i + 1, alors la clause ci-dessus dépendante de

Page 205: livre.pdf

Chapitre 12. Complétude NP 181

i, j, et l ne peut être satisfaite. Dans le cas contraire, elle doit êtresatisfaite.

Dans G6,2 lorsque qk ∈ Q − qY, qN, les valeurs de ∆, k′ et l′ sonttelles que d(qk, sl) = (qk′ , sl′ ,∆) et pour qk ∈ qY, qN,D = 0; k′ = ket l′ = l.

On génère ainsi 6(p(n)).(p(n) + 1).(r + 1).(t+ 1) clauses permettantà G6 de générer des affectations satisfaisant SAT et cohérentes avec lescontraintes.

On a ainsi montré comment construire un ensemble de clauses per-mettant de générer fL . Si x ∈ L , alors il existe un calcul acceptable parM sur x de longueur au plus p(n)∗ qui impose une affectation de valeurvrai satisfaisant au clauses de G = .G1 ∪G2 ∪G3 ∪G4 ∪G5 ∪G6 .

Inversement, la construction de G est telle que toute affectationsatisfaisant SAT de G doit correspondre à un calcul acceptable de M surx.

Il s’ensuit que fL possède une affectation vrai satisfaisant SAT si etseulement si x ∈ L.

Il reste toutefois à démontrer que pour tout langage L, fL(x) peutêtre construit sur x en temps polynomial de n = |x|.

Récapitulons :

Groupe Clauses du groupe

G1Q[i, 0];Q[i, 1]; . . . ;Q[i, r], p(n) ≥ i ≥ 0;Q[i, j];Q[i, k]p(n) ≥ i ≥ 0, r ≥ k > j ≥ 0

G2

H[i,−p(n)]; H[i,−p(n) + 1]; . . . ; H[i, p(n) + 1],p(n) ≥ i ≥ 0 ;H[i, j]; H[i, k];p(n) ≥ i ≥ 0, p(n) + 1 ≥ k > j ≥ −p(n).

G3

S[i, j, 0]; S[i, j, 1]; . . . ; S[i, j, t];p(n) ≥ i ≥ 0; p(n) + 1 ≥ j ≥ −p(n);S[i, j, k]; S[i, j, k′];p(n) ≥ i ≥ 0; p(n) + 1 ≥ j ≥ −p(n), t ≥ k′ > k ≥ 0

G4

Q[0, 0]; H[0, 1]; S[0, 0, 0],S[0, 1, k1]; S[0, 2, k2]; . . . ; S[0, n, kn],S[0, n+ 1, 0]; S[0, n+ 2, 0]; . . . ; S[0, p(n) + 1, 0]avec x = sk1sk2 . . . , skn

G5 Q[p(n), 1]

Page 206: livre.pdf

182 Complexité et Algorithmique avancée

G6

G6,1 = S[i, j, l]; H[i, j]; S[i+ 1, j, l],p(n) > i ≥ 0; p(n) + 1 ≥ i ≥ −p(n), t ≥ l ≥ 0.G6,2 = H[i, j];Q[i, j]; S[i, j, l]; H[i+ 1, j + ∆]H[i, j];Q[i, j]; S[i, j, l];Q[i+ 1, k′]H[i, j];Q[i, j]; S[i, j, l]; S[i+ 1, j, l′]

Groupe Clauses du groupe

Étant donné L, on choisit un programme particulier M qui reconnaîtL en temps polynomial. Une fois acquis le programme M, le polynôme p,la construction de l’ensemble U des variables de fL, et la collection G desclauses, le caractère polynomial du calcul s’ensuit dés lors qu’on montreque la longueur |I| du codage d’une instance I est elle même polynomial,c’est à dire qu’il s’agit d’un codage raisonnable . De cette façon, onobtient une fonction de SAT exprimée de façon raisonnable, par exemple,de longueur |U|.|G|. Une clause ne peut contenir plus de 2.|U| littéraux, etle nombre de symboles requis pour décrire un littéral n’excède pas log |U|,ce qui conduit à une taille d’au plus 2.|U|.|G| log |U|. On peut négligerle facteur logarithmique puisqu’il n’affecte pas le caractère polynomial.Puisque k et t sont fixés d’avance, ils n’interviennent qu’en qualité deconstantes facteurs de|U| et |G| , on a :

|G| = O(p(n)2) et |U| = O(p(n)2).

Comme |fL| = |U|.|G|, on a par conséquent :|fL| = O(p(n)4) et il s’agit bien d’une borne polynomiale.Pour chaque L ∈ NP, fL est une transformation polynomiale de L

en SAT, ou plus exactement de L en LSAT . Par conséquent, SAT estNP-complet.

On peut donc énoncer :

Théorème 12.3.2 SAT est NP -complet.

Ce qui serait intéressant maintenant serait de démontrer que la réci-proque est fausse, c’est un problème ouvert, une conjecture dont ladémonstration éventuelle est laissée à la sagacité du lecteur.

Page 207: livre.pdf

Chapitre 12. Complétude NP 183

12.3.2 Équilibre

Soit R ⊆ Σ∗ ×Σ∗ une relation binaire sur des chaînes de caractèresconstruites sur l’alphabet Σ. R est dite polynomialementreconnaissable (ou décidable) si le language x; y : (x, y) ∈ R estreconnaissable polynomialement sur une MTU. On dira de plus que Rest polynomialement raisonnable (i.e équilibré) si et seulement si

(x, y) ∈ R =⇒ |y| ≤ |x|k ∀ k ≥ 1.

En d’autres termes, la longueur du second terme est toujours bornée parun polynôme dont le mônome de plus haut degré s’exprime en fonctionde la longueur du premier terme.

Proposition 12.3.1 : Soit un langage L ⊆ Σ∗ ; L ∈ NP si etseulement si il existe une relation polynomialement reconnaissable rai-sonnable possédant la propriété :L = x : (x, y) ∈ R ∀y.

Preuve 12.3.1 Supposons qu’existe une telle relation R. Dans ce cas Lpeut être obtenu par une machine de Turing de la façon suivante :

Soit une entrée x (codage d’une instance paramétrée d’un problème),et une séquence y (séquence candidate à être solution) de longueur au plus|x|k, c’est à dire la borne raisonnable pour R, et alors la MTU calculeen temps polynomial sur x; y pour tester si (x, y) ∈ R. Si tel est le cas,l’algorithme répond oui sinon, il répond non, il accepte ou rejette. Il estdonc flagrant qu’il existe un calcul acceptable raisonnable si et seulementsi x ∈ L.

À l’inverse, supposons maintenant que L ∈ NP, alors L estreconnaissable en temps |x|k ∀k.

Définissons la relation R : (x, y) ∈ R si et seulement si y est lecodage d’un calcul acceptable sur la MTU effectué sur l’entrée x. LaMTU étant polynomialement bornée, la relation R est donc raisonnableet reconnaissable polynomialement puisque elle peut être testée en tempslinéaire lorsque y code un calcul acceptable de la MTU. De plus, puisquenous avons supposé que la MTU reconnaît L, on a :

L = x | (x, y) ∈ R ∀y

Cette proposition est une façon très intuitive d’aborder la significationde NP . Tout problème de NP a une propriété remarquable, à savoir que

Page 208: livre.pdf

184 Complexité et Algorithmique avancée

toute instance oui du problème possède une reconnaissance polynomiale 1

y qui est l’instance oui elle même. Évidemment, les instances non nepossèdent pas nécessairement de tels reconnaissances.

On ne sait en général pas comment exhiber une telle reconnais-sance 2 en temps polynomial, mais au moins on sait qu’elle existe lorsquel’instance considérée est une instance oui.

Pour SAT par exemple, une telle reconnaissance d’une expressionbooléenne φ est une assignation T de valeurs aux variables (i.e. uneinstanciation "numérique" des variables) qui satisfait φ (c’est-à-dire quiconfère à φ la valeur 1, ou vrai si on parle en termes logiques). T estcourt relativement à φ et n’existe que si l’expression est satisfiable. Dansle problème de recherche d’un circuit hamiltonien dans un graphe, lareconnaissance du graphe G considéré se fait précisément par constructiond’un circuit hamiltonien.

Revenons à NP. Cette classe comprend énormément de problèmesde calcul ressortissant à divers domaines, on pourraît presque dire qu’ellecontient tous les problèmes intéressants tels la recherche des plus courtschemins dans un graphe valué, assignations de valeurs vraies à despropositions logiques, minimisation de fonctions booléennes, chemin etcircuit hamiltoniens, placements de transistors dans les VLSI, etc. Ladifficulté des calculs dépend de ce qu’on veut. Parfois il s’agit de trouverun optimum dans un ensemble de possibles, d’autres fois on pourrase contenter d’un représentant de la solution, d’autres fois encore desolutions ε − approchees, d’autres fois encore la solution s’exprime entermes de satisfaction de contraintes...

12.3.3 L’appartenance à NPC

Tout problème de calcul peut être étendu de telle façon qu’il finissepar appartenir à NPC, voire pire. De même, tout problème de NPprésente des cas particulier ou des formulations particulières qui sontdans P. Mais la question est de savoir où est la frontière entre P ; NPet NPC pour peut qu’elle existe.

Il y a plusieurs façons d’aborder la question et de prouver qu’uncas particulier d’un problème entraîne l’appartenance dudit problème à

1. Ce que certains auteurs nomment certificat.2. C’est alors, qu’en introduisant le concept de certificat, certains auteurs avancent

celui de Machine de Turing non Déterministe pour justifier l’obtention dudit certificat.

Page 209: livre.pdf

Chapitre 12. Complétude NP 185

NPC. La plus utilisée, nous l’avons vu, c’est la réduction polynomiale,quand on a juste à constater qu’on obtient des instances appartenant aucas particulier considéré.

Pour démontrer que SAT est dans NPC nous avons dû démontrerque tout problème de NP pouvait se réduire polynomialement à SAT.Désormais, et puisque NPC est une classe d’équivalence, pour démon-trer qu’un problème fait partie de NPC il ne sera plus nécessaire derefaire toute cette démonstration. Il suffira de démontrer que le problèmeconsidéré est équivalent à SAT. Pour ce faire, il faudra démontrer quela problème considéré se réduit polynomialement à SAT et inversement,que SAT se réduit polynomialement au problème considéré. C’est-à-direqu’on doit avoir pour un problème (i.e. langage) L considéré :

SAT ∝ L et L ∝ SAT.

En fait, puisque TOUT problème de NP est réductible polynomialementà SAT, on a NPC ⊂ NP, (en supposant qu’ils sont différents) donc,pour montrer qu’un problème P fait partie de NPC il suffira de montrerque SAT ∝ P ou, puisqu’il y a transitivité qu’un problème Pi : SAT ∝ Piest tel que Pi ∝ P.

12.3.3.1 Le cas de k-SAT

Proposition 12.3.2 : 3-SAT est dans NPC.

Preuve 12.3.2 Supposons qu’on ait un ensemble de variables boolée-nnes X = x1, x2, . . . , xn et des clauses C = c1, c2, . . . , cm de cardinalitéquelconque. On est alors dans le cas générique de SAT. Nous allonsmontrer comment construire une instance générique de 3-SATéquivalente à cette instance générique de SAT.

3-SAT est composé alors de l’ensemble X∗ de variables booléenneset d’un ensemble de clauses C∗ tel que ∀c∗i ∈ C∗; |c∗i | = 3. Le problèmeest alors de construire X∗ et C∗. X∗ contient a minima les variables deX ; on a donc :

X∗ = Xm⋃j=1

X′j et C∗ =m⋃j=1

C′j

La notation X′ représente des ensembles de variables dont la compositionsera explicitée ci-après. La construction de C∗ s’avère un peu plus délicate,

Page 210: livre.pdf

186 Complexité et Algorithmique avancée

et c’est celle-ci qui va permettre de déterminer ce que sont les X′j etcombien il convient d’en introduire.

Nous serons amenés à considérer quatre cas suivant que les clausesconsidérées contiennent 1, 2, 3 ou plus de variables booléennes.

Soient z1, z2, . . . , zk les littéraux issus de X.

1. Lorsque la clause de SAT ne contient qu’une seule variable, ilconvient alors d’en rajouter 2 pour atteindre 3 variables dans unenouvelle clause correspondante pour 3− SAT on a alors :– X′j = y1

j , y2j et

– C′j = z1, y1j , y

2j ; z1, y

1j , y

2j; z1, y

1j , y

2j ; z1, y

1j , y

2j ;

2. lorsque la clause ne contient que 2 variables, il faut alors en rajouterune seule, on a alors :– X′j = y1

j et :– C′j = z1, z2, y

1j ; z1, z2, y

1j ;

3. lorsque la clause considérée contient exactement 3 variables,il n’y a rien à changer, on a– X′j = ∅ et :– C′j = cj ;

4. lorsque la clause contient plus de 3 littéraux, alors il faut l’éclateren plusieurs clauses équivalentes de 3 variables exactement. Dansce cas, si le nombre de littéraux dans la clause de SAT concernéeest k, on peut opérer de la façon suivante :– X′j = yij : 1 ≤ i ≤ k − 3, et :– C′j = z1, z2, y

1j ∪ yij , zi+2, y

i+1j :

1 ≤ i ≤ k−4∪yk−3j , zk−1, zk .

Il nous faut prouver maintenant que l’ensemble des clauses de C∗ n’estsatisfiable que si l’ensemble des clauses de C l’est et réciproquement.

En reprenant les 4 cas ci-dessus point par point, on voit que :– Pour le cas 1 l’équivalence est évidente, les rôles respectifs desvariables y1

j et y2j s’annulant réciproquement grâce à leurs nég-

ations, elles ne font que du "remplissage" ;– idem pour le cas 2, le cas 3 ne posant pas de problème particulier ;

Page 211: livre.pdf

Chapitre 12. Complétude NP 187

– dans le cas 4, on opère un "chaînage" des clauses introduites parun jeu sur les variables et leurs négations. La structure obtenue estde la forme :

., ., yi1 ∪ yi1 , ., yi2 ∪ . . . ∪ ., .yil ∪ yil , ., .

qui est une systématisation de 1.On remarque que dans chacun des cas, le nombre de littéraux nouveauxintroduits est une fonction linéaire du nombre initial de variables. Pour cequi est des clauses, la transformation, lorsque toutes les clauses initialesde SAT on plus de 3 variables, induit au plus n.m clauses supplémen-taires. On peut donc toujours transformer SAT en 3-SAT par réductionpolynomiale et donc aussi en temps polynomial.

12.3.4 Couverture d’un graphe

(voir aussi [GJ79, Pap95])

Théorème 12.3.3 (Ensemble stable, maximal) La recherche d’unensemble stable maximal 1 (désormais on ne précisera pas intérieurement)dans un graphe est NPC.

Rappel : Un ensemble stable S dans un graphe G = (X,Γ) est unensemble de sommets tel qu’il n’y ait pas d’arête les joignant deux àdeux.

S ⊆ X|∀xi, xj ∈ S; (xi, xj) /∈ Γ

Un tel ensemble S est dit maximal, qu’on notera S∗ si on ne peut yajouter un sommet sans violer la définition :

S∗|∀y ∈ X− S∗,∃x ∈ S∗ : (x, y) ∈ Γ

. Un tel ensemble stable maximal est aussi un ensemble couvrant, ainsi,on notera le problème SETST pour la suite.

Dans un ensemble stable maximal, chaque sommet appartient à uneclique 2. Pour associer le problème de la recherche d’un ensemble stableà une instance SAT, il faut décomposer le graphe en cliques disjointes.

1. Dans la littérature anglo-saxonne, on utilise le terme d’ensemble indépendant(independent set).

2. Un graphe complet, c’est-à-dire qu’il y a toujours une arête entre deux sommets.

Page 212: livre.pdf

188 Complexité et Algorithmique avancée

Le plus simple de ce type de graphes est un graphe décomposable encliques formées de trois sommets, c’est-à-dire en "triangles". C’est pour-quoi nous nous référerons par la suite à 3-SAT, sachant que c’est le casle plus simple.

Preuve 12.3.3 La preuve se mène en trois parties :1. SETST est un problème de NP Ce résultat est évident, étant

donné un ensemble S′ de sommets d’un graphe, on peut vérifier entemps polynomial que :– il n’existe pas d’arête joignant deux sommets de S′ ;– tout autre sommet du graphe qui n’est pas dans S′ est extrémitéd’une arête dont l’autre extrémité est dans S′.

2. Transformons 3-SAT en SETST : On sait que k-SAT est dansNPC et plus particulièrement, 3-SAT. Donc, si on sait réduirepolynomialement 3-SAT à SETST, on aura montré que SETST estde même nature que 3-SAT du point de vue de la complexité, c’est-à-dire ici que SETST est dans NPC. Il nous faut donc transformer3-SAT polynomialement en SETST.soit donc formellement une instance générique de 3-SAT :

φ = C1, . . . ,Cn et |Ci| = 3 (12.1)

Considérons les clauses de 3-SAT, on peut assimiler chacune desclauses à un triangle d’un graphe dont les sommets seraient éti-quetés par les variables composant les clauses. Par ailleurs si ungraphe contient un triangle, alors l’un des sommets doit faire partiede SETST et un seul, sinon il y a une arête au moins qui jointdeux sommets de l’ensemble (évident).Donc, dans 3-SAT on doit faire en sorte que la solution ne puissecontenir qu’une seule variable de chaque clause.Il n’est nul besoin de travailler sur toutes les topologies possiblede graphes, puisque ce qui nous intéresse ici c’est un théorèmed’existence. Il nous faut montrer d’abord qu’on peut assimiler 3-SAT à un graphe et que la solution de 3-SAT est un ensemble stablemaximal du graphe, et réciproquement, il nous faut montrer qu’ilexiste des graphes qui se réduisent polynomialement à 3-SAT etdont les ensemble stables maximaux sont des solutions de 3-SAT.

Page 213: livre.pdf

Chapitre 12. Complétude NP 189

Il suffit donc de considérer une classe de graphes représentative deces propriétés.Considérons donc les graphes composés de triangles au sensci-dessus.

Exemple 12.3.1 considérons l’instance suivante de 3-SAT à 4clauses :

φ = (x1 ∨ x2 ∨ x4) ∧ (x1 ∨ x2 ∨ x4)∧ (x1 ∨ x2 ∨ x4) ∧ (x1 ∨ x2 ∨ x4)

φ = Clauses φ =

(x1 ∨ x2 ∨ x4) C1 (α1,1 ∨ α2,1 ∨ α3,1)∧ ∧

(x1 ∨ x2 ∨ x4) C2 (α1,2 ∨ α2,2 ∨ α3,2)∧ ∧

(x1 ∨ x2 ∨ x4) C3 (α1,3 ∨ α2,3 ∨ α3,3)∧ ∧

(x1 ∨ x2 ∨ x4) C4 (α1,4 ∨ α2,4 ∨ α3,4)

On fait correspondre à φ un graphe construit comme suit :A chaque clause de φ on fait correspondre un triangle du graphe,tous les triangles étant disjoints, a chaque sommet de chaquetriangle, on associe un littéral de la clause qui a servi à créer le tri-angle. Ainsi, il y a un sommet par littéral dans chaque clause ce quisignifie que si un littéral apparaît dans deux clausesdifférentes, il sera associé à deux sommets différents du graphe,dans deux triangles disjoints. On ajoute comme arête entre lestriangles des arêtes telles que (xi, xi), xi ∈ Cj et xi /∈ Cj, c’est-à-dire qu’on ajoute des arêtes entre des sommets de triangles différentssi et seulement si les sommets extrémités de ces arêtes représententdes littéraux opposés.La signification alors en devient plus claire. Dans l’exemple 12.3.1,choisir α1,1 = V où α1,1 est la première variable de la premièreclause, interdit de prendre α1,2 = V et α1,3 = V.

Page 214: livre.pdf

190 Complexité et Algorithmique avancée

Dans cette nouvelle formulation, il apparaît clairement que la sa-tisfaction de φ ne peut se faire qu’en donnant la valeur V à unevariable et une seule dans chaque clause.Ainsi, d’une façon plus formelle, on a Ci = (α1i ∨α2i ∨α3i) où αijest un littéral qui peut être une variable booléenne ou sa négation.Le graphe associé à φ se construit comme suit :

Gmφ = (S,A) avecS = si,j |i = 1, . . . ,m et j ∈ 1, 2, 3

Ensemble des sommetsA = [si,j , si,k] : i = 1..m; j 6= k⋃

[si,j , si,l : i 6= l, αi,j = αi,l]Ensemble des arêtes.

m est le nombre de clauses dans φ et donc de "triangles" dans Gmφ .

Pour bien comprendre l’exemple 12.3.1, il faut bien comprendre lessignifications des littéraux et leurs relations avec les variablesLemme 12.3.3 Pour qu’il y ait un ensemble stable maximal dansGmφ de taille m, il faut et il suffit que φ soit satisfiable.

Si un tel ensemble stable existe, appelons le E, |E| = m il estconstitué d’un littéral par sommet de chacun des triangles. Parailleurs aucune clause ne contient deux littéraux de variables bool-éennes opposées (une niée et une non niée). Les variables booléennes(les littéraux mis à la valeur V -ou 1-) de E constituent donc unesolution de φ. Il ne peut y avoir, par construction deux littéraux,l’un nié, l’autre non dans E puisque si l’un l’est, l’autre est "couvert"par le fait qu’on a pris la précaution de créer une arête entre deuxlittéraux opposés. Et comme E contient un et un seul littéral parclause, φ est satisfaite.

3. Réciproquement Si il existe une solution satisfaisant φ, alors ellecontient un littéral mis à la valeur V (i.e 1) issu de chaque clauseet représente un sommet d’un triangle associé à cette clause. Ainsi,la solution contient exactement m littéraux.

Ce faisant, on remarquera que les problèmes de clique et d’ensemblesstables extérieurement sont étroitement liés à SETST et sont eux aussi

Page 215: livre.pdf

Chapitre 12. Complétude NP 191

dans NPC. la démonstration par réduction polynomiale à SETST se faitfacilement, nous en laissons le soin au lecteur.

Lorsqu’on analyse la complexité d’un problème de NPC, on essaiede préciser où est la frontière entre les cas qui ressortissent à la classe Pet ceux qui sont dans NPC. Ce faisant bien sûr on admet implicitementque P 6= NP.

Essayer de "baliser" cette frontière entre NPC et NP est l’objet duchapitre suivant.

12.3.5 La classe Co-NPC

De même que pour la classe Co-NP, on peut définir la classe Co-NPC.

Définition 12.3.1 En termes de problème :

Co−NPC = Π |Π ∈ NPC;

en termes de langage :

Co−NPC = Σ∗ − L |L langage sur l’alphabet Σ et L ∈ NPC.

12.3.6 Sur l’équivalence de certains problèmes

Nous avons montré, pour pouvoir démontrer l’existence de la classeNPC que certains problèmes étaient équivalents à SAT par réductionpolynomiale (notée ∝) du fait que ces problèmes sont tous équivalentsà SAT, ils appartiennent à la même classe d’équivalence, et celle-ci estNPC lui-même. Toutefois, ces démonstrations d’équivalence n’ont pastoutes été menées de la même façon. Tantôt on démontre directement une∝-équivalence à SAT, tantôt une ∝-équivalence à un problème lui-même∝-équivalent à SAT. mais, comme on pouvait s’y attendre, on trouve lemême résultat en établissant des équivalences systématiques de problèmeà problème, sans passer par la réduction polynomiale.

Page 216: livre.pdf

192 Complexité et Algorithmique avancée

Exercices

Exercice 19 [Le problème de Langford]Ont considère le problème de Langford : on dispose de cubes de n

couleurs (deux cubes de chaque couleur), et on souhaite les disposer dela manière suivante : les deux cubes de la couleur 1 sont séparés par uncube, ceux de la couleur 2 par deux cubes, . . .

Exemple : 4 1 3 1 2 4 3 2Les mathématiciens, et nous leur ferons confiance, montrent que le

problème de Langford admet une solution si et seulement si n est de laforme 4k + 3 ou 4k + 4 (on voit aisément que pour n = 1 ou n = 2, il nesaurait y avoir de solution).

1. Par convention, on va numéroter les cubes de 1 à 2n, avec le cubej et le cube 2n+ j de couleur j On va résoudre ce problème parune recherche arborescente : à chaque couple cube-position (i, k)(il y a 2n positions et 2n cubes), on associe un littéral pik signifiant“le cube i est en position k”.Donnez une conjonction de disjonction de littéraux exprimant lefait que les cubes j et 2n + j sont correctement placés l’un parrapport à l’autre (donc que leurs positions respectives sont séparésde j cubes).

2. Donnez une formule booléenne exprimant que deux cubes nepeuvent être à la même place.

3. Donnez une formule booléenne exprimant que tous les cubes sontcorrectement positionnés et qu’ils ne se chevauchent pas.

4. Montrez que le problème de Langford est NP. On admettra queSAT est NP.

Exercice 20 [k-SAT : les cas k = 2 et k > 2]

1. Donnez la définition du problème SAT.2. Donnez la définition du problème k-SAT.3. Définissez la réduction polynomiale.4. Définissez un problème NP-complet.5. Enoncez le théorème de Cook.

Page 217: livre.pdf

Chapitre 12. Complétude NP 193

6. On veut montrer que 2-SAT est dans P. L’idée de cette démons-tration est que si l’un des deux littéraux d’une clause est à faux,l’autre est nécessairement à vrai.(a) Proposez un codage pour une instance de 2-SAT (pensez au

codage utilisé en TD).(b) Ecrivez une machine de Turing remplaçant une variable par

sa valeur, et échouant si cette substitution entraîne une clauseà faux.

(c) Ecrivez une machine de Turing cherchant les clauses danslesquelles apparaît un littéral à faux et stockant le deuxièmelittéral de ces clauses sur un ruban auxiliaire.

(d) Décrivez une machine de Turing basées sur les deux précé-dentes résolvant 2-SAT (utilisez autant de rubans que néces-saire).

(e) Calculez la complexité de cette dernière machine de Turing,et concluez.

Exercice 21 [Cycle eulérien]On considère un graphe G non-orienté. On suppose connu que le

problème du cycle hamiltonien (trouver un cycle dans un graphe passantune et une seule fois par chaque sommet) est NP-complet. Le problèmedu cycle eulérien consiste en la recherche d’un cycle dans un graphepassant une fois et une seule par chaque arête.

Le graphe dual G∗ d’un graphe G est le graphe dont les sommetsont les arêtes de G, et dans lequel une arête rejoint deux sommets siet seulement si ils représentent des arêtes de G ayant un sommet encommun. Par exemple, si le graphe G a quatre sommets 1, 2, 3 et 4 et lesarêtes 1-2, 2-3, 3-4 et 1-3, son dual aura 5 sommets, correspondant au 4arêtes de G et les arêtes (1-2)-(2-3), (1-2)-(1-3), (2-3)-(3-4), (2-3)-(1-3)et (3-4)-(1-3).

1. Proposez un codage pour représenter les graphes sur un ruban demachine de Turing.

2. Ecrivez une machine de Turing polynomiale prenant en entrée ungraphe codé selon le codage proposé à la question précédente etfournissant le graphe dual.

3. Montrez que le problème du cycle eulérien est équivalent à celuidu cycle hamiltonien sur le graphe dual.

Page 218: livre.pdf

194 Complexité et Algorithmique avancée

4. Qu’en concluez-vous ?

Le théorème d’Euler nous apprend qu’un graphe admet un cycleeulérien si et seulement si tous ses sommets sont de degré pair.

5. Ecrivez une machine de Turing polynomiale résolvant le problèmede décision du cycle eulérien.

6. Qu’en concluez-vous ?

Exercice 22 [Programmation linéaire en nombres entiers]La programmation linéaire en nombres entiers (PLNE) consiste à trou-

ver une solution entière à un système du typemj ≤

∑ni=1 αijxi ≤ Mj/1 ≤ j ≤ m, optimale pour le critère

max∑ni=1 βixi, les mj , Mj , αij et βi (1 ≤ j ≤ m, 1 ≤ i ≤ n) étant

donnés ainsi que n et m.

1. Montrez que PLNE est NP.

On cherche maintenant à construire une instance de PLNE à partird’une instance de SAT :

∧mj=1

∨ni=1 li (les li étant des littéraux). On

représentera une variable booléenne par une variable entière, la valeurentière 1 représentant la valeur booléenne vrai, et la valeur entière 0 lavaleur booléenne faux.

1. Proposer une inéquation imposant qu’une variable ait la valeur 0ou 1.

2. Proposer une formule entière représentant la négation d’une variablebooléenne.

3. Proposer une inéquation représentant les conditions que doiventsatisfaire les variables entières pour que la conjonction de départsoit satisfiable.

4. Proposer une instance de la PLNE satisfiable si et seulement sil’instance de SAT considérée est satisfiable.

5. Après avoir proposé des codages adaptés de la PLNE et de SAT,montrez que la transformation est polynomiale.

6. Conclure.

Exercice 23 [Coloriage des graphes] Un k-coloriage d’un grapheG = (V,E) est une application f : V → [[1, k]] telle que∀(a; b) ∈ E, f(a) 6= f(b). Autrement dit, à chaque sommet on

Page 219: livre.pdf

Chapitre 12. Complétude NP 195

associe une “couleur”, c’est-à-dire un entier, de façon à ce que deuxsommets adjacents soient toujours de couleurs différentes.

Nous considérons le problème de décision Col suivant : étant donnéun graphe G et un entier k ;, existe-t-il un k-coloriage de G ?

1. Quel est le problème d’optimisation associé à Col ?2. Expliquer pourquoi Col est NP.On propose la transformation d’une instance de 3-SAT en une instance

de Col suivante : à chacune des n variables propositionnelles xi, on associetrois sommets vi, si et nsi ; pour tout i, si et nsi sont reliés ; si et nsi sontreliés à vj pour tout i 6= j et j 6= 0 ; on introduit un sommet cj par clause ;les ck sont tous reliés à un sommet v0, et aux sommets correspondantaux littéraux n’appartenant pas à la clause ; les vj forment une clique.

On travaille sur un (n+ 1)-coloriage.3. Montrer que les vi (0 ≤ i ≤ n) sont tous de couleurs différentes.4. Montrer que si et nsi (1 ≤ i ≤ n) sont de couleurs différentes, et

que leur couleur est soit f(vi), soit f(v0).5. Montrer que pour toute clause, le sommet associé est de la couleur

du sommet associé à l’un des littéraux de la clause, et que cettecouleur n’est pas f(v0).

6. En déduire que chaque clause contient au moins un littéral dont lesommet associé dans un (n+ 1)-coloriage est d’une autre couleurque v0.

7. En déduire que si le graphe associé est (n+1)-coloriable, la formulede départ est satisfiable.

8. Montrer l’implication inverse.9. Montrer que la transformation est polynomiale.

10. Conclure.

Exercice 24 Donner le graphe associé pour l’expression 3-SATsuivante :

(l1 ∨ l2 ∨ l3) ∧ (l1 ∨ l2 ∨ l4) ∧ (l2 ∨ l3 ∨ l5) ∧ (l3 ∨ l4 ∨ l5).

Exercice 25Expliquer succinctement pourquoi la fonction de réduction décrite

ci-dessus s’effectue en temps polynomial.

Page 220: livre.pdf
Page 221: livre.pdf

Chapitre 13

Le pire n’est pas toujourscertain

Il convient de rappeler ici que cet ouvrage ne traite pour l’essentiel quede la complexité calculatoire dans le pire des cas. Or cette situation

n’est pas nécessairement systématique, il arrive même pour certainsproblèmes et algorithmes qu’elle soit exceptionnelle (c’est le cas parexemple en programmation linéaire pour l’algorithme du simplexe). Nousallons traiter ci-après de cas dans lesquels "on peut faire quelque chose".D’abord nous examinerons quelques cas particuliers de SAT, puis nousnous intéresserons au problème connu sous le nom de Problème dusac à dos qui, bien qu’appartenant à la classe NPC présente quelquesparticularités qui permettent de le traiter de manière réaliste.

13.1 Autour de SAT

13.1.1 Le cas 2-SAT

Proposition 13.1.1 2-SAT est dans P

Soit φ une instance de 2-SAT . C’est un ensemble de clauses contenantchacune au plus deux littéraux.

On peut définir un graphe Gφ(X,Γ) associé à ce problème commesuit :

Les sommets de G sont associés aux variables de φ et à leurs négations ;(Xα, Xβ) est un arc de Gφ si et seulement si il y a une clause (α ∨ β) ou

Page 222: livre.pdf

198 Complexité et Algorithmique avancée

(α ∨ β) dans φ. En fait les arcs de Gφ représentent les implications (=⇒)induites par les clauses de φ.

Par exemple, dans la clause (x1∨x2) si on prend x2 = 0 ou x2 = faux,c’est à dire x2 alors pour que cette clause soit vérifiée (φ étant une formenormale conjonctive 1, chaque clause doit être vérifiée individuellement),il faut que x1 = 1 ou vrai. C’est le sens des implications induites parles clauses de φ. Ainsi, dans l’exemple de la figure 13.1 aux clauses sontassociées des arcs comme suit :

Apparaissent alors des symétries dans G. Ainsi si (Xα,Xβ) est un arcde Gφ, alors (Xβ,Xα) l’est aussi. Les chemins dans Gφ sont donc aussides implications par transitivité. La figure 13.1 représente l’interprétationgraphique de l’instance :

φ = (x1 ∨ x2) ∧ (x1 ∨ x3) ∧ (x1 ∨ x2) ∧ (x2 ∨ x3) ∧ (x1 ∨ x3).

X1

X3

X2

¬X2

¬X1

¬X3

φ=(x1∨x2)∧(x1∨¬x3)∧(¬x1∨x2)∧(x2∨x3)∧(x1∨x3)

Figure 13.1 – Interprétation graphique de 2-SAT

1. On aurait pu écrire φ sous forme normale disjonctive, le passage d’une forme àl’autre se faisant par utilisation des formules dites de De Morgan

Rappel : (x ∨ y) = x ∧ y et (x ∧ y) = x ∨ y.

Page 223: livre.pdf

Chapitre 13. Le pire n’est pas toujours certain 199

Les arcs de la figure sont induits par les clauses de φ de la façon suivante :– la clause (x1 ∨ x2) est représentée par un arc (X1,X2) ;– la clause (x1 ∨ x3) est représentée par l’arc (X3,X1) ;– la clause (x1 ∨ x2) est représentée par l’arc (X1,X2) ;– la clause (x2 ∨ x3) est représentée par l’arc (X2,X3) ;– la clause (x1 ∨ x3) est représentée par l’arc (X1,X3).

De plus, à tout arc (Xα,Xβ), il faut ajouter son symétrique naturel(Xβ,Xα). Ainsi, dans la figure 13.1, doit-on rajouter les arcs :

– (X2,X1) qui fait pendant à (X1,X2) ;– (X3,X1) qui fait pendant à (X3,X1) ;– (X1,X2) qui fait pendant à (X2,X1) ;– (X2,X3) qui fait pendant à (X3,X2) ;– (X1,X3) qui fait pendant à (X3,X1).D’où le théorème :

Théorème 13.1.1 : φ est non satisfiable si et seulement si il existe unevariable x telle qu’il existe un chemin de X à X et de X à X dans Gφ.

Preuve 13.1.1 In absurdo : supposons qu’il existe un chemin de X àX et de X à X dans Gφ, et que φ puisse être satisfaite par une assignationvraie T des variables. Supposons que T(x) = vrai (le même argumenttient pour T(x)). Puisqu’il existe un chemin de X à X, et T(x) = vraitandis que T(x) = faux, il doit exister un arc (Xα,Xβ) dans ce chemintel que T(α) = vrai et T(β) = faux. Toutefois, comme (Xα,Xβ) est unarc de Gφ, il s’ensuit que (α ∨ β) est une clause de φ. Cette clause nepeut être satisfaite par T, il y a donc contradiction.Inversement, supposons maintenant qu’il n’y ait aucune variable avecun tel chemin dans Gφ. Nous cherchons une assignation de valeurs auxvariables entraînant la valeur vrai, c’est à dire une assignation vraietelle qu’il n’y ait aucun arc de Gφ qui relie vrai à faux. En itérantla démarche suivante : On part d’un sommet Xα dont la valeur n’apas encore été définie et telle qu’il n’y ait pas de chemin de Xα à Xα.On considère tous les sommets de Gφ accessibles depuis Xα, et on leurassigne la valeur vrai. Et on assigne la valeur faux aux négations dessommets ainsi identifiés. Ce sont tous les sommets à partir desquels Xα

est accessible. Cette étape est bien fondée puisque s’il y a des chemins deXα à Xβ et Xβ, alors il y a aussi des chemins de Xα à Xβ et Xβ (parsymétrie de Gφ), et donc un chemin de Xα à Xα, ce qui est contradictoire

Page 224: livre.pdf

200 Complexité et Algorithmique avancée

avec l’hypothèse.De plus, s’il existe un chemin de Xα à un sommet déja marqué faux lorsd’une étape précédente, alors Xα est un prédécesseur de ce sommet etla variable associée doit aussi être assignée à la valeur faux. On répètecette étape jusqu’à ce que tous les sommets soient assignés. Puisqu’onsuppose qu’il n’y a pas de chemin de Xα à Xα et inversement, tous lessommets doivent être assignés pour que l’expression soit satisfaite. Etcomme ces étapes sont toutes identiques, chaque fois qu’un sommet estassigné à la valeur vrai, tous ses successeurs sont assignés à vrai, etinversement pour faux, il ne peut y avoir d’arc de vrai à faux. Cetteassignation satisfait φ. CQFD.

Corollaire 13.1.1 2–SAT ∈ P.

Preuve 13.1.2 Sachant que le théorème 13.1.1 nous dit qu’une conditionnécessaire et suffisante pour que φ soit non satisfiable est de trouver unevariable x telle qu’il existe un chemin allant du sommet X associé à xdans Gφ au sommet X associé à la variable x, la recherche d’un tel cheminpeut-être faite en temps polynomial. Par conséquent la non-existence d’untel chemin pour chaque sommet peut également être prouvée en tempspolynomial. CQFD.

13.2 Cas particuliers de SAT

Certaines conformations de SAT permettent d’obtenir des résultats entemps polynomial. En particulier, l’occurence -ou non- de littéraux souscertaines formes (niée ou non niée) permet d’élaborer des algorithmesparticuliers.

13.2.1 SET et SAT

Ainsi en est-il par exemple du problème dit du recouvrement (SETcovering problem en anglais). Ce problème est un cas particulier deSAT pour lequel il n’apparaît aucun littéral nié dans les clauses. Unefaçon simple de résoudre est alors d’assigner à la valeur 1 une variabledans chaque clause. Plus difficile est le problème de couverture minimalequi se décline en deux problèmes. La minimalité peut être comprise ausens de l’inclusion. Il s’agit alors de construire un monôme constitué de

Page 225: livre.pdf

Chapitre 13. Le pire n’est pas toujours certain 201

littéraux exclusifs, à savoir si on enlève un seul des littéraux, il n’y a pluscouverture. La minimalité peut aussi s’entendre au sens du cardinal dumonôme. Il s’agit alors de trouver la couverture minimale (au sens del’inclusion comme précisé ci-dessus) mais comprenant un nombre minimalde littéraux, on l’appelle couverture de cardinal minimal.

Exemple 13.2.1 Considérons la FNC suivante :

F = (x2 ∨ x3 ∨ x5 ∨ x6) ∧ (x1 ∨ x2 ∨ x4) ∧ (x3 ∨ x6 ∨ x7)

Une couverture minimale au sens de l’inclusion serait par exemple :x4 ∧ x5 ∧ x7 ; et une couverture de cardinal minimal : x2 ∧ x3

On peut remarquer qu’on dispose là d’un algorithme de transformationd’une FNC en FND équivalente. Il s’agit alors d’énumérer toutes lescouvertures minimales d’une FNC et de les utiliser comme monômes dansla FND. Il s’agit là d’un algorithme qui est de complexité exponentielle,et qui est "plus" que NPC puisque sa vérification n’est elle-même pas po-lynomilae, on n’en connaît pas d’autre (voir [Lav74] pour l’algorithmiqueafférente).

13.2.2 Validation, tautologie et non-satisfiabilité

On sait, par un théorème général d’algèbre de Boole, que toute fonc-tion booléenne f peut se mettre sous forme de FNC ou sous forme deFND. On étend donc le vocabulaire propre à SAT aux fonctions boo-léennes en général. Ainsi, on dit qu’une fonction booléenne est satisfiablesi il existe une assignation de valeurs A(xi) → 0, 1n; i = 1..n auxvariables qui la composent de telle façon qu’on ait : f = 1. Cette situationse note A |= f on dit aussi en logique que A est un modèle pour f . Sitoute assignation est telle que A |= f , alors f est dit être une tautologieet on note |= f ; on dit aussi que f est valide. Ainsi, une tautologie estsatisfiable.

Propriété 13.2.1

f −→ 0, 1n :|= ¬f =⇒ fest non− satisfiable

Cette propriété est vraie pour toute expression booléenne. Ainsi l’en-semble des expressions booléennes présente, par rapport à la non-satis-fiabilité, une certaine symétrie,

Page 226: livre.pdf

202 Complexité et Algorithmique avancée

Exemple 13.2.2 L’expression booléenne (x1 ∨x2)∧x2 est satisfaite parl’assignation x1 = 1, x2 = 0 ou encore par l’assignation x1 = x2 = 0.

De même, considérons l’expression :

f∗ = (x1 ∧ x2 ∧ x3) ∨ (x1 ∧ x2) ∨ (x2 ∧ x3)∨(x3 ∧ x1) ∨ (x2 ∧ x3) ∨ (x1 ∧ x2 ∧ x3)

Il s’agit d’une FND, forme normale disjonctive. Il suffit qu’une as-signation donne la valeur 1 à l’un des monômes pour qu’on ait f∗ = 1.Ici, quelle que soit l’assignation de valeur qu’on donne aux variables, ona toujours f∗ = 1, il s’agit donc d’une tautologie : |= f∗. L’expressioninverse ¬f∗ s’écrit :

¬f∗ = (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x2 ∨ x3)∧(x3 ∨ x1) ∧ (x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3)

Elle est contradictoire, c’est-à-dire non-satisfiable. Quelle que soit uneassignation de valeurs 0, 1 à chacune des variables, on aura ¬f∗ = 0.

Une tautologie donnée sous forme FNC ou FND est reconnaissable à sastructure et cette propriété fournit donc un algorithme polynomial pouridentifier certains cas de non-satisfiabilité.

13.2.3 Clauses de Horn

Un autre cas particulier de SAT pour lequel on peut exhiber unalgorithme polynomial est celui des clauses de Horn (voir [Hor51]).Il s’agit là d’une forme très importante de SAT qui peut se résoudre nonseulement polynomialement, mais en temps linéaire.

En logique, et en particulier en calcul propositionnel, une clause deHorn est une proposition du type :

(x1 ∧ x2 ∧ x3... ∧ xi) =⇒ y, (13.1)

où le nombre de propositions combinées par ∧ est aussi élevé que désiré(et peut être nul). Ces propositions jouent un rôle fondamental, dans laprogrammation logique par exemple et dans la conception des systèmesexperts. Les formules de De Morgan font qu’on peut réécrire ces clausesde Horn sous forme normale conjonctive -FNC- comme suit :

(x1 ∨ x2 ∨ ... ∨ xi) ∨ y.

Page 227: livre.pdf

Chapitre 13. Le pire n’est pas toujours certain 203

L’intérêt des clauses de Horn réside dans la preuve logique de théorèmepar calcul des prédicats du premier ordre. On peut réduire deux clausesde Horn à une clause de Horn. En preuve automatique des théorèmes,on peut atteindre ainsi une très grande efficacité en représentant lesprédicats sous forme de clauses.

L’une des plus brillantes utilisation des clauses de Horn est le langagede programmation Prolog qui est basé sur l’utilisation systématique deces clauses.

Dans une clause de Horn, tous les littéraux, sauf à la rigueur undoivent représenter des négations de variables.

Exemple 13.2.3 (Clauses de Horn) (x) ; x ; (x1 ∨ x2) ;(x1 ∨ x2 ∨ x3 ∨ x4) ; (x1 ∨ x2 ∨ x3 ∨ x4) sont des clauses de Horn. Ladernière ne contient que des variables niées, les autres sont en fait desimplications puisqu’elles peuvent être ré-écrites sous la forme

(x1 ∨ x2 ∨ x3 ∨ x4) ⇐⇒ (x1 ∧ x2 ∧ x3) =⇒ x4

Sous cette forme, une fonction f SAT qui est une conjonction de clauses deHorn est résoluble en temps polynomial. En effet, il existe un algorithmesimple d’assignation de valeurs 0, 1 aux variables qui permet de diresi une clause Horn est satisfiable -ou non- et donc qui permet aussi derépondre si SAT-Horn (SAT écrit sous forme de clauses de Horn) qui estune conjonction de clauses de Horn est -ou non- satisfiable.

Le principe de l’algorithme est assez simple. Il consiste en un premiertemps à travailler clause par clause. Pour chaque clause, qui donc estune implication comme montré ci-dessus en 13.1, on initialise le calculen assignant la valeur 0 à toutes les variables. On considère alors uneimplication fausse (x1∧x2∧· · ·∧xi∧· · ·∧xp) =⇒ y, c’est-à-dire une clause(x1 ∨ x2 ∨ ... ∨ xi ∨ y) dans laquelle ∀i ∈ 1..p ⊂ N∗;xi = 1 et y = 0tous les xi à la valeur 1, donc les xi à la valeur 0. Pour que la clauseprenne la valeur 1 il faut alors qu’on ait y = 1.

L’algorithme classique de résolution est de type dit glouton ; il procèdepar agrégation progressive de résultats partiels jusqu’à ce que, ne pouvantplus progresser pour cause d’épuisement des cas à examiner, il fournisse lerésultat final. Ce type d’algorithme est basé sur l’hypothèse qu’on passed’une solution à une meilleure par un processus continu et progressif,sans saut, s’apparentant par sa démarche à celle de la programmationconvexe.

Page 228: livre.pdf

204 Complexité et Algorithmique avancée

Toutes les variables sont initialisées à faux (respectivement 0).On considère un ensemble V qui contiendra les variables à valeur

vrai (respectivement 1).L’algorithme démarre en testant une à une les clauses non satisfaites

contenant un littéral non nié, c’est à dire les implications. Considérons unetelle implication non satisfaite, elle est du type ((x1∧x2∧ ...∧xm) =⇒ y).Dans une telle clause, tous les xi ont la valeur vrai (respectivement 1),et y = faux (resp. 0) puisque la clause est non satisfaite. On inclut alorsy dans l’ensemble V et on pose y = vrai (resp. 0). On opère ainsi deproche en proche pour toutes les implications non satisfaites. Le cardinalde V va croissant, le nombre de variables d’une instance de SAT étantfini, l’algorithme termine en ayant satisfait toutes les implications del’instance φ de SAT considérée. Par ailleurs, on vérifie par l’absurde queV est unique.

En effet, supposons que tel ne soit pas le cas, alors il existe un autretel ensemble V1 de variables de φ à valeurs vrai (i.e. 1) qui vérifie aussitoutes les implications de φ. On aurait alors V ⊆ V1. Or il ne peut yavoir une clause implicative de φ qui soit à la fois vérifiée pour V1 et paspour V, par construction. D’où :

Théorème 13.2.1 L’instance φ de SAT constituée de clauses de Hornest satisfiable si et seulement si la valeur de vérité des variables del’ensemble V tel qu’obtenu comme décrit par l’algorithme satisfait φ.

Preuve 13.2.1 (In absurdo) Supposons que tel ne soit pas le cas.Toutes les implications de φ étant satisfaites, la seule possibilité estqu’il existe une clause de type (x1 ∨ x2 ∨ ... ∨ xm) non vérifiée. La nonvérification de cette clause implique x1;x2; ...;xm ⊆ V. Or tout en-semble V∗ de variables à valeurs vrai satisfaisant φ, si il existe, est telque : V ⊂ V∗. Il s’ensuit qu’aucun ensemble contenant V ne peut vérifier(i.e. satisfaire) cette clause.

La procédure d’examen de SAT-Horn proposée ci-dessus procède parexamen séquentiel de chaque clause, variable par variable, sans remise encause des choix dans l’ensemble V lors de la progression de la vérification.Il s’ensuit que :

Page 229: livre.pdf

Chapitre 13. Le pire n’est pas toujours certain 205

Théorème 13.2.2 SAT-Horn peut être résolu en un nombrepolynomial 1 d’opérations élémentaires en fonction du nombre devariables.

Ou encore :

Théorème 13.2.3SATHorn ∈ P

13.3 Le sac à dos

Le problème dit du sac à dos se présente de la façon suivante. Étantdonnés n objets i de poids respectifs entiers pi; i ∈ 1..n ⊂ N, pi ∈ Net de valeur vi; i ∈ 1..n ⊂ N, vi ∈ N et un sac à dos dont la chargeest bornée supérieurement à un poids P, le problème est d’emporterun maximum d’objets (sans répétition) en respectant au plus strict laborne supérieure de poids et en maximisant si possible la valeur totaleemportée.

Le problème se décline comme suit : étant donné un ensemble d’objetsI = i1..in;n ∈ N, le problème est alors :

Maximiser V =j=k∑j=1

vij , avec vi ∈ N|i ∈ 1..n ⊂ N, k ≤ n (13.2)

sous la contraintej=k∑j=1

pij ≤ P ∈ N ; pi ∈ N|i ∈ 1..n ⊂ N, k ≤ n (13.3)

Sous cette forme, on reconnaît là un problème classique de program-mation linéaire en nombres entiers. Toutefois pour notre propos on peutse ramener à une forme plus simple.

Max(k) : pi1 + pi2 · · ·+ pij + · · ·+ pik ≤ P ∈ N ; pi ∈ N|i ∈ 1..n ⊂ N,(13.4)

En fait celà revient à considérer que valeur et poids sont identiquespour tous les objets ce qui ne change rien quant au fond. En effet, ce

1. Et même ici linéaire.

Page 230: livre.pdf

206 Complexité et Algorithmique avancée

problème étant "plus simple" que le problème initial, le problème initialne peut être de complexité inférieure.

Toutefois, si on veut poser le problème du sac à dos (désormaisSAD) sous forme de problème de décision, il faut réintroduire une borneminimale sous la forme suivante :

Problème 13.3.1 (SAD-décision) Instance :– un ensemble d’objets I = i1..in;n ∈ N ;– un ensemble de poids des dits objets pi; i ∈ 1..n ⊂ N, pi ∈ N piétant le poids de l’objet i, et deux bornes P et V.

QUESTION : Existe-t-il un sous-ensemble Ik ⊂ I tel que :

j=k∑j=1

pij ≤ P etj=k∑j=1

pij > V.

En vertu du principe qui veut que qui peut le plus peut le moins nousnous en tiendrons à la formulation 13.4 du problème.

Nous allons montrer que le problème dit du sac à dos (désormaisSAD) est dans NPC pour ce faire il nous faut auparavant revenir sur leproblème du recouvrement.

13.3.0.1 Recouvrement

On a vu (page 120) comment poser directement un problème derecouvrement sous forme SAT. En effet, supposons un ensemble

E = e1, . . . , ei, . . . , en, n ∈ N ∗;

P(E) et l’ensemble des parties de E, et S = s1, . . . , sj , . . . , sm avecS ⊂ P(E), famille de sous-ensembles de E.

On associe alors à chaque élément de E, ei, une clause Ci de SAT,soit Ci = (si1 ∨ · · · ∨ sik ∨ sip) telle que ∀sik ∈ Ci; ei ∈ sik . Ainsi, onassocie une clause à chaque élément de S. Le problème est alors

SATE = C1 ∧ · · · ∧ Ci ∧ · · · ∧ Cn. (13.5)

Si on se contente d’une couverture de E sans exprimer de contrainteparticulière, la résolution du problème est non seulement polynomiale,mais linéaire en temps. Par contre si on souhaite obtenir une couverture

Page 231: livre.pdf

Chapitre 13. Le pire n’est pas toujours certain 207

de cardinal minimal, ou une couverture de cardinal inférieur à une valeurdonnée, alors, dans le pire des cas, le temps de résolution s’exprime enle nombre de cas possibles (on peut être amené à exhiber toutes lescouvertures) et donc dans ce cas le problème est dans la classe NPC.

Bien entendu, le problème reste entier si on veut seulement recouvrirun sous-ensemble de E donné.

De même on a k − SAT ∝ SET. En effet, considérons un problèmek − SAT, chaque clause contient exactement l variables, niées ou non, etl clauses. Considérons l’ensemble U : |U| = l, alors chaque clause peutêtre associée à un élément de U et chaque variable à un sous ensemble(éventuellement vide) de P(U). De plus la transformation est polynomiale.

Théorème 13.3.1k − SAT ∝ SET.

13.3.0.2 Retour à SAD

Rappel : Pour montrer qu’un problème Π1 est dans NPC, il fautmontrer qu’il existe un problème Π2 ∈ NPC tel que Π2 se réduisepolynomialement à Π1.

Pour montrer que le problème du sac-à-dos est dans NPC, il suffitde remarquer que sous sa forme restreinte 13.4, il contient le problèmedu recouvrement qui est lui dans NPC comme on vient de le voir. Uneautre façon de faire est de considérer qu’il s’agit d’un cas particulier departitionnement (voir [GJ79] p.60 ainsi que [Pap95] p.202-203).

Lemme 13.3.1 Le problème du sac à dos est dans NP

Preuve 13.3.1 En effet, c’est évident ; vérifier qu’une somme de nombresentiers est inférieure à un entier donné se fait en temps polynomial.

La deuxième partie de la démonstration consiste à démontrer que SADse réduit polynomialement au problème du recouvrement.

Commençons donc par modifier la façon de poser le problème. Pource faire nous utiliserons la forme simplifiée 13.4 : Considérons tous les"sacs possibles" c’est-à-dire une famille S de sous ensembles des objets ;S = s1, . . . , sj , . . . , sm ⊂ P(I). À chacun de ces sous ensembles, onassocie son vecteur caractéristique :

Page 232: livre.pdf

208 Complexité et Algorithmique avancée

Xj = [x1, . . . , xi, . . . , xn];n = |I| tel que :

∀i, j tq i = 1..n, j ≤ 2n;xi = 1⇒ i ∈ Sj ;xi = 0 sinon

Pour un vecteur X donné, caractéristique d’un contenu possible dusac, la valeur associée au dit sac est donnée par

Val =i=n∑i=1

xi × p(i);xi ∈ 0, 1.

Et on doit avoir de plus pour chaque sous-ensemble sj d’objetsconsidéré : Val =

∑i=ni=1 xi × p(i) ≤ P. Si on ajoute comme contrainte :∑i=n

i=1 xi · p(i) ≥ V signifiant en fait qu’on emporte un maximum d’objets,on est revenu sur le problème classique du recouvrement aux notationsprès.

Il s’agit alors de trouver un monôme de la FND∨j=Kj=1 Cj avec

Cj =∧i=ni=1 xi ou une couverture de la FNC (SAT) obtenue par

application des formules de De Morgan, avec la contrainte supplémentaireportant sur le cardinal inférieur ou égal à P de la couverture.

D’où le théorème :

Théorème 13.3.2 SAD ∈ NPC

Ce problème présente une particularité. Il est bien dans NPC maisd’une façon particulière sur laquelle nous revenons ci-après.

13.3.1 Pseudo-polynomialité

Supposons, dans SAD, sans que cela ait une répercussion quelconquesur la généralité du problème, que tous les objets ont même poids.

Considérons V(Pd, k) comme étant la valeur maximale atteinte enmettant dans le SAD les k premiers objets dont la somme totale estexactement Pd. Cela nous donne une façon de résoudre le problèmeSAD. En effet, il suffit d’essayer toutes les sommes qui satisfont cettecontrainte, il y en a n.P. Le nombre d’opérations (additions de nombresentiers) par essai est borné supérieurement. Ceci nous donne un schémad’algorithme qui consiste à calculer à chaque itération :

V(Pd, k + 1) = MaxV(Pd, k), pi+1 + V(Pd− Pdi+1, k) (13.6)

Page 233: livre.pdf

Chapitre 13. Le pire n’est pas toujours certain 209

En initialisant le calcul par :V(Pd, 0) = 0∀PdIl serait fallacieux d’en déduire que SAD est dans P car le polynôme

dépend de la valeur maximale du sac-à-dos et pas du nombre de variablesdu problème. Il reste là une question à résoudre. tel que nous l’avons posé,SAD n’est pas un problème de décision. On s’y ramène en considérantune instance oui si on trouve une valeur V à l’ensemble obtenu qui estsupérieure à une valeur plancher donnée.

On trouvera dans [HS74] une méthode de résolution du problèmeSAD qui est dérivée de la résolution du problème du partitionnementdont SAD est une variante. Une méthode plus générale de résolution deproblèmes d’extrema en nombres entiers est donnée par [Dan57].

13.4 Conclusion

Il faut faire très attention avec les problèmes de NP et les algorithmes.En effet, considérons le problème bien connu de la programmation linéairequi s’énonce comme suit :

Problème 13.4.1 (Programmation linéaire)

Max C.X

A.X ≤ B

(13.7)

AvecX = (x1, x2, · · · , xj , · · ·xn), xj ∈ R ;A = [ai,j ], i = 1..m, j = 1..n, ai,j ∈ R ;B = (b1, b2, · · · , bi, · · · bm), bi ∈ R

L’algorithme le plus utilisé pour résoudre ce problème, le simplexe 1,est dû à Kantorovitch [Kan60, KM49] et Tolstoï [Tol39] en 1939 et estsans aucun doute le plus performant à l’heure actuelle pour les "cascourants" (voir [KM72]). Pourtant dans le pire des cas, cet algorithmeest exponentiel et on en connaît pourtant de polynomiaux (voir [Kha79,Kar84a, Kar84b, CM89]) mais qui dans les cas "courants" sont moinsperformants.

1. Le nom simplexe est dû à G. Dantzig qui a redécouvert l’algorithme en 1956et l’a popularisé sous ce nom. Rappelons pour mémoire qu’un simplexe de Rn est lepolytope formé de n faces de Rn−1 non dégénéré.

Page 234: livre.pdf
Page 235: livre.pdf

Chapitre 14

Complexité et efficacité

Jusqu’ici nous avons étudié la complexité théorique des algorithmes,eu égard à un modèle abstrait, celui de la machine de Turing, ou

plus généralement de la théorie des automates finis.Malheureusement, il y a parfois (souvent ?) «loin de la coupe aux

lèvres». En particulier, en l’état actuel de la technologie, les algorithmessont codés en des langages qui permettent à des ordinateurs d’exécuterles calculs induits par lesdits algorithmes. L’organisation des calculs enmachine induite par la forme prise par l’algorithme peut jouer un rôleimportant dans l’efficacité réelle du programme d’ordinateur. Nous enprendrons ici pour exemple un algorithme dont la complexité théorique esttrés bonne, marquant ainsi une avancée significative sur les algorithmesdéja connus en la matière, mais dont l’efficacité réelle en machine laisseà désirer. Il s’agit de la multiplication matricielle, problème aux enjeuxmajeurs pour le calcul.

14.1 Le produit matriciel

La problématique du produit matriciel est bien connue de tous lesétudiants des matières scientifiques. En machine, multiplier entre ellesdeux matrices A et B à n lignes et n colonnes nécessite un programme àtrois boucles imbriquées du type :

Page 236: livre.pdf

212 Complexité et Algorithmique avancée

...Pour i de 1 à n FairePour j de 1 à n FairePour k de 1 à n Faire

C(i,j)= A(i,k)*B(k,j)+C(i,j)Fin_Faire;

Fin_Faire;Fin_Faire;...

Ce programme s’écrit simplement avec une complexité en O(n3) tantpour les multiplications que pour les additions, soit un total de

2× n3

opérations arithmétiques scalaires.Or depuis 1969 il existe un algorithme en O(nlog2 7) dû à Straßen

[Str69]. La question qui se pose alors est de savoir quelle limite, ouborne, on peut obtenir pour la complexité de la multiplication matricielle.Si on considère deux matrices (n × n), il s’agit de deux tableaux denombres comportant chacun n2 éléments. Par conséquent, la multipli-cation matricielle ne peut être de complexité inférieure à O(n2), maisl’algorithme de Straßen montre que cette complexité est inférieure àO(n3), Winograd [Win70] améliore encore légèrement cette borne maisen jouant uniquement sur les additions et soustractions. La question s’estdonc naturellement posée de savoir si on pouvait encore descendre endessous du résultat de Straßen. On sait par les travaux de Pan que lamultiplication de deux matrices n× n est de complexité supérieure ouégale à O(n2+ε) ; ε étant à l’heure actuelle estimé à la valeur 0, 32 voir[Pan78, Pan80, Pan81].

Malheureusement il s’agit là de résultats théoriques, totalement inap-plicables en l’état à cause du caractère récursif 1 des algorithmes. Nousallons nous intéresser ici à la méthode de multiplication de matrices dûeà Straßen (voir [Str69]).

1. Il s’agit ici de la récursivité au sens informatique du terme, c’est à dire au sensde procédure informatique, et non au sens mathématique de «ensemble récursif» ou«fonction récursive».

Page 237: livre.pdf

Chapitre 14. Complexité et efficacité 213

14.2 La multiplication de Straßen

Soient A et B deux matrices carrées d’ordre 2.– On découpe les matrices A,B et la matrice résultat C en quatre

quarts :

A =(a11 a12

a21 a22

); B =

(b11 b12

b21 b22

); (14.1)

C = A× B =(c11 c12

c21 c22

); (14.2)

– on calcule les 7 produits mi, i = 1 · · · 7 comme suit :

m1 = (a12 − a22) · (b21 + b22) ; m5 = a11 · (b12 − b22)m2 = (a11 + a22) · (b11 + b22) ; m6 = a22 · (b21 − b11)m3 = (a11 − a21) · (b11 + b12) ; m7 = (a21 + a22) · b11

m4 = (a11 + a12) · b22 ;(14.3)

– ensuite on évalue les cij en utilisant les relations :

c11 = m1 +m2 −m4 +m6; c12 = m4 +m5;c21 = m6 +m7; c22 = m2 −m3 +m5 −m7;

(14.4)

14.3 Complexité de la méthode de Straßen

Pour deux matrices carrées d’ordre N, avec N = 2n, lacomplexité s’exprime alors en :

O(Nlog27) (14.5)

c’est à direO(N2,81). (14.6)

En effet ; la multiplication de 2 matrices à deux lignes deux colonnesne nécessite que 7 multiplications scalaires au lieu des 8 habituelles. Ladifférence peut sembler mince, nous allons voir que tel n’est pas le cas

Page 238: livre.pdf

214 Complexité et Algorithmique avancée

dés lors que la taille des matrices augmente.Puisqu’il y a 7 multiplications à chaque niveau, si on note f(N) la fonctionreprésentative du nombre de multiplications, on a la relation 1 :

f(N) = 7× f(N− 1) et f(0) = 1 =⇒ f(N) = 7N = Nlog2(7) (14.7)

Ces Nlog2(7) sont inférieurs aux N3 classiques de la multiplication matri-cielle, mais le nombre d’additions est lui de 10, ce qui est supérieur aux 4habituelles. Les 7 équations de précompilation qui permettent de calculerles produits nécessitent 10 additions/ soustractions scalaires. Les calculsdes ci,j nécessitent quant à eux 8 additions/soustractions scalaires, soitau total 18 additions/soustractions.

Si on raisonne non plus en termes scalaires mais en termes matriciels,alors, ce sont 18 additions/soustractions de matrices (2n−1 × 2n−1) quisont effectuées. En effet, les ai,j ; bi,j ; ci,j sont alors des matrices et nonplus des scalaires, chacune représentant un quart de la matrice dontelle est issue, est donc de dimension (2n−1 × 2n−1). L’addition de deuxmatrices n×n nécessite n2 additions scalaires. Donc ici pour effectuer les10 additions/soustractions de matrices (2n−1× 2n−1), il faut pour chaqueaddition/soustraction 22n−2 additions. Sachant que pour additionnerdeux matrices vides il faut 0 addition scalaire.

Notons T(n−1) le nombre d’additions/soustractions effectuées à uneétape du calcul. Alors T(n−1) est composée de deux parties. La premièrepour chacun des 7 produits, la deuxième pour les additions finales. Afinde considérer le rôle du nombre d’additions finales qui est susceptibled’évoluer par la suite, on le notera a. On en déduit :

T(n) = 7× T(n−1) + a.22.(n−1) (14.8)soit pour n− 1 ;

7.T(n−1) = 72 × T(n−2) + 7.a.22.(n−2) (14.9)

et pour n = 1 ;

7n−1.T(1) = 7n.T(0) + 7n−1.a.22.(n−n) (14.10)

soit encore

T(n) = 7×i=n−1∑i=1

T(n−i) + a.22.(n−1) (14.11)

1. rappel : 2log27 = 7

Page 239: livre.pdf

Chapitre 14. Complexité et efficacité 215

Ce qui donne ici en réintégrant les 7n multiplications :

T(n) = (1 + a

3)× 7n − a

3 × 22n (14.12)

et en repassant en N, avec N = 2n,La complexité totale en nombred’opérations arithmétiques scalaires de la méthode de Strassen est donc :

Tot(N) = (1 + a

3)×Nlog27 − a

3n2 (14.13)

En notations de Landau, la complexité de la méthode de Strassen est enO(nlog27) soit environ O(n2,807).

14.3.1 De la complexité à l’efficacité

Si on ne fait pas de différence entre multiplication et addition, enconsidérant les formules initiales de Straßen, on a a = 18 et donc unecomplexité qui s’exprime en :

7×Nlog27 − 6N2.

Cherchons à déterminer pour quelle dimension de matrice le nombretotal d’opérations scalaires, tous types confondus, devient plus petit parla méthode de Strassen que par la méthode classique. En fait, il y faut :

2.N3 = 7×Nlog27 − 6N2 (14.14)

Si on ne distingue pas les multiplications des additions, il faut doncatteindre des matrices de dimensions

1024× 1024

pour que la méthode de Strassen devienne plus intéressante que laméthode classique. Par la méthode classique, en 2×N3 il y faut alors :2× 10243 = 2147483648 opérations scalaires et :7×10242,807−6×10242 = 1966176780 opérations scalaires indifférenciéespour la méthode de Straßen. À partir de cette dimension la méthode deStrassen est donc plus économe en nombre d’opérations.

C’est le cas lorsque les scalaires constituant les matrices sont desentiers.

Page 240: livre.pdf

216 Complexité et Algorithmique avancée

Dans le cas de nombres réels, la multiplication coûte beaucoup pluscher en temps machine que l’addition, et la méthode de Strassen s’avèreplus intéressante beaucoup plus tôt, en particulier dans le cas courant oùles scalaires constituant les matrices sont représentés en virgule flottante.

Dans ce cas, en affectant trois unités de temps calcul (trois cyclesd’horloge) à une addition et cinq unités à une multiplication, la conver-gence est beaucoup plus rapide. Elle est obtenue pour N = 128, si deplus, on utilise la version de Winograd (voir [Win70]) pour la méthode deStraßen, faisant passer le nombre a de 18 à 15, la convergence est obtenuepour N = 110 avec respectivement 10648000 et 10672717 opérationsscalaires pour la méthode classique et l’algorithme de Straßen.

14.3.2 La programmation récursive

La programmation de cette méthode ne pose pas de problème parti-culier.Toutefois elle est récursive et d’un facteur de branchement de 7(voir [Baa98] ainsi que [Ha04]).

Dans ces conditions, toute machine est rapidement saturée, ce quiinterdit l’utilisation pratique de cette méthode.

Par une démarche analogue à celle que nous avons eu en [Lav82,Lav85] sur le problème dit des tours de Hanoï, nous allons montrercomment générer automatiquement les formules de Straßen pour toutesles matrices carrées d’ordre n. La méthode conduit, d’une part, à libérerla machine de cette gestion de la récursivité tout en gardant les avantagesintrinsèques de l’algorithme et, d’autre part, à donner la possibilitéde travailler sur des régions non forcément contiguës. Cette remarquepermet d’accroître potentiellement les avantages de la méthode de Straßen,et ouvre la voie à une parallélisation massive en grain fin de celle–ci[Ha04, LN05b, LN05a].

La génération automatique des formules de Straßen présente undouble avantage :

1. elle permet d’affranchir le système d’exploitation de la machine dela gestion de la récursivité inhérente à la formulation de Straßen ;

2. elle permet de plus, d’exploiter au maximum le parallélisme desmachines à mémoire distribuée.

L’expérimentation a montré qu’en l’état actuel de la technique,il estimpossible de continuer par la même méthode sur des matrices d’ordre

Page 241: livre.pdf

Chapitre 14. Complexité et efficacité 217

32. C’est ce qui a poussé Roch et Trystram [RT82] à utiliser une méthodecomposite pour multiplier des matrices de grandes tailles.

Nous donnons ci-aprés une version nouvelle de la méthode de Stra-ßen en éliminant la récursivité. Nous fournirons un moyen d’obtenirsystématiquement les formules de straßen pour toute valeur de n.

14.4 Reformulation de la méthode de Straßen

On donne ci-aprés une méthode itérative [BL01] permettant d’obtenirl’expression de tout scalaire cij en fonction des coefficients aij et bij desmatrices A et B. La marche à suivre repose sur un résultat que nousénoncerons à la proposition (14.4.2). Nous établissons, dans un premiertemps, la correspondance entre les éléments cij de la matrice résultat Cet les termes scalaires ζλ. Ensuite, nous déduisons pour chacun des n2

littéraux (λ) son expression en fonction des termes mγ conformément àla relation (14.18) ; et, du moment que ces derniers termes représententdes produits des scalaires αγ par βγ , nous proposons enfin une méthodeiterative simple qui nous fournit l’expression des termes αγ et βγ enfonction des éléments aij et bij . Mais, avant tout, nous passons en revueles différentes hypothèses et, surtout, les notations que nous utiliseronsultérieurement.

14.4.1 Hypothèses et notations préliminaires

Nous ne considérons ici que des matrices carrées de taille n égale àune puissance de 2 (i.e. n = 2k). Nous dirons que n est l’ordre de lamatrice et k est son degré. Dans [Baa98], on montre comment ramenerun système de matrices de tailles quelconques à celui énoncé ci–dessus.

Dans le schéma du produit matriciel A× B = C donné par Straßen,les expressions énoncées par la relation (14.3) suivent toutes le mêmeformat :

mi = αi × βi ∀i ∈ 1, . . . , 7

où le terme αi (respect. βi) est une combinaison de certains quarts dela matrice A (respect. B). Ainsi, si a est une matrice de degré k, pourλ ∈ Λ = 11, 12, 21, 22, alors on note [a]λ la matrice de degré k−1 égaleau quart adéquat de a. Lorsque p 6 k, on note [a]λ1λ2...λp

la matrice [· · · [[a]λ1 ]λ2 · · · ]λp de degré k − p.

Page 242: livre.pdf

218 Complexité et Algorithmique avancée

14.4.2 Proposition de Straßen

Soient a et b deux matrices de degré k.On note, pour tout γ ∈ Γ = 1, . . . , 7 :

αγ(a) =∑λ∈Λ

ελ,γ [a]λ, ελ,γ ∈ −1, 0, 1 (14.15)

la matrice de degré k − 1 obtenue en combinant certains quarts dela matrice a. Cette combinaison dépend de l’indice γ pour lequel uncoefficient ελ,γ ∈ −1, 0, 1 va permettre de retenir les quarts de lamatrice a necessaires à l’expression de αγ(a).De même pour :

βγ(b) =∑λ∈Λ

ϕλ,γ [b]λ, ϕλ,γ ∈ −1, 0, 1 (14.16)

qui est une matrice de degré k − 1 qui combine, moyennant l’indice γet le coefficient ϕλ,γ ∈ −1, 0, 1, certains quarts de la matrice b. Il enrésulte que les sept produits de Straßen s’écrivent tous selon un mêmeschéma : mγ(a, b) = αγ(a)×βγ(b) et qui sont des matrices de degré k−1.Enfin, en combinant les sept produits, nous obtenons l’expression desquatre quarts de la matrice résultat, lesquels ont tous le même format.Ainsi pour λ ∈ Λ, on pose :

ζλ(a, b) =7∑

γ=1δγ,λmγ(a, b), δλ,γ ∈ −1, 0, 1 (14.17)

qui est aussi une matrice de degré k − 1 et qui correspond à un desquatre quarts de la matrice résultat enoncé par la relation (14.4), d’oùla proposition suivante que nous généraliserons ensuite :

Proposition 14.4.1 Pour tout λ ∈ Λ, [a× b]λ = ζλ(a, b)

14.4.3 Généralisation

Afin de généraliser les formules de Straßen (les relations (14.15)à (14.17)), notons m[σ]γ(a, b) le produit de α[σ]γ(a) par β[σ]γ(b) avecγi ∈ [1, 7] ∀ i ∈ [1, k], où α[σ]γ(a) (respectivement β[σ]γ(b)) est obtenuen additionnant et/ou soustrayant certains éléments de la matrice a(respectivement b).

Page 243: livre.pdf

Chapitre 14. Complexité et efficacité 219

αγ1...γp−1γp(a) =∑λp ελp,γp

∑λp−1 ελp−1,γp−1 . . .∑

λ1 ελ1,γ1 [a]λ1..λp−1λp ,

βγ1...γp−1γp(b) =∑λp ϕλp,γp

∑λp−1 ϕλp−1,γp−1 . . .∑

λ1 ϕλ1,γ1 [b]λ1..λp−1λp ,

mγ1..γp−1γp(a, b) = αγ1..γp−1γp(a)× βγ1..γp−1γp(b)

qui sont des matrices de degré k − p. On déduit de ces définitions que :

αγ1...γpγp+1(a) = αγp+1(αγ1...γp−1γp(a)),βγ1...γpγp+1(b) = βγp+1(βγ1...γp−1γp(b)).

On pose aussi, pour λ1, λ2, . . . , λp ∈ Λp,

ζλ1λ2...λp(a, b) =∑γ1

δγ1,λ1

∑γ2

δγ2,λ2 . . .∑γp

δγp,λpmγ1γ2...γp(a, b)

qui est aussi une matrice de degré k − p.

Proposition 14.4.2 [a× b]λ1λ2...λp = ζλ1λ2...λp(a, b)

Preuve 14.4.1 Par induction sur p.Pour p = 1, c’est la proposition de Straßen.Par hypothèse d’induction,

[a× b]λ1λ2...λpλp+1 = [[a× b]λ1λ2...λp ]λp+1

= [ζλ1λ2...λp(a, b)]λp+1 ;

Soit aussi :

[a× b]λ1λ2...λpλp+1 = [∑γ1

δγ1,λ1

∑γ2

δγ2,λ2 . . .∑γp

δγp,λpmγ1γ2...γp(a, b)]λp+1

=∑γ1

δγ1,λ1

∑γ2

δγ2,λ2 . . .∑γp

δγp,λp [mγ1γ2...γp(a, b)]λp+1

Page 244: livre.pdf

220 Complexité et Algorithmique avancée

Par la proposition de Straßen,

[mγ1...γp(a, b)]λp+1 = [αγ1γ2...γp(a)× βγ1γ2...γp(b)]λp+1

= ζλp+1(αγ1γ2...γp(a), βγ1γ2...γp(b))

=∑7γp+1=1 δγp+1,λp+1

×mγp+1(αγ1...γp(a), βγ1...γp(b))

Mais

mγp+1(αγ1...γp(a), βγ1...γp(b)) = αγp+1(αγ1...γp(a))

×βγp+1(βγ1...γp(b))

= αγ1...γpγp+1(a)

×βγ1...γpγp+1(b)

= mγ1...γpγp+1(a, b)

On a donc

[mγ1γ2...γp(a, b)]λp+1 =7∑

γp+1=1δγp+1,λp+1mγ1γ2...γpγp+1(a, b)

et

[a× b]λ1λ2...λpλp+1 =∑γ1 δγ1,λ1

∑γ2 δγ2,λ2 . . .∑

γp δγp,λp∑γp+1 δγp+1,λp+1mγ1...γp+1(a, b)

= ζλ1λ2...λpλp+1(a, b)

14.5 L’algorithme

14.5.1 Idée de base

De cette étude, on déduit, une procédure itérative qui fournit l’expres-sion de tout scalaire cij en fonction des coefficients aij et bij des matrices aet b. L’idée de la méthode repose sur le résultat de la proposition (14.4.2).On peut ainsi établir, dans un premier temps, la correspondance entre les

Page 245: livre.pdf

CONCLUSION 221

éléments cij de la matrice résultat C et les scalaires ζλ(a, b). Ensuite, nousdéduisons pour chacun des n2 littéraux (λ) son expression en fonctiondes termes mγ(a, b) conformément à la relation (14.18) ; et du momentque ces derniers termes représentent des produits des scalaires αγ(a) parβγ(b), nous donnons, enfin, l’expression des termes αγ(a) et βγ(b) enfonction des éléments aij et bij .

14.5.2 Obtention des produits de Straßen

L’algorithme procède en trois phases. La première phase va nécessiterk étapes. A chaque étape p, 1 ≤ p ≤ k, nous déterminons le p ème élémentλp d’un littéral λ tel que le terme ζλ(a, b) soit associé à un coefficientcij = [a× b]λ. A la deuxième phase, chaque littéral λ est examiné en kétapes, afin de lui associer la liste des littéraux γ. Alors que la troisièmeet dernière étape va affecter à chacun des littéraux γ sa liste d’élémentsaij et bij . Le nombre des étapes de cette dernière phase varie d’un littéralγ à un autre ; néanmoins elles restent bornées supérieurement par kn2.

14.6 Règles d’obtention des termes

En appliquant l’algorithme présenté par la figure , nous sommes enmesure de fournir l’expression de n’importe quel élément cij de la matricerésultat d’une manière singulière.

Conclusion

On obtient ainsi systématiquement les coefficients d’un produit matri-ciel de Straßen. La programmation cependant se heurte à de nombreusesdifficultés. L’utilisation du parallélisme permet d’en renouveler la problé-matique [HL03, LN05b, LN05a] Cette nouvelle formulation, tout commela méthode itérative directe (c’est-à-dire, ne devant rien à la dérécursi-vation) de résolution du problème des Tours de Hanoï [Lav82, Lav85],est libérée de la récursivité. Ces résultats posent de manière nouvellele problème de l’écriture itérative systématique de tous les algorithmesdonnés de façon récursive lorsqu’une telle dérécursivation est possible (cequi n’est pas toujours le cas, du moins sans pile intermédiaire), et uneamélioraton des conditions d’exécution lorsqu’on ne peut éliminer toutela récursivité. Le lecteur intéressé consultera avec beaucoup de profit lathèse de M. Ha Quoc Trung (voir [Ha04]).

Page 246: livre.pdf
Page 247: livre.pdf

Cinquième partie

Résoudre quand même lesproblèmes difficiles

Page 248: livre.pdf
Page 249: livre.pdf

Chapitre 15

Des algorithmes pourproblèmes NPC

La plupart des problèmes de la classe NPC sont des problèmescombinatoires. Il s’agit le plus souvent de trouver une configuration

particulière dans une multitude de possibles.

15.1 L’exhaustivité des procédures

Ainsi, dans un problème dit de voyageur de commerce (V.R.P.) 1 àn villes, il y a (n − 1)! possibilités, et pour faire jouer un ordinateuraux échecs en examinant toutes les combinaisons possibles, on sait qu’ily en a de l’ordre de 10110 ce qui, très vite dépasse tout ce qu’on peutimaginer (Le nombre d’électrons dans l’univers est de l’ordre de 1090) etn’est pas accessible à quelque machine actuelle ou à venir que ce soit pardes méthodes exhaustives, les seules dont on soit sûr qu’elles donnentune solution exacte. On est confronté à ce qu’on appelle "l’explosioncombinatoire" des possibles.

Dans ce contexte, on a mis au point des méthodes destinées à luttercontre l’exhaustivité des procédures, des méthodes dites d’énumérationimplicite. L’idée en est de ne pas énumérer tous les cas possibles, c’est-à-dire de se donner des critères qui, dans la progression du calcul permettentd’abandonner des branches entières de l’arbre des calculs possibles.

1. VRP signifie Voyageur Représentant Placier

Page 250: livre.pdf

226 Complexité et Algorithmique avancée

Il en est ainsi de nombre d’algorithmes, tous basés sur des heuristiques.Le critère de choix est le plus souvent une fonction d’évaluation.

15.1.1 La méthode PSEP

La première et sans doute la plus ancienne de ces méthodes est laméthode dite par séparation et évaluation progressive, PSEP, elle estdue à Bernard Roy et Michel Simmonard en 1961 [RS61] et est exposéesystématiquement dans l’ouvrage [Roy70]. Elle est connue sous le nomaméricain de Branch and Bound , redécouverte en 1963 voir [LMSK63] etexposée dans [LW66]. On en trouvera un exemple facilement accessibleet pédagogique dans [FRT76]. Ce type de méthode est aussi très utiliséen programmation linéaire en nombres entiers.

Nous allons présenter la méthode à partir d’un exemple tiré du tome3 de [R+85] p. 241.Exemple 15.1.1 Soit à résoudre un problème de VRP à cinq villes dontles coûts de transit, non symétriques, d’une ville à l’autre sont donnéspar le tableau suivant :

C =

. 1 2 3 4 5

1 ∞ 11 7 13 112 5 ∞ 13 15 153 13 15 ∞ 23 114 9 13 5 ∞ 35 3 7 7 7 ∞

(15.1)

Le coût de transfert de la ville 3 à la ville 2 est de 15 et celui de 2 à 3est de 13, et ainsi de suite.

Le problème exprimé en termes de théorie des graphes consiste ici àtrouver un circuit hamiltonien de coût minimal, le coût étant obtenu enfaisant la somme des valuations des arcs composant ledit circuit. Dans lecas présent, le nombre de circuits différents possibles est 4!, c’est à direici 24.

15.1.1.1 Le principe de séparation

La méthode procède d’abord par séparation de l’ensemble des pos-sibles. Ici, le principe de séparation porte sur : "on prend un arc ou

Page 251: livre.pdf

Chapitre 15. Des algorithmes pour problèmes NPC 227

non" dans le circuit hamiltonien. Ainsi, supposons qu’on prenne l’arc(2, 1), l’ensemble des circuits hamiltoniens possibles est séparé en deuxsous ensembles, à savoir le sous-ensemble de circuits qui contiennentl’arc (2, 1) et ceux qui ne le contiennent pas. Le choix de l’arc sur lequelséparer est guidé par le calcul de la fonction d’évaluation.

15.1.1.2 L’évaluation

Si un circuit hamiltonien contient l’arc (2, 1), il sera de valeur néces-sairement supérieure à 5. On a choisi un des arcs de valuation minimale.L’arc (4, 5) de valuation 3 pourrait paraître un meilleur choix, mais lechoix des arcs se fait en tenant compte -dans la mesure du possible-des choix induits par la suite. Si on considère l’ensemble des circuits necontenant pas l’arc (2, 1), il est toutefois nécessaire que les sommets 2et 1 fassent partie du circuit, sinon il ne serait plus hamiltonien. Leditcircuit aura donc pour valeur une quantité supérieure ou égale à celle duchemin de valeur minimale reliant les deux sommets et ne contenant pasl’arc (2, 1).

Fonction d’évaluation : En fait, pour les deux sous ensembles decircuits possibles, on borne inférieurement les valeurs espérées pour lescircuits. C’est la fonction d’évaluation qui permet ce bornage . Ici,on procède par normalisation de la matrice en faisant apparaître un zéropar ligne et par colonne en retranchant tous les plus petits éléments enligne puis en colonne de façon à aboutir à un zéro au moins par ligne etcolonne.

Ainsi en appliquant ce procédé à la matrice initiale, on obtient :

C =

. 1 2 3 4 5

1 ∞ 00 02 2 42 06 ∞ 8 6 103 2 00 ∞ 8 00

4 6 6 2 ∞ 02

5 00 00 4 02 ∞

C(2,1) =

. 2 3 4 5

1 ∞ 04 4 23 00 ∞ 8 00

4 6 2 ∞ 02

5 00 4 02 ∞

(15.2)On a fait apparaître là la matrice C(2,1) de choix associée au sous ensemblede circuits tels qu’ils contiennent tous l’arc (2, 1). les nombres en exposant

Page 252: livre.pdf

228 Complexité et Algorithmique avancée

sont des "regrets", à savoir le coût supplémentaire à ajouter à celui ducircuit en cours de construction si on ne fait pas ce choix là. Ici, surla matrice C, si on ne choisit pas l’arc (2, 1), le coût est au moinsde 6 unités supplémentaires. La somme des valeurs retranchées pournormaliser la matrice C donne la valeur qui y est associée, soit ici 37. Lavaluation associée à l’ensemble des circuits qui ne contient pas l’arc (2, 1)est donc 37 + 6 = 43, la valeur 6 étant le "regret" associé au non-choixde l’arc (2, 1). On recommence le même raisonnement à partir de C(1,2).Cette matrice comporte un zéro par ligne et colonne, elle n’a donc pas àêtre normalisée, et le choix de l’arc (1, 3) est celui qui entraîne le moinsde "regret". Ne pas choisir l’arc (1, 3) augmenterait la valeur du circuit de4 unités, soit une valuation de 37 + 4 = 41 pour ce choix. d’où la nouvellematrice C(2,1);(1,3) après calcul des nouveaux regrets et celle déduite duchoix de l’arc (3, 5) qui présente ici le regret maximum.

C(2,1);(1,3) =

. 2 4 5

3 ∞ 8 08

4 6 ∞ 06

5 06 08 ∞

C(2,1);(1,3);(3,5) =. 2 4

4 6 ∞5 ∞ 0

(15.3)La matrice C(2,1);(1,3);(3,5) nécessite une normalisation en retranchant6 à la ligne repérée 4, ce qui amène le coût du choix correspondant à37 + 6 = 43. Or, on a un sous ensemble évalué à 41 (celui ne contenantpas l’arc (1, 3)). Il nous faut donc repartir de la matrice correspondanteet faire le choix de NE PAS prendre l’arc(1, 4), c’est un saut dans l’arbredes solutions ; soit :

C(2,1);(1,3) =

. 2 3 4 5

1 ∞ ∞ 02 23 00 ∞ 8 00

4 6 02 ∞ 00

5 00 2 00 ∞

C(2,1);(1,4) =

. 2 3 4

3 00 ∞ 00

4 ∞ 02 00

5 02 2 ∞

(15.4)Le choix se porte alors sur l’arc (1, 4) qui présente le regret maximal,d’où la matrice C(2,1);(1,4) de (15.4). La matrice C(2,1);(1,4) présente unzéro par ligne et par colonne, elle n’a pas besoin d’être normalisée, de

Page 253: livre.pdf

Chapitre 15. Des algorithmes pour problèmes NPC 229

plus il existe un choix à coût nul, celui de l’arc (4, 3) qui conduit à lamatrice C(2,1);(1,4);(4,3) :

C(2,1);(1,4);(4,3) =. 2 5

3 ∞ 05 0 ∞

(15.5)

Ce qui conduit au circuit [5, 2, 1, 4, 3, 5].L’arborescence développée est donnée par la figure 15.1 :

37

41

4341

41

4543

37

4337

43

(2,1) non (2,1)

(1,3) non (1,3)

(3,5) non (3,5)(1,4)

(4,3)

non (1,4)

non (4,3)

Matrice C

C(2,1)

C(2,1)!;(1,3)

C(2,1)!;(1,3)

C(2,1)!;(1,4)

C(2,1)!;(1,4)!;(4,3)

Figure 15.1 – Arborescence PSEP

L’intérêt de la méthode est explicite lorsqu’on examine l’arborescencede la figure 15.1, on y examine 11 choix possibles alors qu’un examenexhaustif de tous les choix possibles nous conduit au mieux à 24. Des

Page 254: livre.pdf

230 Complexité et Algorithmique avancée

méthodes utilisant une fonction d’évaluation plus sophistiquée (en com-binant borne supérieure et borne inférieure par exemple, ou en calculantd’emblée une bonne solution réalisable) peuvent permettre de limiterencore l’énumération. L’une de ces méthodes consiste, à partir d’une"bonne" heuristique, à construire dès le départ un cicuit hamiltonien dontla valeur va servir de borne "d’élagage".

15.2 Le cas des jeux

En ce qui concerne certains jeux comme le jeu d’échecs, le tic-tac-toe,le jeu dit de nim ou de Marienbad , on peut représenter les différentessituations de jeu par un arbre. Au lieu d’examiner là aussi toutes lessituations possibles et d’opérer un choix de stratégie gagnante, on peututiliser les mêmes idées que dans la méthode PSEP.

Exemple 15.2.1 Considérons pour illustrer le propos, une variante dujeu de nim. Deux joueurs prennent alternativement des éléments sur unepile. Chaque joueur est obligé de prendre au moins un élément et au plustrois à chaque tour. Le gagnant est celui qui prend le dernier élémentde la pile, c’est à dire celui qui laisse la pile vide. De plus, le gain dugagnant est proportionnel au nombre d’éléments qu’il a pris au derniertour.

Supposons qu’il y ait n éléments au début. Le premier joueur a troischoix possibles, et trois seulement ; prendre un, deux ou trois élémentssur la pile. De même, le second joueur a les mêmes possibilités de choix enfonction de ce qui reste d’éléments dans la pile. Les choix associés peuventêtre représentés par un arbre ternaire (voir figure 15.2, on suppose qu’ily a 6 éléments dans la pile).

On a fait figurer en ovale les résultats des choix du joueur qui démarreet en carrés ceux du suivant. Ainsi le joueur qui commence est sûr degagner s’il ne prend qu’un seul élément à chaque tour, il est alors sûr degagner au moins 1 dans le pire des cas, quoi que joue son adversaire. Onconsidère toujours dans ce genre de jeu que les deux adversaires jouentde façon optimale.

Page 255: livre.pdf

Chapitre 15. Des algorithmes pour problèmes NPC 231

D 5 B 3 C 4

G 3 F 2 E 1 H 4 I 3 J 2

K 1 L 2 M 3

3 2 1

3 2 1 1 32

3 2 1

6 A

Niveau Max

Niveau Min

Niveau Max

Niveau Min

Figure 15.2 – Arbre partiel du jeu de nim

Dans cet exemple, appelons les joueurs Max pour celui qui commenceet Min son adversaire. Le joueur Max cherche à maximiser la fonction"gain" et le joueur min à la minimiser, ou l’inverse, suivant la nature dujeu.

Recalculons les "gains" de Max de la façon suivante :– on suppose que Min joue de façon optimale pour lui ;– on calcule dans chaque sommet le gain espéré pour Max sachantque Min joue de façon optimale ;

– en B, il reste 3 objets dans la pile, Min va donc prendre les 3 objetset son gain sera de 3 et ce sera la perte de Max ; le "gain" de Maxen B est alors −3 ;

– en C, il reste 4 objets, Min ne peut en prendre au plus que 3 ce quiest sa stratégie optimale, Max ne pouvant plus alors qu’en prendre1 et ne gagner que 1. Le "gain" de Max est alors 1 au mieux ;

– et ainsi de suite, l’arborescence de jeu se trouve alors valuée commedans la figure 15.3.

Page 256: livre.pdf

232 Complexité et Algorithmique avancée

D -1B -3 C 1

G 3 F 2 E 1 H -1 I 3 J 2

K -1 L -2 M -3

3 2 1

3 2 1 1 32

3 2 1

6 A

Niveau Max

Niveau Min

Niveau Max

Niveau Min

Figure 15.3 – Arbre partiel du jeu de nim ré-évalué

Le jeu de Max consiste alors à prendre 2 objets au premier coup, c’est àdire de jouer en C dans l’arborescence. Alors Min jouera en E, c’est àdire prendra 3 objets et au coup suivant, Max ne pourra plus en prendrequ’un, mais il est assuré de gagner s’il joue en C au premier coup, quoique fasse son adversaire.

C’est cette façon de faire qui va nous guider dans l’algorithme. Sup-posons qu’un arbre de jeu soit celui de la figure 15.4.

15.2.1 La méthode alpha/bêta

Le raisonnement va utiliser les mêmes principes que dans la méthodePSEP. L’idée est de limiter autant que faire se peut l’énumération des

Page 257: livre.pdf

Chapitre 15. Des algorithmes pour problèmes NPC 233

1-3

66

-1 -2 -6 -3 -36 4 2 1

6 8 9 -30 4 6 2 4 -3 2 14

-3

1

14

A

B

C

DEGHKLN

M JF

I

NiveauMin

NiveauMin

Niveau Max

Niveau Max

Figure 15.4 – Arbre de jeu évalué pour alpha/béta

situations possibles. Ainsi, dans le jeu d’échec, si on considère toutesles pièces en position de départ, le nombre total de parties possibles est,comme nous l’avons noté ci-dessus, de l’ordre de 10110, ce qui est supérieurau nombre d’électrons dans l’univers (environ 1090). Dans ces conditions,il est exclu, pour faire jouer un ordinateur aux échecs, quelle que soit sapuissance, d’énumérer tous les cas possibles et de choisir celui qui nousintéresse. Plusieurs algorithmes existent pour limiter l’énumération, α/β,SSS∗, Scout qui est une combinaison des deux précédents. Nous allonsnous intéresser à l’algorithme dit α/β en ce qu’il est dans la filiationdirecte du précédent et n’est pas propre au jeu d’échecs contrairementaux algorithmes SSS∗ et Scout.

Dans la figure 15.4, l’évaluation des situations de jeu a été faite dupoint de vue du joueur Max. Ainsi au démarrage, tant qu’on n’a pasatteint un sommet pendant (une feuille de l’arbre), on ne peut rienévaluer.

– évaluation de C, coupe Alpha dans un premier temps, l’algo-

Page 258: livre.pdf

234 Complexité et Algorithmique avancée

rithme va décrire la branche [A,B,C,D], comme dans une PSEPquand on opère une descente en profondeur au début pour obtenirune première borne. Ici, en D, on évalue les deux cas possibles, soit4 et 1. Comme D est un nœud Min, on prend le minimum, soit 1ici, valeur qui est "remontée" en C. De C, on explore E qui est surle niveau Min. De E on évalue une feuille de valeur -3. Ce n’estpas la peine de continuer ; la valuation de E ne peut être qu’égaleou inférieure 1 à -3, y aurait il un grand nombre d’autres feuillespendantes à E, ce ne serait pas la peine de les évaluer puisqu’aunœud C qui est un niveau Max, on a déja une valeur 1 qui estsupérieure à -3, les feuilles pendantes à E ne joueront donc plus derôle dans l’évaluation de la racine de l’arbre, on peut les "laissertomber". C’est une coupe ALPHA marquée sur la figure 15.5 parun double trait bleu. Le nœud C est alors complètement évalué ;

– évaluation de B, coupe Bêta C étant évalué, on "remonte" lavaleur trouvée en B, au niveau supérieur qui est un niveau Min. Lenœud F de niveau Max est généré et évalué provisoirement à 1. Lenœud G de niveau Min est généré et évalué lui aussi provisoirementà 1. Les deux feuilles pendants à G sont de valuations 2 et 4,G étant de niveau Min, la valeur pertinente est 2, donc F, quiest de niveau Max prendrait la valeur au moins 2, valeur qui nesaurait influer sur celle de B puisque B est de niveau Min et queMin(1, 2) = 1. Par conséquent l’exploration de F est terminée, ilest inutile d’explorer les autres sous-arbres de racine F il s’agitlà d’une coupe Bêta. L’évaluation de B est définitive, et elle estremontée à A qui est sur un niveau Max.

– évaluation de I et coupe Alpha le nœud I de niveau Min estprovisoirement doté de la valuation 1 de A, et génère le nœud J deniveau Max qui est également provisoirement doté de la valuation1. J génère le nœud K de niveau Min qui est également doté de lavaluation 1 laquelle correspond à un nœud de niveau Max.– évaluation de K Le nœud K génère une feuille de valeur −3(ou 0, suivant). Par conséquend K qui est de niveau Min ne peutpas générer une valeur supérieure à 1, l’exploration de K peut

1. Il en irait tout autrement si on commençait par explorer le nœud de valeur 2,comme cette valeur est supérieure celle de B (qui est 1), et que B est sur un niveaumax, il faudrait continuer l’exploration de E.

Page 259: livre.pdf

Chapitre 15. Des algorithmes pour problèmes NPC 235

donc cesser et il est inutile de générer tous les sous arbres deracine K 1 ;

– évaluation de J Le nœud J génère la feuille L de valeur −6, Jétant sur un niveau Max, on laisse la valeur −3 à J qui est ainsicomplètement examiné et évalué, cette valeur est remontée en I ;

le nœud I étant sur un niveau Min, sa valeur déterminée par lesautres sous arbres de racine I ne peut être qu’inférieure à −3 et nepeut donc influer sur la valeur de A (qui est 1) et qui est de niveauMax. Le sous arbre de racine M ne sera donc pas généré ni évalué,c’est une coupe Alpha.

1-3

66

-1 -2 -6 -3 -36 2 1

6 8 -3 2 -3 14

-3

1

12

A

B

C

DEGHKLN

M JF

I

NiveauMin

NiveauMin

Niveau Max

Niveau Max

4

Figure 15.5 – Arbre de jeu et coupes alpha/béta

La racine A de l’arbre est donc évaluée, elle a la valeur 1 qui est le gainque peut espérer Max s’il "joue" B (puis D si Min joue C) 2.

1. Ici on a pris un exemple simple pour les besoins de l’exposé, mais l’arbre pourraîtêtre beaucoup plus important, qu’on pense par exemple au déroulement d’un arbre dejeu d’échecs sur 7 niveaux comme cela se fait dans certains programmes d’échecs.

2. Si, par inadvertance Min joue F, alors le gain sera supérieur, mais on supposeici que Min aussi joue de façon optimale.

Page 260: livre.pdf

236 Complexité et Algorithmique avancée

Sur la figure 15.5, déduite de la figure 15.4 on a fait figurer en noirles nœuds non générés, donc "économisés" dans l’énumération impliciteet en bleu (deux traits courts forts) les coupes Alpha, et en rouge lescoupes Beta (un seul trait court fort).

On remarquera que les coupes dépendent du parcours de l’arbre dessolutions. L’obtention, dès le début d’une bonne borne est décisif. Toutesles améliorations qui ont été apportées à la méthode PSEP cherchentà obtenir dès le départ une bonne borne, la plus proche possible del’optimum car c’est ce qui guide la recherche et limite l’énumération.Dans la méthode PSEP, en général, on peut obtenir une bonne borne enopérant une "descente" directe dans l’arbre de façon à obtenir une bonnesolution à partir d’une heuristique. Il n’en va pas de même dans le cas desjeux. Pour le jeu des échecs par exemple, il est hors de question d’opérerpareillement, on est obligé de limiter la profondeur de l’arborescence etcette profondeur participe à la puissance du programme mis en jeu. Dansce cas, il est décisif d’avoir une bonne fonction d’évaluation d’un coup,ce qui est du ressort des joueurs.

15.3 En guise de conclusion

Comme on peut le voir ci-dessus, on n’est pas totalement désarmélorsqu’il s’agit de résoudre des problèmes de la classe NPC. Dans lecas de l’explosion combinatoire, ces méthodes et d’autres qui en sontinspirées (A∗, AB∗, ...) peuvent rendre de grands services. Toutefois,elles ne modifient pas la complexité théorique des problèmes abordéset ne permettent que très rarement d’aborder des grands problèmes(du moins en séquentiel), c’est à dire à plusieurs centaines de variables.D’autres méthodes existent pour d’autres contextes en programmationmathématique par exemple, méthodes TABOU ou méthode dite deRECUIT SIMULÉ lorsque la fonction à optimiser n’est pas convexe.d’autres méthodes encore sont spécialisées pour des cas particuliers deproblèmes. Dans le chapitre 16 nous présentons une autre méthode plusgénérale pour aborder la résolution des problèmes de NPC, mais aussipour améliorer les performances des algorithmes plus classiques, voirepour résoudre des problèmes qu’on ne sait pas résoudre autrement.

Page 261: livre.pdf

Chapitre 16

Introduction àl’algorithmique probabiliste

Pourquoi les algorithmes probabilistes ou comment l’aléatoireapporte un «plus» ?

L’aléatoire est une ressource algorithmique des plus intéressantes d’unpoint de vue opérationnel. Il est donc naturel d’explorer certaines tech-niques développées par l’algorithmique avancée. L’analyse de complexité(au sens mesure de performances) peut cependant être plus délicate. Onexaminera certaines techniques d’analyse (e.g. définir la bonne variablealéatoire en est l’exemple le plus concret).

Les algorithmes probabilistes sont souvent plus simples que les algo-rithmes déterministes analogues qui traitent le même problème. C’estdonc l’opportunité de discuter d’algorithmes astucieux. Le plan du cha-pitre sera de suivre ces remarques. On s’attachera à illustrer les techniquesles plus importantes en étudiant des algorithmes-exemples et on passeraen revue différents domaines ou champs d’applications où les algorithmesprobabilistes se montrent les plus efficaces.

16.1 Des algorithmes aux parfums de casinos

Les algorithmes probabilistes ont pour caractéristique de mettre lehasard à profit en faisant des choix aléatoires. Il convient toutefois depréciser que la définition d’algorithme nécessite d’être revue. En effet,une conséquence de l’utilisation du hasard est que deux exécutions d’un

Page 262: livre.pdf

238 Complexité et Algorithmique avancée

algorithme probabiliste avec les mêmes données d’entrée peut prendreun temps d’exécution différent et éventuellement donner des résultatsdifférents.

On autorisera donc qu’un algorithme puisse, avec une faible probabi-lité, renvoyer une mauvaise réponse ou ne jamais terminer.

Un algorithme probabiliste sera donc, analogue à un algorithme déte-rministe, une suite finie d’instructions précises qui résoud un certainproblème mais pour lequel son exécution pour un jeu de données d’entréessera menée plusieurs fois jusqu’à ce que l’exécution termine ou bien quela solution soit considérée comme correcte.

Ceci nous amène à définir trois types d’algorithmes probabilistes :– les algorithmes numériques probabilistes ;– les algorithmes de type Monte Carlo ;– les algorithmes dits de Las Vegas.

Les deux premiers types d’algorithmes se caractérisent par le fait qu’ilsterminent, les algorithmes de type Las Vegas se caractérisent par le faitqu’il fournissent toujours une réponse correcte (s’ils terminent).

Exemple La Coupe de Monde de Foot.Afin d’illustrer le comportement des différents types d’algorithmes, onpeut illuster leur caractéristique sur la réponse à la question suivante :

Q En quelle année la France a-t-elle accueilli la Coupe du monde deFoot ?

R (numérique probabiliste) entre 1994 et 1998, entre 1995 et 1999,entre 1997 et 2001, entre 1992 et 1997, entre 1996 et 2000 ;

R (Monte Carlo) 1998, 1998, 1998, 1998, 1998, 1994, 1998, 1998, 2002,1998 ;

R (Las Vegas Carlo) 1998, 1998, 1998, Désolé, 1998, 1998, ...,bus error, 1998, 1998.

Comme nous pouvons le constater, l’algorithme numérique probabilistefournit des réponses approximatives (i.e. intervalles contenant la bonneréponse) avec une probabilité d’erreur. L’algorithme de type Monte Carlo,quant à lui, donne une réponse précise mais qui peut parfois être erronée.Enfin, l’algorithme de type Las Vegas trouve toujours la bonne réponsemais il est parfois incapable de finir le calcul.

Page 263: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 239

16.1.1 Algorithmes numériques probabilistes

Un algorithme numérique probabiliste produit toujours une réponseapproximative, mais sa précision est d’autant meilleure en moyenne quele temps dont l’algorithme dispose est grand.

Exemple 16.1.1 1. Techniques de simulation ;2. Estimation d’une valeur numérique (valeur d’une intégrale, nombre

d’objets dans un ensemble très grand, nombre d’objets distinctsdans un ensemble très grand, etc.) ;

3. Interpolation, extrapolation.

16.1.2 Algorithmes de Las Vegas (deux cas à distinguer)

Ces algorithmes ne retournent jamais de réponse inexacte mais ilspeuvent ne pas trouver de réponse.

– La probabilité de succès d’un tel algorithme est d’autant plusgrande que temps dont il dispose est grand ;

– La probabilité d’échec peut être réduite arbitrairement.

Exemple 16.1.2 a) problème des 8 reines ;b) factorisation d’un entier.

Les algorithmes dits Sherwood ou Las Vegas de deuxième ordresont une classe d’algorithmes de Las Vegas qui retournent toujours uneréponse et qui est toujours exacte. En effet, ces algorithmes exploitentla remarque suivante : s’il existe un algorithme déterministe déjà connupour résoudre un problème donné, beaucoup plus rapide en moyenneque dans le pire des cas, alors l’utilisation du hasard permet de diminuercette différence entre bons et mauvais exemplaires pour les configurationsde données d’entrée.

Exemple 16.1.3 le tri de Hoare prend un temps moyen de O(n logn)et un temps de Ω(n2) dans le pire des cas.

16.1.3 Algorithmes de Monte-Carlo

Ces algorithmes donnent toujours une réponse, mais celle-ci n’estpas toujours exacte. Il est difficile de déterminer si la réponse obtenue

Page 264: livre.pdf

240 Complexité et Algorithmique avancée

est correcte. Comme pour les algorithmes de Las Vegas, la probabilitéde succès (c’est-à-dire ici de réponse correcte) d’un tel algorithme estd’autant meilleure que le temps dont il dispose est grand.

16.2 Probabilités versus déterminisme

16.2.1 Le problème

Nous voulons vérifier l’exactitude des résultats d’un calcul de façonefficace, rapide et sans refaire le calcul. En effet, le procédé de vérificationconsistant à refaire le calcul est lent d’une part et inefficace si l’erreurest dans le programme d’autre part.

Un algorithme probabiliste du type Monte Carlo peut effectuer très ra-pidement cette même opération de vérification avec une probabilité aussiproche de 1 que l’on veut. Nous prendrons pour exemple ici une vérifica-tion des identités polynomiales et nous allons comparer les performancesdes deux algorithmes.

Supposons que nous voulions vérifier l’exactitude de l’équationsuivante :

(x+ 1)(x− 2)(x+ 3)(x− 4)(x+ 5)(x− 6) = x6 − 7x3 + 25

L’algorithme déterministe

Un algorithme déterministe classique procéderait de la façon suivante :– Transformer le premier membre F(x) de sa forme multiplicative∏d

i=1(x− ai) à la forme canonique∑di=0 cix

i ;– Les deux expressions sont équivalentes si et seulement si les ci sont

égaux.

L’algorithme probabiliste

Voici maintenant un algorithme probabiliste pour effectuer cettemême vérification :

– Prendre aléatoirement et uniformément r ∈ 1, ..., 100d ;– Calculer les deux membres F(r) et G(r) ;– L’algorithme décide en fonction du résultat si F(r) = G(r) ou

F(r) 6= G(r).

Page 265: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 241

La probabilité d’échec de l’algorithme probabiliste est P(echec) 61/100. La complexité de cet algorithme déterministe est Θ(d2) alorsque celle de l’algorithme probabiliste est O(d). Même si l’algorithmeprobabiliste est très rapide il présente une certaine probabilité d’erreur.Cependant, comme nous allons le voir dans ce qui suit, il est possible deréduire cette probabilité d’erreur à un niveau insignifiant, garantissantainsi une probabilité d’exactitude du résultat très proche de 1.

Démonstration

Il y a erreur si l’algorithme décide que F(r) = G(r) alors queF(r) 6= G(r).

Cette erreur peut arriver si r est une racine de l’équationF(r) −G(r) = 0. Mais une équation d’ordre d ne peut avoir plus de dracines.

Donc : il existe au plus d valeurs ∈ 1, ..., 100d | F(r)−G(r) = 0On peut améliorer l’efficacité de cet algorithme, en choisissant un inter-

valle de valeurs plus grand 1, ..., 10kd on a alorsP(echec) 6 10−k, mais on est limité par les capacités des ordinateurs.C’est là ou l’aspect probabiliste vient à notre secours, car en exploitant lespropriétés multiplicatives de la probabilité des événements indépendants,il suffit de réitérer l’algorithme pour obtenir une probabilité d’exac-titude du résultat aussi proche de 1 que l’on voudra sans augmentersignificativement la complexité de l’algorithme.

Commençons tout d’abord par un rappel cette propriété :Un ensemble d’événements E1,..., Ek sont dits indépendants si et

seulement si :

P(E1 ∩ E2 ∩ ... ∩ Ek) =k∏i=1

P(Ei)

Ceci signifie qu’en réitérant l’algorithme k fois (avec remise)P(echec) 6

∏ki=1 1/100 = (1/100)k

Page 266: livre.pdf

242 Complexité et Algorithmique avancée

16.3 Les probabilités pour réduire la complexité

Exemple de l’Arbre Couvrant Minimum Probabiliste

16.3.1 Généralités

Soit G = (V,E) un graphe connexe avec n sommets et m arêtesvaluées à valeurs réelles wij ∈ R pour tout couple de sommets(i, j) ∈ E.

Un arbre couvrant de G est un sous-graphe acyclique T quiinclut chaque sommet de G et est connexe. Un arbre couvrant aexactement n− 1 arêtes. Le poids d’un arbre est défini comme lasomme des poids des arêtes. Un arbre couvrant minimum est unarbre couvrant de poids minimum.

16.3.2 Le Problème

Étant donné un graphe G valué, déterminer un arbre couvrantminimum de G.

Nous nous proposons d’étudier un algorithme probabiliste quiexploite l’entrelacement d’une technique de réduction du nombrede sommets avec la réduction du nombre d’arêtes à retenir pourla construction de l’arbre couvrant minimum par échantillonnageprobabiliste.

La particularité de cet algorithme est qu’il fonctionne de façonrécursive et opère sur des (sous-)graphes non nécessairement co-nnexes. Quand le graphe soumis en entrée à la procédure n’estpas connexe, il n’y a pas d’Arbre Couvrant (désormais AC) et ongénéralise aisément la notion d’arbre couvrant minimum à celle deforêt couvrante minimale.

Le problème de l’arbre couvrant minimum a fait l’objet de nom-breuses études en optimisation combinatoire et on renvoie le lecteuraux nombreux ouvrages d’algorithmique traitant ce sujet. On citeranotamment les algorithmes de Borükva ([Bor26]) (Sollin), Kruskal([Kru56] ou Prim ([Pri57].

Une variété d’algorithmes a été développée pour ce problème,la plupart d’entre eux sont basés sur une stratégie gloutonne et

Page 267: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 243

s’exécutent en temps presque linéaire O(m log n) (tels les algorithmesde Borükva, Kruskal ou Prim).

A l’heure actuelle, le meilleur algorithme déterministe s’exécuteen temps O(m log β(m,n)) où β(m,n) = min i| log(i) ≤ m/n etlog(i)n dénote la i-ème application du logarithme (cf. [DRT92])

Bien que cela soit un algorithme en temps presque linéaire pourtoute application pratique, les structures de données sont suffisam-ment compliquées pour que l’on préfère utiliser des algorithmes entemps O(m log n).

Dans tous les cas il reste cet aspect théorique de la conceptiond’un algorithme probabiliste dont le temps d’exécution moyen estO(m) avec une forte probabilité.

L’algorithme probabiliste combine des étapes de Borükva, uneprocédure d’échantillonnage des arêtes permettant d’éliminer desarêtes "lourdes" et une phase de vérification permettant de conserverles arêtes pertinentes pour la construction de l’arbre couvrant mini-mum. On dispose en effet d’algorithmes déterministes de vérificationen temps linéaire, ([DRT92], [KRT93]) et on retiendra tout parti-culièrement la caractéristique suivante de ces algorithmes qui, si Tn’est pas un arbre couvrant minimum, alors l’algorithme retourneune liste d’arêtes dont n’importe laquelle peut améliorer T.

16.3.3 L’algorithme de Borükva

Le principe de l’algorithme de Borükva (voir [Bor26]) qui est unalgorithme glouton pour l’arbre couvrant minimum dont le tempsd’exécution est en O(m log n).

Les arêtes bleues

Une arête bleue est une arête de poids minimum incidente à unsommet.

– On montre aisément qu’un arbre couvrant minimim de Gcontient uniquement des arêtes bleues (P1)

– L’idée de l’algorithme de Borükva est de contracter les arêtesbleues incidentes à chaque sommet de G (P2)

Page 268: livre.pdf

244 Complexité et Algorithmique avancée

Lorsqu’on contracte une arête bleue, cela implique la fusion desdeux extrémités en seul sommet qui réunit toutes les arêtes incidentesde deux sommets, les boucles formées devant être éliminées. Parailleurs, une contraction peut créer des arêtes multiples entre lespaires de sommets mais seules les arêtes de poids minimum doiventêtres retenues.

Le processus de contraction sur l’arête bleue pour chaque sommetdu graphe sera appelée une étape de Borükva.

Une implémentation d’une phase de Borükva est donnée parl’algorithme suivant :

Algorithm 16.3.1 Algorithme de Borükva

1. Marquer les arêtes bleues devant être contractées.2. Déterminer les composants connexes formées par les arêtes marquées3. Remplacer chaque composante connexe par un sommet4. Eliminer les boucles et les arêtes multiples crées par les contractions sauf

l’arête de poids minimum.

16.3.3.1 Complexité de la phase Borükva

Etant donné un graphe G avec n sommets et m arêtes, montronsqu’une phase de Borükva s’implémente en temps O(m log n).

On remarque que l’ensemble des arêtes marquées pour unecontraction durant une phase de Borükva induit une forêt. Le grapheG′ obtenu après une phase de Borükva a au plus n/2 sommets. Cecià cause du fait que chaque arête sur laquelle s’opère la contractionest l’arête minimale d’au plus deux sommets. Le nombre d’arêtessélectionnées est au moins n/2.

Puisque chaque sommet choisit exactement une arête à marquer,il est aisé de vérifier que chaque arête marquée doit éliminer unsommet. Le nombre d’arêtes dans G′ est d’au plus m puisqu’aucunenouvelle arête n’est créée durant ce processus.

Examinons le bénéfice de la réalisation d’une phase de Borükva.D’après la remarque (P1), chacune des arêtes contractées appartient

Page 269: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 245

à l’arbre couvrant minimum de G.Soit G′ le graphe obtenu par une phase de V sur G. Il est aisé

de voir que l’arbre couvrant minimum de G est l’union des arêtesmarquées pour contraction durant cette phase avec les arêtes del’arbre couvrant minimum de G′.

L’algorithme de Borükva réduit donc le problème de l’arbrecouvrant minimum sur un graphe à n sommets et m arêtes auproblème de l’arbre couvrant minimum sur un graphe à au plus n/2sommets avec au plus m arêtes.

Le temps nécessaire à la réduction est O(m+ n). Il s’ensuit quele temps d’exécution en pire des cas est O(m log n).

16.3.4 Arêtes "lourdes" et vérification d’arbre couvrantminimum

Soit F une forêt de G, et considérons une paire quelconque desommets (u, v) ∈ V. Si les deux sommets se trouvent dans la mêmecomposante connexe de F, il existe un chemin unique P(u, v) entreeux dans le graphe F. Notons par wF(u, v) le poids maximum d’unearête du chemin P(u, v) s’il existe et posons wF(u, v) =∞ si u et vne sont pas reliés dans F.

16.3.4.1 Définition d’une arête F-lourde

Une arête (u, v) ∈ E est dite F-lourde si w(u, v) > wF(u, v).L’arête (u, v) est dite F-légère si w(u, v) ≤ wF(u, v).

Une arête (u, v) est F-lourde si la forêt F contient un cheminde u vers v utilisant seulement des arêtes d’un poids plus petit quecelui de (u, v) lui même.

Remarque Soit F une forêt quelconque dans G. Si une arête(u,v) est F-lourde, alors elle ne se trouve pas dans l’arbre couvrantminimum de G.

16.3.4.2 Vérification

Une arête "améliore" une forêt si en l’ajoutant à une forêt soit elleréduit le nombre d’arbres dans cette forêt, soit en enlevant l’arête

Page 270: livre.pdf

246 Complexité et Algorithmique avancée

de poids le plus grand dans l’unique cycle crée par son ajout, donneune forêt de poids inférieur ou égal à celui de F.

Une arête F-légère peut être utilisée pour améliorer la forêt F,alors qu’une arête F-lourde ne peut pas. Il est possible de concevoirun algorithme glouton qui commence avec une forêt vide F etconsidérant les arêtes de G de manière à augmenter le poids vérifiesi chaque arête successive est F-légère auquel cas l’arête est utiliséepour améliorer la forêt courante.

Un algorithme de vérification pour un arbre couvrant minimumpeut être vu comme prenant en entrée un arbre T d’un graphe G etvérifiant que les seules arêtes T-légères sont arêtes dans T lui-même.Il est assez clair que cela est équivalent à vérifier que T est un arbrecouvrant minimum.

De tels algorithmes de vérification sont aisément adaptés pourvérifier des forêts couvrantes minimales. En fait, il existe des algo-rithmes de vérification en temps linéaire qui peuvent être utiliséspour faire une étape de plus, et identifier toutes les arêtes F-lourdeset F-légères par rapport à n’importe quelle forêt F.

On ne détaille pas ici ces algorithmes et on indiquera simplementleurs performances.

Théorème 16.3.1 Etant donné un graphe G et une forêt F, toutesles arêtes F-lourdes dans G peuvent être identifiées en O(m+ n).

16.3.5 Échantillonnage aléatoire pour les arbres couvrantsminimum

Avant d’étudier comment l’aléatoire peut être utilisé pour accé-lérer l’algorithme de Borükva, on développe un lemme techniquesur l’échantillonnage aléatoire d’arêtes de graphe G.

Le seul usage de l’aléatoire dans l’algorithme d’arbre couvrantminimum est l’utilisation de l’échantillonnage aléatoire pour iden-tifier et éliminer les arêtes dont on est certain qu’elles ne peuventappartenir à l’arbre couvrant minimum.

Considérons un graphe (aléatoire) G(p) obtenu en ajoutant in-dépendamment chaque arête de G dans G(p) avec probabilité p.

Page 271: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 247

Le graphe G(p) a n sommets et un nombre d’arêtes estimé à n/p.On n’a pas de garantie que G(p) soit connexe.

Soit F la forêt couvrante minimum pour G(p). Pour de grandesvaleurs de p, la forêt F doit être une bonne approximation de l’arbrecouvrant minimum de G. Plus précisément, nous nous attendons àce que il y ait très peu d’arêtes de G qui soient F-légères.

Un rappel de quelques résultats de probabilité élémentaires.Rappelons qu’une variable aléatoire X a une distribution bino-

miale négative avec paramètres n et p si il correspond au nombrede tentatives indépendantes requises pour n succès quand chaquetentative a une probabilité de succès p. De plus, l’espérance de Xest donnée par n/p.

Une variable aléatoire X domine stochastiquement une autrevariable aléatoire Y si∀ z ∈ R, Pr[x>z] ≥ Pr[y > z]Si X domine stochastiquement Y alors E[X] ≥ E[Y].

Lemme 16.3.1 Soit F une forêt couvrante minimale dans le graphealéatoire G(p) obtenu en incluant indépendamment chaque arêtede G avec la probabilité p. Alors le nombre d’arêtes F-légères dansG(p) est stochastiquemet dominé par une variable X ayant unedistribution binomiale négative de paramètres n et p. En particulier,le nombre attendu d’arêtes F-légères sera au plus n/p.

Preuve 16.3.1 Nous prouvons en donnant ici une façon de const-ruire en même temps le graphe H et sa forêt couvrante mimimaleF. Supposons que les arêtes de G soient rangées en ordre croissant.Initialement, H et F sont vides.

Traitons les arêtes dans cet ordre.Pour une arête e traitée, considérons si elle est F-lourde ou F-

légère. Après, lançons une pièce de monnaie avec probabilité de pilep. Si cette pièce est pile, ajoutons e à H. Si e est F-légère, ajoutonse à F. Nous constatons aisément que à la fin F est la forêt couvranteminimum de H dont H est construit par selection de chaque arêtede G avec probabilité p.

Maintenant, nous allons calculer l’espérance du nombre d’arêtesF-légères. Car une arête est ajoutée dans F si et seulement si elle est

Page 272: livre.pdf

248 Complexité et Algorithmique avancée

F-légère, nous ne considérons pas des cas des F-lourdes. Supposonsque nous lancions une pièce de plomb dans le cas où l’arête traitéeest F-légère et celle de cuivre dans le cas où l’arête traitée est F-lourde. Alors le nombre de F-légères est égal au nombre de piècesde plomb que nous avons lancées. Pour une fois que nous lancionsla pièce de plomb, elle est pile avec probabilité p, et avec ce pile-là,nous ajoutons l’arête dans F. Donc, l’espérance de nombre de piècesde plomb lancées est |F|/p. Avec G ayant n sommets, |F| ≤ (n− 1).Cela implique que le nombre attendu d’arêtes F-légères est au plusn/p.

16.3.6 Algorithme d’arbre couvrant minimum linéaire

L’algorithme probabiliste entrelace des phases de Borükva quiréduisent le nombre de sommets avec des phases d’échantillonnagealéatoires qui réduisent les arêtes.

Après la phase d’échantillonnage, la forêt couvrante minimaleF est calculée en utilisant la récursivité, et puis l’algorithme devérification est employé pour éliminer toutes les arêtes qui ne sontpas F-légères.

L’arbre couvrant minimum par rapport aux arêtes restantes, quisont F-légères , est calculé en utilisant à nouveau une invocationde l’algorithme. Même si cet algorithme est appelé arbre couvrantminimum, il peut traiter des graphes non connexes, auquel cas ilétablit une forêt couvrant minimale.

Nous allons montrer ci-après que l’espérance mathématique dutemps d’exécution de cet algorithme est linéaire. Toutefois, dans lepire des cas, il s’exécute avec une complexité équivalente à celle del’algorithme de Borükva.

16.3.7 Algorithme probabiliste de construction d’un arbrecouvrant minimal

Théorème 16.3.2 Le temps d’exécution moyen de l’algorithmearbre couvrant minimum est O(m+ n).

Démonstration

Page 273: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 249

Algorithm 16.3.2 Algorithme de Borükva

Input : G=(V,E) ; |V| = n, |E| = m ; non orienté, pondéréOutput : arbre (ou forêt) couvrant de poids minimum F

1. En utilisant 2 applications de Borükva, entrelacées avec la simplificationdes graphes quotients, calculer le graphe G1 ayant au plus n/4 sommetset considérons C, l’ensemble des arêtes sélectionnées durant ces 2 phases.Si G est vide alors stopper et renvoyer F←C.

2. Soit G2 = G1(p) un graphe obtenu par échantillonnage aléatoire à partirde G1 avec la probabilité p = 1/2– En appliquant récursivement l’algorithme, calculer la forêt couvrante

minimale F2 du graphe G2– En utilisant un algorithme de vérification en temps linéaire, identifier

des arêtes F2-lourdes de G1, et les éliminer pour obtenir le graphe G3

3. De manière récursive, appliquer l’algorithme et calculer la forêtcouvrante minimale F3 pour le graphe G3.Renvoyer F = C ∪ F3

Soit T(n,m) l’espérance mathématique du temps d’exécutionde l’algorithme d’arbre couvrant minimum sur des graphes à nsommets et m arêtes. Examinons le coût des différentes étapes decet algorithme.

1. Elle utilise 2 applications de l’algorithme de Borükva, ce quifait O(m+n) et donne un graphe G1 avec au plus n/4 sommetset m arêtes.

2. on réalise un échantillonnage aléatoire pour donner le grapheG2 = G1(1/2) avec n/4 sommets et un nombre d’arêtes moyenégal à m/2 et qui s’exécute aussi en O(m+ n).

3. Trouver la forêt couvrante minimale de G2 a un coût moyenT(n/4,m/2) par induction et grâce à la linéarité de l’espérancemathématique.

4. La vérification de l’étape 4 s’exécute en O(m+n) et donne ungraphe G3 avec au plus n/4 sommets et un nombre d’arêtesmoyen d’au plus n/2.

5. Trouver la forêt couvrante minimale de G3 a un temps moyen

Page 274: livre.pdf

250 Complexité et Algorithmique avancée

T(n/4, n/2).6. O(n) itérations suffisent pour l’étape 6.Au total, on obtient donc

T(n,m) ≤ T(n/4,m/2) + T(n/4, n/2) + c(n+m)

pour une certaine constante c.Une solution de cette relation de récurrence est 2.c.(n+m), ce

qui donne le temps d’exécution en moyen de l’algorithme arbrecouvrant minimum égal à O(n+m).

16.4 Résoudre SAT de manière probabiliste

16.4.1 Rappel

Le problème général de satisfiabilité est une formule booléennedonnée sous la forme d’une conjonction (ET) d’un ensemble declauses, où chaque clause est la disjonction (OU) de littéraux etoù un littéral est une variable booléenne ou sa négation.

Une solution à une instance d’une formule SAT est une affectationde valeur V ou F aux variables de façon à ce que toutes les clausessoient satisfiables.

Le problème général SAT est NP-difficile.Nous allons tout d’abord étudier un algorithme probabiliste

pour 2-SAT, un cas particulier du problème qui se résout en tempspolynomial. A partir de cette solution nous allons déduire unesolution pour 3-SAT, problème plus difficile et nous montrerons lapertinence de l’utilisation d’un algorithme probabiliste.

Pour le problème de la k-satisfiabilité (k-SAT), la formule de satis-fiabilité est restreinte de façon à ce que chaque clause ait exactementk littéraux. Ainsi, la donnée d’un problème 2-SAT a exactement2 littéraux par clause. Par exemple, l’expression suivante est uneinstance 2-SAT.

φ = (x1 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3) ∧ (x4 ∨ x2) ∧ (x4 ∨ x1)

Page 275: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 251

16.4.2 Analyse d’une solution probabiliste à 2-SAT

Une approche assez immédiate pour trouver une solution pourune formule 2-SAT est de commencer avec une affectation, chercherune clause qui n’est pas satisfaite, et modifier les affectations desvaleurs aux variables de manière à ce que la clause devienne satisfaite.

S’il existe deux littéraux dans la clause, alors il y a deux change-ments possibles de l’affectation qui satisferont la clause (sur 4 autotal). L’algorithme 16.4.3 proposé décide lequel de ces changementsessayer de façon aléatoire.

Notations

– n : nombre de variables booléennes de la formule– m : paramètre entier qui détermine la probabilité quel’algorithme termine avec une réponse correcte.

Considérons la formule SAT exemple

φ = (x1 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3) ∧ (x4 ∨ x2) ∧ (x4 ∨ x1)

si on commence avec toutes les variables à F alors la clause (x1∨x3)n’est pas satisfaite. L’algorithme peut sélectionner cette clause etmettre le littéral x1 à V. Dans ce cas, (x4 ∨ x1) sera non-satisfaiteet l’algorithme peut changer la valeur d’une variable de cette clause,etc.

Si l’algorithme termine avec une affectation des valeurs auxvariables telle que la formule soit satisfiable alors on a résolu leproblème. Le cas où l’affectation ne donne pas une formule satisfiableretiendra notre attention plus tard. Considérons pour l’instant que laformule est satisfiable et que l’algorithme s’exécutera aussi longtempsque nécessaire pour trouver une affectation satisfaisante pour rendrela formule satisfiable.

Portons notre attention sur le nombre d’itérations de la boucleRépéter jusqu’à ... de l’algorithme. Nous appellerons étapechaque fois que l’algorithme modifie une affectation de variable.Puisqu’une formule 2-SAT a O(n2) clauses distinctes, chaque étapepeut être exécutée en O(n2).

Page 276: livre.pdf

252 Complexité et Algorithmique avancée

Algorithm 16.4.3 2-SAT PROBA

Input :

1. Démarrer avec une affectation quelconque de valeurs aux variablesx = (x1, . . . , xn)

2. Répéter jusqu’à 2×m× n2 fois(a) S’il existe une clause c non satisfaite(b) Choisir (uniformément) au hasard une des deux variables et

changer sa valeur3. Si une instance satisfiable est trouvée, renvoyer la valeur de cette

affectation4. sinon retourner formule insatisfiable

Soit S une affectation satisfaisante pour les n variables et Ai

représentant l’affectation de variables après la i-ème étape de l’algo-rithme.

Soit Xi le nombre de variables dans l’affectation courante Ai quiont la même valeur que l’affectation satisfaisante S.

Quand Xi = n, l’algorithme termine avec affectation satisfaisante.En fait, l’algorithme peut terminer avant que Xi n’atteigne n si iltrouve une autre affectation satisfaisante mais pour notre analyse,le pire cas est lorsque l’algorithme s’arrête quand Xi = n.

En démarrant avec Xi < n, nous examinerons, comment Xi

évolue au cours du temps, combien de temps il faut pour que Xi

atteigne n.– D’abord si Xi = 0 alors pour tout changement dans la valeurde variable de l’étape suivante, on a Xi+1 = 1

Pr(Xi+1 = 1|Xi = 0) = 1

– Supposons que 1 ≤ Xi ≤ n − 1. A chaque étape, nous choi-sissons une clause qui est insatisfaite. Puisque S satisfait laclause, cela signifie que Ai et S se différencient sur la valeurd’au moins une des variables de cette clause.

– Comme la clause n’a pas plus de 2 variables, la probabilitéd’augmenter le nombre de correspondances (entre Ai et S) est

Page 277: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 253

au moins 1/2.– La probabilité peut être égale à 1 si Ai et S se différencientsur la valeur des 2 variables de cette clause.

– il s’ensuit que la probabilité de faire décroître le nombre decorrespondances est au plus 1/2, donc pour 1 ≤ j ≤ n− 1

Pr(Xi+1 = j + 1|Xi = j) ≥1/2Pr(Xi+1 = jl1|Xi = j) ≤ 1/2

Nous avons affaire à un processus stochastique (Xi)i mais quin’est pas nécessairement une chaîne de Markov.

Nous allons introduire une chaîne de Markov afin de d’estimerle nombre maximum d’itérations pour notre algorithme.

Le processus stochastique X0,X1,X2... n’est pas nécessairementune chaîne de Markov, puisque la probabbilité de Xi augmente etpeut dépendre du fait que Ai et S se différencient sur une variableou deux dans la clause non satisfaite que l’algorithme choisit à cetteétape. Ceci de plus, dépend sur les clauses qui ont été considéréesauparavant.

Définissons le processus stochastique (Yi) = Y0,Y1,Y2, ...

Y0 = X0

Pr(Yi+1 = 1|Yi = 0) = 1Pr(Yi+1 = j + 1|Yi = 1) = 1/2Pr(Yi+1 = j − 1|Yi = j) = 1/2

que l’on vérifie aisément comme étant une chaîne de Markov.Cette chaîne de Markov Y0,Y1,Y2, ... est une version pessimiste

du processus stochastique X0,X1,X2, ... car lorsque Xi augmentelors du passage à l’étape suivante avec une probabilité d’au moins1/2, Yi augmente avec une probabilité exactement égale à 1/2.

Il est donc assez clair que le temps moyen pour atteindre lavaleur n à partir de n’importe quelle configuration est plus grandepour la chaîne de Markov Y que pour le processus X. On exploiteradonc cette propriété.

Page 278: livre.pdf

254 Complexité et Algorithmique avancée

16.4.3 Étude de la chaîne de Markov permettant d’esti-mer la complexité en temps de l’algorithme

La chaîne de Markov modélise une marche aléatoire sur un graphenon-orienté G. Les sommets de G sont représentés par les entiers0, 1, 2, ..., n et pour 1 ≤ i ≤ n − 1, le sommet i est connecté auxsommets i− 1 et i+ 1.

Soit hj le nombre d’étapes pour atteindre n en partant de l’étatj. Pour l’algo 2-SAT, hj est une borne supérieure du nombre moyend’étapes pour que l’instance S soit en concordance totale avecl’affectation de départ où j variables coïncident avec les affectationsde l’instance S.

De manière évidente,hn = 0h0 = h1 + 1 puisque de h0 on se déplace vers h1 en une étape. Onutilise la linéarité de l’espérance mathématique pour déterminer uneexpression pour autres valeurs de hj.

Soit Zj, une variable aléatoire représentant le nombre d’étapespour atteindre n de l’état j.

Considérons que partant de l’état j où 1 ≤ j ≤ n− 1Avec proba 1/2, l’état suivant est j − 1 et donc Zj = 1 + Zj−1Avec proba 1/2, l’état suivant est j + 1 et donc Zj = 1 + Zj+1donc,

E[Zj] = E(1

2(1 + Zj−1) + 12(1 + Zj+1)

)comme E[Zj] = hj on a par linéarité

hj = hj−1 + 12 + hj+1 + 1

2 = hj−1

2 + hj+1

2 + 1

On obtient donc le système d’équationsh0 = 0

hj = hj−1

2 + hj+1

2 + 1, pour 1 ≤ j ≤ n− 1h0 = h1 + 1

La résolution de ce système peut se faire de deux façons équi-valentes, la première consiste à résoudre un système de n+ 1 équa-tions à n+ 1 variables linéairement indépendantes.

Page 279: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 255

L’autre façon de faire consiste à raisonner de manière inductive,on montre que, pour 0 ≤ j ≤ n− 1, on a

hj = hj+1 + 2j + 1

– vrai quand j = 0 car h1 = h0 − 1– de hj = hj−1

2 + hj+12 + 1 on obtient

hj+1 = 2hj + hj−1 − 2= 2hj − (hj + 2(j − 1) + 1)− 2= hj − 2j − 1

En utilisant l’hypothèse d’induction, nous pouvons conclure que

h0 = h1 + 1= h2 + 1 + 3= hj − 2j − 1

=n−1∑i=0

2i+ 1

= 2n−1∑i=0

i+ 1n−1∑i=0

1

= ...

= n2

Considérons qu’une formule 2-SAT avec n variables est satis-fiable et que l’algorithme 2-SAT soit en mesure de s’exécuter jusqu’àl’obtention d’une affectation satisfaisante. Alors, l’espérance mathé-matique du nombre d’étapes pour trouver une telle affectation estau plus O(n2).

16.4.3.1 Cas où la formule est éventuellement insatisfiable

Théorème 16.4.1 L’algorithme 2-SAT retourne toujours une ré-ponse correcte si la formule est insatisfiable.

Si la formule est satisfiable, avec probabilité d’au moins 1− 2ml’algorithme renvoie une affectation satisfaisante, sinon il renvoieincorrectement que la formule est insatisfiable avec probabilité 2−m.

Page 280: livre.pdf

256 Complexité et Algorithmique avancée

Preuve 16.4.1 Il est clair que s’il n’y a pas d’affectation satisfai-sante alors l’algorithme retourne correctement le fait que la formuleest insatisfiable.

Supposons que la formule soit satisfiable. Découpons l’exécutionde l’algorithme en segments de n2 étapes. Etant donné qu’aucune af-fectation satisfaisante n’est trouvée dans les i− 1 premiers segments,la question qui se pose est de savoir quelle est la probabilité condi-tionnelle que l’algorithme ne trouve pas d’affectation satisfaisanteau segment i.

Par le lemme énoncé précédemment, l’espérance mathématiquedu temps pour trouver une affectation satisfaisante quelque soit laconfiguration de départ est n2.

Soit Z le nombre d’étapes du départ du segment jusqu’à l’obtentiond’une affectation satisfaisante. En appliquant l’inégalité de Markov 1

Donc, la probabilité que l’algorithme ne trouve pas d’affectationsatisfaisante après m segments est bornée par (1

2)m

16.4.4 Généralisation à 3-SAT

L’objectif est à présent de généraliser la technique employéepour 2-SAT afin d’obtenir un algorithme probabiliste 3-SAT. Ceproblème est NP-Complet, il serait par conséquent surprenantqu’ un algorithme probabiliste puisse résoudre ce problème en tempspolynomial en n (i.e. l’espérance mathématique du temps).

Nous proposons un algorithme probabiliste qui résout 3-SATen un temps qui est exponentiel en n mais qui est beaucoup plus

1. Soit une variable aléatoire positive X et a > 0 alors

P(X > a) 6E(X)a

Exemple 1 : jeu de pile ou face La borne supérieure de la probabilité d’obtenir plusde 3n/4 face dans une séquence de n essais est :

P(X > 3n/4) 6E(X)3n/4 = n/2

3n/4 = 23

,

Pr(Z > 2n2) ≤ n2

2n2 = 12

Page 281: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 257

efficace que l’approche exhaustive et naïve reposant sur le testde toutes les affectations possibles. Considérons en premier lieu,la performance d’une variante de l’algorithme utilisé pour 2-SAT,quand il est appliqué à 3-SAT. La première approche est identiqueà celle présentée précédemment. Dans cet algorithme, m est unparamètre qui contrôle la probabilité de succès de l’algorithme.

16.4.4.1 L’algorithme

Algorithm 16.4.4 3-SAT PROBA

1. Démarrer avec une instance quelconque2. Répéter jusqu’à m fois, terminer si toutes les clauses sont satisfaites

(a) Choisir arbitraitement une clause qqc qui n’est pas satisfaite(b) Choisir uniformément au hasard un des littéraux de la clause et

changer la valeur de la variable dans l’affectation courante3. Si une instance satisfiable est trouvée, retourner le résultat4. sinon retourner que la formule est insatisfiable

Concentrons nous sur la détermination de la borne supérieureen temps (i.e. l’espérance mathématique du temps) pour obtenirune affectation satisfaisante, s’il en existe une.

Supposons que l’instance soit satisfiable et que S est une af-fectation satisfaisante. Soit Ai l’affectation après i étapes et Xi lenombre de variables (i.e. littéraux) dans l’affectation courante quicorrespondent avec S. Par la même démarche que pour l’algorithme2-SAT, pour 1 6 j 6 n− 1

P(Xi+1 = j + 1|Xi = j) > 1/3

P(Xi+1 = j − 1|Xi = j) 6 2/3Les équations s’expliquent aisément parce qu’à une étape don-

née une ou plusieurs clauses sont non satisfaites, et donc les Ai

Page 282: livre.pdf

258 Complexité et Algorithmique avancée

doivent être en contradiction sur au moins une variable de cetteclause. Avec une probabilité d’au moins 1

3 , on augmente le nombre decorrespondances entre l’affectation courante et S. De façon analogueon obtient une borne supérieure du nombre moyen d’étapes jusqu’àce que Xi = n en analysant une chaîne de Markov Y0,Y1,.. telle que

Y0 = X0

P(Yi+1 = 1|Yi = 0) = 1

P(Yi+1 = j + 1|Yi = j) = 13

P(Yi+1 = j − 1|Yi = j) = 23

Dans ce cas, la chaîne est plus encline à décroître qu’à croître. Soithj le nombre d’étapes pour atteindre n en partant de j, on obtientle système d’équations suivant :

hn = 0

hj = 2hj−1

3 + hj+1

3 + 1, 1 6 j 6 n− 1h0 = h1 + 1

Ces équations ont une solution unique qui est donnée par

hj = 2n+2 − 2j+2 − 3(n− j)

L’algorithme ici décrit prend Θ(2n) itérations (i.e. unités detemps) en moyenne pour déterminer une affectation satisfaisante. Cerésultat n’est pas très convaincant car il y a 2n affectations possiblesà tester. Cependant, avec un peu de perspicacité on peut améliorersignificativement le processus. Il y a pour cela deux observations àfaire :

1. Si on choisit une affectation satisfaisante uniformément au ha-sard, alors le nombre de variables qui correspondent à S ont unedistribution polynomiale avec une espérance mathématiquede n

2 . Avec une distribution de probabilité exponentiellement

Page 283: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 259

faible (i.e. n → −∞) mais non négligeable, le processus dé-marre avec une affectation initiale qui correspond à S en plusde n

2 variables de façon significative.2. Lorsque l’algorithme démarre, il a tendance à se déplacer vers 0

plutôt que n. Plus l’exécution de l’algorithme se prolonge, pluson a tendance à aller vers 0. On a donc plutôt intérêt à redé-marrer le processus à chaque fois pour un nombre d’itérationsréduit plutôt que d’exécuter le processus sur de nombreuses etlongues périodes sur la même affectation.

16.4.5 Proposition d’algorithme modifié

L’algorithme 3-SAT bis prend jusqu’à 3n étapes pour atteindreune affectation satisfaisante en partant d’une affectation quelconque.S’il échoue, il recommence la recherche avec une nouvelle affectationchoisie au hasard. Nous cherchons ici à déterminer combien de fois leprocessus doit recommencer avant d’atteindre une affectation satis-faisantes. Soit q la probabilité que le processus 3-SAT atteigne S (outoute autre affectation satisfaisante) en 3n étapes en démarrant avecune affectation choisie uniformément au hasard. Soit qj une borneinférieure de la probabilité que notre algorithme modifié atteigne S(ou toute autre affectation satisfaisante) quand il démarre avec uneaffectation qui inclut exactement j variables qui ne concordent pasavec S.

Considérons une particule se déplaçant sur une ligne indexéepar des entiers avec une probabilité de 1

3 d’aller vers le haut et uneprobabilité de 2

3 d’aller vers le bas.Remarquons que :

Ckj+2.k(

23)k(1

3)j+k

est la probabilité de k déplacements vers le bas et (k + j) dép-lacement vers le haut dans une séquence de (j + 2.k) déplacements.C’est donc une borne inférieure sur la probabilité que l’algorithmeatteigne une instance satisfiable en j + 2k 6 3n étapes. C’est-à-dire

qj > maxk=0,...,jCkj+2k(

23)k(1

3)j+k

Page 284: livre.pdf

260 Complexité et Algorithmique avancée

Algorithm 16.4.5 3-SAT+ PROBA

1. Répéter jusqu’à m fois, terminer si toutes les clauses sont satisfaites(a) Démarrer avec une instance quelconque(b) Répéter jusqu’à 3× n fois, terminer si toutes les clauses sont

satisfaitesi. Choisir arbitraitement une clause qqc insatisfaiteii. Choisir uniformément au hasard un des littéraux de la clause

et changer la valeur de la variable dans l’affectation courante2. Si une instance satisfiable est trouvée, retourner le résultat3. sinon retourner que la formule est insatisfiable

En particulier, si on considère le cas où k = j on a

qj > Cj3j(

23)j(1

3)2j

On peut approximer Cj3j avec la formule de Stirling 1

Donc pour j > 0

Cj3j = 3j!

j!(2j)!

>

√2π(3j)

4√

2πj√

2π2j (3je

)3j( e2j )2j(ej

)j)

=√

38√πj

(274 )j

= c√j

(274 )j avec c =

√3

8√π

Donc, pour j > 0, on a aussi :1. Rappel de la formule de Stirling : Pour n > 0,

√2πnCen 6 m 6 2

√2πm(m

e)m

Page 285: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 261

qj ≥ Cj3j(

23)j(1

3)2j

≥ c√j

(274 )j(2

3)j(13)2j

≥ c√j

12j

On notera aussi que q0 = 1.Disposant d’une borne inférieure pour qj, on peut établir une

borne inférieure pour q, la probabilité que le processus atteigneune affectation satisfaisante en 3.n étapes partant d’une affectationchoisie au hasard.

qj ≥n∑j=0

Pr(affectation au hasard ayant j différences avec S)qj

≥ 12n +

n∑j=1

Cjn(1

2)n c√j

12j

≥ ( c√n

)(12)n

n∑j=1

Cjn(1

2)n(1)n−j

≥ ( c√n

)(12)n(1 + 1

2)n

≥ ( c√n

)(12)n(3

2)n

= ( c√n

)(3

4

)n

Supposons qu’une affectation satisfaisante existe, le nombre d’af-fectations testées avant de déterminer une telle affectation satisfai-sante est une variable aléatoire géométrique de paramètre q.

Le nombre moyen d’affectations testées est 1qet pour chaque

affectation, l’algorithme utilise au plus 3n étapes. Donc le nombremoyen d’étapes avant la détermination d’une solution est bornéspar O(n3/2(4

3)n).

Page 286: livre.pdf

262 Complexité et Algorithmique avancée

L’algorithme modifié pour 3-SAT correspond donc à un algo-rithme de Monte-Carlo. Si l’espérance mathématique d’étapes avantde trouver une solution est borné par a et si le paramètre m est fixéà la valeur 2.a.b, alors la probabilité qu’aucune affectation ne soittrouvée alors que la formule est satisfiable est bornée supérieurementpar 2−b.

16.5 Un problème d’accord

Un problème fréquemment abordé dans le contexte de l’infor-matique répartie consiste à briser la symétrie qui existe au seind’un ensemble de processus communiquants. Il est pour cela pos-sible d’utiliser l’algorithmique probabiliste. Ce problème est dans lalittérature anglo-saxonne appelé choice coordination problem.

16.5.1 Un exemple issu de la Biologie

Il se trouve que la nature offre dans le domaine de la biologieune illustration tout à fait éclairante de ce problème. Une classeparticulière de mites (Genus Myrmoyssus) résident en tant queparasites sur la membrane de l’oreille de papillons de la famillePhaemidae. Ces papillons sont des proies pour les chauves-souriset la seule défense dont ils disposent est qu’ils peuvent percevoir lesonar utilisé par une chauve-souris s’approchant.

Malheureusement, si les deux oreilles du papillon sont infectéespar les mites, alors la capacité de perception du sonar des prédateursest considérablement diminuée, et donc les chances de survie desdeux espèces - le papillon et la colonie de mites - sont considérab-lement réduites. L’intérêt des mites est donc d’assurer la survie deleur hôte, ce qu’elles peuvent réaliser en infectant uniquement uneoreille. Les mites doivent donc faire face à un problème d’accord.Comment des mites infectant une oreille particulière garantissent-elles leur survie en obligeant les autres mites à infecter la mêmeoreille ? Le protocole utilisé par ces mites implique le dépôt de traceschimiques autour des oreilles du papillon.

Page 287: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 263

16.6 Une solution synchrone

Notre intérêt pour ce problème a bien sûr une motivation infor-matique.

Considérons une collection de n processus identiques qui opèrentde manière totalement asynchrone. Il n’y a pas d’horloge globalecommune accessible et aucune hypothèse ne peut être formuléeconcernant les vitesses relatives des différents processus. Les proces-sus doivent donc atteindre le consensus sur un choix unique sur unecollection de m options identiques.

On va pour l’instant adopter un modèle simple pour la commu-nication entre processus.

On dispose d’une collection dem registres accessibles en lecture etécriture pour l’ensemble des processus. Plusieurs processus peuventsimultanément tenter d’accéder ou modifier un registre. Pour gérerde tels accès qui provoquent des conflits, on considèrera que lesprocessus utilisent un mécanisme de verrouillage par lequel un et unseul processus obtient l’accès à un registre quand plusieurs processustentent d’y accéder ; de plus, tous les processus restants attendentalors jusqu’à ce que le verrou soit levé et entrent de nouveau encompétition pour accéder au registre.

Les processus doivent exécuter un protocole pour choisir uneoption unique parmi les m choix possibles. Ceci est réalisé en garan-tissant qu’à la terminaison du protocole, exactement un seul des mregistres contient un symbole spécial désigné par

√.

La complexité d’un protocole de coordination est mesurée entermes du nombre total d’opérations de lecture/écriture réaliséespar les n processus (Il est évident que le temps d’exécution a peude sens dans un environnement asynchone).

On sait que tout protocole déterministe résolvant ce problème aune complexité en Ω(n1/3). On va maintenant illustrer la puissance del’algorithme probabiliste dans ce contexte en exhibant un protocoleprobabiliste tel que, pour tout c > 0 , on résoud le problème enutilisant c opérations avec une probabilité de succès d’au moins1− 2Ω.

Pour des raisons de simplicité, on va considérer seulement le cas,

Page 288: livre.pdf

264 Complexité et Algorithmique avancée

n = m = 2, le protocole et l’analyse se généralisent d’une manièreimmédiate. On commencera par se limiter au cas assez simple oùdeux processeurs sont synchrones et opèrent en étapes synchroniséespar une même horloge globale.

16.6.1 Le protocole

Le protocole présenté ci-après est exécuté par chacun des deuxprocesseurs. On indexe les processeurs par Pi et les choix possiblespar Ci pour tout 0, 1. Le processeur Pi lit initialement le registreCi. Ainsi, les processeurs échangent-ils leurs registres après chaqueitération du protocole. Ceci implique qu’à aucun moment les deuxprocesseurs n’examinent le même registre.

Chaque processus maintient également une variable locale dontla valeur est notée Bi.

Algorithm 16.6.6 SYNCH-CCP

Input : les registres C0 et C1 sont initialisés à 0Output : exactement un des deux registres a la valeur

0. Pi initialement scanne Ci et a sa variable locale Bi initialisé à 01. Lire le registre courant et obtenir le bit Ri2. Choisir une des 3 options

(a) si (Ri =√) alors HALT

(b) si (Ri = 0 et Bi = 1) alors écrire√

dans le registre courant etHALT

(c) autrement, affecter un bit aléatoire à Bi, écrire Bi dans le registrecourant

3. Pi échange son registre courant avec P1−i et retourne à l’instruction 1.

16.6.2 Preuve de bon fonctionnement in absurdo

Preuve 16.6.1 Pour vérifier la correction de ce protocole, il suffitde vérifier qu’au plus un processeur peut avoir la valeur

Îcrite

dans son registre. Pour ce faire, on va supposer par l’absurde que

Page 289: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 265

les deux registres doivent avoir eu comme valeur écrite√

à la foisau sein de la même itération. Dans le cas contraire, le cas (2.a)assurera que le protocole se termine avant que cette erreur ait lieu.Supposons que l’erreur ait lieu au cours de la t-ème itération. NotonsBi(t) et Ri(t), les valeurs utilisées par le processeur Pi juste aprèsl’étape 1 de la t-ème itération du protocole. Par l’instruction (2.c),on a R0(t) = B1(t) et R1(t) = B0(t). Le seul cas où Pi écrit

durant la t-ème itération est quand Ri = 0 et Bi = 1 alors R1−i = 1et B1−i = 0 et P1−i ne peut écrire

√au cours de l’itération.

16.6.3 Évaluation de la complexité

Nous avons démontré que le protocole termine correctement enfaisant un choix unique. Ceci implique cependant que le protocolese termine en un nombre fini d’étapes. Pourquoi cela se produit-il ?Remarquons qu’à chaque itération la probabilité que les deux bits B0et B1 soient les mêmes est de 1/2. De plus, si à chaque étape ces deuxbits prennent des valeurs distinctes alors le protocole se termine lorsdes deux prochaines étapes. La probabilité que le nombre d’étapesdépasse t est O( 1

2t ). Le coût de calcul de chaque itération est bornédonc ce protocole effectue O(t) itérations avec une probabilité égaleà 1−O( 1

2t ).

16.7 Le cas asynchrone

On généralise maintenant ce protocole au cas asynchrone où deuxprocesseurs peuvent travailler à des vitesses différentes et ne peuventéchanger le contenu de leur registres qu’après chaque itération.

En fait, on ne considère plus que les deux processeurs démarrenten examinant les différents registres. En effet, le fait de choisir ununique registre de départ C0 ou C1 est en lui-même une instance duproblème de coordination de choix.

À la place de cela, on suppose que chaque processus choisit sonregistre initial de départ au hasard. Ainsi, les deux processeurspeuvent être en conflit dès la première étape et doivent utiliser lemécanisme de verrou pour résoudre le conflit. L’idée fondamentale

Page 290: livre.pdf

266 Complexité et Algorithmique avancée

est d’associer une estampille (voir [Lam78, AR81] pour ce mécanismede datation logique) ti sur le registre Ci, et Ti sur la variable localeBi.

On supposera qu’une opération de lecture sur le registre Ci opéresur une paire < ti,Ri > où ti est l’estampille et Ri la valeur duregistre. Si les processeurs fonctionnaient de manière synchrone, cesestampilles seraient identiques au numéro d’itération du protocoleprécédent.

Algorithm 16.7.7 ASYNCH-CCP

Input : les registres C0 et C1 sont initialisés à <0,0>Output : exactement un des deux registres a la valeur

0. Pi initialement examine un registre choisi au hasard Il change alors sonregistre courant à la fin de chaque itération.Les variables locales Ti et Bi sont initialisées à 0

1. Pi obtient l’accès exclusif sur le registre courant et lit < ti,Ri >2. Pi choisit une des 5 options

(a) si (Ri =√) alors HALT

(b) si (Ti < ti) alors Ti ← ti et Bi ← Ri(c) si (Ti > ti) alors écrire

√dans le registre courant et HALT

(d) si (Ti = ti, Ri = 0, Bi = 1) alors écrire√

dans le registre courantet HALT

(e) sinonTi ← Ti+1, ti ← ti+1, affecter un bit aléatoire à Bi et écrire< ti,Bi > dans le registre courant

3. Pi libère l’accès exclusif sur son registre courant, accède à l’autre registreet retourne à l’instruction 1.

16.7.1 Évaluation de la complexité

Théorème 16.7.1 Pour tout c > 0, l’algorithme ASYNCH-CPP aun coût total excédent c avec une probabilité d’au plus 2−Ω(c)

Page 291: livre.pdf

Chapitre 16. Introduction à l’algorithmique probabiliste 267

16.7.2 Preuve

Le seule différence réelle avec le protocole précédent réside dansles instructions du cas (2.b) et (2.c). Un processus du cas (2.b) joueà cache cache avec l’autre processus et le processus dans le cas (2.c)réalise qu’il est en avance sur l’autre processus et est ainsi librede faire son choix. Pour démontrer la validité de ce protocole, onconsidère deux cas où un processus peut écrire

√dans sa cellule

courante - c’est le cas (2.c) et (2.d). Quand un processus termineune itération, son estampille locale Ti est égale à celle du registrecourant ti. Ainsi,

√ne peut être écrit durant la toute première

itération de chaque processeur.Supposons que Pi est dans le cas (2.c) avec son estampille T∗i et

la valeur courante du registre Ci avec l’estampille t∗i où t∗i < T∗i . Leseul problème possible est celui où P1−i peut écrire (ou a déjà écrit)√

dans le registre C1−i. Supposons que cette erreur ait eu lieu etsoit t∗1−i et T∗1−i les estampilles durant l’itération où P1−i écrit

dans C1−i.A présent Pi traite Ci avec une estampille T∗i et donc, doit avoir

laissé C1−i avec une estampille de la même valeur avant que P1−iait pu écrire

√dedans.

Puisque les estampilles ne peuvent décroitre t∗1−i ≥ T∗i . De plusP1−i ne peut avoir son estampille T∗1−i qui dépasse t∗i puisqu’elle doitaller de C1−i à Ci et l’estampille de ce registre ne dépasse jamais ti.

On a donc établi que

T∗1−i ≤ t∗i ≤ T∗i ≤ t∗1−i

mais P1−i doit entrer dans la section (2.b) pour T∗1−i < t∗1−i contre-disant l’hypothèse qu’il écrit

√dans C1−i pour ces valeurs des

estampilles.Le cas (2.d) peut être analysé de manière analogue excepté que

nous obtenons finalement que

T∗1−i ≤ t∗i = T∗i ≤ t∗1−i

ceci peut amener un problème puisque permettre T∗1−i = t∗1−i et lecas (2.d) peut permettre l’écriture par P1−i de

√. Toutefois, on peut

Page 292: livre.pdf

268 Complexité et Algorithmique avancée

alors invoquer l’analyse du cas synchrone et écarter la possibilité decette erreur.

La complexité de ce protocole est simple à analyser. Le coût estproportionnel à la taille de l’estampillage le plus grand obtenu lorsde l’exécution du protocole. L’estampille d’un registre peut croîtreseulement dans le cas (2.e) et ceci ne peut se produire que lorsquele cas 2 s’applique.

De plus, le processeur Pi qui augmente la valeur de l’estampilledoit avoir sa variable Bi courante choisie lors d’un accès à un autreregistre. Ainsi l’analyse du cas synchrone s’applique.

Page 293: livre.pdf

Chapitre 17

De Shannon à Kolmogorov

Dans cette partie du livre, on aborde les théories de l’informationde Shannon et Kolmogorov. Ces théories, comme dans cet

ouvrage le chapitre 18 sur l’informatique quantique (page 285) sontsous-tendus par le concept d’entropie, lui-même dû à Boltzmann etissu de la thermodynamique.

Nous reviendrons aussi sur les travaux de Kolmogorov qui est lepère de la théorie moderne de l’information et des probabilités. Pourcet exposé, nous nous appuierons sur quatre textes qui exposent defaçon claire la théorie (voir [KU87, Lév76, LV97, CLN04]).

Comme on a pu le voir au chapitre 5, la complexité de Kolmogorovest dite complexité descriptionnelle, elle s’intéresseà la quantité intrinsèque d’information d’un objet. En d’autrestermes on cherche à connaître la quantité d’information,exprimée en nombre de bits nécessaires pour décrire entièrementl’objet considéré. La description d’un objet ne présente d’inté-rêt que dans la mesure où cette description permet de restituerentièrement l’objet. La théorie de l’information ou de la complexitéde Kolmogorov est différente de celle de Shannon en ce qu’elles’intéresse à l’objet lui-même alors que la théorie de Shannons’intéresse à la communication, elle se réfère donc au médium decommunication. Toutefois, la différence, si elle est conceptuelleprésente aussi un intérêt commun. Si on veut pouvoir communiquerla description d’un objet à travers un médium de communication,il faut que le message reçu, la description du-dit objet, permette de

Page 294: livre.pdf

270 Complexité et Algorithmique avancée

le restituer intégralement. La théorie de Shannon, comme l’annoncele titre de son article (voir [Sha48a]) est une théorie de la communi-cation de messages et non de l’information comme on peut le liretrop souvent. Ceci signifie qu’on ne s’y intéresse pas au "contenu eninformation" des messages transmis.

Dans cette théorie, on est seulement intéressé au problème en-voyer/recevoir un message, d’un émetteur à un récepteur sous l’hypo-thèse que l’univers de tous les messages possibles est connu tant parl’émetteur que par le récepteur, c’est-à-dire que récepteur commeémetteur possèdent une même mesure de cet univers.

Le cas simple est de considérer un émetteur et un récepteur. Lerécepteur "sait" qu’il ne peut recevoir qu’une information oui ounon, l’une et l’autre étant a priori aussi vraisemblables. Lorsque lerécepteur reçoit une réponse, il a reçu un bit d’information.

La mesure de Shannon est celle de la "liberté de choix" desélection d’un message parmi tous ceux possibles. Dans la théorie del’information de Kolmogorov, dite aussi théorie de la complexité in-formationnelle, on s’intéresse à la mesure du contenu en informationde chaque objet individuellement considéré.

17.1 L’entropie

L’entropie est un concept clé en théorie de l’information. Intui-tivement parlant, l’entropie "mesure" l’incertitude qui règne dansun système physique. Pour ce qui nous concerne ici, nous nous yintéressons du point de vue de la théorie de l’information. L’entropieexiste en univers combinatoire, probabiliste discret, probabilistecontinu, nous ne nous intéresserons pas à cette dernière théorie quirenvoie plutôt au domaine mathématique de l’analyse.

17.1.1 Entropie et information de Shannon

Supposons qu’on apprenne la valeur prise par une variable aléa-toire X ; l’entropie associée mesure alors la quantité d’informationque nous apporte cette connaissance par rapport au système dontest issue cette variable. Et inversement, la connaissance de l’entropie

Page 295: livre.pdf

Chapitre 17. De Shannon à Kolmogorov 271

de x mesure l’incertitude associée à la valeur prise par la variable Xavant qu’on connaisse cette valeur.

Ce sont ces deux aspects complémentaires qui donnent sa puis-sance explicative au concept d’entropie. On peut en effet voir l’en-tropie,

– soit comme une mesure de l’incertitude associée à une variableX avant qu’on en connaisse la valeur ;

– soit comme la mesure de l’information acquise sur le systèmeaprès connaissance de la valeur de X.

Le contenu en information associé à une variable ne dépendpas de la valeur prise par la variable, mais du fait qu’elle apris telle ou telle valeur qui avait telle ou telle probabilité d’êtreprise.

Ainsi si la variable X peut prendre les valeurs ♣,♦,♥,♠ avecdes probabilités respectives 1

2 ,14 ,

18 ,

18 , ce qui importe ce n’est pas la

valeur prise par X en tant que telle, mais bien la probabilité associéeà cette valeur.

C’est ce qui fait que l’entropie associée à une variable aléatoireest définie comme fonction des probabilités des valeurs pouvant êtreprises par chaque variable aléatoire. L’entropie n’est pas fonction desvaleurs ainsi prises. L’entropie peut ainsi être vue comme fonctiond’une distribution de probabilités p1, p2, . . . , pn. La mesure d’entro-pie de Shannon, ou information de Shannon, associée à une telledistribution de probabilités est définie par 1 :

H(X) ≡ H(p1, p2, . . . , pn) ≡ −∑x

px. logq px (17.1)

où q exprime l’unité en laquelle s’exprime cette quantité d’informa-tion. Si q = 2 l’unité est le bit, si q = 3, c’est le trit, . . ., si q = 10c’est le décit. L’usage courant veut qu’on utilise le bit.

L’utilisation du bit est liée aux contraintes physiques de repré-sentation et usage de l’information, en particulier dans les machinesélectroniques, qu’il s’agisse d’ordinateurs ou d’automatismes. Enfait Shannon s’est intéressé à la transmission d’information à traversun canal. Il se posait la question de savoir comment transmettre

1. On admettra ici que 0. log 0 ≡ 0 puisque limx→0 x. log x = 0.

Page 296: livre.pdf

272 Complexité et Algorithmique avancée

l’information produite par une source de manière optimale de tellefaçon que cette information puisse être restituée à l’autre extrémitédu canal. La réponse est que H(X) bits sont nécessaires pour chaquesymbole du message, avec H(X) ≡ H(X1) = H(X2) = . . . = H(Xn).Ce résultat est connu sous la dénomination de Théorème de Shannonsur la transmission sans bruit.Exemple 17.1.1 (Illustration du théorème de Shannon)Ainsi supposons comme ensemble des possibles générés par unesource, les valeurs ♣,♦,♥,♠ avec les probabilités respectives 1

2 ,14 ,

18 ,

18 , comme ci-dessus. Comme il y a 4 éléments, il faudrait deux bits

de mémoire pour transmettre chaque élément dans une démarchenaïve, soit au total huit bits.

Dans un souci d’optimisation, on peut utiliser cette différencede probabilités (un biais en terme de probabilités) pour transmettrel’information avec moins de bits. On utilisera le moins possiblede bits pour transmettre ♣ dont la fréquence d’apparition est plusimportante que pour ♥ ou ♠ qui apparaissent moins souvent. Onpeut ainsi décider d’associer le seul bit 0 à la survenance de ♣,la séquence 10 à ♦, la séquence 110 à ♥ et la séquence 111 à ♠.La longueur moyenne d’une telle suite est alors :

1.12 + 2.14 + 3.18 + 3.18 = 74 bits.

On remarquera que c’est inférieur aux deux bits de la démarchenaïve. L’entropie associée à la source est alors, conformément àla définition 17.1 :

H(X) = −12 . log 1

2 −14 . log 1

4 −18 . log 1

8 −18 . log 1

8On aurait pu améliorer cette démarche en associant le bit 0 à ♣, lebit 1 à ♦, les chaînes de bits 01 et 10 respectivement à ♥ et ♠. Onaurait alors pour longueur moyenne du message élémentaire :

1.12 + 1.14 + 2.18 + 2.18 = 54 bits.

Et l’entropie associée serait alors :

H(X) = −12 . log 1

2 −12 . log 1

2 −14 . log 1

4 −14 . log 1

4 .

Page 297: livre.pdf

Chapitre 17. De Shannon à Kolmogorov 273

17.1.2 Généralisation

Si on reprend comme support du raisonnement, l’exemple del’émetteur et du récepteur, on suppose qu’à tout instant l’émetteurenvoie une lettre α d’un alphabet avec une probabilité p(α) ; l’entro-pie est alors la quantité moyenne d’information fourniepar chaque nouvelle lettre reçue, sur l’ensemble des lettrespossibles. On peut aussi l’interpréter comme donnant une mesurede l’incertitude moyenne sur la prochaine lettre à venir 1.

On en déduit que l’entropie est maximale dès lors que toutesles probabilités sont égales. Ainsi, en fait l’entropie d’une loi deprobabilité est une mesure de sa dispersion.

Revenons à notre transmission d’information à travers unmédium de communication (un canal).

Le nombre de chaînes de bits différentes de longueur l = 2.n+ 1est 2n ce qui correspond à un contenu en information dans chaquemessage (i.e. chaîne de bits) I = n et on a besoin de seulementI1 = n bits pour coder une telle information dans le système binaire.

Remarque 17.1.1 Alors que la variable X est considérée en généralcomme une chaîne de bits issue d’un ensemblea1, a2, . . . , an;n ∈ N , la théorie est suffisamment générale pourconcerner aussi les séquences finies ou non, de formeai1 , ai2 ...aip . . . ; p ∈ N et le nombre de ces séquences est non seule-ment infini, mais l’ensemble d’icelles est compact.

Considérons k variables aléatoires indépendantesXi ; (p(Xi1 ∩ Xi2) = p(Xi1) + p(Xi2)∀i, j ∈ N ) pouvant chacuneprendre ni valeurs i = 1, 2, . . . k. Le nombre de combinaisonspossibles est alors n = n1.n2. · · ·nk et l’entropie est donnée par :

H(X1,X2, · · · ,Xk) = log n1 + log n2 + · · ·+ log nk = log n (17.2)

Supposons maintenant que la variable aléatoire X puisse prendrevaleur parmi a1, a2, . . . , aq et que la valeur ai apparaisse ki fois dansle message 2 x = x1, x2, . . . , xk et k1 + k2 + · · ·+ kq = k. Pour fixer

1. La formule 17.1 est à une constante près, celle de Boltzmann.2. Par exemple une lettre peut apparaître plusieurs fois dans un même message, et

statistiquement, la lettre "e" est la plus fréquente dans les phrases en français.

Page 298: livre.pdf

274 Complexité et Algorithmique avancée

les idées, on peut considérer les a1, a2, . . . , aq comme les lettres d’unalphabet, les x∗ comme des mots sur cet alphabet et x comme lemessage à transmettre, de longueur k, chaque ki étant le nombred’apparitions d’une lettre, c’est-à-dire que la lettre ai apparaît kifois dans le message et non dans un mot particulier, il s’agit biendu message dans son ensemble.

Les messages possibles de longueur k sont alors au nombre de : k

k1, k2, . . . , kq

= k!k1!.k2! · · · kq!

(17.3)

et un message parmi tous ceux-ci est XPour caractériser le message x = x1, x2, . . . , xk il faut donner

l’ordre des mots dans l’ensemble (on l’appelle aussi la fonctioncaractéristique de l’ensemble). Pour le reconstruire, il faut donnerl’ordre des ki, i = 1, . . . , q ce qui se peut faire en q. log k bits ce quipermet de restituer le message dans son ensemble. De plus, on peuttransmettre le message en H(X) bits, de telle façon qu’on ait :

log k!k1!.k2!. . . . .kq!

≤ H(x) ≤ q. log k + log k!k1!.k2!. . . . .kq!

Remarque 17.1.2 La fréquence de chaque symbole ai est définiepar φi = ki

k.

Remarque 17.1.3 On peut faire le parallèle avec la thermodyna-mique. Si on suppose qu’on a un système composé de N particulesindiscernables, la proportion de particules dans l’état i étant pi,quelle est la quantité d’information apportée par la spécificationcomplète de l’état desdites particules ?

Il y a :|S| = k!

k1!.k2!. . . . .kq!façons d’organiser les N particules en respectant les proportions,

et donc la quantité moyenne par particule est donnée par

I = 1N log |S| ∼ −

∑pi.logpi

Page 299: livre.pdf

Chapitre 17. De Shannon à Kolmogorov 275

en vertu de la formule de Stirling 1. Dans le cas où toutes les proba-bilités sont égales à 1/|S|, on retrouve la célèbre formule I = log |S|gravée sur la tombe de Boltzmann. Dans ce cas, l’entropie de la dis-tribution de probabilité est égale à la quantité d’information apportéepar chaque événement particulier, ce qui est à l’origine de nombre deconfusions qui amènent à parler de l’entropie d’un état particulieralors qu’il s’agit d’une notion globale définie sur un ensemble pourune mesure de probabilité déterminée.

17.2 Notations

Dans tout ce qui suit dans ce chapitre, comme au chapitre 5,et dans [LV97] on identifiera les nombres entiers et les séquencesbinaires afférentes obtenues par un codage binaire classique des ditsentiers comme suit :0 → Λ ; 1 → 0 ; 2 → 1 ; 3 → 00 ; 4 → 01 ; 5 → 10 ; 6 →11 ; 7→ 000 ; 8→ 001 . . .On peut définir cette façon de coder en disant qu’on associe à chaqueentier n la nième suite binaire dans l’ordre lexicographique généré parla taille des suites, avec les 1 les plus à droite. C’est ce qui pour nousdéfinira un objet n qui suivant le contexte deviendra l’entier n ou uneséquence binaire. Conventionnellement, nous noterons |x| la longueurde la séquence binaire afférente (son nombre d’éléments). Cettenotation caractérisera aussi la valeur absolue, ainsi : |−3| = 3, encoreune fois, c’est le contexte qui permettra de lever toute ambiguïté.

Comme nous l’avons vu au chapitre 5, si on considère un ensembleD = xi : i = (1 · · ·n) d’objets énumérés par des nombres n(x),la complexité de l’objet x codé par la méthode S est donné par :

Ks(x) = min|p| : S(p) = n(x)

et si p n’existe pas, alors Ks(x) = ∞. On appelle alors p leprogramme et S le langage de programmation. Ks(x) est lalongueur minimale du programme écrit en langage S permettant

1. Rappel : limn→+∞n !√

2πn (ne )n = 1 soit encore n ! ∼√

2πn(ne

)n.

Page 300: livre.pdf

276 Complexité et Algorithmique avancée

de générer x. Considérons différents langages S1, S2, . . . , Sr de spé-cification des objets dans D, il est alors facile de construire unnouveau langage S donnant pour chaque objet x de D, une com-plexité KS(x) telle qu’elle ne dépasse que d’une constante c demême ordre de grandeur que log r le minimum des complexitésKS1(x),KS2(x), . . . ,Ksr(x). On dira alors qu’un langage S absorbeou domine (linéairement) un langage S′ avec une précision de c sion a :

∀x; KS(x) ≤ KS′(x) + c

Deux langages S1 et S2 sont dits c-équivalents s’ils s’absorbent mu-tuellement par une constante c. Si on considère la hiérarchie desclasses d’équivalence des langages (i.e. méthodes) par rapport à lapropriété de dominance linéaire, l’intérêt est d’avoir une hiérarchiepour laquelle la classe minimale est unique, c’est la classe d’équiva-lence des langages de description qui domine tout autre langage dedescription.

Définition 17.2.1 (fonction universelle) Soit K une classe defonctions sur N . Une fonction f est dite universelle (ou ad-ditivement optimale) sur K si f ∈ K et ∀g ∈ K il existe uneconstante cf,g telle que ∀x; Kf (x) ≤ Kg′ + cf,g, cf,g dépend de f etg mais pas de x.

Définition 17.2.2 (fonction de deux variables) Si on remplacex par 〈x, y〉 où 〈.〉 est la fonction récursive bijective standard 1, alorson définit ainsi une classe de fonctions à deux variables.

Deux méthodes additivement optimales f, g spécifiant des objetsde k sont dites équivalentes si et seulement si :

|Kf (x)−Kg(x)| ≤ cf,g∀x;

ou cf,g est une constante positive ne dépendant que de f et g.On en déduit que d’un point de vue asymptotique, la complexité

optimale d’un objet ne dépend pas du langage dans lequel il estexprimé.

1. C’est-à-dire 〈.〉 : N ×N −→ N applique la paire (x, y) sur un singleton 〈x, y〉.

Page 301: livre.pdf

Chapitre 17. De Shannon à Kolmogorov 277

17.2.1 Le théorème d’invariance

Le théorème d’invariance est la pierre angulaire de toute lathéorie de Kolmogorov. Soit la classe des langages ou méthodes dedescription, définie par :

f : f est une fonction partiellement recursive

La définition 17.2.1 nous dit qu’il existe une fonction qui est diteuniverselle (ou additivement optimale) pour une classe de fonctions.On peut alors énoncer le lemme suivant :

Lemme 17.2.1 Il existe une fonction récursive partielle univer-selle.

Preuve 17.2.1 Soit f0 une fonction calculée par une machine deTuring universelle U. L’information entrante sur le ruban de U,c’est à dire le programme que U devra effectuer sera de la forme :

〈n, p〉 = 11 · · · 11︸ ︷︷ ︸|n| fois

0 np

Comme vu au chapitre 4 ce programme 〈n, p〉 est composé de deuxparties. La première partie 11 · · · 11 représente le codage de la ma-chine de Turing particulière Tn et la deuxième partie est le pro-gramme (le schème de Tn) p proprement dit. Ainsi la machineU simule l’exécution du programme p par la machine Tn. Cecipeut aussi s’écrire f0(〈n, p〉) = fn(p). Par convention nous écrironsU = T0 et donc aussi U(0p) = U(p). Ainsi, si Tn exécute la fonctionpartiellement récursive fn, on a alors :

Kf0(x) ≤ Kfn(x) + cfn , cfn ≈ 2.|n|+ 1.

Une généralisation de ce qui précède est la complexité condi-tionnelle. c’est la complexité de l’objet x étant connue celle del’objet y. Etant donnée, comme au chapitre 4, une énumérationde machines de Turing particulières T1,T2, · · · qui ont pour al-phabet externe 0, 1,Λ le programme est constitué d’une suiteininterrompue de 0 et de 1 délimitée à droite et à gauche par

Page 302: livre.pdf

278 Complexité et Algorithmique avancée

des blancs (i.e. Λ), ce qui permet à la machine Tn considérée dedétecter le début et la fin du programme 1. A l’énumération desmachines T1,T2, · · · doit être associée une énumération des fonc-tions partiellement récursives qu’elles exécutent f1, f2, · · · de tellemanière que la machine Ti exécute la fonction fi. Comme ci-dessus,〈.〉 : N × N −→ N est une bijection standard d’une paire (x, y)sur un singleton 〈x, y〉. On peut généraliser la démarche avec destriples, et on a alors 〈.〈.〉〉 : N ×N ×N −→ N et donc finalement(x, y, z) = 〈x, 〈y, z〉〉 = 〈x, y, z〉.

Définition 17.2.3 (Complexité conditionnelle)

Soit des nombres entiers x, y, p.Toute fonction f semi-récursive telle que : f(〈y, p〉) = x est

une description de x. La complexité Kf de x par rapport à y, ditecomplexité conditionnelle de x eu égard à y est définie par :

Kf (x|y) = min|p| : f(〈y, p〉) = x;

p est un programme de calcul de x étant donné y, et si p n’existepas, alors Kf (x|y) =∞.

Théorème 17.2.1 (Invariance ) Il existe une fonction récursivepartielle f0 telle que, pour toute autre fonction récursive partiellef , il existe une constante cf telle que pour toutes séquences x, y ;Kf0(x|y) ≤ Kf (x|y) + cf et cf ne dépend ni de x ni de y, mais de f .

Preuve 17.2.2 Considérons une machine de Turing à quatre ru-bans, composée de deux rubans d’entrée, l’un ordinaire et l’autrecontenant des informations dites conditionnelles. Un ruban résultatset un ruban de travail. Soit n(T) le nombre associé à la machinede Turing T (voir chapitre 5). Soit f0 la fonction partiellementrécursive universelle calculée par la machine de Turing universellenotée U. Ceci étant, U démarre avec une entrée 0n1p; p ∈ 0, 1∗,

1. Au chapitre 4 on n’avait utilisé que les deux symboles 0 et 1 dans l’alphabetextérieur pour montrer que c’est possible. Ici, il n’y a pas perte de généralité àconsidérer trois symboles, on peut toujours se ramener à deux, mais pour l’exposé, ilest plus simple d’en considérer trois.

Page 303: livre.pdf

Chapitre 17. De Shannon à Kolmogorov 279

sur le ruban d’entrée ordinaire, et y sur l’autre. U s’arrête avecx sur le ruban résultats si et seulement si T démarrant avec uneentrée p sur le ruban d’entrée ordinaire et y sur l’autre, s’arrête avecx sur le ruban de sortie pour n(T) = n. Il suffit alors de prendrecf = n+ 1 pour terminer la preuve.

Ainsi toute fonction f0 qui satisfait au théorème d’invariance estoptimale au sens ci-dessus. Par conséquent, nous pouvons définir unemachine de référence U comme dans la preuve ci-dessus et sa fonctionf0 associée et alors parler de K indépendamment de son indice.On définit alors la complexité de Kolmogorov conditionnelleK(x|y) de x sous la condition y comme étant égale à Kf0(x|y) pourcette fonction f0 optimale fixée. La complexité de Kolmogorovinconditionnelle de x se définit alors comme K(x) = K(x|Λ) oùΛ est la séquence binaire vide (i.e. |Λ| = 0).Exemple 17.2.1 Considérons deux langages de programmation,par exemple ADA et Pascal. Tout programme syntaxiquement cor-rect écrit en l’un ou l’autre de ces deux langages peut être considérécomme une fonction partiellement récursive des données dont lerésultat est celui obtenu par exécution du programme. Énuméronstous les programmes corrects syntaxiquement, écrits en ADA, soit :ADA∗ = ada1, ada2, · · · la liste de tels programmes. Il existeparmi ceux-ci un programme ada∗ qui compile tout programmePascal. De même, si on énumère tous les programmes syntaxique-ment corrects en Pascal, soit PASC∗ = pasc1, pasc2, · · · , on peutécrire un compilateur ADA en Pascal, soit pasc∗ ∈ PASC∗. Maispour exécuter un programme en Pascal depuis ADA, il faut uti-liser ada∗ ∈ ADA∗, et on a donc du point de vue complexité :KPascal(x) ≤ KADA(x) + 2.|pasc ∗ | ; et de même pour exécuter unprogramme ADA depuis Pascal, on aura :

KADA(x) ≤ KPascal(x) + 2.|ada ∗ |.Par conséquent :

|KADA(x)−KPascal(x)| = 2.(|ada ∗ |+ |pasc ∗ |), ∀x (17.4)où |ada∗| et |pasc∗| sont des constantes, les tailles des compilateurs,exprimées en nombres de symboles des langages de programmation.

Page 304: livre.pdf

280 Complexité et Algorithmique avancée

Le théorème d’incompressibilité nous dit que si on considère lamachine de Turing universelle, tout objet x, c’est-à-dire pour cequi nous concerne, toute séquence binaire finie, doit être décriteen un code comportant deux parties. La première partie est "leprogramme" qui code la machine de Turing élémentaire qui permetde générer x, la seconde partie du code étant la donnée 1 qui doitêtre traitée par la dite machine de Turing élémentaire.

Pour la machine de Turing universelle de référence, soit U cettemachine, la longueur du plus petit programme p (au sens du nombrede caractères de l’alphabet extérieur utilisés) qui génère x est donnéepar min|p| : U(p) = x, mais dans la preuve du lemme 17.2.1 on avu que : U(0|p) = U(p). Il s’ensuit alors qu’on a :

K(x) = min|T|+ |p| : T(p) = x ± 1

T étant la séquence de codage de la machine de Turing élémentairesur U, ce qui fait qu’on peut ré-écrire la définition de la complexitéde Kolmogorov relativement (conditionnellement) à la machine T :

K(x) = min|T|+ K(x|T) : T ∈ T0,T1, · · · +O(∞) (17.5)

Cette écriture souligne le fait que la nature de la complexité deKolmogorov est liée à un code en deux parties.

Dans l’exemple suivant :

x = 1000000110000000000001 (17.6)

on peut coder x par une machine de Turing élémentaire traduisant14 (de la base 10) en se référant au codage du chapitre 4 pourl’alphabet extérieur d’une machine de Turing universelle.

L’interprétation de K(x) comme étant le code minimal en deuxparties de x, une partie décrivant la machine de Turing élémen-taire, aussi appelée le modèle pour les aspects "réguliers" de x

1. On remarquera ici que la machine de Turing élémentaire est une donnée pour lamachine de Turing universelle et que la donnée de la machine de Turing élémentairepourrait très bien être un programme. Ainsi dans l’exemple 17.2.1, le compilateurpascal écrit en ADA est une donnée pour la machine de Turing élémentaire qu’est lecompilateur ADA. C’est ce qui a conduit dans les ordinateurs à ne pas distinguer unemémoire pour les programmes d’une mémoire pour les données.

Page 305: livre.pdf

Chapitre 17. De Shannon à Kolmogorov 281

et la seconde partie, décrivant les aspects "irréguliers"de x sousforme d’un programme exécuté par T a une signification profonde.On peut interpréter ceci en disant que la partie "modèle" de xconstitue la partie signifiante de x (c’est-à-dire celle qui contienttoute l’information) et que l’autre partie est ce qui reste. Biens sûrcelà signifie en fait que le "bon modèle" est la machine de Turingélémentaire T telle que :

minT|T|+ K(x|T) : T ∈ T0,T1, · · · (17.7)

T contient alors toute l’information utile de x. La question restanten suspend étant comment trouver T parmi toutes celles capablesd’exécuter x ?

17.2.2 Ne pas dépasser les bornes

Le théorème 17.2.1 montre que la hiérarchie Kf des mesures decomplexité de Kolmogorov en contient une qui est additivementoptimale. C’est l’outil principal permettant d’estimer les bornesmaximales pour K(x). Ces bornes supérieures dépendent du choixde la fonction f de référence et diffèrent l’une de l’autre par uneconstante additive.

Intuitivement, on admettra évidemment que la complexité deKolmogorov (désormais K-complexité) d’une séquence binaire nesaurait être supérieure à la longueur (i.e. au nombre de bits) de ladite séquence. D’où le théorème suivant :

Théorème 17.2.2

∃c ∈ N : ∀x, ∀y,K(x) ≤ |x|+ c etK(x|y) ≤ K(x) + c.

Preuve 17.2.3 La première partie du théorème, à savoirK(x) ≤ |x| + c est évidente. En effet, soit T une machine deTuring élémentaire qui se contente de recopier la donnée, on aalors, la K-complexité pour la machine T : KT(x) = |x|. Pour laseconde partie du théorème, considérons une machine de Turingélémentaire T telle que pour toute donnée 〈y, z〉, elle calcule x siet seulement si la machine universelle de référence U fournit le

Page 306: livre.pdf

282 Complexité et Algorithmique avancée

résultat x pour la donnée 〈z, ε〉. Alors, , on a KT(x|y) = K(x),et par le théorème 17.2.1, il existe une constante c telle que :K(x|y) ≤ KT(x|y) + c = K(x) + c.

17.2.3 Compressibilité et incompressibilité

Une application essentielle de la complexité de Kolmogorov estliée à la propriété de compressibilité, c’est elle qui permet d’optimiserla compression de données sans pertes. Il est trivial de dire qu’il ya des séquences qui peuvent être décrites par des programmes delongueur plus courtes qu’elles mêmes sur une machine de Turinguniverselle. En particulier, on constate couramment qu’il existe desséquences qui peuvent être décrites par des programmes plus courts

qu’elles mêmes. Ainsi par exemple 222

...2

peut s’écrire de façon plussynthétique f(1) = 2 et f(i) = 2f(i−1) pour i > 1.

Considérons f(i) = iii

...i

et les fonctions du type 2f(i) avec i ∈ N ∗.Pour toute fonction récursive f de ce type, il existe une constante ctelle que , quelle que soit la valeur de n ∈ N ∗ il y a une séquencex telle que : |x| = f(n) mais avec K(x) ≤ n + c. C’est-à-dire, quesuivant la nature de i, f(i) le ratio de la longueur de la séquence xsur la longueur de sa description peut croître aussi rapidement quela fonction récursive elle-même. De telles séquences sont dites tréscompressibles.

Il y a 2n séquences binaires possibles de longueur n, et parmicelles-ci,

i=n∑i=0

2i (17.8)

admettent une description plus courte, c’est-à-dire 2n − 1, et il y ena au moins une telle que C(x) ≥ n, où C(x) est la compression dex, et elle est alors dite incompressible. Il s’ensuit que pour toutevaleur n ∈ N , et toute séquence binaire y, il y a une autre séquencebinaire x telle que |x| = n et C(x|y) ≥ n.

D’où la définition :

Page 307: livre.pdf

Chapitre 17. De Shannon à Kolmogorov 283

Définition 17.2.4 (Séquence c-incompressible) Pour une con-stante c, on dira qu’une séquence x est c-incompressible si etseulement si C(x) ≥ |x| − c.

Une séquence incompressible, c’est-à-dire c-incompressible 1 avec caussi petit qu’on veut sera, intuitivement, dite aléatoire puisqu’ellen’admet pas d’autre représentation qu’elle même. Dans un premiertemps donc, on considérera comme aléatoire toute séquence binairequi n’admet d’autre représentation qu’elle même. Conformément à17.8 il y a donc 2n − 2n−c + 1 séquences binaires c-incompressibles,soit pour :

– c= 0 ; 2n − 2n−0 + 1 il y a au moins une séquence de longueurn qui est 0-incompressible, c’est-à-dire aléatoire ;

– c=1 ; 2n − 2n−1 + 1, c’est-à-dire qu’une séquence de longueurn sur deux au moins est 1-incompressible ;

– c=2 ; 2n − 2n−2 + 1 ;– ...– c= n ; il n’y a qu’une seule séquence n-incompressible.D’où le théorème :

Théorème 17.2.3 (Incompressibilité)

∀c ∈ N ∗,∀y ∈ N ∗,A : |A| = m =⇒ m.(1− 2−c) + 1

éléments de A au moins sont tels que C(x|y) ≥ logm− c.

Preuve 17.2.4 Le nombre de programmes de MTU de longueurinférieure à logm− c est donné par la formule :

logm−c−1∑i=0

2i = 2logm−c − 1.

Il y a donc au moins m−m.2c + 1 éléments de A qui n’admettentpas de programme de longueur inférieure à logm− c.

1. Il faut bien comprendre ce que signifie ici c-incompressible. Ainsi dire qu’une sé-quence de longueur n est 1-incompressible c’est dire qu’il n’existe pas de représentationd’elle-même de longueur égale ou inférieure à n− 1 (voir théorème 17.2.3.)

Page 308: livre.pdf

284 Complexité et Algorithmique avancée

Ainsi, considérons l’ensemble E formé de toutes les séquences delongueur n sur un alphabet donné (0, 1 en l’occurence) ; E = x ||x| = n la cardinalité d’un tel ensemble est : m = 2n. On a uneestimation de la complexité K(x) ≤ n+ c pour c fixé quel que soitx dans E. Le théorème ci-dessus 17.2.3 dit que cette estimationrapide est assez bonne. La raison profonde en est que comme il y arelativement peu de programmes courts pour générer une suite de nbits, il y a peu d’objets de faible complexité.

Remarque 17.2.1 Ces trois théorèmes 17.2.1, 17.2.2, 17.2.3 four-nissent les outils principaux pour aborder pratiquement les problèmesde compression des données et programmes.

Page 309: livre.pdf

Chapitre 18

Le modèle quantique

18.1 Introduction

L’un des problèmes majeurs posé à la recherche en informatiqueest de "dépasser" le modèle de Turing. Celà signifie que l’enjeu

est de construire un modèle théorique qui "en fasse plus" que ce quepeut faire une machine de Turing, et qui fasse au moins tout ce quefait une machine de Turing. Comme nous l’avons vu, la MTU estune machine à états discrets bien déterminés et représentables enlogique et algèbre de Boole. Le modèle de calcul MTU est un modèletotalement abstrait qui a fondé l’informatique comme science. C’està partir de cette abstraction qu’on a construit les ordinateurs. Parun de ces retournements dont la dialectique a le secret, on pourraitpenser que c’est aujourd’hui l’inverse qui se produit avec le modèlequantique. C’est à partir de la pratique que le modèle théoriqueest remis en cause. Certes, mais ici il s’agit de pratique théoriquecar les moyens de calcul dont il est question ici n’existent pas eton ne sait s’ils existeront un jour. Tout au plus peut-on l’espérerou le redouter. En tous cas, un esprit scientifique ne saurait laisserpasser cette éventualité sans en étudier les possibles. C’est ce quenous allons essayer de faire dans ce qui suit.

Page 310: livre.pdf

286 Complexité et Algorithmique avancée

18.2 Retour sur les bits classiques - Cbits

Dans ce chapitre, nous noterons Cbits les bits classiques quenous connaissons bien, à deux états 0, 1 et Qbits voir [Mer03] 1 lesunités d’information quantique que nous allons à présent étudier. Si-gnalons également un ouvrage entièrement consacré à l’informatiquequantique [NC04].

Aux fins d’homogénéisation de nos notations nous allons utiliserles notations de Dirac pour les Cbits comme pour les Qbits. Lesdeux états d’un Cbits sont alors représentables par une paire devecteurs orthogonaux de dimension 2 notés :

|0〉 , |1〉 (18.1)

L’exécution d’un calcul nécessite en général plus d’un Cbit. Il estalors utile et naturel de systématiser la notation précédente pourreprésenter les quatre états d’un système à deux Cbits par quatrevecteurs orthogonaux formés par le produit tensoriel (ou produit deKrönecker) de deux telles paires (on travaille alors dans un espacede dimension 4).

|0〉 ⊗ |0〉, |0〉 ⊗ |1〉, |1〉 ⊗ |0〉, |1〉 ⊗ |1〉 (18.2)

On trouve aussi une écriture équivalente plus concise, par omissionde ⊗

|0〉|0〉, |0〉|1〉, |1〉|0〉, |1〉|1〉 (18.3)Ou encore :

|00〉, |01〉, |10〉, |11〉 (18.4)On peut également utiliser une notation décimale :

|0〉2, |1〉2, |2〉2, |3〉2 (18.5)

Dans l’écriture ci-dessus (18.5), l’indice 2 indique la dimension duvecteur en cause. Par généralisation de cette notation décimale, on

1. Les notations Cbit et Qbit sont dues à David N. Mermin qui les introduit depréférence à qubit. Nous avons repris ces notations dans cet ouvrage, les trouvant à lafois plus concises et plus explicites. Nous devons ici remercier D. Mermin qui nous apermis d’utiliser son article [Mer03].

Page 311: livre.pdf

Chapitre 18. Le modèle quantique 287

représente l’état d’un vecteur de n Cbits comme étant un vecteuren dimension 2n, c’est-à-dire :

|x〉n, 0 ≤ x < 2n (18.6)

qui est le vecteur induit par le produit tensoriel de n paires orthogo-nales de vecteurs orthogonaux de dimension deux.Ainsi, on obtient :

|18〉6 = |010010〉 = |0〉|1〉|0〉|0〉|1〉|0〉 = (18.7)|0〉 ⊗ |1〉 ⊗ |0〉 ⊗ |0〉 ⊗ |1〉 ⊗ |0〉

Le produit tensoriel est une façon bien appropriée de représentationdes états possibles d’un système à plusieurs Cbits.

Pour revenir à une notation plus classique, on peut maintenantreprésenter ces Cbits par des vecteurs colonnes classiques 1 :

|0〉 ←→ 1

0

, |1〉 ←→ 0

1

(18.8)

Et évidemment, les vecteurs correspondants dans le produit tensorielsont obtenus de la façon suivante :

y0

y1

. z0

z1

←→y0.z0

y0.z1

y1.z0

y1.z1

(18.9)

1. Il faut remarquer ici que cette notation a pour but d’homogènéiser la notationavec le calcul quantique pour lequel l’état de chaque photon est en fait une superpositiond’états :

|θ〉 = cos θ| →〉+ sin θ| ↑〉

Page 312: livre.pdf

288 Complexité et Algorithmique avancée

et

x0

x1

. y0

y1

. z0

z1

←→

x0.y0.z0

x0.y0.z1

x0.y1.z0

x0.y1.z1

x1.y0.z0

x1.y0.z1

x1.y1.z0

x1.y1.z1

(18.10)

Par exemple le vecteur de dimension 8 représentant |6〉3 est obtenupar :

|6〉3 = |110〉 = |1〉.|1〉.|0〉 =

0.0.10.0.00.1.10.1.01.0.11.0.01.1.11.1.0

=

00000010

01234567

(18.11)

Comme on peut le voir sur la formule (18.11) ci-dessus, |6〉3 se notepar le vecteur de dimension 8 (i.e. de dimension 23) avec un 1 àl’élément d’indice 6. C’est une conséquence générale de la notationstandard du produit tensoriel. l’avantage de cette forme est d’êtrehomogène avec la représentation vectorielle du Cbit telle qu’elle estdonnée par les formules 18.8.

18.3 Opérations sur les Cbits

En calcul quantique, toutes les opérations sur les Qbits sontréversibles, excepté l’opération de "mesure" que nous décrirons plus

Page 313: livre.pdf

Chapitre 18. Le modèle quantique 289

loin. Cette opération de mesure est triviale sur les Cbits et n’estpas reconnue comme une opération à part entière.Il n’y a que deux opérations réversibles portant sur un seul Cbit.

1. Ne rien faire, ou l’opération identité, d’opérateur 1 :

1|0〉 = |0〉, 1|1〉 = |1〉 (18.12)

2. Flip, définie par :

X|0〉 = |1〉, X|1〉 = |0〉 (18.13)

En fait c’est, pour un seul bit, l’inversion classique en algèbre deBoole. Lorsqu’il s’agit de deux Cbits, les opérations réversibles sontmoins évidentes. On peut définir l’opération d’échange des valeurs(opérateur swap notée S) :

S|xy〉 = |yx〉. (18.14)

Lors de la manipulation d’opérations multi-Cbits, il est recommandéd’avoir une bonne vision de ce qui se passe pour chacun des étatsgénérés par l’opération sur chacun des Cbits.

On indexe les Cbits par les entiers 0, 1, 2, . . . , de droite àgauche en associant ces index à la puissance de 2 représentée parchaque Cbit. Ainsi, si x s’écrit en extension binaire :

x = 8.x3 + 4.x2 + 2.x1 + x0

alors on a :

|x〉4 = |x3x2x1x0〉 = |x3〉|x2〉|x1〉|x0〉 = |x3〉 ⊗ |x2〉 ⊗ |x1〉 ⊗ |x0〉(18.15)

Une opération qui concerne le Cbit n 2 sera notée X2 et définiecomme suit :

X2 = 1⊗ X⊗ 1⊗ 1 (18.16)

Et est décrite comme :

X2[|x3〉 ⊗ |x2〉 ⊗ |x1〉 ⊗ |x0〉] = |x3〉 ⊗ [X|x2〉]⊗ |x1〉 ⊗ |x0〉 (18.17)

Page 314: livre.pdf

290 Complexité et Algorithmique avancée

On peut élaborer des opérations multi-Cbits significatives qui nesoient pas déduites d’opérations sur des Cbits seuls et qui n’ont apriori pas d’interprétation dans un environnement classique, maisqui soient correctes formellement. Par exemple, on peut définirl’opération suivante :

Z|0〉 = |0〉, Z|1〉 = −|1〉 (18.18)

Cette opération, qui est bien définie dans un espace vectoriel de1-Cbits (voir 18.9) de dimension 2 n’a pas de sens dans le contextedes Cbits. Seuls les deux vecteurs |0〉 et |1〉 ont une signification,laquelle est la distinction entre les deux seuls états possibles, à savoir0 et 1.Ainsi, les états possibles des combinaisons linéaires des vecteursCbits forment un espace vectoriel largement sous-utilisé. De plus,l’utilisation d’un espace vectoriel de dimension 2n peut semblersuperfétatoire dès lors qu’on ne s’intéresse qu’à un seul ensemble des2n vecteurs de la base orthonormée, en dehors de l’aspect pratique dela structure ainsi introduite par la représentation en vecteurs colonnedu produit tensoriel. Les seules opérations réversibles signifiantessur n Cbits sont les (2n)! permutations des 2n vecteurs de base.Toutefois, une opération a priori non signifiante comme Z définieen 18.18 , utilisée en conjonction avec une autre tout aussi a priorinon-signifiante peut permettre des opérations très signifiantes dansun contexte multi-Cbits. Ainsi en est-il des opérations 1

2(1 + Z1Z0)et 1

2(1− Z1Z0) portant sur des 2-Cbits.

∀x, y ∈ 0, 1; x = y ⇒ 12(1 + Z1Z0[|x〉|y〉] =

= |x〉|y〉 ∧ x 6= y (18.19)

⇒ 12(1 + Z1Z0[|x〉|y〉] = 0

et pour 12(1− Z1Z0) :

Page 315: livre.pdf

Chapitre 18. Le modèle quantique 291

∀x, y ∈ 0, 1; x 6= y ⇒ 12(1− Z1Z0[|x〉|y〉] =

= |x〉|y〉 ∧ x = y (18.20)

⇒ 12(1− Z1Z0[|x〉|y〉] = 0

Ces deux opérateurs sont des opérateurs de projection de l’es-pace vectoriel couvert par tous les états possibles des 2-Cbits. Lesopérateurs de projection sont les extensions linéaires des vecteursdans l’espace, à partir de la base sur laquelle ils sont définis. Plusgénéralement, toute opération dont l’action n’est définie que sur lesétats de base classiques peuvent être identifiés avec leur extensionlinéaire dans tout l’espace vectoriel.Considérons l’opérateur S10 :

S10 = 12(1 + Z1Z0) + X1X0

12(1− Z1Z0)

ou S10 = 12(1 + Z1Z0) + X1X0 − Y1Y2

avec Y = XZ. (18.21)

L’opération S10 qui échange les valeurs des Cbits 1 et 0 secomporte comme l’identité si leurs états sont |00〉 ou |11〉 et commel’opérateur X1X0 si les états sont |01〉 ou |10〉 .Un autre exemple important d’opération 2-Cbits est le controle-nonou XOR réversible :

C10|x〉|y〉 = (X10)x|x〉|y〉 = |x〉|y ⊕ x〉 (18.22)

L’opérateur ⊕ note l’addition modulo 2.L’opération C10 inverse (débloque) le Cbit 0 (dit Cbit verrou), si etseulement si le Cbit 1 (dit Cbit de contrôle) est à la valeur 1.

On peut étendre cette opération au-delà des projections 1-Cbits.

C10 = 12(1 + Z1) + X0

12(1−Z1) = 1

2(1 + Z1 + X0−X0Z1) (18.23)

Page 316: livre.pdf

292 Complexité et Algorithmique avancée

Cette opération possède une symétrie intéressante ; en échangeantles opérations X et Z on échange également le rôle des Cbits verrouet contrôle, on convertit C10 en C01.

18.3.1 Transformation de Hadamard

Une opération classique et qui elle aussi semble sans significa-tion à première vue, mais qui va s’avérer très pratique, c’est latransformation dite de Hadamard qui se définit comme suit :

H = 1√2

(X + Z) = 1√2.

1 11 −1

(18.24)

Or on a aussi :

X2 = Z2 = 1 et XZ = −ZX (18.25)

Il s’ensuit que :

H2 = 12(X+Z) = 1, HX = (X+Z)X = Z(X+Z) = ZH (18.26)

Et donc aussi :

HXH = Z et HZH = X (18.27)

En utilisant quatre fois une opération de type Hadamard, on peutexécuter une transformation classique et très utile, qui est d’inter-changer les rôles des Cbits de contrôle et de verrouillage :

C01 = (H1H0)C10(H1H0)

18.4 Les bits quantiques ou Qbits

On a représenté ci-dessus les états de n Cbits comme une base de2n vecteurs orthonormés dans un espace vectoriel de dimension 2nconstruit comme étant le produit tensoriel de n vecteurs de l’espaceà 2 dimensions. Les seuls opérations signifiantes a priori sur cesespaces vectoriels sont les permutations des vecteurs de base. Nous

Page 317: livre.pdf

Chapitre 18. Le modèle quantique 293

avons pu construire de telles opérations, ou mis en évidence desrelations entre elles en introduisant des opérations a priori nonsignifiantes qui multiplient les vecteurs de base par des scalaires(en particulier 0 ou −1) ou (voir 18.24) opèrent des combinaisonslinéaires non triviales.L’introduction des bits quantiques ou Qbits est en fait une extensionde la notion d’état des Cbits. L’extension consiste en l’utilisationde tout l’espace des vecteurs. On passe de la base classique des 2nétats orthogonaux à des vecteurs unitaires arbitraires de l’espacevectoriel de toutes les combinaisons linéaires (appelées superposi-tions) des états de base classiques avec des coefficients complexes(appelés amplitudes). Ainsi, l’état général d’un simple Qbit est-il lasuperposition de deux états de base classiques :

|ψ〉 = α.|0〉+ β.|1〉 avec α2 + β2 = 1 (18.28)

Les amplitudes α et β sont des nombres complexes contraints parla relation de normalisation. Ainsi, la forme la plus générale pourl’état de n Qbits est donnée par :

|Ψ〉 =∑

0≤x<2nαx|x〉n (18.29)

Les amplitudes complexes étant contraintes par la condition denormalisation généralisée : ∑

0≤x<2n|αx|2 = 1 (18.30)

Étendre ainsi l’ensemble des états possibles de la base classique devecteurs unitaires orthonormés à des vecteurs unitaires arbitrairesde l’espace couvert par la base classique introduit la différencefondamentale entre Cbits et Qbits.L’état le plus général possible pour deux Cbits est de la forme :

|Ψ〉 = |x1〉|x0〉 (18.31)

Ceci peut se comprendre comme un état pour lequel le Cbit n 1 estdans l’état |x1〉 et le Cbit n 2 est dans l’état |x0〉 chaque Cbit a un

Page 318: livre.pdf

294 Complexité et Algorithmique avancée

état qui lui est propre.De la même façon, l’état le plus général pour 2 Qbits est de laforme :

|Ψ〉 = α3|3〉2 + α2|2〉2 + α1|1〉2 + α0|0〉2= α3|1〉|1〉+ α2|1〉|0〉+ α3|0〉|1〉+ α3|0〉|0〉

(18.32)

Si chaque Qbit a un état qui lui est propre, cet état d’un 2-Qbitsera, conformément à la règle sur la généralisation sur les états desmulti-Qbits, le produit tensoriel de ceux de deux états de 1-Qbits.Ainsi un état d’un 2-Qbit aura la formegénérale :

|ψ〉|φ〉 = (α.|1〉+ β.|0〉).(γ.|1〉+ δ.|0〉)= α.γ.|1〉|1〉+ α.δ.|1〉|0〉+ β.γ.|0〉|1〉+ β.δ.|0〉|0〉

(18.33)Mais l’état |Ψ〉 de l’équation 18.29 ne peut avoir cette forme que siα3α0 = α2α1.Ainsi dans un état d’un multi-Qbit, il n’e peut y avoir d’état indivi-duel propre à chaque Qbit. C’est là le distingo essentiel des Qbitsd’avec les Cbits.

Les états des de n Qbits dans lesquels aucun sous-ensembleinférieur à n n’a d’état propre sont dits emmélés ou empétrés 1. Ainsiles états génériques des n-Qbits sont emmélés (imbriqués). Les étatsdes n-Qbits sont obtenus par produit tensoriel d’états de moinsde n-Qbits dont les amplitudes doivent satisfaire des contraintescomme exprimé dans les expressions 18.29 et 18.30.

18.5 Opérations sur les Q-bits

Les algorithmes quantiques opèrent sur les états des n-Qbits enrespectant la condition de normalisation 18.30.Les opérateurs qui préservent la norme sur un espace vectorielcomplexe sont les opérateurs unitaires. Les ingrédients de based’un algorithme quantique sont les opérateurs unitaires sur l’espace

1. Entangled en anglais.

Page 319: livre.pdf

Chapitre 18. Le modèle quantique 295

complexe de dimension 2n :

|Ψ〉 −→ U|Ψ〉, U unitaire (18.34)

Les opérations classiques et leurs extensions linéaires, de la base surlaquelle elles sont définies à la totalité de l’espace, les permutationsdes 2n vecteurs de base classiques, sont des cas spéciaux de telsopérateurs.

Si on considère les 2n états de n bits classiques comme les 2nvecteurs de base orthonormés |x〉n dans un espace vectoriel lui-même de dimension 2n, et les opérations réversibles sur les Cbitscomme de simples permutations sur ces vecteurs de base, alors lagénéralisation à n bits quantiques se fait naturellement : les étatsdes Qbits consistent en toutes combinaisons linéaires complexessatisfaisant à la condition de normalisation et toutes les opérationsréversibles qu’on peut exécuter sur ces Qbits consistent en toutes lesopérations unitaires. Les états classiques et opérations représententalors un sous-ensemble (petit) des états quantiques et des opérationsassociées. Le passage des Cbits aux Qbits ouvre des perspectivesabsolument nouvelles et quasi infinies. En effet, si le nombre d’étatsd’un Cbit est spécifié par un simple bit d’information, 0 ou 1, l’étatd’un Qbit peut prendre une infinité de valeurs conformément àl’expression d’un Qbit ( voir expression 18.28), à la seule conditionque les amplitudes associées, les coefficients α et β satisfassent àla condition de normalisation (voir 18.30). Et, alors, au lieu queles Cbits soient limités dans une collection d’états obtenus parpermutations, on peut agir sur les Qbits par une suite continue detransformations unitaires. Tout ceci nous amène à un niveau depossibilités de calcul insoupconné et complètement nouveau.

Tout cela serait trop beau s’il n’y avait une difficulté majeure làoù un informaticien habitué à la manipulation des Cbits ne l’attendpas. Le problème majeur est effectivement lié à la difficulté danslaquelle on se trouve d’identifier l’état d’un Qbit donné. Étantdonnés n Qbits dans un état |Ψ〉, on ne dispose d’aucun moyen pouridentifier cet état, c’est-à-dire pour extraire l’information qui y estassociée ; c’est-à-dire pour connaître les coefficients αx de la formule18.29.

Page 320: livre.pdf

296 Complexité et Algorithmique avancée

18.6 Extraire l’information des Qbits ?

C’est sans doute là, hors la réalisation physique d’un ordinateurquantique, l’obstacle majeur auquel on est confronté dans l’utili-sation des Qbits. Si on dispose de n Qbits en l’état |x〉n "lire" lenombre x pose un problème majeur.

S’il est un problème qui ne se pose pas avec les Cbits, c’est biencelui qui consiste à en lire l’état. La simple lecture d’une diode, d’unécran ou d’une impression sur imprimante suffit le plus souvent àconnaître l’état d’un Cbit, d’un octet ou d’un mot. Il n’en va pasde même avec les Qbits. Dés lors que l’ordinateur a fini de travaillersur des Cbits, leur état |x〉n reste stable tant qu’on n’y touche pas.

Les choses sont très différentes pour les Qbits. Soient n Qbits enl’état :

|Ψ〉n =∑x

αx.|x〉n (18.35)

Il n’y a pas moyen de connaître la valeur de l’amplitude αx. La seulefaçon dont on dispose pour extraire l’information des Qbits, c’estde les mesurer.

Mesurer n-Qbits consiste a les confronter à un appareil quiproduit un entier x : 0 ≤ x < 2n. Le rapport entre l’état |Ψ〉 d’unQbit et la valeur de x fournie par la mesure est le suivant :La probabilité d’obtenir x est juste px = |αx|2, où αx est l’amplitudede |x〉n dans l’expansion 18.34 de |Ψ〉. Cette valeur est connue sousle nom de règle de Born d’après le nom du physicien Max Born.

On pourraît penser que, par des mesures répétées on peut obtenirune bonne statistique de répartition des magnitudes |αx| mais cettepossibilité est écartée par la deuxième règle fondamentale :

Règle 18.6.1 Une fois donnée la valeur de x par la mesure, l’étatdes n Qbits n’est plus de longueur |Ψ〉n, mais |x〉n.

L’état après mesure ne contient aucune trace de l’information conte-nue dans l’état |Ψ〉 précédant la mesure.

La mesure de l’état de n Qbits est irréversible : Chaque étatΨn d’amplitude positive αx peut devenir l’état |x〉n après mesure.

Page 321: livre.pdf

Chapitre 18. Le modèle quantique 297

Il n’y a aucun moyen de reconstituer l’état initial à partir del’état final. La mesure est LA SEULE opération irréversiblesur les Qbits. Toutes les autres opérations sont unitaires.

Récapitulatif des possibilités de manipulationdes Cbits et des Qbits

Cbits versus Qbits Cbits Qbits

État pour n |x〉n, 0 ≤ x < 2n∑αx|x〉n,

Cbits/Qbits ∑ |αx|2 = 1Sous-ensemble Toujours Généralement

de n Cbits/Qbits signifiant sans significationOpérations réversibles Permutations Transformations

sur les états unitairesLecture possible OUI NON

de l’état ?Acquisition Lecture Mesured’information simple physiqueNature de

xx avec probabilité

l’information acquise |αx|2

État après acquisition Le même |x〉 Différent ;d’information nouvel |x〉

Page 322: livre.pdf
Page 323: livre.pdf

Annexe A

Notations deBachman-Landau

Si E est un ensemble quelconque et f ; g deux fonctions à valeursréelles ou complexes définies sur E, on définit des symboles et

notations utiles pour caractériser le comportement asymptotique def et g.

A.1 Les symboles grand O Ω,Θ

grand O concerne des fonctions de R sur R et est défini de lamanière suivante :f(x) = O(g(x))⇔∃λ ∈ R∗+,∃r ∈ R|∀x≥r; |f(x)| ≥ λ|g(x)|En particulier, l’expression :f(x) = O(g(x))(x→ +∞)signifie qu’il existe un réel r tel que :f(x) = O(g(x)) pour r < x < +∞ ; ce quis’écrit encore :(∃r ∈ R)(∃λ ∈ R∗+)(∀x ∈]r,+∞[)|f(x)| ≤ λ|g(x)|Nous avons utilisé de manière classique les notations de Landau

pour des fonctions f et g à valeurs positives, f(n) et g(n) étantdes fonctions de complexité (voir [GJ79]) à valeurs positives, où nest la taille d’une donnée, qu’on appelle aussi taille d’un codage

Page 324: livre.pdf

300 Complexité et Algorithmique avancée

d’instance I d’un problème donné (ou encore longueur d’entrée). Onpeut définir alors :

1. f(n) = O(g(n)) si et seulement si, (∃λ ∈ R∗+) f(n) ≤ g(n)pour toute valeur de n, sauf peut être pour un ensemble fini(éventuellement vide).

2. f(n) = Ω(g(n)) ⇔ g(n) = O(f(n))3. f(n) = Θ(g(n)) ⇔ f(n) = O(g(n)) ∧ g(n) = O(f(n))

A.1.1 Le symbole petit o

L’expression f(x) = o(g(x))(x → +∞) signifie que le rapportf(x)g(x) tend vers 0 quand x→ +∞. Il s’agit donc d’une propriété plusforte que celle du symbole O ; en particulier, on a toujours :

f(x) = o(g(x)) ⇒ f(x) = O(g(x))

Page 325: livre.pdf

Index des noms cités

AAl jabr, 3Al Khawarizmi, 3, 7Algoristes, 5Ariane, 12Athènes, 11

BBachman, 299Boltzmann, 269Borükva, 242, 244Burk, 133Byrsa, 3

CCarthage, 3Chaïtin

nombre de, 52Chine, 3Chinois, 9Church, 40, 65Cook, 174Couffignal, 133Crête, 11

DDantzig, 209Dédale, 12Didon

Elissa, 3

EEcco Humberto, 11Elissa

Didon, 3Énéide, 11Euclide, 3Euler, 194

FFrege, 5

GGödel, 28, 67Goldstine, 133

HHilbert, 27Hoare, 239

IIntuitionnistes, 5

KKantorovitch, 209Kolmogorov, 53, 269Kruskal, 242

LLabyrinthe, 3, 12Landau, 299Larba, 3Las vegas, 239Lebedev, 133Leibniz, 9, 44, 57Lévine, 174Lupanov, 23

Page 326: livre.pdf

302 Complexité et Algorithmique avancée

MMarkov, 133, 147Minos, 11Minotaure, 12Monte Carlo, 240

NNeumann, 133Nim, 230

PPan, 212Peano, 65Prim, 242Pythagore, 4

RRomains, 9Bernard Roy, 226Bertrand Russel, 54

SScribe, 11Séleucides, 9Shannon, 54, 269Sherwood, 239Michel Simmonard, 226Simplexe, 209Sollin, 242Straßen, 212, 213Sumériens, 9

TTablette

A06456, 11Vat 6505, 11

Thésée, 3, 11

tic-tac-toe, 230Tolstoï, 209Tractatus logico-philosophicus,

5Trathenbrot, 133Trémeaux, 21Turing, 5, 27, 65Tyr, 3

WWeyl Hermann, 28Winograd, 212Witgenstein, 5

YYablonski, 23

ZZénon, 28

Page 327: livre.pdf

Index des concepts et notions

AAlgèbre de Boole, 79Algoristes, 5Algorithme, 6Algorithme

d’Euclide, 3, 7de l’équation quadratique,

7de Trémeaux, 21du Labyrinthe, 3, 11du PGCD, 3efficace, 20glouton, 111, 203Las Vegas, 240, 241Monte Carlo, 240non-polynomial en temps,

21notion naïve, 5numérique, 9polynomial en temps, 20probabiliste, 239spécification, 6

Alphabet, 29, 135Alphabet

d’états, 30, 34de mouvement, 30extérieur, 29intérieur, 40intérieur, 30

Automate, 133Automate

de Markov, 147fini, 147

Axiome de l’infini, 71

BBachman Landau

Notation, 301Bijection, 69Bornage, 227Branch and Bound (B and B),

226Branchement

de machine, 38

CCalcul, 69Calcul quantique, 287Calculabilité, 40Calculateur, 49Calculateur

universel, 49, 52Case du ruban, 29Cbits, 288Chaîne, 104Chemin, 104Chemin

élémentaire, 104simple, 104

Cheval, 120Chiffre

d’une configuration, 44Church-Turing, 65Circuit

booléen, 149digital, 149

Circuit hamiltonien, 226

Page 328: livre.pdf

304 Complexité et Algorithmique avancée

Circuits booléens, 93ClasseP , 22NP, 22NPC, 24Co-NPC, 191Co-NP , 160d’algorithmes, 6de problèmes, 6, 125des problèmes NPC, 170des problèmes NP , 170des problèmesNP-complets,

169Classe NP

idée intuitive, 157Classe P , 156Clause, 21, 172Clauses

de Horn, 202Clique, 187Codage, 41, 43Codage

binaire, 43instance, 44raisonnable, 175raisonnable, définition, 135

Coloriage de graphe, 194Complexité

de Kolmogorov, 271Complexité

algorithme de Straßen, 213algorithmique description-

nelle, 56conditionnelle, 280définition, 132de Kolmogorov, 53

descriptionnelle, 56, 271en temps, 126, 153informationnelle, 272

Compressibilité, 284Concept

d’algorithme, 25, 28de calcul, 25de langage, 25de machine, 25de mot, 25de problème, 25de solution, 25de temps de calcul, 25

Configurationmachine de Turing, 141

Conjecture, 23, 27Conjecture

de Hilbert, 28de Lupanov-Yablonski, 23

Connexe, 15Connexité, 104Connexité

forte, 104Contenu en information, 53Coupe minimale, 163Couverture

de cardinal minimal, 201Échiquier, 119minimale, 120, 200, 201

Couverture d’un graphe, 187Cycle

eulérien, 193hamiltonien, 193

DDérivation

Page 329: livre.pdf

Concepts et notions 305

Machine de Turing, 141Décimal, 10Degré

extérieur, 1042-SAT, 197Digital, 94Dualité, 163Dump, 43

EÉchiquier, 120Efficacité, 215Énoncé, 27Ensemble

absorbant, 108approximable, 66inapproximable, 66partiellement ordonné, 80quotient, 80récursif, 64récursivement énumérable,

65stable, 106stable maximal, 187

Entropie, 272Énumération implicite, 225Environnement, 29Équipotence, 70Équivalence, 79Espace

d’états, 30État

initial, 34Explosion combinatoire, 225Expression

satisfaite, 21

FFil d’Ariane, 12Finitude, 41Finitude

du codage, 42Flot maximal, 163Fonction

calculable, 40, 57d’évaluation, 226, 227optimale, 58partiellement récursive, 56polynomiale de la taille des

données, 19récursive, 40

Fonction récursive, 144Forme normale

disjonctive, 172conjonctive, 23

GGénérique

instance, 134Graphe, 103Graphe

biparti, 116coloriage, 194connexe, 104fortement connexe, 104k-coloriage, 194

Groupe codé, 43

HHeuristique, 226

IImage mémoire, 43

Page 330: livre.pdf

306 Complexité et Algorithmique avancée

IncomplétudeThéorème de Gödel, 57

incompressibilité, 284Index

machine de Turing, 39Information

absolue, 54, 56de Shannon, 54, 273de transmission, 54quantité absolue, 54

Information quantiqueunité, 288

Instance, 24Instance

codage, 44générique, 44, 131générique, 110, 134particulière, 44, 110, 131,

134taille, 132oui, 133

Instanciation, 44Intérieur, 104Intractable, 19Intraitable, 19Intuitionnistes, 5

JJeu

d’échecs, 225

Lλ-calcul, 162Langage

décidé, 143reconnu, 143élémentaire, 27

définition, 134récursif, 142récursivement énumérable,

142universel, 27

Lévine-CookThéorème de complétude,

174

MMachine

élémentaire, 35à effacement et écriture, 36à plusieurs rubans, 47, 151chercheuse, 36de Turing, 27, 28, 30, 133de Turingà plusieurs rubans, 139alternante, 139configuration, 141dérivation, 141description détaillée, 29index, 39non déterministe, 139représentation, 30transition élémentaire, 141universelle, 139

RAM, 148tout à droite, 35tout à gauche, 35universelle, 39, 40de Hermann Weyl, 28

Machinesen séquence, 37

Maxtermes, mintermes, 172Mémoire

illimitée, 29

Page 331: livre.pdf

Concepts et notions 307

ruban, 29Mesure

des angles, 10des arcs de cercle, 10des heures, 10des minutes, 10des secondes, 10

Méthodede Las Vegas, 20de Monte Carlo, 20

Méthode PSEP, 226Mintermes, maxtermes, 172Modèle

d’algorithme, 27Monôme, 172

NNombre

cardinal, 70d’absorption, 108de Chaïtin, 52Oméga Ω, 52ordinal, 70transcendant, 28

Normalisation, 227Notation

binaire, 9de Bachman-Landau, 301de Dirac, 288positionnelle, 4

Numériqueprobabiliste, 241

Numérotationmachines, 46

OO, 129

Opérationélémentaire, 21

Ordinateur, 28Ordre

préordre, 80

PParadoxe de B. Russel, 54Parcours, 15Particulière

instance, 134PGCD, 3Pire des cas, 132PL, 209PLNE, 194Polytope, 209Porte, 93Porte

d’entrée, 94, 150de sortie, 150logique, 93typage, 150

Principed’évaluation, 227de séparation, 226

Probabilistenumérique, 241

Problème, 130ProblèmeNP-complet, 169combinatoire, 225Couverture, 119d’existence de chemin, 109de décision, 35, 110, 133de Hilbert, 27de la halte, 64

Page 332: livre.pdf

308 Complexité et Algorithmique avancée

de Langford, 192du couplage, 116du flot maximal, 113du VRP, 121

Procédure, 3, 4, 27Procédure

automatique, 27opératoire, 27

Produitde Krönecker, 288matriciel, 211matricielde Straßen, 213

Tensoriel, 288Programmation

linéaire, 209linéaireen nombres entiers, 194

récursive, 216Programme, 19, 45Programme

polynomial en temps, 156réduit, 50, 53réduit minimal, 53

Pseudo-algorithme, 63Pseudo-polynomialité, 208

QQbits, 288

RRaisonnable, 19RAM, 133Recouvrement, 120, 200Réductibilité

polynomiale, 23Relaxation, 20

ReprésentationMachine de Turing, 30

Résolution de problème, 144Résoudre un problème, 131Ressources, 125Ruban, 29

SSac à dos, 205Sac à dos

problème de décision, 206SAT, 22SAT

2-SAT, 197recouvrement, 120, 206

SAT-Horn, 205Satisfiabilité, 22, 171Schème

d’encodage, 168fonctionnel, 32, 39machine de Turing, 45

Séquence aléatoire, 59Set covering problem, 200Sexagésimal, 10Simplexe, 209Solution

ε-approchée, 20acceptable, 20optimale, 20

Stabilitéexterne, 107interne, 107

Straßencomplexité, 213généralisation, 218reformulation, 217

Page 333: livre.pdf

Concepts et notions 309

Symbolevide, 29

Symboles, 29Système

additif, 9de Post, 162formel, 58formelde Peano, 65

positionnel, 9

TTablette

des scribes, 11Taille

d’un circuit, 150d’un problème, 125d’une instance, 132de données, 20

Temps, 144Temps

de calcul, 19Théorème

d’incomplétude, 28d’invariance, 280de complétude, 174de Gödel, 28, 57de Pythagore, 4Lévine-Cook, 174

Thèse de Church, 40Traité

d’algorithmique, 3des neuf procédures, 3

Transformation polynomiale, 168Transition

élémentaire, 141

Treillis, 823-SAT, 185Typage

porte, 150

UUnidimensionnalité, 41

VValidation, 201Valide, 201Vérifiabilité polynomiale, 171,

174Voyageur de commerce (VRP),

225

ZZéro, 9

Page 334: livre.pdf

Index des Algorithmes

AAlgorithme

d’Euclide, 7de Borükva, 242de Kruskal, 242de l’équation quadratique,

7de Prim, 242de Sollin, 242de Straßen, 213de Straßenitératif, 217

du Labyrinthe, 11Las Vegas, 238Monte Carlo, 238, 240numérique probabiliste, 239probabiliste, 237, 241

GGlouton, 203

Jjeu

de Marienbad, 230de Nim, 230

MMachine

à effacement et écriture, 36chercheuse, 36qui s’arrête, 35tout à droite, 35tout à gauche, 35

Multiplication

matricielle de Straßen, 213

PPSEP, Séparation et Évalua-

tion Progressive, 226

Page 335: livre.pdf

A propos de la bibliographie

On trouvera ci-aprés la liste des livres et articles utilisés pour écrirecet ouvrage, certains ne sont pas cités dans ces pages, mais ils ontcontribué de façon parfois non explicite à la formulation de mapensée en la matière. Il m’a par conséquent semblé qu’il était bon dedonner au lecteur quelques éléments bibliographiques lui permettant"d’entrer", s’il le souhaite, dans le sujet par la même porte que moi.Bien entendu, il n’y a là rien d’exhaustif ni d’exclusif, beaucoupd’auteurs ne sont pas cités ici qui ont eux aussi beaucoup écrit surle sujet, c’eut été ...trop complexe.

Page 336: livre.pdf
Page 337: livre.pdf

Bibliographie

[AD75] J. Axzél and Daróczy. On Measures of Information andtheir Characterization. Academic Press, 1975. New York.

[AG90] A. Arnold and I. Guessarian. Mathématiques pour l’in-formatique. masson, 1990.

[AK82] J. Arsac and Y. Kodratoff. Some techniques for recursionremoval from recursive functions. ACM Transactionson Programming Languages and Systems, 4(2) :295–322,1982.

[AKL79] R. Aleliunas, R.M. Karp, and Lipton, R. and Lovasz,L. and Rackoff, C. Random walks, universal traversalsequences, and the complexity of maze problems. In 20thAnnual Symposium of Foundations of Computer ScienceFOCS, pages 218–230. IEEE Press, 29-31 Oct. 1979.

[Akl05] S. Akl. The myth of universal computation. Technicalreport, Queen’s University, Kingston Ontario, January2005.

[AKS04] M. Agrawal, N. Kayal, and N. Saxena. Primes is in p.Ann. Math, 160 :781–793, January 2004.

[AL94] E. M. Ana and J.H. Laurie. Taming Control Flow : AStructured Approach to Eliminating GOTO Statements.In ICCL, 1994.

[AR78] M.A. Auslander and S.H. Raymond. Systematic recursionremoval. Communications of the ACM, 21(2) :127–134,1978.

Page 338: livre.pdf

314 Complexité et Algorithmique avancée

[AR81] A.K. Agrawala and G. Ricart. An optimal algorithm formutual exclusion in computer networks. Commun. ACM,24(1) :43–54, January 1981.

[Ars79] J. Arsac. Syntactic source to source transforms andprogram manipulation. Commun. ACM, 22(1) :43–54,1979.

[AU74] A.V. Aho and J.D. Ullman. The design and Analysis ofComputer algorithms. Addison Wesley, 1974.

[AU83] A.V. Aho and J.D. Ullman. Data Structures and algo-rithms. Addison Wesley, 1983.

[AU93] A.V. Aho and J.D. Ullman. Concepts fondamentaux del’informatique. Dunod, 1993.

[Baa98] H. Baala. Version itérative de la multiplication deStraßen. Technical report, L.R.I.A., 1998.

[Bac85] J. Backus. From function level semantics to programtransformation and optimization. In Hartmut Ehrig,Christiane Floyd, Maurice Nivat, and James W. That-cher, editors, Mathematical Foundations of Software De-velopment : Proceedings of the International Joint Confe-rence on Theory and Practice of Software Development(TAPSOFT), Volume 1 : Colloquium on Trees in Alge-bra and Programming (CAAP’85), volume 185 of LectureNotes in Computer Science, pages 60–91. Springer-Verlag,1985.

[BB87] G. Brassard and P. Bratley. Algorithmique, conception etanalyse. Masson & Presses de l’université de Montréal,Montréal, 1987.

[BC72] A.B. Borodin and R.L. Constable. Subrecursive program-ming languages, part i : efficiency and program structure.J. ACM, 19(3) :526–568, 1972.

[BC94] D.P. Bovet and P. Crescenzi. Introduction to the theoryof complexity, volume NJ. Prentice Hall, EnglewoodCliffs, 1994.

[BCW90] T.C. Bell, J.G. Cleary, and I.H. Witten. Text Compres-sion. Prentice Hall, Englewood Cliffs, 1990. NJ.

Page 339: livre.pdf

Bibiographie 315

[BD77] R.M. Burstall and J. Darlington. A transformation sys-tem for developing recursive programs. J. ACM, 24(1) :44–67, 1977.

[Ben73] G.E. Bennington. An efficient minimal cost flows algo-rithm. Management science, 19 :1043–1051, May 1973.

[Ben83] M. Ben Or. Another advantage of free choice : Comple-tely asynchronous agrement protocols. In Proceedings ofthe 2nd ACM Symposium on Principles of DistributedComputin(PODC), 1983.

[Ber58] C. Berge. La théorie des graphes et ses applications.Dunod, 1958.

[Ber69] C. Berge. Graphes et Hypergraphes. Dunod, 1969.[BF01] R. Backhouse and M. Fokkinga. The associativity of equi-

valence and the Towers of Hanoi problem. InformationProcessing Letters, 77(2–4) :71–76, 2001.

[BFU93] A. Broder, A. Frieze, and E. Upfal. On the satisfiabilityand maximum satisfiability of random 3-cnf formulas. InProceedings of the Fourth Annual ACM-SIAM Sympo-sium on Discrete Algorithms, 1993.

[BGN46] A.W. Burks, H.H. Goldstine, and J. Neumann. Preli-minary discussion of the logical design of an electroniccomputer instrument. Technical report, Institute forAdvanced Study, January 1 1946.

[Bir67] G. Birkoff. Lattice Theory, volume 25. American Mathe-matical Society Colloquium Publications, 1967.

[Bir77] R.S. Bird. Notes on recursion removal. Communicationsof the ACM, 20(6) :434–439, 1977.

[Bir80] R.S. Bird. Tabulation techniques for recursive programs.ACM Computing Surveys, 12(4) :403–417, 1980.

[BL01] H. Baala and I. Lavallée. Version itérative de la multipli-cation de Strassen. Comptes Rendus de l’Académie desSciences, 333(1) :383–388, 2001.

[Bol85] B. Bollobás. Random Graphs. Academic Press, 1985.

Page 340: livre.pdf

316 Complexité et Algorithmique avancée

[Bor26] O. Boruvka. Contribution à la résolution d’un problèmede construction d’un réseau électrique optimal. Elektro-nický Obzor, 15 :153–154, 1926. En tchèque.

[Bou67] N. Bourbaki. Théorie des ensembles, éléments de mathé-matique, volume XX. Hermann, 1967.

[Bou98] N. Bouleau. Martingales et marchés financiers. Hermann,1998.

[Bri56] L. Brillouin. Science and Information, Theory. Academicpress, N.Y., 1956.

[Bur84] M. Burgin. Machines de Turing inductives à plusieurstêtes et algorithmes de kolmogorov. Comptes-rendus del’Académie des Sciences de l’URSS- Dokl. Akad. NaukSSSR, 275-2, 1984. Traduction américaine : InductiveTuring Machines with a Multiple Head and KolmogorovAlgorithms, Soviet Math. Doklady (29) 2.

[BV97] E. Bernstein and U. Vazirani. Quantum complexitytheory. SIAM Journal on Computing, 26(5) :1411–1473,1997.

[C+94] J.L. Chabert et al. Histoire d’algorithmes. Belin, Paris,1994.

[CC92] M. Conforti and G. Cornuéjols. A class of logic pro-blems solvable by linear programming. In Proceedings ofthe 33rd IEEE Symposium on Foundations of ComputerScience, 1992.

[CCH+90] V. Chandru, C.R. Coullard, P.L. Hammer, M. Monta-nez, and X. Sun. On renamable horn and generalizedhorn functions. Annals of Mathematics and ArtificalIntelligence, pages 33–47, 1990.

[CG77] B.V. Cherkaski and A.V. Goldberg. On implementingthe push-relabel method for the maximum flow problem.Algorithmica, 19(4), 1977.

[CG93] C. Cifuentes and K.J. Gough. A methodology for de-compilation. In Proceedings of the XIX ConferenciaLatinoamericana deInformatica, pages 257–266, BuenosAires, Argentina, 1993.

Page 341: livre.pdf

Bibiographie 317

[Che77] B.V. Cherkaski. Algorithm of construction of maximalflow in network with complexity 0(|v|2(

√|E|). Math.

Methods of Solutions of Economics Problems,, 7 :117–25,1977.

[Chi92] W.N. Chin. Safe fusion of functional expressions. InProceedings of the 1992 ACM conference on LISP andfunctional programming, pages 11–20. ACM Press, 1992.

[CHT81] T.E. Cheatham Jr., G.H. Holloway, and J.A. Townley.Program refinement by transformation. In Proceedings ofthe 5th international conference on Software engineering,pages 430–437. IEEE Press, 1981.

[Chu36] A. Church. An unsolvable problem of elementary numbertheory. American J. Math, 58 :345–363, 1936.

[Cif93] C. Cifuentes. A structuring algorithm for decompilation.In Proceedings of the XIX Conferencia Latinoamericanade Informatica,Buenos Aires, pages 267–276, BuenosAires, Argentina, 1993.

[CL05] S.B. Cooper and B. Lowe. New computational paradigms.Lectures Notes in Computer Sience, 3526, 2005.

[CLN04] E. Charpentier, A. Lesne, and Nikolski N. L’héritage deKolmogorov en mathématiques. Belin, 2004.

[CLRS01] T.H. Cormen, C.E. Leiserson, R.L. Rivest, and C. Stein.Introduction to algorithms. MITpress-McGraw Hill, 2001.

[CM89] S. Y. Chang and K. G. Murty. The steepest descentgravitational method for linear programming. DiscreteApplied Mathematics, 25 :211–239, 1989.

[CM97] S.A. Cook and D. Mitchell. Finding hard instances ofthe satisfiability problem : A survey. DIMACS Discretemath and Theoretical computer science, 35 :1–17, 1997.

[Coo71] S.A. Cook. The complexity of theorem-proving proce-dures. In 3rd ACM STOC, pages 151–158, New York,1971.

[Cop02] B. Copeland. Accelerating Turing machines. Minds andMachines, 12-(2) :281–300, 2002.

Page 342: livre.pdf

318 Complexité et Algorithmique avancée

[Cop04] B. Copeland. Hypercomputation : philosophical issues.Theoretical Computer Science, 317 :251–267, 2004.

[Cou38] L. Couffignal. L’analyse mécanique, application aux ma-chines à calculer et à la mécanique céleste. PhD thesis,Faculté des Sciences de Paris, Juin 1938.

[CP04] C.S. Calude and G. Paun. Bio-steps beyond Turing.Biosystems, 77 (1-3) :175–194, 2004.

[CS88] V. Chvatal and E. Szemeredl. Many hard examples forresolution. Journal of the ACM, 35(4) :759–768, 1988.

[Cur51] J.H. Curtis. Monte carlo method. Technical report, Na-tional Bureau of Standards Applied Mathematics Series,1951.

[Cur95] S. Curtis. A Relational Approach to Optimization Pro-blems. PhD thesis, Oxford University, 1995., June 1995.

[Cur97] S. Curtis. Dynamic programming : a different perspective.In Algorithmic Languages and Calculi, pages 1–23, 1997.

[DABC93] O. Dubois, P. Andre, Y. Boufkhad, and J. Carlier. Satversus unsat. In S.J. David and M.A. Trick, editors,Cliques, Coloring, and Satisfiability, Second DIMACSImplementation Challenge, volume 26. American Ma-thematical Society, 1993. DIMACS Serie in DiscreteMathematics and Computer Science.

[Dan51] G.B. Dantzig. Minimization of a linear function of va-riables subject to linear inequalities. In T.C. Koopman,editor, In Actvity, Analysis of production and allocation,pages 339–347. John Wiley, New York, 1951.

[Dan57] G.B. Dantzig. Discrete variable extremum problem. Ope-rations research, 5 :266–277, 1957.

[Dar59] C. Darwin. On the origin of species by means of natu-ral selection. John Murray, London, 1859. (TraductionFrançaise, De l’origine des espèces, 1985, Paris, La Dé-couverte).

[DB76] J. Darlington and R.M. Burstall. A system which automa-tically improves programs. Acta Informatica, 6(1) :41–60,1976.

Page 343: livre.pdf

Bibiographie 319

[Del94] J.P. Delahaye. Information, complexité et hasard. Her-mès, 1994.

[Del95] J.P. Delahaye. Logique, informatique et paradoxes. Belin,1995.

[Deu85] D. Deutsch. Quantum theory, the Church-Turing prin-ciple and the universal quantum computer. Proceedingsof the Royal Society of London, 1400 :97–117, 1985.

[DG84] W.F. Dowlling and J.H. Galler. Linear time for testingthe satisfiability of propositionnal horn formulas. Journalof Logic Programming, 1(3) :267–284, 1984.

[DG91] G. Deleuze and F. Gattari. Qu’est-ce que la philosophie ?Éditions de minuit, 1991.

[Dij76] E.W. Dijkstra. A note on two problems in connectionwith graphs. Numerishe Mathematics, 1(1) :83–89, 1976.

[Din70] E.A. Dinic. Algorithm for solution of a problem of maxi-mal flow in a network with power estimation in a networkwith effiency analysis. Soviet Math. Doklady, 11 :1277–1280, 1970.

[DK96] D. Dacunha-Castel and J.P. Kahane. L’aléatoire, ça secalcule. l’Humanité, Paris 29/11/1996.

[DRT92] B. Dixon, M. Rauch, and R.E. Tarjan. Verification andsensitivity analysis of minimum spanning trees in lineartime. SIAM Journal on Computing, 21(1) :1184–1192,1992.

[EK72] J. Edmonds and R.M. Karp. Theoretical improvementin algorithmic efficiency for network problem. Journalof ACM, 19-2, 1972.

[Ero94] A. Erosa. A goto-elimination method and its implemen-tation for the McCAT C compiler. PhD thesis, McGillUniversity, May 1994. Master thesis.

[Fea87] M.S. Feather. A survey and classification of some pro-gram transformation approaches and techniques. In TheIFIP TC2/WG 2.1 Working Conference on Program

Page 344: livre.pdf

320 Complexité et Algorithmique avancée

specification and transformation, pages 165–195. North-Holland Publishing Co., 1987.

[FF56] L.R. Ford and D.R. Fulkerson. Maximal flow throughnetworks. Canadian journal of mathematics, 8 :399–404,1956.

[FF62] L.R. Ford and D.R. Fulkerson. Flow in networks. Prin-ceton University, 1962.

[FGI93] G. Florin, C.R. Gomez, and Lavallée I. Conference :Recursive Distributed Programming Schemes. Technicalreport, JAIST-Kanazawa, Kawazaki, Japan, 1993.

[FGS93] C. Froidevaux, M.C. Gaudel, and M. Soria. Types dedonnées et algorithmes. Ediscience International, Paris,1993.

[FKG00] Y. Futamura, Z. Konishi, and R. Glück. Implementa-tion of an experimental system for automatic programtransformation based on generalized partial computation.In T. Menzies, editor, Third International Workshop onIntelligent Software Engineering, pages 39–48. Universityof Limerick, 2000.

[FL91] G. Florin and I. Lavallée. La récursivité, mode de pro-grammation distribuée. Technical report, INRIA- Roc-quencourt, 1991.

[Fou00] W. L. Fouché. Arithmetical representations of brownianmotion. Journal of Symbolic Logic, 65 :421–422, 2000.

[FRT76] R. Faure, C. Roucairol, and P. Tolla. Chemins et flots,ordonnancements. Gauthier-villars, 1976.

[Gal78] Z. Galil. A new algorithm for the maximal flow problem.In 19th Symposium on Foundations of Computer Science,pages 231–45. IEEE, October 1978.

[GG90] P. Gochet and P. Gribomont. Logique - Méthodes pourl’informatique fondamentale. Hermés, Paris, 1990.

[Gin76] V. Ginzburg. Sur la physique et l’astrophysique. Mir,Moscou, 1976.

Page 345: livre.pdf

Bibiographie 321

[GJ79] M.R. Garey and D.S. Johnson. Computers and intracta-bility. Freeman, New York, 1979.

[GN79] Z. Galil and A. Naamad. Network flow and generalizedpath compression. In 11th Annual Symposium on Theoryof Computing, pages 13–26. ACM, May 1979.

[Gol79] A. Goldberg. On the complexity of the satisfiabilityproblem. Technical Report 16, New York University,1979. Courant Computer Science Report.

[Gou93] S.J. Gould. Comme les huit doigts de la main. éditionsdu Seuil, 1993. (Édition originale : eight Little piggies,1993).

[Gou97] S.J. Gould. L’éventail du vivant. éditions du Seuil, 1997.[GSB94] R. Gupta, S. A. Smolka, and S. Bhaskar. On randomi-

zation in sequential and distributed algorithms. ACMComputing Surveys (CSUR), 26(1) :7–86, March 1994.

[GTT89] A.V. Goldberg, R. Tardos, and R. Tarjan. Networks flowsalgorithms. Technical Report STAN-CS-89-1252, Com-puter Science Department, Stanford University, 1989.

[GU89] G. Gallo and G. Urbani. Algorithms for testing thesatisfiability of propositionnal formulae. Journal of LogicProgramming, 7 :45–61, 1989.

[Ha04] Q.T. Ha. Complexité et programmabilité : la dérécursi-vation par les mots de la récursivité. Thèse de doctorat,Université Paris 8, Juin 2004.

[Hak85] A. Haken. The intractability of resolution. TheoreticalComputer Science, 39 :297–308, 1985.

[HC88] M. Hamann and L. Chtcherbanski. Positional logic alge-bra. Internal report 97-039, ICSI, 1988.

[HK73] J. Hopcroft and R.M. Karp. An n5/2 algorithm for maxi-mum matching in bipartits graphs. SIAM J. of Compu-ting, 2(4) :225–231, 1973.

[HK88] P.G. Harrison and H. Khoshnevisan. On the transfor-mation of linear functiona : a new approach to recursion

Page 346: livre.pdf

322 Complexité et Algorithmique avancée

removal. Internal report, Department of Computing,Imperial College, London, UK, 1988.

[HK92] P.G. Harrison and H. Khoshnevisan. A new approachto recursion removal. Theoretical Computer Science,93(1) :91–113, 1992.

[HL03] Q.T. Ha and I. Lavallée. Fast matrix multiplication :an iterative schema without stacks. In ICSERA03, San-Fransisco, June 25-27 2003.

[HO02] L.A. Hemaspaandra and M. Ogihara. The ComplexityTheory Companion. Springer, 2002.

[Hor51] A. Horn. On sentences which are trues of direct unionsof algebras. Journal of Symbolic Logic, 16 :14–21, 1951.

[HP70] C.E. Hewitt and M.S. Paterson. Comparative schemato-logy. Technical Report AIM-201, MIT Artificial Intelli-gence Laboratory, 1 1970.

[HP82] S. Heilbrunner and W. Pohlmann. A technique for recur-sion removal based on string homomorphisms. Scienceof Computer Programming, 2(1) :69–81, 1982.

[HR70] P.L. Hammer and S. Rudeanu. Méthodes booléennes enrecherche opérationnelle. Dunod, 1970.

[HS74] E. Horowitz and S. Sahni. Computing partitions withapplications to the knapsack problem. JACM, 21 :277–292, 1974.

[Hu82] T.C. Hu. Combinatorial Algorithms. Addison wesley,1982.

[Iwa89] K. Iwama. Cnf satisfiability test by counting and po-lynomial average time. SIAM Journal on Computing,18(2) :385–391, 1989.

[Jon96] Neil D. Jones. An introduction to partial evaluation.ACM Comput. Surv., 28(3) :480–503, 1996.

[JW90] R.E. Jerosiow and J. Wang. Solving propositionnal satis-fiability problems. Annals of Mathematics and ArtificialIntelligence, 1 :167–187, 1990.

Page 347: livre.pdf

Bibiographie 323

[Kan42] L.V. Kantorovitch. Sur le déplacement des masses. Mé-moire de l’Académie des Sciences de l’U.R.S.S., T. 37,n 7-8 :227–229, 1942.

[Kan60] L.V. Kantorovitch. Mathematical methods in the organi-zation and planning of production. Management Science,6 :363–422, 1960. En Russe Léningrad 1939, traductionanglaise.

[Kan63] L.V. Kantorovitch. Calcul économique et utilisation desressources. Dunod, Paris, 1963. en français.

[Kar74] A.V. Karzanov. Déterminer le flot maximal dans unréseau par la méthode des préflots. Soviet Math. Dokl.,15 :434–37, 1974. En russe.

[Kar84a] N. Karmarkar. A new polynomial-time algorithm forlinear programming. STOC, 1(11) :302–311, 1984.

[Kar84b] N. Karmarkar. A new polynomial-time algorithm forlinear programming. Combinatorica, 4(4) :373–396, 1984.

[Kfo97] A.J. Kfoury. Recursion versus iteration at higher-orders.Lecture Notes in Computer Science, 1346 :57–63, 1997.

[KG68] L.V. Kantorovitch and A.B. Gorstko. Programmationmathématique optimale (en économie). Connaissance, 8-9, 1968. Matermaticheskoe optimaloe programmirovanie(V ekonomike), en Russe.

[Kha79] L.G. Khachiyan. A polynomial algorithm in linear pro-gramming. Doklady Akadamii Nauk SSR, 244 :1093–1096,1979. en russe.

[Kit56] A.I. Kitov. Machines à calculer électroniques. Éditionsde la radio soviétique, 1956. Moscou, en Russe.

[KM49] L.V. Kantorovitch and Savourine M.K. Application desméthodes mathématiques aux questions d’analyse destransports (en russe). Problèmes de l’efficacité des trans-ports, pages 110–138, 1949. Note rédigée en 1940.

[KM72] V. Klee and G.J. Minty. How good is the simplex algo-rithm? In O. Shiha, editor, Inequalities III. AcademicPress, N.Y., 1972.

Page 348: livre.pdf

324 Complexité et Algorithmique avancée

[Kol56] A.N. Kolmogorov. Foundations of the Theory of Proba-bility. Chelsea Publishing Company, New Yourk, 1956.Traduction anglaise de : Grundbegriffe der Wahrscheinli-chkeitsrechnung, Berlin 1933.

[Kol65] A.N. Kolmogorov. Three approaches to the quantitativedefinition of information. Problems inform. Transmission,1(1) :1–7, 1965.

[Kol83] A.N. Kolmogorov. Combinatorial foundations of infor-mation theory and the calculus of probabilities. RussianMath. Survey, 38 :29–40, 1983. En Russe.

[Kol87] A.N. Kolmogorov. Selected works. Information Theoryand theory of algorithms, Nauka - Moscou, 3, 1987. EnRusse.

[Kop88] M. Koppel. The universal Turing Machine ; A HalfCentury Survey. Oxford University Press, 1988.

[Koz06] D.C. Kozen. Theory of Computation. Springer, 2006.[KP92] E. Koutsoupias and C.H. Papadimitriou. On the greedy

algorithm for satisfiability. Information Processing Let-ters, 30 :53–55, 1992.

[KP94] E. Koutsoupias and C.H. Papadimitriou. On the k-serverconjecture. In Proc. Of the 26th ACM Symp. On TheoryOf Computing, pages 507–511, San-Fransisco, June 25-271994.

[KRT93] V. King, S. Rao, and R.E. Tarjan. A faster deterministicmaximum flow algorithm. In Proceedings of the 3rdAnnual ACM-SIAM Symposium on Discrete algorithms,pages 157–164, 1993.

[Kru56] J.B. Kruskal. On the shortest spanning subtree of agraph and traveling salesman problem. In Proc. AmericanMathematical society, volume 7, pages 48–50, 1956.

[KU58] A.N. Kolmogorov and V.A. Uspensky. Sur la définitiond’un algorithme. Uspenkhi Mat. Nauk, 13(4) :3–28, 1958.En Russe ; Traduction Anglaise dans Amer. Math. Soc.Translat., 29 :2(1963), p 217-245.

Page 349: livre.pdf

Bibiographie 325

[KU87] A.N. Kolmogorov and V.A. Uspensky. Algorithms andrandomness. SIAM J. Theory Probab. Appl., 32 :389–412,1987.

[Lam78] L. Lamport. Time, clocks and the ordering of events ina distributed system. Commun. ACM, 2(7), 1978.

[Lav74] I. Lavallée. Recouvrement d’un ensemble par une sousfamille de ses parties (Set covering problem). Thèse dedocteur ingénieur, Université Paris VI, Juin 1974.

[Lav76] I. Lavallée. Reconnaissance du caractère distributif d’untreillis fini. Comptes rendus de l’Académie des Sciences,t.282 :A–1339 ; A–1341, 1976.

[Lav82] I. Lavallée. Note sur le problème des tours de Hanoï.Vietnamica, 1982.

[Lav85] I. Lavallée. Une procédure purement itérative pour leproblème des tours de Hanoî. Revue roumaine de ma-thématiques pures et appliquées, 6, 1985.

[Lav91a] I.. Lavallée. Algorithmique parallèle et distribuée. Hermés,1991.

[Lav91b] I. Lavallée. La pensée... artificielle ? La Pensée, 282(282),Juillet-Août 1991.

[Lav95] C. Lavault. Évaluation des algorithmes distribués. Her-més, 1995.

[Lav97] I. Lavallée. Vous avez dit complexité ? Regards, 28,Octobre 1997.

[Leb51] S.A. Lebedev. Letter to the department of materialresources. AN Ukr. SSR, AIED d. 5, l. 25, July 10 1951.

[Lév71] L.A. Lévine. Quelques théorèmes sur l’approche algorith-mique de la théorie des probabilités et de l’information.Thèse de doctorat, Université de Moscou, 1971. en Russe.

[Lév73a] L.A. Lévine. Le problème universel de recherche. PPI,9(3) :265–276, 1973. en Russe, présentation orale en1971.

[Lév73b] L.A. Lévine. On the notion of random sequence. Sovietmath Doklady, 14 :1413–1416, 1973.

Page 350: livre.pdf

326 Complexité et Algorithmique avancée

[Lév76] L.A. Lévine. Différentes mesures de complexité pourdes objets finis (description axiomatique). Soviet MathDoklady, 17 :522–526, 1976. en Russe.

[Lew78] H.R. Lewis. Renaming a set of clauses as a horn set.Journal of the ACM, 25(1) :134–135, January 1978.

[LL61] L. Landau and L. Lifchitz. Mécanique, volume 1. Éditionsde la paix Moscou, version Française 1961.

[LL90] I. Lavallée and C. Lavault. Spanning tree constructionfor nameless networks. In 4th International Workshop onDistributed Algorithms (WDAG-4), pages 41–56, Bari,Italie, 24-26 Sept., 1990. LNCS n 486, Springer Verlag.

[LMSK63] J.D.C. Little, K.G. Murty, D. Sweeney, and C. Karel.An algorithm for the travelling salesman problem. Ope-rationnal Research, 11 :972–990, 1963.

[LN05a] I. Lavallée and D. K. Nguyen. A general scalable paral-lelizing of straßen’s algorithm for matrix multiplicationon distributed memory computers. In 4th annual In-ternational Conference on Computing and InformationScience, pages 221–226, Jeju Island South Korea, July2005. IEEE Computer Society.

[LN05b] I. Lavallée and D. K. Nguyen. Parallel Winograd mul-tiplication. In 6th Conference on Software engineering,artificial intelligence, Networking and parallel computing,pages 116–122, Baltimore, 2005. IEEE Computer Society.

[Lov77] David B. Loveman. Program improvement by source-to-source transformation. J. ACM, 24(1) :121–145, 1977.

[LR81] Lehmann and M.O. Rabin. On the advantage of freechoice : A symmetric and fully distributed solution tothe Dining Philosophers problem. In Proceedings of theEighth Ann. ACM Symp. on Principles of ProgrammingLanguages (POPL), pages 133–138. ACM Press, 1981.extended abstract.

[LS03] A.Y. Liu and S.D. Stoller. Optimizing ackermann’sfunction by incrementalization. In Proceedings of the

Page 351: livre.pdf

Bibiographie 327

2003 ACM SIGPLAN workshop on Partial evaluationand semantics-based program manipulation, pages 85–91.ACM Press, 2003.

[Luc74] Y. Lucas. Codes et Machines. P.U.F, 1974.[Lup59] O.B. Lupanov. Une méthode de synthèse des circuits.

Izvestiya VUZ, Radiofizika, 1(1), 1959. en Russe.[Lup63] O.B. Lupanov. The synthesis of certain classes of control

system. Problemy Kibernetiki, 10 :63–97, 1963. en Russe,traduit en anglais.

[LV90] M. LI and P. Vitányi. Algorithms and complexity, vo-lume A. Elsevier, 1990.

[LV97] M. Li and P. Vitanyi. An Introduction to KolmogorovComplexity and Its Applications. Springer, 1997. secondedition.

[LW66] E.L. Lawler and D.E. Wood. Branch-and-bound method :a survey. Opérational research, pages 699–719, July-August 1966.

[LZ70] L.A. Lévine and A.K. Zvonkin. The complexity of fi-nite objects and the developpement of the concepts ofinformation and randomness by means of the theory of al-gorithms. Russian Mathematical Surveys, 25(6) :83–124,1970.

[Mar54] A.A. Markov. Théorie des algorithmes. Number TomeXLII. Éditions de l’Académie des Sciences de l’URSS,Moscou-Léningrad, 1954. en Russe.

[Mar63] A.A. Markov. On normal algorithm associated whichcomputes boolean functions. Soviet. Math. Dokl., 5 :922–924, 1963.

[Mar67] A.A. Markov. On normal algorithm associated with thecomputation of boolean functions and predicates. IzvestiaAkademic Nauk. SSSR, 31 :161–208, 1967.

[Mar79] G.B. Marandzhyan. A propos de quelques propriétés defonctions récursives asymptotiquement optimales. Izves-tia Akademic Nauk Armyan. SSSR, 22(4) :3–22, 1979.en Russe.

Page 352: livre.pdf

328 Complexité et Algorithmique avancée

[Mc 60] J. Mc Carthy. Recursive functions symbolic expressionsand their computation by machine, part i. Communica-tions of the ACM, 3(4) :184–195, 1960.

[Mer03] N.D. Mermin. From Cbits to Qbits :Teaching ComputerScientists Quantum Mechanics. American Journal ofPhysics, 71 :23–30, 2003.

[MKM78] V.M. Malhorta, M.P. Kumar, and S.N. Maheswari. Algo-rithm for finding maximum flows in network. Informationprocessing letters, 7-6 :277–78, 1978.

[MMS88] M.N. Manasse, L.A. McGeoch, and D.D. Sleator. Com-petitive algorithms for online problems. In Proc of the20th ACM Symposium on Theory of Computing, pages322–333, 1988.

[MMS90] M.N. Manasse, L.A. McGeoch, and D.D. Sleator. Com-petitive algorithms for k-server problems. Journal ofAlgorithms, 11 :208–230, 1990.

[Mor02] G. Moreno. Transformation rules and strategies forfunctional-logic programs. AI Commun., 15(2) :163–165,2002.

[MP95] Rajeev Motwani and Raghavan Prabhkar. Randomizedalgorithms. Cambridge University Press, 1995.

[MU00] M. Mitzenmacher and E. Upfal. Probability and Compu-ting, Randomized algorithms and Probabilistic Analysis.Cambridge University Press, 2000.

[MV90] L. Ming and P.M.B. Vitanyi. Algorithms and complexity,volume A. Elsevier, 1990.

[NC04] M.A. Nielsen and I.L. Chuang. Quantum Computationand Quantum Information. Cambridge University Press,2004.

[Nis02] S. Nishimura. Deforesting in accumulating parametersvia type-directed transformations. In Asian Workshop onProgramming Languages and Systems (APLAS), 2002.

[Odi99] P. Odifreddi. Classical recursion theory, volume 1, 1989.North Holland, 1999. Volume 2.

Page 353: livre.pdf

Bibiographie 329

[Ous60] Ouspienski. Leçons sur les fonctions récursivement cal-culables. Éditions d’état de Physique et mathématiques,1960. Moscou, en Russe.

[Pag90] H. Pagels. Les rêves de la raison (The dreams of reason).Interéditions, 1990.

[Pan78] Y.V. Pan. Parallel Winograd multiplication. In AnnArbor, editor, Proc. 19th Annual Symposium on the foun-dations of Computer Science, pages 166–176, MI USA,1978.

[Pan80] Y.V. Pan. New fast algorithms for matrix operations.SIAM Journal on Computing, 9(2) :321–342, 1980.

[Pan81] Y.V. Pan. New combinations of methods for the acce-leration of matrix multiplication. Comp. Math. Appl.,7(1) :73–125, 1981.

[Pap91] C. H. Papadimitriou. On selecting satisfying truth assi-gnement. In Proc. FOCS-91, pages 163–169, 1991.

[Pap95] C.H. Papadimitriou. Computational Complexity.Addison-Wesley, August 1995.

[Per90] D. Perrin. Finite automata, volume B. Elsevier, 1990.Formal Models and Semantics chapitre 1.

[PP96] A. Pettorossi and M. Proietti. Rules and strategiesfor transforming functional and logic programs. ACMComput. Surv., 28(2) :360–414, 1996.

[PP97] A. Pettorossi and M. Proietti. Future directions in pro-gram transformation. SIGPLAN Not., 32(1) :99–102,1997.

[PP98] A. Pettorossi and M. Proietti. Program specialization viaalgorithmic unfold/fold transformations. ACM Comput.Surv., 30(3es) :6, 1998.

[Pri57] R.C. Prim. Shortest connection networks and somegeneralizations. Bell System Tech J., 36 :1389–1401,1957.

Page 354: livre.pdf

330 Complexité et Algorithmique avancée

[PS82] C.H. Papadimitriou and K. Steiglitz. CombinatorialOptimization ; Algorithms and complexity. Prentice-Hall,1982.

[R+85] R. Roseau et al. Exercices et problèmes résolus de re-cherche opérationnelle. Masson, 1ere edition, 1985.

[Rab83] M.O. Rabin. Randomized byzantine generals. In Procee-dings of the 24th Symposium on Foundations of ComputerScience FOCS, pages 403–409, 1983.

[Rao90] J.R. Rao. Reasoning about probabilistic algorithms. InProceedings of the 24th Symposium on Foundations ofComputer Science FOCS, pages 247–264, August 22-241990.

[RM00] P. Raghavan and R. Motwani. Randomized Algorithms.Cambridge University Press, 2000.

[Roy70] B. Roy. Algèbre moderne et théorie des graphes T. 1 et2. Dunod, 1970.

[Roz92] G.J. Rozas. Taming the y operator. In Proceedingsof the 1992 ACM conference on LISP and functionalprogramming, pages 226–234. ACM Press, 1992.

[RS61] B. Roy and M. Simmonard. Nouvelle méthode permet-tant d’explorer un ensemble de possibilités et de déter-miner un optimum. Revue Française de R.O., 1(18),1961.

[RS98] P. Raghavan and M. Snir. Memory versus randomizationin on-line algorithms. IBM Journal of Research andDevelopment, 38 :683–707, 1998.

[RT82] J.-L Roch and D. Trystram. Parallel Winograd multi-plication. In Parallel Computing : from theory to soundpractice, pages 578–581, Barcelona, 1982.

[Sed88] R. Sedgewick. Algorithms. Addison-Wesley, 1988.[Sèv05] L. Sève. Émergence, complexité et dialectique. Odile

Jacob, Mai 2005.[Sha48a] C. Shannon. The mathematical theory of communication.

Bell System Technical Journal, pages 379–423, 1948.

Page 355: livre.pdf

Bibiographie 331

[Sha48b] C. Shannon. The mathematical theory of communication.Bell System Technical Journal, pages 623–656, 1948.

[Sha49] C. Shannon. The synthesis of two-terminal networks.Bell System Technical Journal, 1(28) :59–98, 1949.

[Shi78] Y. Shiloach. Maximum flow algorithm. Technical report,Comp. Sc. Dpmt Standford University, 1978.

[Shi02] Y. Shi. Remarks on universal quantum computer. PhysicsLetters, 2002.

[Sip96] M. Sipser. Introduction to the Theory of Computation.International Thomson Publishing, 1996.

[SLM92] B. Selman, H. Levesque, and D. Mitchell. A new methodfor solving hard satisfiability problems. In ProceedingsAAAI-92, 1992. San Jose, CA.

[SM56] C. Shannon and J. Mc. Carty. A universal Turing ma-chine with two internal states. Automata Studies, Prin-ceton univ. Press, 1956.

[ST85a] D.D. Sleator and R.E. Tarjan. Amortized efficiency oflist update and paging rules. Communications of theA.C.M., 28 :202–208, February 1985.

[ST85b] D.D. Sleator and R.E. Tarjan. Self adjusting binarysearch trees. Journal of the A.C.M., 32 :652–686, July1985.

[Str69] V. Strassen. Gaussian elimination is not optimal. Numer.Math., 1(13) :354–356, 1969.

[Str70] H.R. Strong Jr. Translating recursion equations intoflow charts. In Proceedings of the second annual ACMsymposium on Theory of computing, pages 184–197. ACMPress, 1970.

[Tel89] M. Telpiz. Predstavlenie founki algebra logiki (représen-tation des fonctions de l’algèbre logique). Kybernétika,51(4) :37–40, 1989. En Russe.

[Tim04] C.G. Timpson. Quantum Information Theory and TheFoundations of Quantum Mechanics. PhD thesis, Queen’sCollege (Oxford), 2004.

Page 356: livre.pdf

332 Complexité et Algorithmique avancée

[Tol39] A. Tolstoï. Méthodes d’élimination des transports nonrationnels lors de la planification. Le transport socialiste,1(9) :28–51, 1939. En Russe.

[Tra63] B.A. Trahtenbrot. Algorithmes et machines à calculer.Monographies Dunod, 1963. (édition Soviétique 1960).

[Tur36] A.M. Turing. On computable numbers with an applica-tion to the entscheindungsproblem. London Math. Soc.Ser., 2(42 et 43) :230–265 ;544–546, 1936.

[VJ+03] P. Vanbroekhoven, G. Janssens, et al. Advanced copypropagation for arrays. In Proceedings of the 2003 ACMSIGPLAN conference on Language, compiler, and toolfor embedded systems, pages 24–33. ACM Press, 2003.

[Vol85] P. Vollat. Calculabilité effective et Algorithmique théo-rique. éyrolles, 1985.

[War88] M.P. Ward. Proving Program Refinements and Transfor-mations. PhD thesis, Oxford University, 1988.

[War92] M.P. Ward. A recursion removal theorem. In Proceedingsof the 5th Refinement Workshop. Springer-Verlag, 8th-11th January 1992.

[War93a] M.P. Ward. Abstracting a Specification from Code. Jour-nal of Software Maintenance : Research and Practice,5(2) :101–122, June 1993.

[War93b] M.P. Ward. Iterative procedures for computing acker-man’s function, 1993.

[WB99] M.P. Ward and K.H. Bennett. Recursion removal/introduction by formal transformation : An aid to pro-gram development and program comprehension. TheComputer Journal, 42(8) :650–673, 1999.

[Wey49] H. Weyl. Philosophie der Mathematik und Naturwissen-chaft . Philosophical of Mathematics and Natural Science.Princeton University Press, Princeton, 1949. 1ère Éditionallemande 1927.

[Win70] S. Winograd. On the multiplication of 2x2 matrices,.Technical report, IBM Research report RC267, 1970.

Page 357: livre.pdf

Bibiographie 333

[Wir76] N. Wirth. Algorithms + Datastructures = Programs.Prentice-Hall, Englewood Cliffs, New Jersey, 1976.

[Wit93] L. Witgenstein. Tractatus logico-philosophicus. Galli-mard, 1993. édition allemande 1921, Logish Philoso-phische Abhandlung.

[Wol91] P. Wolper. Introduction à la calculabilité. Interéditions,1991.

[WP+78] H. Wössner, P. Pepper, et al. Special transformationtechniques. In F. L. Bauer and M. Broy, editors, ProgramConstruction, volume 69 of Lecture Notes in ComputerScience, pages 290–321. Springer Verlag, 1978.

[Yab59a] S. Yablonski. On the impossibility of eliminating pereborin solving some problems of circuit theory. DokladyAkademii Nauk SSSR, 124(1), 1959. En Russe : Englishtranslation in Soviet Mathematics Doklady.

[Yab59b] S. Yablonski. Sur la difficulté de la minimisation descircuits. Problemy Kibernetiki, 2(2) :75–121, 1959. Enrusse.

[Yab00] K. Yabuuti. Une histoire des mathématiques chinoises.Belin, 2000. édition japonaise Iawanami Shoten, Tokyo1974.

[Yao77] A.C.C. Yao. Probabilistic Computations : Toward aUnified Measure of Complexity. In 18th Annual Sympo-sium of Foundations of Computer Science FOCS, pages222–227. IEEE, 1977. Extended Abstract.

[Yao03] A.C.C. Yao. Classical physics and the Church–Turingthesis. Journal of the ACM, 50-(1) :100–105, 2003.

[YY57] A.M. Yaglom and I.M. Yaglom. Veroiatnost I informatsia.Technico-Théorique, 1957. édition Française Probabilitéet information Monographies Dunod 1959.

[YZR02] F. Yoshihiko, K. Zenjiro, and Glück Robert. WSDFU :program transformation system based on generalized par-tial computation, pages 358–378. Springer-Verlag NewYork, Inc., 2002.

Page 358: livre.pdf

334 Complexité et Algorithmique avancée

[ZH+97] H. Zhenjiang, I. Hideya, et al. Tupling calculation elimi-nates multiple data traversals. In Proceedings of the se-cond ACM SIGPLAN international conference on Func-tional programming, pages 164–175. ACM Press, 1997.

Page 359: livre.pdf
Page 360: livre.pdf

Imprimé en France

Achevé d’imprimer en mars 2009par la Sté ACORT Europe

www.cogetefi.com

Dépôt légal à parution

Page 361: livre.pdf
Page 362: livre.pdf

33 euros

Complexitéet algorithmique avancéeune introduction

Ivan Lavallée

"Complexité et algorithmique avancée" est un exposé introductif à la pratique dela théorie de la complexité, il a été enseigné dans les trois cycles universitairesd'informatique et de cognitique et l'ouvrage est conçu pour être abordé par lesétudiants des trois cycles universitaires. Il s'agit là du premier ouvrage enlangue française traitant de la complexité en tant que telle. On y trouvera uneintroduction aux concepts fondamentaux du domaine, qu'il s'agisse demachine de Turing élémentaire ou universelle, de complexité au sens deLevin-Cook ou de Kolmogorov. Dans ce livre sont définies les trois principalesclasses de complexité, P, NP et NPC ainsi que le concept de quantité absolued'information dû à Kolmogorov. Dans une dernière partie, on montre commentrésoudre certains problèmes en faisant "tomber" la complexité en utilisant des con-cepts probabilistes, ou en utilisant des méthodes d'énumération implicite dont lesprincipes sont décrits. L'ouvrage se termine sur un chapitre consacré à l'informa-tique quantique. Ce livre est destiné tant aux étudiants en informatique qu'auxingénieurs et chercheurs. L’ouvrage propose aussi des voies pour la recherche,abordant les aspects pratiques au travers de la conception des algorithmes derésolution pour problèmes dits NP- complets, une partie est consacrée à ces aspectspratiques.

Public : Licence, Maitrise, Doctorat, Ingéniorat.

L'auteur: Docteur d’État ès sciences, professeur à l’université Paris VIII, et àl’Ecole Pratique des Hautes Etudes (EPHE).

ISBN : 978 27056 6726 9

9 782705 667269

Hermann