Description
méthodesInformatique Complexité et algorithmique avancée une introduction Ivan Lavallée édition revue et augmentée Ingéniorat - Doctorat Hermann Complexité et algorithmique avancée une introduction Ivan Lavallée “Si l’essence et l’apparence des choses se confondaient, la science serait sans objet” Karl Marx (Le capital) Hermann éditeurs 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 illicite sans l’autorisation de l’éditeur et constituerait une contrefaçon. Les cas strictement limité à usage privé ou de citation sont régis par la loi du 11 mars 1957. Table des matières Introduction xiii Pourquoi tant de théorie ? . . . . . . . . . . . . . . . . . . . . . xiv I Historique 1 1 Histoires d’algorithmes 1.1 La notion naïve d’algorithme . . . . . . . . . 1.1.1 L’algorithme d’Euclide . . . . . . . . . 1.1.2 Algorithme de l’équation quadratique 1.1.3 Un algorithme qui vient de loin . . . . 1.1.4 L’algorithme du Labyrinthe . . . . . . II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Survol 2 Un 2.1 2.2 2.3 2.4 rapide tour d’horizon Une stratégie de résolution . . . Deux exemples . . . . . . . . . . Les classes P et N P . . . . . . . La classe N P . . . . . . . . . . . 2.4.1 Réductibilité polynomiale 2.4.2 La classe N PC . . . . . . 2.5 Conclusion . . . . . . . . . . . . 3 5 7 7 9 11 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 20 20 22 22 23 24 25 3 La Machine de Turing 27 3.1 La Machine de Turing, modèle d’algorithme . . . . . . . . 27 3.1.1 Description d’une machine de Turing . . . . . . . . 29 ii Complexité et Algorithmique avancée 3.2 3.3 3.1.2 Précision du concept d’algorithme . . . . . . . . Un peu de formalisme . . . . . . . . . . . . . . . . . . . Machines de Turing élémentaires . . . . . . . . . . . . . 3.3.1 Machine qui s’arrête . . . . . . . . . . . . . . . . 3.3.2 Machine "tout à gauche", machine "tout à droite" 3.3.3 Machine à effacement et écriture . . . . . . . . . 3.3.4 Machines chercheuses de 1 ou de 0 . . . . . . . . 3.3.5 Composition de machines . . . . . . . . . . . . . 4 La Machine de Turing Universelle 4.1 Le problème général . . . . . . . . . . . . . . 4.1.1 Le problème du codage . . . . . . . . 4.1.2 Numérotation des Machines de Turing 4.2 Machine de Turing à plusieurs rubans . . . . 4.3 Calculateur, calculateur universel . . . . . . . 4.3.1 Calculateur universel . . . . . . . . . . 4.3.2 Le nombre de Chaïtin . . . . . . . . . 5 Complexité de Kolmogorov (rudiments) 5.1 Introduction . . . . . . . . . . . . . . . . 5.1.1 Interprétation intuitive . . . . . . 5.1.2 Paradoxe . . . . . . . . . . . . . 5.2 Description d’un objet . . . . . . . . . . 5.2.1 Fonction partiellement récursive 5.3 Descriptions et tailles . . . . . . . . . . III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 34 35 35 35 36 36 37 . . . . . . . 39 39 41 46 47 49 51 52 . . . . . . 53 53 54 54 55 56 57 Théorie 6 Considérations théoriques 6.1 Quelques définitions fondamentales . . 6.1.1 Le problème, informellement . 6.1.2 Essais de définitions . . . . . . 6.1.3 Des ensembles bien particuliers 6.2 Indécidabilité . . . . . . . . . . . . . . 6.2.1 Plus ou moins indécidable . . . 6.3 Mathématiques ou informatique ? . . . 61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 63 63 64 68 75 76 76 Table des matières iii 7 Ordres, Treillis et Algèbre de Boole 7.1 Relations d’équivalence . . . . . . . . . . . . . . . . . . 7.1.1 Ensemble quotient . . . . . . . . . . . . . . . . 7.2 Ordre, ordre partiel et préordre . . . . . . . . . . . . . 7.2.1 Isomorphisme et dualité d’ensembles ordonnés 7.3 Treillis . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.1 Treillis distributifs . . . . . . . . . . . . . . . . 7.4 L’algèbre de Boole . . . . . . . . . . . . . . . . . . . . 7.5 L’algèbre de Boole des expressions logiques . . . . . . 7.6 Expressions booléennes et problème SAT . . . . . . . . 7.6.1 Satisfaction d’une expression . . . . . . . . . . 7.6.2 Algèbre de Boole . . . . . . . . . . . . . . . . . 7.6.3 Le problème SAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 79 79 80 81 82 83 84 84 87 88 90 91 8 Circuits booléens 8.1 Portes et circuits digitaux . . . 8.1.1 Base standard . . . . . 8.2 Fonctions booléennes et circuits 8.3 Circuits booléens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 93 95 98 99 9 Quelques problèmes de référence 9.1 Introduction à la théorie des graphes . . . . . . . . 9.1.1 Petit vocabulaire de théorie des graphes . . 9.1.2 Exemple de représentation de graphes . . . 9.1.3 Sous-ensembles remarquables de sommets . 9.1.4 Ensembles absorbants, nombre d’absorption 9.2 Existence de chemin . . . . . . . . . . . . . . . . . 9.2.1 Complexité . . . . . . . . . . . . . . . . . . 9.3 Flot maximal . . . . . . . . . . . . . . . . . . . . . 9.4 Couplage dans un graphe biparti . . . . . . . . . . 9.5 La satisfiabilité . . . . . . . . . . . . . . . . . . . . 9.5.1 Une technique algorithmique : la réduction 9.6 Le voyageur de commerce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 103 104 104 106 108 109 113 113 116 118 118 120 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Algorithme, résolution 10.1 Faire son choix . . . . . . . . . . . . . . . . . . . . . . . 10.2 Pourquoi la complexité ? . . . . . . . . . . . . . . . . . . 10.3 Interpréter la complexité . . . . . . . . . . . . . . . . . . 125 . 126 . 127 . 130 .4 Machine à plusieurs rubans . . . 11. . . . . . . . . . . . . . . . . . . . . . . . . 11. . . . . . . .3 Circuits booléens ou digitaux . . . . . . . . . . 10. . . . . . . . . .2 Machines RAM . . . . .7 La classe P . . . 139 139 142 147 147 148 149 151 153 155 155 156 157 158 160 162 163 12 Complétude N P 12. . . . . . . . .6. . . . . . . . . . . . .8. . . . 11. . . . . . . . . . .5 Fonction de complexité en temps .1 Problème. . . .2. . . . . . . . . . . . . . . . . . . . . 12. . . . . . .iv Complexité et Algorithmique avancée 10. . . . . . . . . .6. .3 Codage . .1 Le monde de N P . . . . 10. . . .1 Dualité . . . . . 12. . . . . . . . . 11. .8. . . . . . .3. . . 11. . . . . . . . . . . . 10. . . . . . . . . . . . . . . . . .2 Algorithme . . . . . . . . . 11. . . .4 Des mots . 11. . . . . . . . . . . . . . . . . . . . .5 Complexité en espace . . . . . .2 Langage . . . .1 La transformation polynomiale 12. . . . Complexité 131 131 131 132 132 133 133 134 135 137 11 Modèles de calcul. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 La Machine de Turing comme modèle de calcul 11. . 10. . . . . . . . . . . . . 10. . 167 167 167 169 171 171 173 . . . . .6. . . . . .4. . . . problème N P − complet . . . .2 Langages et fonctions . . . . .3 SAT. . . . . 12. .2. . . . . . . . . . 11. . . 11. . . . . . . . . . . . . . . . . . . . . . . .2 La classe des problèmes N PC . . . . . . . .3. . . . . . . . . . . . . . 10. . . . instance. . . . . . 12. . . . . . . . .4 Complexité en temps . codage 10. .1 Approche informelle de la classe N P . . . . . . . . . . . . .3 Taille d’une instance . .2 Le problème SAT . . . . . langages.1 Automates de Markov . . . . . . . . . . . . . . . . . . 11. 11. . . . . . . . . . . .1 Un problème N P − complet . . . . . . . . . .9 La classe N P ∩ Co − N P . . . . . . . . . . . . .3 Autres modèles de calcul . . .3. . . . . solution .2 Classe Co-N P .9. . . . . . . . . . . . . . .1. . . 11. . . 11. . . . . . IV . .6 Relation entre les complexités . . . . . .1 Problème de décision . . . . . . . . . . . . . . . . . . . . . . . . . .3. .6 Problèmes de décision. . . . . . . . . . . . 11. . .4. . classes de complexité 11. .8 La classe N P .4. . . 10. . . . . . . . . . . . . . .3. . . . . 14. . . . . . . . . . . . . .3. . . .5. . . .2 Obtention des produits de Straßen . . . . . . . . . 13. . 14. . . . . . . . . . . . . . . . . . . .2 12. . 14. . . . . . . 14.2 Proposition de Straßen . . . . . . . . .3. . . . . . . . . . . 14. .6 Règles d’obtention des termes . . . . . . . . 14. . .1 Le produit matriciel . . . . . . . . . . .1 SET et SAT . .3 Complexité de la méthode de Straßen . . . . .2 La programmation récursive .4. . . . . . 197 197 197 200 200 201 202 205 208 209 14 Complexité et efficacité 14.4 Conclusion . . . .4 12. . . . . 13. . . . . .2. . .1 De la complexité à l’efficacité . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 12. . . 14. . . . . . . . .4 Reformulation de la méthode de Straßen . . . .3. . . . . . . .2. . . 14. . . . . . .1. . . . . . . . . . .4. . . 223 225 . . . . . . . . . . . . . . . .2. . . . . . . 174 183 184 187 191 191 13 Le pire n’est pas toujours certain 13. . . 13.1 Pseudo-polynomialité . . . . . . . . . Sur l’équivalence de certains problèmes Que faire ? 15 Des algorithmes pour problèmes N PC . . .Table des matières 12. . . . . Équilibre . . . .3. . . . . . . . . . . . . . . . . .1 Idée de base . . . La classe Co-N PC . . . . . . . . . . . .3 12. . . . . 14.1 Le cas 2-SAT . . .3 Le sac à dos . . . . . . . .1 Autour de SAT . . . . . . 13.3. . . . . . .3. . . . . . . . . Couverture d’un graphe . . . . . . . . . . . . .1 12.3 Généralisation . . Conclusion . . . . . . . . L’appartenance à N PC . . . . . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . 13. . . . . . . . tautologie et non-satisfiabilité 13. . . . . . . . . . . . . . . .5 L’algorithme . . . . . . .4. . . . . . .2 Validation. .1 Hypothèses et notations préliminaires 14. . . . . 13. . . . . . . . . . 14. . . 13. . . . . .3 Clauses de Horn . . . . . . 14. . . . . . . . . . . . . .2 Cas particuliers de SAT . . . . . . . .5. . . . . . . . . . . . . . . . . . . . . .3. . . . . . .2 La multiplication de Straßen . .6 v . . . . . . 211 211 213 213 215 216 217 217 218 218 220 220 221 221 221 V Le théorème de Lévine-Cook . . . . 16. . . . . . . .1 Le protocole . . . . . . . .1 L’exhaustivité des procédures . . . . . .3 Évaluation de la complexité . 16. . . . . . . . . . . . . . 16. . 15. .7 Algorithme probabiliste d’arbre couvrant 16. . . 16. . . . . . . . .3 En guise de conclusion . . . . . . 240 . 245 . .3. 243 . . . . . . . 240 . . . . . . . . . . . . . .2. . . . 262 . . . . .6. . . . . 263 . . . .3. . . . . . . . . . 246 . . .1 Des algorithmes aux parfums de casinos . . 16. . . . . . . 16. solution probabiliste. . . . . . .3 Chaîne de Markov et complexité en temps 16. . . 15. . 16. . . . . . . .7 Le cas asynchrone . . . . . . . .1 Évaluation de la complexité . 225 226 230 232 236 . . . . . . 16. . . . . . . . . . .4.2 Le cas des jeux . . . . . 250 . .1 La méthode alpha/bêta 15. . . . 16.2 2-SAT. . . . . . . . .6 Algorithme linéaire . . . . . . .1 Rappel . . 16. . . .2 Le Problème . . . .3 Les probabilités pour réduire la complexité . . 16. . . . . . . . . . . . 237 . . . .3. . . 15. . .vi Complexité et Algorithmique avancée 15. . . . . 239 .4. . . . .1 La méthode PSEP . . . . . 248 . . . . .2 Preuve . 259 . 237 . . . . . . . . . 16. . arbre couvrant 16. . . . . . . . 16. . . . .5 Échantillonnage aléatoire. . . . . .4 Généralisation à 3-SAT . . .3.3. 267 . . .1 Algorithmes numériques probabilistes .6. . . . .1. . . . . . . . . . . 16 Introduction à l’algorithmique probabiliste 16. . . . . . . . .1 Un exemple issu de la Biologie . . . . 239 .6. . . . 256 . 248 . . . . . . . .3. . . . 251 . . . . . 264 . . . 242 . . . 254 .1.5 Un problème d’accord . . . . . . . . . . . . . . 16. . . . . . . . . . . .3 L’algorithme de Borükva . . .2 Algorithmes de Las Vegas .4. . . . . . . . . . 242 . 16. . . . . . . . 16. . . 265 . 16. . . . 265 . . . 16. . . . 16. . . . .4. .3 Algorithmes de Monte-Carlo . . . . . . . . . . . .2.7. . .4 Résoudre SAT de manière probabiliste . . .7. . . . . .4. . . . . . . . . . . . . .3. . .1. .5. . . . . . . . . . . . 16.5 Proposition d’algorithme modifié . .1 Généralités . . . . . . . . . . . . . 264 . 266 . . . . . . . .4 Arêtes "lourdes" et arbre couvrant . . . . . . . . . . . . . . . . .6 Une solution synchrone . . 250 . 239 . . 16. . . analyse . . . . . . . 242 . .2 Preuve de bon fonctionnement in absurdo 16. . . .2 Probabilités versus déterminisme . 16. . .1 Le problème . . . 16. 16.1. 262 . . . . . .3 Compressibilité et incompressibilité . . 275 . . . .1. . . . . 18. . . . . 273 . . . . . . .Table des matières vii 17 De Shannon à Kolmogorov 17. . . . . 18.3. 310 Bibliographie 313 . . 303 Index des algorithmes 310 Index des Algorithmes .1. . . 299 A. . . . 281 . . . 288 . . . . . . . . 269 . . . 270 . . . . . . . . 270 . . . . .1 Les symboles grand O. . . Ω. . . . .2. . . . . . . . . . . . . . . . . . .1 L’information de Shannon . .6 Extraire l’information des Qbits ? . . . . . . . . 18. . . . . . . . . . . . . . . . . . . . . . . . 17. . . . . . . . . . . . . . . . . . . . . . . . . . . 285 . . . . . . . .2 Retour sur les bits classiques . . . . . . . . . . . . . . . . . . .5 Opérations sur les Q-bits . 292 . . . . .2. . . . . . . . . . . . . . 17. . . 286 . 17. 17. . . . . 296 A Notations de Bachman-Landau 299 A. . . . . . . . . . . . . . . . . . . .1 Introduction . 300 Index des noms cités 301 Index des noms cités .2 Notations . . . . . . . .2 Ne pas dépasser les bornes . 17. . . . 294 . . . . 292 . 18. . . . . . . . . . . . . . . . .4 Les bits quantiques ou Qbits . 18 Le modèle quantique 18. .2. . Θ . 285 . . .1 L’entropie . . . . . . . . . . . 301 Index des concepts et notions 303 Index des concepts et notions . . 282 . . . . . . . . . .1 Le symbole petit o . . . . .1. . . . . . . 17.1 Le théorème d’invariance . . . . . . . . . . . . . . . . . . . . . . . . . . .Cbits 18. . . . .2 Généralisation . . . . . . 277 . . . . . . . .3 Opérations sur les Cbits . .1 Transformation de Hadamard 18. . . . . . . . . . . . . . . . . .3 8. .1 8. . . . . . . . . . . . . . . . . . . . Interprétation graphique de 2-SAT . . . . . .2 9. . . . . . . . .2 8. . . . . . . . . . . . . . .6 9. . . . . . . . . .5 Une page du traité des 9 procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithme d’Al Khawarizmi . . . . . . Labyrinthe . . . Arbre de jeu évalué pour alpha/béta . . . . Exemple de graphe avec capacités . . . . . . . . . Arbre de jeu et coupes alpha/béta . . . . . . . . Machine de Turing . . Classes de complexité . . . . . . .1 15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Existence de chemin entre deux sommets .1 13. . . . . . . . . . . . Schématisation générale d’une expression booléenne Exemple de graphe .Table des figures 1. . . . . . . . . . . . . . . . . .1 8. . Arbre partiel du jeu de nim ré-évalué . . Ensemble absorbant . Une instance du problème VRP .2 15. . Graphes bipartis avec et sans possibilité de couplage Couplage et flot .4 9. . . . Arbre partiel du jeu de nim . . . . . . . . . . . . . .1 1. . . . . . . . . . . . . . . .9 12. . . . . . .3 9. . . . . . . 5 8 13 30 68 95 97 100 101 105 106 109 110 116 118 120 122 124 172 200 232 233 234 235 238 . . . . . . . . Arborescence PSEP . . . . . . . . . Ensemble stable intérieurement . . Graphes de schémas logiques de circuits digitaux . . . . . . . . . .4 9. . .4 15. . .7 9. . . . . . . . . . . . . . . .1 9.1 15. . . . . .8 9. . . . . . . . . Échecs et recouvrement . .3 3. . . . Schéma logique de circuit booléen . . . . . .5 9. .1 6. . . . . . . . . . . Hiérarchie des ensembles . . . . . .2 1. Opérateurs booléens vs graphes . . . . Avertissement à la deuxième édition ette 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. le lecteur peut y aborder de façon plus approfondie le concept d’entropie en relation avec la théorie de Shannon. Le chapitre 17 a également été profondément remanié. avoir cédé sur l’aspect pédagogique et la compréhension du propos. C I.L. On y trouvera du nouveau sur les classes de complexité (classe Co-N P entre autres) et sur les modèle de calcul. espérons le. . le chapitre 11 a été entièrement remanié en introduisant plus formellement certains concepts sans. . Church M 1. la problématique de la complexité est ancienne. Toute l’activité de compréhension du monde qui nous entoure tend à maîtriser cette complexité. science du XXIe`me siècle. Bien entendu cela ne s’est pas fait tout seul. entre temps les sciences se sont développées. avec les travaux de Burk (USA). Les concepts de probabilité et de non déterminisme ont émergé. au dire du poëte. ce texte fondateur d’une démarche à la fois scientifique et philosophique. ni les maîtres d’esclaves. les deux n’allant malheureusement pas souvent de pair. Toutefois. n’identifie pas la complexité en tant que telle. Il est peu de textes récents informés traitant de la complexité de façon philosophique. par ordre ou par pressentiment. . Il faudra attendre 297 ans pour qu’en 1934 Gaston Bachelard identifie la complexité comme étant en elle même sujet d’étude 1 . "pouvaient d’eux-mêmes entrer dans l’assemblée des dieux" les navettes tissaient d’elles-mêmes et les plectres jouaient de la cithare. signalons toutefois l’excellent article du philosophe Lucien Sève dans [Sèv05]. C’est aprés 1936. alors les maîtres d’œuvre n’auraient nul besoin de manœuvres." Aristote (La Politique) ême si la livraison d’un numéro spécial de Décembre 2003 de l’édition française d’une prestigieuse revue scientifique américaine croît pouvoir titrer La complexité. Un premier essai implicite de systématisation de cette démarche de maîtrise est sans doute le Discours de la méthode de René Descartes qui date de 1637. pareilles aux statues légendaires de Dédale ou aux trépieds d’Héphaistos. certaines limites sont apparues à la démarche cartésienne. en particulier aprés les travaux sur la thermodynamique. Il est des phénomênes qu’on ne peut aborder qu’en tant que systèmes et pour lesquels le tout est "plus" que la réunion des parties.Introduction "Si chaque instrument pouvait. qui. si. accomplir son œuvre propre. d’emblée a vu l’ampleur du champ qu’il venait d’ouvrir qui dépassait très largement la simple construction de machines logiques. pour la troisième partie des ouvertures vers la recherche.xiv Complexité et Algorithmique avancée (argentin). leur omniprésence dans quasiment toutes les sphères de l’activité humaine. c’est lui qui. Pour ce faire. les parties 1 et 2 correspondent au premier cycle. Pourquoi tant de théorie ? L’objectif poursuivi ici est de montrer quelles sont les voies qui permettent de prévoir tant que faire se peut. et raisonnable. les moyens à mettre en œuvre. Goldstine (USA). grosso modo aux trois cycles universitaires. À tout seigneur tout honneur. ont permis d’identifier les bornes de ce qui est possible. Kolmogorov. Thratenbrot (URSS). c’est-à-dire dont le paradigme est la machine de Turing. voire les coûts sociaux. mais créait une nouvelle discipline scientifique. ou l’automate fini de Markov. 1. commence par montrer comment les mathématiques. d’étendre le propos au delà du strict champ informatique. sont concernés les disciplines et champs social. avec les ordinateurs actuels. Il s’agit ici de la science informatique. par leur pouvoir de modélisation. Ainsi. la naissance de l’informatique. l’exposé commence par l’algorithmique dont le propos est bien circonscrit. Ainsi. Neumann (hongrois). Couffignal (français). Turing (anglais) 1 . il s’agit d’indiquer au lecteur intéressé un champ de recherche possible. un savoir faire. Lebedev. C’est un exercice de rigueur peu accessible à quiconque n’a abordé l’informatique que comme une technique. Cet ouvrage est composé en cinq parties qui correspondent. de la conquête spatiale à la cuisine en passant par la médecine ou la chorégraphie fait que tout ce qui concerne l’informatique en ses fondements concerne aussi de nombreux domaines. puis nous essaierons chaque fois qu’apparaîtra une possibilité d’échappée. Markov. . La large diffusion des ordinateurs dans le monde. En fait même si d’autres étaient sur la voie. pour résoudre tel ou tel problème posé par le monde réel. La première partie de cet ouvrage. les voies dans lesquelles il semble souhaitable de s’engager. qu’apparaissent les outils conceptuels permettant de préciser le concept de complexité. les parties 3 et 4 au deuxième cycle avec. 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 du 28 mai 1936. Préface xv individuel. Au passage. et quelles sont les limites de ce qui est faisable avec ceux-ci. Précisément. Mon chemin était dès lors balisé pensais-je. la science. Je concevais des algorithmes qui. pour appréhender cette diversité dans son unité. la théorie est basée sur les mathématiques. les techniques afférentes et la technologie. les hommes ont inventé les concepts. Thésée et la reine Didon. Concevant des algorithmes. En effet.. il nous aura fallu définir ce que recouvrent les notions de calcul et de problème. Ma formation de Recherche . des théories. Ainsi. il y a peu encore étaient considérés comme étrangers l’un à l’autre. Pour agir dessus ils ont inventé des outils. technique et organisationnel. que peut-il bien y avoir de commun entre la biologie et le théâtre ou entre la météorologie et la circulation automobile aux feux tricolores ? He bien l’informatique justement est commune à ces différents domaines et ils sont régis par des lois communes. Dans le domaine qui nous concerne ici. Ces théories expliquent de façon logique comment fonctionnent les ordinateurs hors des aspects purements techniques. pour voir arriver de plus loin les bateaux des marchands qui le parrainaient.. 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. Après avoir fréquenté Euclide. j’ai été amené à m’intéresser aux fondements théoriques de l’informatique. Il s’agit là d’activités et champs d’investigations qui. Au delà de ces objets matériels la théorie fournit des outils pour "penser plus loin que le bout de son nez" et aborder des horizons qui seraient inaccessibles sans elle. artistique. fondamentalement qu’un algorithme ?". La théorie centrale est l’ algorithmique qui comprend la théorie de la complexité à laquelle cet ouvrage est consacré et de la calculabilité que mous effleurerons. politique. y compris de façon trés concrète. je me suis tourné vers les travaux de Turing. Galillée a-t-il considérablement amélioré la lunette dite "longue vue" et par conséquent fourni dans un même mouvement la lunette astronomique qui a permis aux hommes de "voir plus loin que le bout de leur nez" et pu mieux connaître l’espace qui entoure notre planète. codés devenaient programmes dont la destinée était d’être exécutés sur des ordinateurs. je me suis posé la question : "mais qu’estce donc. biologique et psychologique. et plus généralement pour ce qui est de la calculabilité. économique. ce qui est calculable et ce qui ne l’est pas et pourquoi. la science d’un instrument n’a aucun sens en Français. sciences 2 dans lesquelles. mais par rapport à quoi ? Je rencontrais alors les travaux de Cook et Lévine [Coo71. Visitant un été. P. Article "Informatique" dans l’encyclopédie universelle. 12. l’instrument adéquat pour étudier la complexité et l’affronter quand c’est possible. injustement oublié aujourd’hui me semble-t-il. pas plus que la biologie n’est la science du microscope. . L’astronomie n’est pas. on est même capable de donner une mesure de cette complexité. dans le sud-ouest (à Plieu) de la France. toutefois. Le terme complexité y étant utilisé dans un sens a priori différent.Qu’entends-tu-toi sculpteur par "complexe" ? Et je le surpris à utiliser des mots semblables à ceux qui vont suivre au long de ces pages. que je sache. je lui posais une question concernant une œuvre qui me laissait perplexe. pour moi l’informatique n’est pas la computer science. Le concept de complexité prend donc une dimension transversale. .C’est une sculpture complexe me répondit-il. Comme l’écrit Hebenstreit 3 . Lisant récemment un ouvrage du paléontologue Stephen Jay Gould (voir [Gou93]). la science du télescope. Je savais maintenant ce qu’optimiser un algorithme voulait dire. Nous allons donc. Bien. on peut considérer. le concept de complexité y prenait une autre dimension. Sa réponse m’entraînât dans un abîme de perplexité encore plus profond. activité pour laquelle elle peut être amenée à utiliser des instruments. Une science manipule . La mode voudrait que j’utilise aujourd’hui les termes de Logistique ou d’Aide à la Décision. une exposition de sculptures de Miro avec un ami sculpteur. nous nous limiterons dans un premier temps à ce qui concerne l’informatique. Vol. Puis je rencontrais les travaux pionniers de Lupanov [Lup63].(quoi qu’en disent Deleuze et Gattari [DG91]) des concepts et des modèles. Le terme de complexité est utilisé dans différents domaines.xvi Complexité et Algorithmique avancée Opérationnelle 1 m’incitait à "optimiser" mes algorithmes. Du reste. à l’heure actuelle.et crée . optimiser d’accord. Soyons clair d’emblée. Lév73a] puis de Edmonds et Karp [EK72]. et contrairement à 1. Il a été bien défini en mathématique et en informatique. ne démentiront pas les pages qui suivent. que l’ordinateur est. j’y trouvais à plusieurs reprises les expressions organisme complexe ou complexité de l’évolution dans un sens que. aussi indispensable aient put être ces instruments au développement des dites sciences. ce qui ne manquera pas de nous entraîner sur des rivages inattendus. 2. je lui posais évidemment la question : . je pense. 3. Saisissant la balle au bond. et nous verrons pourquoi. 304. dans ce qui va suivre essayer de mieux cerner ce concept. Conscients de la profondeur du problème par rapport au déterminisme du modèle de base. Anthropomorphisme quand tu nous tiens ! . des tentatives existent. réseaux dits neuronaux 1 ( ? !). Tra63]) ou machines de Turing nous permettra également de cerner les frontières de ce qui est actuellement faisable avec les ordinateurs actuels. "L’aléatoire ça se calcule" comme l’aborde l’entretien dans un grand quotidien entre les Professeurs Didier Dacunha-Castel et JeanPierre Kahane (voir [DK96]). certains ont inventé l’expression "Intelligence Artificielle" qui. des tâches dont on est capable de réduire la complexité à celle du programme qui les résoud. Du reste. or. Certes l’ordinateur a à voir avec la complexité. la Machine de Turing . ces formulations et codes opératoires s’avèrent plus pratiques. et quelles voies semblent prometteuses pour ce faire. Il n’est pas non plus dit qu’on ait tiré tout le possible du modèle de base.Préface xvii Heinz Pagel [Pag90] qui affirme que "l’ordinateur est l’instrument de la complexité". est que. ensembles ou logiques flous. et surtout qui résoud tous les problèmes de la classe. et par voie de conséquence de tel ou tel problème. quelles sont les barrières fondamentales à faire sauter. la classe étant réputée infinie et le programme codé en un nombre fini de caractères. Le problème fondamental est précisément de dépasser ce modèle de base. C’est à dire ici. La théorie des machines abstraites. mais seulement en ce qu’il est la réalisation matérielle d’une machine abstraite. Faute de savoir aborder ces problèmes complexes autrement qu’avec nos ordinateurs. justement. Il s’avère par contre que pour certaines applications. les spécialistes ont introduit des concepts "flous". Il est par conséquent improbable qu’on en tire plus. automates finis (voir [Mar54. si on y regarde bien est au mieux un oxymore (voir [Lav91b]). les 1. Le problème encore une fois. mais bien au contraire un outil sur lequel l’homme se décharge de tâches qui. sont en termes de puissance de calcul strictement équivalents au modèle de base. Cette machine abstraite nous donne l’aune à laquelle mesurer la complexité de tel ou tel algorithme (concept qu’elle permet au passage de refonder). on peut considérer que : "L’ordinateur n’est donc à aucun degré un "cerveau électronique" ou une "machine intelligente". problèmes sociaux. entretien qui jette un pont entre activité mathématique et problèmes de société. Le raisonnement probabiliste semble central en la matière. se sont avérées non intelligentes". la probabilité qu’apparaisse un chiffre aberrant par rapport à l’algorithme codé par le programme. deus ex machina. pour bâtir des modèles susceptibles d’empêcher l’éclatement de la "bulle financière" (voir à ce sujet [Bou98]) et surtout de leur permettre d’en tirer un maximum de profit. la probabilité d’erreur tend vers 1. ne s’y trompent pas qui embauchent aujourd’hui des mathématiciens. On retrouve là la problématique de l’évolution. ou l’automate fini ne sont pas "les instruments de la complexité" car ils ne rendent pas compte de la même notion de 1. Et quelle est la caractéristique de cette transformation sinon la transformation aléatoire et la survie des possibles. Qu’est-ce qui fait qu’on passe (sur un laps de temps respectable) des bactéries à l’homo sapiens sapiens ? Qu’est-ce qui provoque le passage du simple 1 au complexe ? C’est le temps. aucun ni tous ne peuvent par conséquent générer une suite infinie. c’est la logique de l’hécatombe (voir [Dar59]). Maîtrise de la complexité d’un marché où la soit disant rationalité économique est celle expliquée par Darwin dans son oeuvre principale. sa taille. à la longueur du plus petit énoncé permettant de décrire (i. Or la suite ainsi générée n’est pas celle décrite par le programme. et si on fait tendre le temps vers l’infini. Si on laisse calculer un ordinateur jusqu’à ce qu’il s’arrête "naturellement". alors l’activité scientifique qui tend à exprimer par des lois générales la généricité de classes de plus en plus grandes de phénomènes. ce qui est complexe. le temps. de générer) cette suite. Le programme s’écrit en un nombre fini de symboles. en un nombre fini de 0 et de 1. mais aussi la mort massive et systématique de tous les autres. Si la complexité d’une suite de nombres se mesure. toute formalisation. croît avec le temps. et même au niveau exécutable. et il peut potentiellement générer une suite infinie. n’est-elle pas en ce sens une tentative de maîtrise de la complexité ? L’écriture d’un programme d’ordinateur.xviii Complexité et Algorithmique avancée milieux financiers. . qui génère des solutions à un problème est la manifestation du degré de complexité dudit problème. un paramètre est intervenu. à la façon de Kolmogorov. Pourtant aucun ordinateur n’a une vie infinie. N’est-ce pas là le cœur du débat sur la complexité ? Le temps et l’aléatoire ! C’est en partie pour cela que la machine de Turing. Pour autant qu’on soit capable de préciser ce terme. n’est-elle pas une tentative de lutter contre une apparente complexité intrinsèque des phénomènes naturels ? Toute formulation. ce que Darwin a si bien décrit (voir [Dar59]).e. vampires des temps modernes. alors chacune admet une notion de temps qui lui est propre. communications "asynchrones" qui ne ressortissent en rien au modèle de machine de Turing. On arrive quand même. Il faut alors revenir au temps des physiciens 1 . il faut s’affranchir d’un déterminisme qui confine au mécanisme. le nombre d’itérations élémentaires qu’elle effectue durant le calcul. Mais ce temps n’a plus de sens au niveau du réseau. mais pourtant inexistant sans eux. le temps est une variable endogène au système. "il n’y a rien de moins familier ou de moins facile que de penser correctement en matière de probabilités. si elles apparaissent un jour. Dans une machine de Turing (cf. de plus il n’y a pas place pour l’aléatoire. ni même leur prévision. sur des machines qui elles ne le sont pas. Si l’aléatoire ça se calcule comme nous le rappelle l’article précédemment cité. pour chaque machine. . utiliser l’aléatoire et la redondance. c’est. Là aussi. sauf peut-être à considérer la plus grande partie aliquote des temps de transmission des messages. c’est pourquoi nous avons consacré un chapitre à une esquisse de ce que pourraît être le 1. exogène à tout système physique particulier. C’est pourtant bien là que le bât blesse. Bui montre comment on peut aborder le problème. infra). Si chaque entité calculatoire est vue comme une machine de Turing. peu s’y sont risqués (voir [Lav95]) mais. La maîtrise de la complexité passe-t-elle par un déterminisme probabiliste ? A quand des machines (on ne peut plus parler alors d’ordi. conceptuellement c’est peu satisfaisant... il y a sûrement un saut cognitif à opérer.nateurs) probabilistes ? On commence tout juste à utiliser des algorithmes probabilistes. pas souhaitable) l’observation instantanée des états du système. D’autant plus si on veut prendre en compte les communications entre machines. Les machines quantiques. du au Professeur M. L’explosion combinatoire des exécutions possibles d’un programme parallèle sur un réseau distribué asynchrone rend quasiment impossible (et en tous cas.Préface xix temps. et plus particulièrement des réseaux d’entités calculatoires indépendantes communiquantes conduit par un chemin analogue à la complexité. la question est comment l’utiliser concrètement et de manière reproductible ? Le chapitre sur les algorithmes probabilistes."[Gou93]. L’apparition du parallélisme en informatique. permettraient de poser ces problèmes d’une façon complètement nouvelle. pour les besoins de la technique à faire rentrer la complexité distribuée dans un modèle théorique. Nous allons du simple au complexe (nous l’appellerons provisoirement ainsi). Lanton 30 septembre 2007 1. Venise 29 Août 1609. Le bagage nécessaire à l’abord est relativement faible. Nous ferons plus souvent appel à l’intuition qu’à la démonstration. je ne vous ai plus écrit faute de matière 2 . Computational complexity en anglais 2. C’est la compréhension profonde des concepts et notions employés qui nous intéresse. il nous semble. Galileo Galilei. Dans ce qui suit nous limiterons notre propos à l’abord de la complexité algorithmique (on dit aussi calculatoire 1 ). Depuis que j’ai reçu le vin que vous m’avez envoyé. La méthode de l’exposé est circulaire. La démonstration ne sera utilisée que lorsqu’elle apporte quelque chose à la compréhension. pas linéairement. la maîtrise des notations logiques. mais sans ostentation. approfondissant les concepts et les formalisant dès lors que le besoin s’en fait sentir. la maîtrise de la fonction logarithmique.L. mais pas avant si possible. volontairement. Un minimum de connaissances en calcul des probabilités. Très cher et honoré beau frère. doivent suffire. comme.xx Complexité et Algorithmique avancée calcul quantique sur une telle machine. Les mêmes notions sont traitées à différents moments. Nous faisons des mathématiques tout au long de ces pages. . I. l’est l’activité cognitive. Première partie Prolégomènes. histoires d’algorithmes . . Cette notion a été reformulée à plusieurs reprises dans l’histoire. le nom de Byrsa (peau). C’est la raison pour laquelle la ville de Carthage fut construite en arc de cercle. dit la légende. dans un premier temps. récemment découvert. De l’algorithme d’Euclide pour le PGCD. nous vient de Chine. mais aussi par le mathématicien Perse (ou plutôt originaire du pays de Khawarizm. en passant par le rôle de la ceinture de la reine Didon 1 dans la fondation de Carthage. Le roi du pays. Larbas. lui vendit un territoire aussi grand qu’elle pouvait enclore dans une lanière tirée de la peau d’un seul taureau. le plus ancien traité d’algorithmique. Les noms Al Khawarizmi et Al jabr sont devenus au cours du temps Algorithme et Algèbre qui sont maintenant passés dans le vocabulaire mathématique courant. à l’algorithme qui permet à Thésée de sortir du Labyrinthe. 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 Al Jabr w’al muqâbala (mettre bout à bout). . découvrit ainsi. Toutefois. Didon. ou Elissa qui vivait à Tyr s’enfuit en Tunisie. l’endroit précis où Didon posa le pied à la descente du bateau. La reine Didon. Carthage porta ainsi. à l’aide de sa ceinture que la figure géométrique qui donne une surface maximale pour un périmètre donné est le cercle. Elle obtint ainsi un territoire suffisant pour y bâtir une citadelle. L’existence d’un tel traité vient du fait que la gestion de l’empire L 1. le centre en étant . avec sa soeur Anna et un groupe d’amis. les traces dans la littérature comme dans l’imaginaire collectif sont nombreuses. par Euclide certes. En 186 avant notre ère un document intitulé Traité des neuf procédures recense les connaissances mathématiques de son époque en Chine.Chapitre 1 Histoires d’algorithmes a notion d’algorithme est connue depuis l’antiquité. Il ne semble pas que les mathématiciens chinois aient développé alors la géométrie au sens où les grecs l’ont fait. un nombre comme 10506 s’écrit-il : 1 5 6 Le zéro positionnel n’existe pas dans cette notation. le plus souvent d’un lecteur autorisé qui a laissé sa marque par l’intermédiaire de son tampon rouge sur la page. Plus encore. Il faut noter que les chinois utilisent de fait. depuis la plus haute antiquité. les textes sont présentés en colonnes.4 Complexité et Algorithmique avancée nécessitait des méthodes identiques de gestion et donc de comptage pour les différents madarins (i. ils ont développé des méthodes de résolution. par exemple. Cette page décrit la méthode de résolution des systèmes de deux équations linéaires à deux inconnues. lorsqu’il y a deux symboles. lire [Yab00]). il n’existe pas de mode opératoire pour les calculs. bien avant les grecs. du moins pour ce qu’on en sait.1 un fac similé est celle d’un traité du troisième siècle de notre ère qui est une recopie du traité des neuf procédures. Ainsi. il s’agit du texte original. souvent certes présentés de manière qui ne nous est pas familière mais efficace. ceci bien que les dits chinois aient développé une démonstration originale du théorème de Pythagore. l’écriture est verticale.e. solution tout à fait inconnue dans le reste du monde à cette époque. . visiblement par eux connu. Par contre les lettrés chinois ont développé l’art du calcul à un niveau inégalé à l’époque (pour plus amples informations. La page dont on peut voir ici dans la figure 1. en supposant (ce qui est faux) que les chinois aient utilisé les nombres indiens (dits aussi -à tort. alors qu’avec une notation non positionnelle comme celle des romains. Comme on peut le voir sur la figure. mais il est remplacé par une colonne vide.arabes). La disposition en colonnes permettant ce qu’on nomme la notation positionnelle des nombres qui donne le mode opératoire que nous connaissons. des "procédures" qui sont en fait des algorithmes. une notation positionnelle des nombres qui est due à leur façon de présenter les calculs. Cette disposition en colonne autorise la notation positionnelle. il s’agit d’un commentaire. Ainsi leur façon de calculer des volumes particuliers en les décomposant en volumes élémentaires connus préfigure le calcul intégral. Lorsque il y a un seul symbole par ligne dans la colonne. préfets) qui étaient en charge des régions dudit empire. 1 5 La notion naïve d’algorithme Aussi loin qu’on puisse remonter. les seconds préféraient aux astuces des méthodes systématiques de construction.1 – Une page du traité des 9 procédures . Figure 1. violemment critiqué lui aussi (comme Turing. l’un des plus brillants membres contemporain en est sans doute le logicien Frege. ce qui leur a valu aussi le nom moderne de constructivistes. les intuitionnistes et les algoristes. Les premiers cherchaient des démonstrations directes donnant des solutions à des problèmes posés stricto sensu. mais pour d’autres raisons) par Witgenstein dans son Tractatus logico-philosophicus. il y a deux écoles en mathématiques. Histoires d’algorithmes 1.Chapitre 1. l’informatique est la science du calcul effectif par opposition à la mathématique qui est elle la science du calcul. on dit aussi une classe ou une famille de problèmes. Pour l’exécution de chacune de ces opérations élémentaires. l’addition de deux grands nombres codés en numération décimale se décompose en une séquence d’opérations élémentaires. Les algorithmes les plus simples sont des règles selon lesquelles doivent être effectuées les quatre opérations arithmétiques élémentaires. Par exemple. au mieux. en un nombre fini d’étapes. • marque de la retenue sur le chiffre voisin à gauche . permettant ainsi de résoudre tous les problèmes d’un type donné. On voit bien la faiblesse du propos. Un algorithme y est vu comme une suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de données pour arriver. on ne peut le faire. On entend donc (en attendant une définition formelle) par algorithme une prescription précise qui dit d’exécuter dans un ordre déterminé certaines suites d’opérations. .6 Complexité et Algorithmique avancée La notion d’algorithme ressortit aux fondements même des mathématiques constructivistes. C’est sous cette forme que cette notion a émergé spontanément en mathématiques dans l’antiquité. 1. c’est au mieux un commentaire rapide tendant à expliciter le sens du mot. en caricaturant quelque peu. et cela indépendamment des données. Un algorithme étant une description de la suite des opérations à faire. si on veut additionner deux nombres transcendants. car. à un certain résultat. le calculateur ne s’intéresse qu’à deux chiffres à additionner. du moins dans notre système de numération. Ces opérations élémentaires sont de trois types : • écriture des chiffres correspondants de la somme . • les opérations sont effectuées de droite à gauche. La propriété de finitude des règles et des étapes est ici primordiale. En effet. Ainsi. que formellement. un algorithme d’addition permet de faire l’addition de deux nombres quelconques représentés par un nombre fini de chiffres 1 en partant des chiffres les plus à droite et en opérant de droite à gauche. la phrase que nous venons d’énoncer n’a rien d’une définition précise de la notion d’algorithme. la manière de le rédiger (on dit spécifier) dépendra du dispositif (homme ou machine) chargé de l’exécuter. . mais en fait. • considérer comme nombres. Histoires d’algorithmes 7 On pourrait aussi formuler des règles analogues pour les trois autres opérations arithmétiques. chacun des nombres donne le résultat. Le processus de décomposition en opérations élémentaires est loin d’avoir été poussé jusqu’au bout. • soustraire le second nombre du premier puis continuer en séquence . continuer en séquence . • si les deux nombres sont égaux. permuter les deux nombres puis continuer en séquence . il s’agit d’une opération complexe qui peut encore être décomposée en opérations élémentaires plus simples. Pour un jeune adolescent par exemple. comme il est habituel à l’époque. le calcul du PGCD de deux nombres entiers peut se ramener à une suite de soustractions de la façon suivante : • comparer les deux nombres puis continuer en séquence . elle est donnée sur un cas particulier mais sensé représenter la généralité.Chapitre 1. le calcul est terminé. Ainsi dans la règle 4. Toutefois elles comprennent un certain nombre de "non dits" importants.1. • si le premier nombre est plus petit que le second.2 Algorithme de l’équation quadratique L’ouvrage de Al Khavarizmi donne la méthode suivante pour résoudre les équations du second degré. ces règles sont facilement compréhensibles. le résultat de la soustraction et le nombre soustrait puis revenir en 1. des modes opératoires. le verbe soustraire semble aller de soi.1. mais. la résolution de l’équation : x2 + 10. C’est du reste ainsi que les enfants apprennent à effectuer les grandes opérations.1 L’algorithme d’Euclide Par exemple. Sinon. 1. La méthode est générale. 1.x = 39. x2 +b. Autrement dit. Tu l’ajoutes à trente-neuf. 2. En effet. Cela donnera soixante-quatre. revenons au texte : . Sa signification est que tout carré. si tu lui ajoutes l’équivalent de dix de ses racines [est tel que] cela atteindra trente-neuf. trouver le nombre entier x tel que : x2 + 10. et c’est cinq dans ce problème. Tu prends alors sa racine carré qui est huit et tu en retranches la moitié[du nombre] des racines qui est cinq.a Dans ce texte.8 Complexité et Algorithmique avancée Figure 1.c x= .2 – L’algorithme d’Al Khawarizmi pour résoudre l’équation du second degré . Tu le multiplies par lui-même et ce sera vingt-cinq. c’est comme lorsque tu dis : un carré et dix de ses racines valent trente-neuf dirhams.x = −c avec a = 1 et on retrouve la formule. Il reste trois et c’est la racine que tu cherche et le carré est neuf. Décryptons la méthode en la comparant à la formule classique : √ −b ± b2 − 4. l’équation est mise sous une forme normalisée : a. Un carré et dix de ses racines égale trente neuf.a.x = 39 La traduction du texte en arabe est la suivante [C+ 94] : Quant aux carrés et aux racines qui égalent le nombre. Son procédé de résolution consiste à diviser les racines par deux. .. alors on retrouve la formule classique. tous les nombres ayant un signe.1. Ainsi. pour dire qu’il n’y a rien . on a choisi le système de numération qui présentait le plus d’intérêt eu égard aux performances attendues.) diviser les racines par deux soit ici b/2 . Le système peut être additif comme chez les Romains. le zéro dit de position. Il s’agit là du premier algorithme connu de résolution des équations du second degré. il n’existe pas de mode opératoire général pour multiplier deux nombres écrits en chiffres romains. Le zéro. 1. tu le multiplies par lui même soit ici b2 /4 2 tu l’ajoutes à trente neuf (i.3 Un algorithme qui vient de loin On remarquera par ailleurs que les modes opératoires. dont il et question ici. à −c soit p ici b /4 − c) . On remarquera au passage que la notion de racine négative n’était alors pas connue. et qui au strict niveau du binaire dit "absolu" se décline en + 0 et −0 à ce niveau système. A contrario. Histoires d’algorithmes • • • • • 9 (. Attention. symbole numérique. au temps des Séleucides.Chapitre 1. le système binaire proposé par Leibniz jusqu’à nouvel ordre. Ce sont ces mêmes Sumériens qui inventeront le zéro positionnel 1 .c 2 et si on se souvient que dans la standardisation de l’écriture des équations quadratiques telle que donnée par le texte on a toujours a = 1. nous livrent les plus anciens algorithmes numériques 1.e. p tu retranches la moitié du nombre des racines soit b2 /4 − c − b/2. lorsqu’il s’est agi d’automatiser les calculs sur des machines. et le zéro des informaticiens qui n’est pas rien. 4 siècles avant notre ère. les algorithmes numériques. il peut comporter ou non le zéro (pas de zéro chez les Romains ni les Chinois) il peut être une combinaison d’additif et de positionnel comme chez les Sumériens. sont étroitement dépendants des systèmes de numération dans lesquels ils sont effectués. soit en fait √ b − b2 − 4. 3 millénaires avant notre ère. positionnel comme le nôtre. il ya au moins trois zéros. tu prends alors sa racine carrée soit b2 /4 − c . Ce sont eux aussi qui.. avec les chinois. ou celui des chinois. Former l’inverse de u. ce qui ne facilite guère les calculs. soit u0 . en particulier pour le calcul de l’inverse de nombres à l’aide de tables. ils nous ont du reste transmis notre écriture des mesures des heures. L’inverse d’un nombre régulier est régulier. Multiplier u0 par y 0 . on le note y 0 . Ces nombres sont de la forme 2p 3q 5r où p. y étant lui même régulier et d’inverse connu. on a : . Ajouter 1 à t. Multiplier y 0 par z. soit u. Le texte Sumérien peut se comprendre ainsi : Quel est l’inverse du nombre x ? La méthode est la suivante.1. soit t le résultat. Ceci d’autant plus qu’à l’époque on ne savait pas traiter des nombres dont l’écriture n’était pas finie en termes de symboles. on opère en deux étapes : • Calcul de l’inverse du diviseur. minutes et secondes ainsi que nos mesures d’angles et d’arcs de cercle . 13. v est le nombre cherché ! Exemple 1. q. Pour effectuer des divisions. mais c est ici en décimal.1 Soit le nombre [2. Ainsi un nombre qui s’écrit chez les sumériens abc est en fait a ∗ 602 + b ∗ 60 + c . soit v le résultat. L’idée de base est d’utiliser la formule : 1 = x+y 1 y 1 1 ∗ ∗z+1 y Ainsi peut on calculer l’inverse d’un nombre régulier x lorsqu’on sait l’écrire comme somme de deux nombres y et z . Former l’inverse de y (le lire dans une table). 20] (c’est à dire 2∗602 +13∗60+20). En conservant cette écriture. Les nombres dont l’inverse possède une écriture sexagésimale finie prennent alors une importance particulière. Les nombres dont l’inverse possède une écriture sexagésimale finie sont dits réguliers par les historiens des mathématiques. r sont des entiers évidemment.10 Complexité et Algorithmique avancée connus. • Multiplication du dividende par l’inverse du diviseur. Le système de numération des Sumériens est une composition de sexagésimal et de décimal. mais la fiction romanesque aidant. il y a une précaution à prendre dans la lecture de ces nombres avec notre système de numération. 20] + [2. On trouvera une description simple et complète de cet algorithme dans l’ouvrage L’homme et les Techniques aux éditions Messidor/La Farandole. ils s’en sortent quand même. Thésée applique correctement l’algorithme. u = t + 1 = 18 ∗ [2. 1991. Par conséquent l’inverse de x est égal à 18x[1. 30]. L’inverse de x est égal au produit des inverses de y et de u avec la relation : u = t + 1 = 1/y ∗ 1. 1. 10] soit x = y + z par identification terme à terme. ce qui n’est pas le cas de nos moines. Thésée voulant délivrer Athènes du tribut de chair humaine que la Cité doit chaque année au Roi Minos. Histoires d’algorithmes 11 [2.Chapitre 1. Autre exemple.pas encore pour les tablettes évoquées ici . d’Umberto Ecco. 3. En fait il n’y a pas . et il faut faire d’autant plus attention aux puissances de 60 concernées qui peuvent aussi être négatives.u Pour notre exemple. se porte volontaire pour aller en 1. donné par une table standard est [1. Tablette VAT 6505 du musée de Berlin pour les calculs. l’algorithme dit algorithme du Labyrinthe 3 . y est un nombre régulier dont l’inverse est 18 (donné par une table standard). Attention. certainement le plus ancien algorithme non numérique connu à ce jour et relaté dans l’Énéide. 20] = [3. Le nombre u est régulier parce qu’il est égal à x/y et que x et y sont réguliers. 30] = 27 1 . 2.1. L’inverse de u. Heureusement pour lui. tablette A06456 du musée du Louvre pour les tables d’inverses.de zéro. 10] + 1 = 39 + 1 = 40.4 L’algorithme du Labyrinthe Dans le roman Le nom de la rose. Les tablettes des scribes nous ont transmis ces procédés de calcul 2 . . les héros sont à un moment perdus dans une bibliothèque labyrinthique et ne peuvent retrouver leur chemin que grâce à l’application de l’algorithme déjà utilisé par Thésée. 13. environ 2000 ans avant notre ère. 12 Complexité et Algorithmique avancée Crête et entrer dans l’obscur Labyrinthe construit par Dédale et y tuer le 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 le Minotaure s’il y est, qu’il le tue et ressorte pour retrouver Ariane, fille de Minos 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 une extrémité (d’où l’expression toujours usitée de "fil d’Ariane"), et "une couronne de lumière". En fait ce n’est pas suffisant, comme nous l’allons voir, 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, elle n’assure en rien à elle seule le parcours exhaustif du Labyrinthe pour y trouver le Minotaure. Pour pouvoir parcourir le Labyrinthe sans s’y perdre, et en étant sûr d’en examiner tous les couloirs et toutes les places, il faut établir des règles de parcours qui sont les suivantes : • Déroulement du fil Passage de la place considérée à une place contigüe par un couloir libre (i.e. non encore parcouru par Thésée). Après ce passage, au cours duquel le fil est déroulé le long du couloir, le couloir est considéré comme traversé. • Enroulement du fil Retour de la place considérée à une place contigüe par le dernier couloir traversé. Le fil d’Ariane qui était déroulé le long de ce couloir est alors enroulé et le couloir est dit examiné. C’est alors que la craie (ou tout autre moyen de marquage) est nécessaire. Thésée marque les couloirs examinés, ce qui lui permet de les distinguer des libres. Les couloirs traversés sont distingués par le fait que le fil y est déroulé. Le comportement de Thésée en une place dépend de la situation qu’il y 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 semble n’avoir pas connu la guerre pendant de nombreux siècles. Chapitre 1. Histoires d’algorithmes 13 E I F D A H C B Figure 1.3 – Labyrinthe • Couloir libre. De la place considérée, on peut sortir par un couloir libre 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 : 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, A figurant l’entrée du Labyrinthe (A comme Ariane) et F figurant la place où 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 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 étant invincible, il vient à bout du monstre. Pour revenir à Ariane, il ne reste plus alors à Thésée qu’à ré-enrouler le fil. On remarquera qu’avec cet algorithme, lorsque le Labyrinthe est connexe (i.e. il est en un seul "morceau"), on sait si le Minotaure y réside ou non. En effet, dans le pire des cas pour la recherche, le Minotaure n’est pas dans le Labyrinthe. La méthode de parcours donnée ici nous permet de le savoir. Il se produit au bout d’un temps fini - car le Labyrinthe comporte un nombre fini de couloirs et de places, que la longueur des couloirs est finie 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 cas traité ici. Le Labyrinthe a été entièrement exploré, on peut conclure que le minotaure n’y est pas. La craie ou tout instrument de marquage des couloirs 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’en rendre compte. Du point de vue strictement probabiliste, Thésée sortirait aussi du Labyrinthe avec une probabilité non nulle, mais l’espérance 16 Complexité et Algorithmique avancée mathématique de temps associée serait prohibitive si le Labyrinthe est assez grand. Dans cet algorithme encore, on a essayé à chaque fois de codifier les actions à accomplir sans laisser de place au hasard 1 et on a décomposé chaque action en moments élémentaires. Là encore, on aurait pu aller plus loin dans la décomposition. Remarque : L’algorithme permet de résoudre le problème, mais le retour à 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. Deuxième partie Tour d’horizon rapide • vous vous demandez si c’est bien un problème . P 1. plusieurs attitudes peuvent être adoptées : • vous cherchez directement à le résoudre . Dire que votre problème est intraitable 1 en temps raisonnable signifie en les termes que nous préciserons dans les chapitres qui suivent. Dit en d’autres termes. on ne connaît pas d’algorithme dont le temps de calcul varie en fonction polynomiale de la taille des données pour résoudre ce problème. Vous vous posez alors la question des moyens à mettre en œuvre pour pouvoir le résoudre. il vous faut préciser ce que raisonnable signifie. en espace. dès lors que le-dit problème atteint une taille relativement modeste.Chapitre 2 Un rapide tour d’horizon lacé devant un problème à résoudre. Pour ce faire. • considérant que c’est bien un problème. Intractable en anglais . en argent. vous pouvez être amené à montrer qu’il n’est pas raisonnable de vouloir écrire un programme de résolution dudit problème. c’est-à-dire combien ça va coûter. C’est ce dont nous traitons ici. il y a là aussi deux attitudes possibles : – vous vous contentez de savoir si le problème est résoluble -ou non . Dans cette dernière hypothèse. en temps. – vous voulez une solution. qu’on ne peut pas écrire un programme d’ordinateur permettant de résoudre ce problème dans des délais acceptables. ∗ résolution de cas particuliers . On imagine facilement un algorithme dont le temps de calcul est linéaire 2 en temps par rapport à la taille de la liste. on peut prendre deux exemples d’algorithmes. ∗ solution -approchée . formellement.2. rechercher si 1838987 fait partie de la liste.2 Deux exemples Pour illustrer le propos. – utiliser quand même l’algorithme de résolution du cas général.e. 1. ce que cela signifie 2. Exemple 2. non sinon. ∗ utilisation d’arguments probabilistes pour atteindre l’optimum avec une certaine probabilité (méthodes de Monte-Carlo. S’il s’agissait d’une liste déjà triée.1 (Un algorithme polynomial en temps) Soit à résoudre le problème suivant : Étant donnée une liste de nombres entiers. 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ème dans le cas général .20 Complexité et Algorithmique avancée 2. ∗ solution "acceptable" . polynomial en temps 1 ) ∗ pour un problème proche par relaxation de certaines contraintes . 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. ou de Las Vegas) . le temps serait en log n . Il s’agit de comparer un à un tous les éléments de la liste à 1838987 et de répondre oui si on le trouve. ∗ approximation en lieu et place de la solution optimale . mais sur des tailles de données suffisamment petites pour que le temps de calcul ne devienne pas prohibitif 2.1 Une stratégie de résolution Pour aborder notre problème. Nous préciserons plus loin. • essayer d’autres méthodes de résolution : – rechercher un algorithme efficace (i. que sa valeur soit égale à 1).STOP FINSI FINPOUR ECRIRE non END RECHLIST +++++++++++++++++++++++++++++++++++++++++++++++ Il est ici évident que cet algorithme ne génère au plus que a × n . c’est-à-dire. l’algorithme du labyrinthe exposé dans le paragraphe précédent (voir 1.e. Pour que l’expression soit satisfaite (i. que l’algorithme calcule en temps polynomial. dite sous forme canonique : SAT = (xi1 ∨ xi2 ∨ .. les opérations élémentaires en question s’exécutant en temps constant. L’algorithme nécessite ici 2n opérations élémentaires. . n ∈ N ∗ . ∧ (xk1 ∨ xk2 ∨ ... pas d’autre solution connue que d’essayer toutes les affectations possibles des valeurs {0.. dans le cas général. Un rapide tour d’horizon 21 +++++++++++++++++++++++++++++++++++++++++++++++ BEGIN RECHLIST POUR i DE 1 A n SI Liste(i) = 1838987 ECRIRE oui.1. a ∈ R∗ (où n est le nombre d’éléments de la liste et a une constante liée au temps de calcul élémentaire) itérations élémentaires. du type suivant (toute expression booléenne peut s’y ramener). toutes les possibilités doivent être examinées. mais les affectations de valeurs sur une clause retentissent sur les autres.Chapitre 2. ∧ (xj1 ∨ xj2 ∨ . 1} aux variables de cette fonction telle que l’expression prenne la valeur 1. dans le pire des cas.2 (Un algorithme non polynomial en temps) Soit à résoudre le problème suivant : Étant donnée une expression booléenne. On aurait alors l’algorithme dit de Trémeaux de parcours d’un graphe.xim ) ∧ . On aurait pu prendre aussi comme exemple d’algorithme polynomial.2.4).xkp ) dire s’il existe une affectation de valeurs {0. 1} aux variables dans le pire des cas...xjn ) ∧ . Exemple 2. il faut et il suffit que chaque clause soit satisfaite.. Il n’y a.. 1 P ⊆ NP Preuve 2. Nous verrons par la suite que dans quelques cas particuliers. la vérification peut aussi en être faite en temps polynomial. deux cas sont à examiner : 1. Elle devient : sommes-nous en mesure de fournir un algorithme qui vérifie cette assertion en temps polynomial ? La réponse est oui et elle définit ainsi une classe de problèmes. Les problèmes résolubles par des algorithmes en temps polynomial forment la classe P . L’un des grands problèmes de l’algorithmique est de savoir s’il y a égalité entre ces classes : P = N P ? OU P 6= N P ? Pour répondre à cette question. alors que la classe N P est la classe des problèmes pour lesquels la solution peut être vérifiée en temps polynomial.22 Complexité et Algorithmique avancée Cet algorithme nécessite 2n opérations élémentaires. que nous appelons N P dont on peut vérifier le résultat en temps polynomial. abréviation de SATisfiabilité dans le cas général 1 2. Il nous faut alors vérifier ce dire.4 La classe N P La classe P est la classe des problèmes qui peuvent être résolus en temps polynomial. La question maintenant s’est donc déplacée. il existe des algorithmes en temps polynomial. si un algorithme fournit une solution en temps polynomial.3.1 Évident. 2. On ne connaît pas de meilleur algorithme pour résoudre ce problème connu sous le nom SAT. et on a donc : Théorème 2. Bien évidemment.3 Les classes P et N P Supposons que quelqu’un vienne proclamer qu’il peut donner une suite binaire de longueur n qui satisfasse SAT. .3. Lup59] ont identifié le problème SAT comme répondant à la question et [Coo71. Le mérite de Lévine et Cook.2 (Conjecture de Lupanov-Yablonski) . Pour ce faire il convient de se doter d’outils d’identification adéquats. c’est-à-dire que N P ⊆ P . Un rapide tour d’horizon 23 • Démontrer que P = N P Il faut alors montrer que tout problème de N P peut être résolu par un algorithme polynomial. est d’en avoir déduit la théorie de la N P−complétude et d’avoir ainsi identifié la classe des problèmes dits N PC qui est centrale en théorie de la complexité. Yab59b].Chapitre 2. et plus précisément : P ⊂ NP Si on fait cette conjecture. pour continuer cette étude on fait la conjecture suivante : Conjecture 2. il faut identifier les autres problèmes.4 peut être vérifié. et il n’est pas mince. A partir de cette conjecture. Bien qu’attribuée le plus souvent à Cook [Coo71] dans la littérature occidentale. Pour ce faire il faut trouver au moins un problème P de N P qui ne soit pas dans P. On ne sait pas le démontrer mais [Yab59a. c’est qu’on a de bonnes raisons de penser que le cas 2. cette conjecture date de 1959. et il faut démontrer qu’il n’existe pas d’algorithme permettant de résoudre ce problème P en temps polynomial. Le problème de la satisfiabilité d’une expression booléenne donnée sous forme normale conjonctive. Ainsi en est-il de la réductibilité polynomiale. appelé SAT. Yab59a. Conjecture 2. qui possèdent les mêmes propriétés que SAT. On ne sait faire ni l’un ni l’autre ! Toutefois. • démontrer que P = 6 N P. Lév73a] ont établi la théorie de la classe des problèmes N P.4.4. .1 Réductibilité polynomiale Le principe de réductibilité polynomiale est basé sur un théorème d’algèbre qui nous dit : 1. revisitée en 1963 par O. n’admet pas d’algorithme polynomial de résolution dans sa forme générale 1 [Lup59. Lupanov [Lup63] qui l’utilise pour définir déja des classes de complexité.4.1 P 6= N P. 2. s’ils existent. on doit avoir après réécriture : p1 ≤ Pol{p2 } où Pol{} désigne un polynôme.24 Complexité et Algorithmique avancée Théorème 2. Preuve 2. quel qu’il soit. Définition 2. et seulement si toute 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 de façon polynomiale. En notant p1 la taille d’une instance de P1 et p2 celle d’une instance de P2 . à savoir que tout problème de N P est polynomialement réductible à P. alors : P = NP .4.4. Intuitivement.1 (Composition des polynômes) Un polynôme de polynômes est un polynôme. alors il en existe aussi un qui résout P1 en temps polynomial (l’exposant du terme de plus haut degré du polynôme pouvant être très différent). et seulement si : • P est dans N P et . On a alors le théorème suivant qui structure toute l’étude : Théorème 2.4. On peut maintenant introduire la classe N PC.4.4.1 (Classe N PC) Un problème P sera dit appartenant à la classe N PC si. on dira qu’un problème P1 est réductible polynomialement à un problème P2 . s’il existe un problème de N P qui n’est pas résoluble en temps polynomial alors : P 6= N P et aucun problème dans N PC n’est résoluble en temps polynomial. Ce théorème permet de mettre en évidence le caractère particulier de SAT. • ∀P∗ ∈ N P . si il existe un algorithme qui résout P2 en temps polynomial. sinon. qu’on notera alors P1 ∝ P2 si. 2.2 La classe N PC Ainsi. . P∗ ∝ P.1 Se démontre par récurrence sur le corps des polynômes.2 S’il existe un problème de N PC résoluble en temps polynomial. Pour mener à bien l’étude de cet ouvrage. il va nous falloir préciser les concepts introduits dans ce chapitre.4.2.5 Conclusion Cette présentation succinte des concepts ne saurait en constituer un exposé tant soit peu acceptable au plan scientifique.4.Chapitre 2. • le concept de "temps de calcul" . des pré-requis mathématiques sont nécessaires que nous introduirons. mais il nous faut aussi donner une base référentielle aux notions et concepts que nous allons manipuler. • les concepts de mot et de langage. Écrire sur la complexité en informatique nécessite de préciser et d’établir clairement quelques concepts paradigmatiques comme : • les concepts de calcul et de machine . par conséquent P 6= N P. Pour cela. Pour ce faire. • les concepts de problème et de solution . Un rapide tour d’horizon 25 Cook et Lévine [Coo71. 2. Lév73a].2 conjecturent que SAT répond à la deuxième partie du théorème 2. il faut définir des objets mathématiques auxquels se référer et que nous allons introduire ci-après tout en exposant aussi les notions mathématiques de base qui permettent de maîtriser le sujet. • le concept d’algorithme . Et que. . comme nous l’avons vu en 2. . commune à toutes les procédures. alors il existe une C 1. A la fin du XIXeme siècle (en 1900). 0 et 1.Chapitre 3 La Machine de Turing 3. on ne peut exhiber aucun contre exemple. depuis que Leibniz (1646-1716) avait montré que tout pouvait être décrit avec seulement deux symboles. En mathématique. on devait pouvoir atteindre une forme élémentaire.1 La Machine de Turing. un langage élémentaire universel en quelque sorte permettant de décrire toute procédure opératoire. modèle d’algorithme omme nous l’avons vu dans les énoncés précédents. remarqué depuis longtemps qui a guidé les chercheurs. Turing en particulier. bien sûr. L’idée en fait était "en l’air" depuis longtemps. on peut pousser plus loin encore la description de la procédure. . • si la première partie de la conjecture est vraie. et sur lequel. on appelle conjecture un énoncé qu’on a toutes les raisons de croire vrai mais qu’on ne sait pas démontrer. le mathématicien Hilbert au congrès des mathématiciens réunis à Paris pour la fin du siècle et surtout pour 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ème de mathématiques . pour la soustraction dans l’algorithme d’Euclide par exemple. Existe-t-il une procédure automatique qui résolve tous les problèmes de mathématiques les uns après les autres ? 2. C’est ce fait. L’idée directrice étant qu’à décomposer le plus possible. C’est le 28 mai 1936 que Alan Mathison Turing apporta la réponse définitive (pour l’instant) aux conjectures de Hilbert. Turing ne s’intéressait pas directement à ces conjectures. en particulier les théorèmes de Gödel sur la complétude des théories formelles qui furent l’un des premiers éléments de réponse à Hilbert. On imagine l’émoi que provoqua cette conjecture et donc les travaux qu’elle suscita. précisément par rapport à la génération des réels mais publié officiellement seulement en 1949. non géométrique. comme par exemple π ou e. dans le cadre de la théorie de la calculabilité. une démonstration du théorème d’incomplétude de Gödel. . toutes et toujours les mêmes. c’est-à-dire en fait. on doit donner l’algorithme permettant de les générer. celui-ci devenant alors simplement l’ordre dans lequel les dites opérations élémentaires devaient être exécutées. une part significative des développements modernes de la logique viennent de travaux liés à cette conjecture. ou si on construit un symbole spécial le désignant. si on lui donne un nom. un nombre transcendant (non entier. l’édition allemande étant très peu connue. il semble que l’idée d’une machine théorique ait été avancé bien avant par Hermann Weyl [Wey49] 1 mais dans un contexte quelque peu différent . En effet. Pour pouvoir utiliser les nombres transcendants. Nous donnerons. 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.28 Complexité et Algorithmique avancée façon unique de résoudre tout problème de mathématique. modèle de tout calcul qui porte désormais le nom de Machine de Turing et sur les principes de laquelle sont fondés tous les ordinateurs modernes. seul changeant l’ordre dans lequel elles seraient exécutées. Pour ce faire il avait conçu une «machine» théorique. on doit en fait donner une méthode permettant de calculer tout ou partie de leurs décimales. non rationnel. Là aussi. Ceci permettait la refondation moderne du concept d’algorithme. en particulier. mais plutôt à la représentation des nombres réels. C’est en travaillant sur une redéfinition du concept d’algorithme que Turing en est venu à résoudre la double conjecture de Hilbert. non complexe) n’est représentable par un nombre fini de symboles que si on donne la façon d’obtenir la suite infinie des chiffres qui le composent. En fait. L’idée de base est de ramener tout calcul. Il semble que Weyl ait discuté dés 1927 sur une machine théorique basée sur le paradoxe dit de Zénon. toute action à une série d’actions élémentaires. . . souvent appelé environnement et composé d’un nombre fini de symboles. S2 . La Machine de Turing 29 rations élémentaires est menée aux limites du possible. S1 . même si les machines actuelles ont des mémoires de très grande capacité. la structure logique du processus est renforcée et mise en valeur et elle prend un aspect standard et systématique qui lui donne sa puissance théorique. On doit introduire un symbole de l’alphabet extérieur représentant le vide. mais en même temps. De même nous dirons d’une case vide qu’elle contient le signe vide. Aucune machine réelle ne peut avoir une mémoire illimitée. on ne peut. on prendra ici Λ . C’est là l’un des aspects abstraits de la Machine de Turing.1. Cette décomposition allonge les processus. La présence de ce symbole dans une case signifiant qu’elle est vide. La Machine de Turing est en fait un schéma idéal reflétant la possibilité théorique d’extension non bornée de la mémoire. L’introduction ("l’écriture") de ce symbole dans une case du ruban correspond en fait à l’effacement du symbole s’y trouvant précédemment. L’introduction du signe vide permet même de . . Sk Avec ces symboles. – La mémoire d’une Machine de Turing est formée par un ruban illimité dans les deux sens et divisé en cases. Une Machine de Turing comprend trois types d’alphabets : 1. . Par convention. à un instant donné trouver plus d’un symbole de l’alphabet extérieur.Chapitre 3. Dans une case du ruban. Un alphabet extérieur qui lui permet de communiquer avec le monde extérieur.1 Description détaillée d’une Machine de Turing élémentaire Nous pouvons maintenant passer à une description détaillée d’une Machine de Turing élémentaire et de son fonctionnement. l’environnement code l’information fournie à la machine et la machine code l’information qu’elle élabore. Ainsi en est-il par exemple de l’addition décimale qui peut être encore décomposée en une suite d’opérations plus simples. 3. d’un symbole de l’alphabet de mouvement. droite. suivant les auteurs. spécifiant ainsi les mouvements de la tête de lecture par rapport au ruban. Ces mouvements (G. On l’appelle aussi espace d’états ou encore alphabet d’états. D. Nous les noterons : q0 . . D) ont toujours lieu d’une case et d’une seule à la fois. 3. . L’alphabet de mouvement composé des symboles N. L’alphabet dit intérieur qui décrit des "états" logiques du bloc de calcul de la machine. un triplet.1 – Machine de Turing . 2. neutre.30 Complexité et Algorithmique avancée dire que dans toute case du ruban est inscrit un et un seul symbole de l’alphabet extérieur. On peut donner une représentation graphique d’une Machine de Turing. gauche. G signifiant respectivement. constitué dans l’ordre d’un symbole de l’alphabet extérieur. . d’un symbole de l’alphabet d’état.1 L I I q0 L L Q L I LDq1 L Q I I q1 Q L I L L IGq2 q2 LDq0 QDq1 QGq2 IDq1 IGq2 Figure 3. qm La Machine de Turing fait correspondre à un couple composé dans l’ordre d’un symbole de l’alphabet extérieur et d’un symbole de l’alphabet intérieur. comme dans la figure 3. . q1 . Si elle lit ∗ alors elle efface ce symbole et s’arrête (le symbole ! signifiant l’arrêt). ce qui est particulièrement lourd. l’alphabet intérieur trois aussi et l’alphabet des déplacements trois également. provoque un décalage à droite et reste dans l’état q1 et ainsi de suite comme illustré sur la figure 3. la tête de lecture lit I sur le ruban et le bloc logique est dans l’état q1 . décale sa tête de lecture vers la gauche et passe en l’état q2 et elle entame une série de décalages à gauche jusqu’à de nouveau rencontrer un vide (i. et un bloc logique qui applique la correspondance décrite ci-dessus.1 il s’agit d’une série de décalages à droite jusqu’à ce que la machine lise un symbole Λ sur le ruban. Elle inscrit alors un I.d. le lecteur pourra le vérifier aisément en considérant que sur la figure.1 effectue une addition 1 . À l’itération suivante.e. il y a beaucoup plus simple pour faire effectuer une addition à une machine de Turing. On peut obtenir le même résultat en Max(m. Cette façon de faire est loin d’être optimale. La machine de la figure 3. elle efface ce qu’il y avait dans la case lue) puis elle décale la tête de lecture sur la droite. Le tableau à double entrée du bloc logique de la Machine de Turing 1. Soit encore 2 ∗ (m + n + 1) itérations pour additionner deux nombres m et n. la machine est en position de départ et que son état -initial ici. l’alphabet extérieur comprend trois symboles. si sous la tête de lecture apparaît le symbole I alors que le bloc logique est en l’état q0 la machine écrit sur la bande Λ (c.e Λ) sur le ruban.Chapitre 3.est q0 . la machine inscrit I dans la case lue (i.a. elle se recale alors à droite et passe dans l’état q0 et elle réitère tant qu’en l’état q0 elle lit un I. n) itérations en modifiant la position de départ. La Machine de Turing 31 La machine comprend alors une tête de lecture/écriture. en vrai. Ainsi. elle n’écrit rien puisqu’il y a déjà I). qu’éventuellement. . on trouvera quel est l’état final. Dans cet exemple. 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). mais ce n’est pas le propos ici. ce qui est nettement plus intéressant. Si on mesure la difficulté d’exécution d’un algorithme au nombre d’itérations nécessaires à la Machine de Turing associée pour passer des données du problème à résoudre et de la position de départ à la solution du dit problème. et le bloc logique passe en l’état q1 . soit sur l’exemple 12 itérations. la table à double entrée qui constitue le schème de fonctionnement de la machine donne la marche à suivre : Exemple 3.1. De cette façon. Sur la figure 3. D. a pour objet de ses recherches tous les schèmes fonctionnels de Turing (toutes les machines de Turing) possibles. l’algorithmique. qui n’est pas une notion mathématique précise. D’un côté. il est question ici de tout algorithme c’est à dire de la notion générale d’algorithme. Au démarrage. Nous pouvons maintenant revenir sur la notion d’algorithme et essayer de la préciser. la théorie des algorithmes répond : Tout algorithme peut être donné par un schème fonctionnel de Turing et exécuté par la Machine de Turing correspondante. Iq0 → Λ. Si cela n’est pas encore une définition formelle. 3.1 (Fonctionnement) Voir la figure 3. mais vague de « tout algorithme » à l’aide d’un concept plus particulier mais bien défini. et leurs propriétés. D. et de l’autre côté. q1 I ∆q1 . on voit comment on s’en rapproche. On cherche à préciser la notion générale. la théorie des algorithmes.1. la machine de Turing est en position de départ. À quel point les notions de Machine de Turing et de schème de Turing sont elles générales ? À cela. celui de schème fonctionnel de Turing (et son exécution par une Machine de Turing).1.1. q1 Λ Λ I I ∆q0 ∗ I I I Λ Λ Λ Λ Λ ∗ I I I Λ Λ Iq1 → I. l’index est sous la case la plus à gauche contenant un bâtonnet et la machine est dans l’état q0 . il est question de schème d’une Machine de Turing qui est un concept mathématique précis. l’état de la machine est q0 .32 Complexité et Algorithmique avancée s’appelle un schème fonctionnel.2 Précision du concept d’algorithme Le caractère systématique du fonctionnement d’une Machine de Turing conduit à se poser la question de la systématisation de son utilisation pour exécuter des algorithmes. G q2 Λ Λ Λ I ∗ ∆q .... Voyons maintenant comment s’opère l’arrêt de la machine. D. Après avoir effacé le bâtonnet (Iq0 → ΛDq1 ) et effectué donc une nouvelle série de déplacements de gauche à droite jusqu’à trouver une . 1 Λq2 → Λ. D. D q0 Λ Λ Λ I ∆q1 ∗ I Là.Chapitre 3. on retrouve la position initiale mais avec un bâtonnet de moins qu’initialement du côté gauche de l’astérisque et un bâtonnet de plus du côté droit. G q2 .. q1 Λ Λ Λ I ∗ I I I Λ Λ I I ∆q1 I Λ Λ ∆q1 Iq1 → I. Après une série de décalages à droite..... G q2 Λ Λ Λ I ∗ I I I Λ Λ ∆q1 Λ Λ Λ I ∗ I I I I ∆q1 Λ I I I I Λ I I I Λ Iq1 → I. La Machine de Turing 33 ∗q1 → ∗. Λq1 → I. ∗q2 → ∗. q1 Λ Λ Λ I ∗ . Cette addition consiste donc à "transporter" un bâtonnet de la gauche vers la droite. Il n’est pas absolument nécessaire d’introduire les symboles oui 1. Il suffit que la position de départ soit donnée. la machine inscrit dans la case en question un nouveau bâtonnet Λq1 → I. La machine est alors dans la configuration suivante : Λ Λ Λ Λ ∗ I I I I I ∆q0 Ainsi la machine est revenue en position de départ en l’état q0 . une machine de Turing M sera considérée comme étant un quadruplet M = (Q. On considère pour simplifier que Σ contient un symbole spécial 1 Λ qui marque l’absence de symbole. mais cela est superfétatoire. Σ. 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.34 Complexité et Algorithmique avancée case vide (i. avec : Q ∩ Σ = ∅. le Schème) : ! est le symbole de l’arrêt. On utilise pour ce faire.e.e.2 Un peu de formalisme Le concept de machine de Turing étant désormais introduit. q0 ∈ Q étant l’état initial. contenant le symbole Λ). et non est l’état de rejet. oui est l’état d’acceptation. Certains auteurs en introduisent un deuxième. conventionnellement. contenant le symbole Λ).e. G q2 et entame une nouvelle série de décalages à gauche en état q2 jusqu’à trouver la première case vide à gauche (i. δ est alors la fonction de transition (i. . on peut le formaliser un peu plus. δ. Σ est l’alphabet extérieur de M . Formellement. ou le symbole blanc. q0 ) où Q est l’alphabet d’états. ψ qui est alors le premier symbole à lire. Le processus continuerait ainsi indéfiniment si l’arrêt n’était pas prévu. Ici aprés encore une boucle d’exécution. le symbole " !". Soit ici : ∗q0 → Λ! 3. L’introduction de ces deux symboles est par contre utile pour développer la théorie de la complexité car elle permet d’introduire le concept de problème de décision qui donne un façon standard de présenter les choses. . . . STOP) Cette machine décale la tête de lecture d’une case vers la gauche et s’arrête. ←. q0 . . q1 . les états sont q0 et q1 . . . Les symboles →. Cette machine lit la case sous sa tête de lecture écriture et s’arrête. G). . . Sn . Si .3. . . l} 3. q1 . la stagnation. n). . . 3. . S1 . q1 ) → (S1 . . q0 ) → (Sj . Si . . non}} × Σ × {→.2 Machine "tout à gauche". n) (Sk . . . La Machine de Turing 35 et non pour construire des machines de Turing élémentaires comme nous allons le faire. . . oui. q2 . le décalage à droite de la tête de lecture/écriture de la machine. j = 1.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 . 3. ←. le décalage à gauche. . q2 Actions : (Si . . . L’action de la machine se résume alors à : (Si . . l représentant respectivement. Sn Etats : q0 . .3. Q × Σ → {Q ∪ { !. S1 . STOP)(i = 0. q0 ) → (Si .Chapitre 3. machine "tout à droite" Symboles S0 . (i.3 Machines de Turing élémentaires Une façon de construire des machines complexes est de commencer par se doter d’un certain nombre de machines élémentaires et du moyen de les combiner entre elles (voir [Vol85]). . STOP) ou ! Cette machine remplace le symbole dans la case lue par 1 et s’arrête. q1 . q1 ) → (S1 . Exercice 1 Écrire le schème d’une machine de Turing qui cherche un 1 sur le ruban sachant qu’elle démarre de n’importe ou. (i. q1 . . N).4 Machines chercheuses de 1 ou de 0 (Si . q0 ) → (Λ. STOP) ou ! Cette machine cherche le premier 1 à droite sur le ruban. q1 ) → (1. D). à partir de la position de départ et s’arrête une fois qu’elle l’a trouvé.3. . . q0 ) → (Si . n) (1. j = 1. . . . n) (1. (Si . Si le ruban ne contient que des 1. qu’il y a nécessairement au moins un 1 et qu’il n’y a que des 1 et des 0 sur le ruban. (Si . la machine ne s’arrêtera jamais. STOP) ou ! Cette machine efface le symbole de la case lue et s’arrête. q1 ) → (Λ. . . N). (i. . n) (Λ.36 Complexité et Algorithmique avancée Par symétrie on construit la machine qui décale la tête vers la droite. q1 . q1 ) → (1. 3. (i. q1 . (i. q1 . On peut faire la même chose à gauche. . D). . . j = 1. q2 .3. . j = 1. q1 . en remplaçant D par G et on peut faire la même chose pour 0 au lieu de 1. j = 1. q0 ) → (1. q0 ) → (Sj . . . . n) (Sk . . q1 .3 Machine à effacement et écriture (Si . STOP) 3. Et on transforme : (Si .5 37 Composition de machines de Turing élémentaires On peut constituer des machines complexes par mise en séquence ou branchement de machines de Turing élémentaires. . rm où q0 et r0 sont les états initiaux de T1 et T2 et qn et rm sont les états terminaux.1 Mise en séquence de machines Supposons deux machines de Turing T1 et T2 données d’alphabets intérieurs (espaces d’états) respectifs : q0 . . rm . r0 ). (T1 → T2 ) → T3 ≡ T1 → (T2 → T3 ). . . . . sera notée T1 → T2 . . . . de la façon suivante : q0 . qk ) → (qn . ou enchaînement.Chapitre 3. Par contre elle n’est évidemment pas symétrique. . La machine obtenue par mise en séquence. r0 . . On remarquera que cette opération sur les machines de Turing est associative. La deuxième machine admet comme état du ruban d’entrée l’état du ruban résultant du calcul de la première machine. En fait lorsque la première machine a terminé son travail. .3.3. qk ) → (Si . qn−1 . . . qn et r0 . 3. STOP) en : (Si . . Les alphabets extérieurs sont identiques pour T1 et T2 .5. La Machine de Turing 3. . . L’alphabet extérieur de cette machine est celui de T1 et T2 et l’alphabet intérieur sera obtenu par concaténation. la deuxième prend la main et agit sur les résultats de la première. (1. À trois machines T1 . qn−1 . qn . t0 . . . . si la machine T1 se trouve dans l’état qi et lit 0 sur le ruban. . . . . (0. tp on associe par exemple une machine construite de la façon suivante : Alphabet interne q0 . r0 . . . T2 et T3 d’espaces d’états respectifs q0 . . rm . . 1) Signifie que. si la machine T1 se trouve dans l’état qi et lit 1 sur le ruban. qi ) → (r0 . . tp et . . . . . . . .38 3. .2 Complexité et Algorithmique avancée Branchement de machines C’est l’opération qui permet de faire des tests et de modifier le cours d’un calcul en fonction de résultats intermédiaires. alors la machine T3 enchaîne. r0 .3. . . rm−1 . t0 . . . . alors la machine T2 enchaîne .5. qi ) → (t0 . 0) Signifie que. . la réponse est positive. mais il faut résoudre quelques difficultés pour construire cette machine universelle. D 4.1 Le problème général On peut par exemple commencer par décrire. On n’a donc pas encore atteint le degré d’universalité cherché. ce sont leurs schèmes fonctionnels. la façon d’opérer de toute Machine de Turing particulière par les règles opératoires élémentaires suivantes (voir aussi [Tra63]) : 1. on s’aperçoit que ce qui distingue deux telles machines de Turing.Chapitre 4 La Machine de Turing Universelle ans ce qui précède. identifier la . pour un opérateur extérieur (un humain). des algorithmes différents s’exécutent sur des machines différentes. La question vient donc naturellement de savoir si on ne pourrait pas pousser la standardisation un peu plus loin et avoir une Machine de Turing capable de simuler toute autre Machine de Turing. et eux seuls. Dans cette problématique. spécifique pour chaque classe de problème. ainsi que son schème. 2. lire le symbole contenu dans la case pointée par l’index de la machine . nous avons défini ce qu’est une Machine de Turing. dans la table à double entrée du schème fonctionnel. Si on y regarde d’un peu plus près. 40 Complexité et Algorithmique avancée colonne correspondant à l’état courant de la machine . identifier la ligne correspondant au symbole lu . 4. De ce point de vue. si la deuxième lettre du triplet est G. du triplet . 6. Pour une telle machine. 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. le modèle de la calculabilité c’est la notion de fonction récursive. Cette thèse se comprend de la façon suivante : l’homme peut inventer des axiomes. dans la table à double entrée du schème fonctionnel. de l’alphabet intérieur. décaler d’une case et d’une seule du ruban sur la gauche l’index de la machine . l’exécution est terminée . écrire dans la case du ruban pointée par l’index de la machine. exprimé dans les symboles de l’alphabet extérieur. décaler d’une case et d’une seule du ruban sur la droite l’index de la machine . réitérer la règle 1. à savoir que toute fonction calculable par un humain est calculable par une machine 1 . 9. Remarque 4. C’est la Machine de Turing Universelle qui va nous permettre de généraliser le concept de machine de Turing. si la deuxième lettre du triplet est !. arrêter la machine. ce qu’une machine ne saurait faire car ils ne pourraient qu’être déduits des axiomes qui ont présidé à sa conception. 7. 5. le schème qu’elle doit simuler doit être codé sur son ruban. dans la table à double entrée du schème fonctionnel. Cette procédure. 8. 3. le premier symbole à gauche du triplet .1. si la deuxième lettre du triplet est D. . le calcul humain ne s’entend donc que comme l’exécution par un humain d’une procédure bien définie. lire le triplet situé dans la case à l’intersection des lignes et colonnes ci-dessus identifiées . 10. Si on arrive à réaliser un tel codage 1. Pour Church. 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 de Turing.1 C’est aussi ce qui est appelé la thèse de Church. 1. Chacun des quintuplets étant formé de la façon suivante : – le premier symbole désigne une ligne de la table . dépend de l’algorithme utilisé et de la façon de le réaliser sur la machine de Turing.Chapitre 4. Ainsi.1. La Machine de Turing Universelle 41 et à donner un schème général capable de lire ce codage. nous avons considéré jusqu’ici que l’alphabet extérieur et l’alphabet intérieur de la machine étaient constitués d’un nombre fini de symboles. ce nombre de symboles pourrait sembler dépendre du problème particulier à résoudre.. En effet.1 page 30 s’écrit-il : . en particulier pour l’alphabet intérieur.1 L’unidimensionnalité Nous allons représenter une table à double entrée à k lignes et m colonnes dans laquelle chaque case contient un triplet par une suite de m. le schème de la Machine de Turing de la figure 3. ou montrer qu’il en existe un.k quintuplets. mais ce nombre. Pour une machine universelle. – 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 du schème fonctionnel de la machine de Turing particulière étudiée.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. Ainsi. et de plus. alors on aura réalisé la Machine de Turing universelle. or toute écriture ou lecture sur le ruban d’une Machine de Turing est séquentielle. 4. – le deuxième symbole désigne une colonne de la même table . – l’autre problème est celui de la finitude des alphabets utilisés. Il nous faut donc résoudre maintenant ces deux problèmes de finitude de l’alphabet et d’unidimensionnalité de l’information du ruban. l’accès à l’information non contigüe à la case face à l’index est impossible directement.1. il nous est a priori impossible de prévoir quel sera le nombre de symboles nécessaires à la réalisation de telle ou telle autre Machine de Turing spécifique d’un problème donné. dans une Machine de Turing particulière. 4. C’est maintenant ce que nous allons faire. mais cela reste possible. Ainsi. D. Toutefois.2 La finitude du codage Il est évident que les symboles de l’alphabet extérieur n’ont aucune signification particulière en eux-mêmes. On peut remplacer un symbole par un autre. on peut prendre des symboles différents de G. ce qui signifie que l’accès à deux groupes non contigus ne peut se faire de manière directe. on peut adopter une convention générale d’écriture d’une configuration donnée. La seule chose importante est que des objets différents soient représentés par des codes différents. de diviser le ruban d’une façon unique en groupes codés distincts . et que l’on puisse distinguer sans ambiguïté.1.1. On notera le symbole caractérisant l’état de la machine immédiatement à gauche du symbole pointé par l’index de la machine. que l’on puisse distinguer clairement quels sont les groupes codés relatifs à chaque type d’alphabet. rien ne sera pour autant changé dans le travail de la machine. dans le schème de Turing de la figure 3. De même. la première configuration de la figure 3. il doit permettre : 1. un carré par un cercle sans que cela influence le résultat. si on remplace le symbole I par &. et à chaque symbole de ceux-ci.1 se représente par : ΛIq0 I ∗ IIIΛ Avec cette règle. Quel que soit le système de codage utilisé.42 Complexité et Algorithmique avancée Λq1 Igq2 Λq2 ΛDq0 ∗ q0 ΛN! ∗ q1 ∗ Dq1 ∗ q2 ∗ Gq2 Iq0 ΛDq1 Iq1 Idq1 Iq2 IGq2 Il est évident qu’il est possible de rétablir le schème bi-dimensionnel initial à partir de cette séquence. Par exemple. il n’y a pas d’ambiguïté. Ces deux conditions sont remplies par le procédé de codage suivant. Il y faudra des intermédiaires. De même. les symboles de l’alphabet extérieur de ceux de l’alphabet de positions et chacun des données du problème . on peut rétablir d’une façon unique la configuration correspondante. . 4.1. N pour désigner les déplacements à condition de spécifier quel symbole induit quel déplacement. c’est une séquence et non un tableau. 2. supérieur à 2.... ce qui implique que deux β successifs marquent le passage d’un groupe à un autre.................(k + 1) alphas Alphabet de position q0 βαααααβ 5 alphas Nombre de q1 βαααααααβ 7 alphas alphas impair... Par utilisation d’images mémoires.... .. Les ingénieurs systèmes qui ont été amenés à débogger des systèmes au niveau le plus bas du logiciel connaissent cette forme de codage 1 . La Machine de Turing Universelle 43 On construit 3 + k + m groupes codés de forme βα .. ....... αβ 2.. . ..... . ... .. . .. Le codage précédent devient alors : 1.... et on retombe alors sur un codage binaire classique comme on en rencontre dans les ordinateurs... On peut utiliser alors le procédé de codage suivant (emprunté à [Tra63]) : Lettres Groupes codés G βαβ N βααβ D βαααβ Alphabet extérieur S1 βααααβ 4 alphas Nombre de S2 βααααααβ 6 alphas alphas pair..... ..... ........... αβ 2.Chapitre 4............... . dump en anglais......... on peut remplacer les α par des 0 et les β par des 1 (ou l’inverse)....... ......... qm−1 βα ...... .. supérieur à 5. ....(m + 1) + 1 alphas reprenons maintenant le ruban suivant : ΛNq1 IGq2 ΛNq2 ΛDq0 Le codage en sera le suivant : βααααββααββαααααααββααααααββαββααααααααα ββααααββααββαααααααααββααααββαααββαααααβ Les symboles utilisés important peu..... Sk βα .. αβ. . Par exemple il y a la classe des additions ou des multiplications de nombres entiers. respectivement multiplier. L’alphabet extérieur de notre machine universelle ne contient que deux symboles ! 1 On pourrait se demander s’il est possible de descendre à un seul symbole. Le fait de donner ces valeurs aux variables de l’instance générique s’appelle instanciation. nous n’utilisons que deux symboles. une succession de deux 1 marque en fait une séparation entre deux groupes codés. et sans augmenter le nombre de symboles de l’alphabet de la machine universelle. en l’occurence. l’instance particulière c’est la valeur donnée à l’instance générique dans le cas particulier du problème à résoudre.3 Codage de l’instance Un schème de machine de Turing est destiné à la résolution de tous les problèmes d’une même classe. tout groupe de 2 nombres. Ici. Avec deux symboles on peut tout coder y compris le vide.1. (1646-1716) qui. Sans nuire à la généralité du propos. On pourrait penser se contenter d’un symbole et du vide. Le codage binaire a été introduit par Leibniz. ce n’est pas possible car de toute façon s’il n’y avait qu’un seul symbole ce serait le symbole vide et il ne permet pas de coder quoi que ce soit d’autre que lui même. l’instance générique est celle qui décrit la forme et la nature des données. à savoir qu’il est ajouté à tout début 1. La raison de l’utilisation d’un codage binaire est toujours celle qui nous a guidée et continuera tout au long de l’élaboration des concepts de la théorie des machines de Turing. c’est « l’économie » de ressources à mettre en œuvre. 4. La donnée de deux nombres dans ces exemples s’appelle une instance. etc. 0 et 1. On remarquera par ailleurs que dans le codage ci-dessus. Comme son nom l’indique. On distingue deux types d’instances. les instances génériques et les instances particulières.44 Complexité et Algorithmique avancée 1000011001100000001100000011011000000000 1100001100110000000001100001100011000001 Toute telle suite de 0 et de 1 est appelée chiffre d’une configuration. philosophe et mathématicien. dans ce cas un schème d’addition doit permettre d’additionner.1. Malheureusement non. mais ce serait encore un alphabet à deux symboles. on peut donner un rôle particulier au groupe codé 11. avait élaboré une théorie monadisme cherchant à ne représenter le monde qu’à partir de deux symboles. 01111110 . mais très longues et fastidieuses. . lorsque c’est du binaire comme ici. sur le ruban. pour lesquels on ne distingue pas la mémoire contenant le programme de celle contenant les données. On détecte . .Chapitre 4. disons que ces transformations vont consister à lire successivement un 1 puis une série de 0 jusqu’à un autre 1. . On est dans le cas classique des ordinateurs. même si elle est longue et fastidieuse. En fait. Nous n’entrerons pas dans le détail de l’écriture du schème de la Machine de Turing universelle 3 . il nous est assez aisé d’énoncer les règles de fonctionnement de notre machine universelle pour transformer le chiffre de la configuration initiale en chiffre de la configuration résultante. c’est du code. cette méthode permet aussi de dresser. Maintenant. Ici nous appelons données la donnée du schème de résolution plus l’instance particulière sur laquelle les calculs doivent être effectués. cela n’a désormais plus d’intérêt pour la suite de notre étude. Il nous suffit de savoir que cette écriture est réalisable. La Machine de Turing Universelle 45 et toute fin de chaîne signifiante. 2. 3. schème qu’on peut désormais appeler programme 2 . "on sait" qu’on est dans la lecture du schème de la Machine de Turing à simuler. . et nous pouvons maintenant parler 1. cette méthode est pertinente. Ceci permet de séparer la donnée du chiffre du schème de la machine de celle de l’instance des données sur lesquelles il faut calculer. on devine que les transformations sont certes élémentaires. . Ainsi. en fait un ruban de Machine de Turing Universelle sur lequel on a codé une donnée d’un problème est constitué d’une infinité de 0 et d’un nombre fini de 1 (éventuellement aucun).qu’il s’agit d’un symbole de l’alphabet extérieur de la machine à simuler. on va regarder si la séquence de 1 et de 0 puis de 1 immédiatement à droite est un symbole de l’alphabet intérieur. l’usage a consacré le terme de code. schème et instanciation. De plus. De même la séparation des deux séquences binaires du chiffre et de l’instance seront détectées par la survenance de la suite . les limites des données 1 d’un problème. . C’est ce qui correspond au système d’exploitation d’un ordinateur.suivant le nombre de 0 et sa parité . Tant que ni le chiffre ni l’instance ne sont vides. Sans être exhaustif. Ainsi chaque groupe de symboles est facilement discriminable en fonction de l’arité du nombre de 0 compris entre deux 1. Sous la forme ci-dessus. Nous y viendrons ultérieurement sans qu’on ait à se poser le problème de l’écriture de chaque schème. "à la manière de" Gödel associer des nombres arithmétiques à ces suites de 0 et 1 qui codent les programmes. En fait notre but étant de revenir sur la notion de calcul. Sous cette forme la Machine de Turing Universelle ne nous permet pas de mettre facilement en évidence certaines propriétés. Encore faudrait-il préciser par rapport à quel critère. on tranchera par un ordre lexicographique (position du premier 1 ou du premier 0 différent. la machine de Turing universelle est difficilement praticable.1 et qu’en un premier passage. etc. 4. On a bien sûr le droit de le faire tant que le modèle que nous utilisons se ramène in fine à celui de Machine de Turing Universelle.1. on pourrait concevoir un alphabet extérieur beaucoup plus évolué que 0. Il convient de noter que si la méthode de codage binaire que nous avons donnée ici est une des méthodes possibles. ça fournit ce qu’on appelle un théorème d’existence ce qui est largement suffisant pour notre propos. nous pouvons nous affranchir du modèle sachant qu’on peut toujours s’y ramener.). Nous considérerons seulement ici le nombre de symboles constituant la suite. et en cas d’égalité. On peut ainsi numéroter les 1. maintenant que ce but est atteint. On peut alors. Il nous fallait prouver la possibilité de la réaliser. Sous sa forme la plus générale telle qu’elle est présentée ci-dessus. mais cela prouve la possibilité de le faire. nous pouvons maintenant prendre quelques libertés avec la définition formelle afin de pouvoir manipuler plus facilement le concept dans un contexte qui nous intéresse.46 Complexité et Algorithmique avancée de LA Machine de Turing Universelle.2 Numérotation des Machines de Turing On peut assimiler la Machine de Turing Universelle à la suite finie des instructions du programme codé sur le ruban. ou plus simplement de la Machine de Turing en général. De plus. ce n’est pas la seule. Ce qui nous intéresse en fait. . ce sont les propriétés qu’on peut déduire des algorithmes et des problèmes à partir de ce modèle conceptuel. comme pour les ordinateurs. ni peut être la « meilleure 1 ». On pourrait prendre le nombre entier codé en binaire représenté par la suite des 0 et 1 inscrits sur le ruban. la machine compile ce qui est écrit sur le ruban pour le réécrire dans le langage ci-dessus défini. N}k (4. . n2 . désignant la i ème machine. et γj respectivement sur les premier. . n2 . βi et γi sur les deuxième et troisième ruban. la spécialisation des rubans ressortit à la notion de calculateur sur laquelle nous reviendrons. écrit αj . deuxième et troisième ruban. Mi (n) désigne le résultat éventuel du calcul de la ième Machine de Turing Mi .1 Considérons le cas k = 3. βj . G} ce qui signifie que la machine est dans l’état qi . . Wi ⊂ N désigne alors l’ensemble des entiers pour lesquels Mi (n) fournit un résultat. 4. de façon à permettre la gestion simultanée des différents rubans. αj . βi . Soit k le nombre de rubans de la machine. la machine de Turing à plusieurs rubans. D. . D. alors la fonction de transition donne par exemple : δ(qi . alors la fonction de transition se définit comme suit : δ : Q × Γk −→ Q × Γk × {G. La fonction de transition change de forme. γj . βj .2. Elle fait alors correspondre à cet état l’action suivante : elle passe dans l’état qj . nécessaires à une bonne compréhension de la mesure de complexité est plus aisée sur un modèle de calcul équivalent mais légèrement différent dans sa présentation. avec les données n1 .1) Exemple 4. np ) désigne le résultat éventuel de Mi . Les notions de premier deuxième et troisième ruban sont totalement arbitraires. γi ) = (qj . ayant reçu l’entier n en entrée (ce faisant. . Mi (n1 . . nous confondons suite binaire et entier codé binaire). La transition continue de faire passer la machine d’un état à un autre et serait donc représentable par un automate à états. qu’elle lit αi sur le premier ruban 1 . La Machine de Turing Universelle 47 machines de Turing . np .2 Machine de Turing à plusieurs rubans La définition du temps et de l’espace sur une machine de Turing. D. puis elle décale les têtes de lecture/écriture des premiers et deuxième 1. chaque ruban est spécialisé et possède sa propre tête de lecture/écriture. Dans une machine à plusieurs rubans. αi . Mi .Chapitre 4. . De même. . . la machine MT1 exécute les étapes suivantes : – collecter les symboles contenus dans les cases sous les différentes têtes de lecture afin de déterminer le mouvement suivant . on utilise un caractère spécial comme délimiteur.2. – identifier la position de chacune des k têtes de lecture/écriture par utilisation d’un symbole spécial indiquant que le symbole considéré est face à une tête de lecture/écriture. On doit pouvoir simuler une machine de Turing à un seul ruban par une machine à k rubans et réciproquement.2. . Du point de vue qui nous intéresse. Alors tout calcul effectué en temps T(n) par une machine de Turing à plusieurs rubans peut être effectué en temps au plus O(T2 (n)) sur une machine de Turing à un seul ruban. Ainsi si a est un symbole de l’alphabet. 1. la machine à un seul ruban marque d’un blanc le début de la séquence correspondante identifiée par ¶ et décale d’un rang à droite tout le contenu de cette séquence jusqu’au symbole ¶ suivant sur sa droite 1 . comme par exemple ¶ . Pour cela. il est nécessaire de montrer une certaine équivalence entre les différents modèles. A chaque itération de MTk. il faut : – pouvoir conserver les informations codées sur les k rubans et les identifier. Preuve 4.1 Soit donc MTk une machine de Turing à k rubans calculant en temps T(n). On construit en suivant le schéma ci-dessus 4.1 (Équivalence de machines ) Soit une fonction T(n) telle que T(n) ≥ n. Par convention évidemment. Théorème 4. la notation a signifie que le symbole a est face à une tête de lecture/écriture . – lorsque une tête de la machine à plusieurs rubans atteint une zône non lue d’un ruban.2 une machine de Turing MT1 à un seul ruban simulant MTk. Schéma de preuve : L’idée directrice consiste à simuler la machine de Turing à k rubans par une machine à un seul ruban. celui de la complexité.48 Complexité et Algorithmique avancée ruban d’une case sur la droite et celle du troisième ruban d’une case sur la gauche. Chacune de ces opérations prend un temps proportionnel au nombre de cases lues par MT1 ou sur lesquelles MT1 a écrit. la machine peut en lire le contenu et ne peut faire que ça sur ce ruban. calculateur universel Une formulation pratique de la Machine de Turing universelle est de distinguer les différentes séquences de symboles du ruban. il n’y a rien sur les .Chapitre 4. ce qui est bien en O(T(n)). après T(n) étapes de calcul. 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. Ici nous considérerons qu’il y a trois rubans. On peut sans perte de généralité considérer un ruban pour chacune de ces séquences de symboles. Au départ seul ce ruban possède une écriture. Le nombre total d’étapes de calcul de MTk étant O(T(n)). 4. 2. le schème (programme) de la machine (l’algorithme) particulière considérée . MTk calcule en temps O(T(n)) et possède k rubans. il y a au plu n + k positions à considérer à une étape (n décalages éventuels +k symboles ¶) . il y en a n + k + k. Chaque étape de simulation d’une itération de MTk nécessite un temps O(T(n)). – exécuter au plus k décalages à droite. Or. Un calculateur est une machine de Turing à trois rubans dont on a spécialisé les rubans. il y a au plus une case vide d’atteinte sur chaque ruban. 3. l’instance particulière de données sur laquelle il faut exécuter le programme . La Machine de Turing Universelle 49 – opérer une seconde passe pour mettre à jour les positions des têtes et le contenu des cases correspondantes . le résultat du calcul de la machine elle même. ce qui nous conduit à utiliser le concept de machine à plusieurs rubans.3 Calculateur. A chaque étape de calcul de MTk. L’alphabet extérieur sert à coder : 1. le nombre d’étapes de calcul de MT1 est de l’ordre de O(T(n)) × O(T(n)) = O(T2 (n)).T(n). la gauche. 1. et s une suite finie de 0 et de 1 sur le troisième ruban (celui des résultats). Dans le cas où Ci ne s’arrête pas pour p et s on dit que Ci (p. et des blancs partout ailleurs. Une telle version de Machine de Turing à 3 rubans sera désormais appelée Calculateur. ou rester stable. pour les calculs intermédiaires sur lequel la machine peut lire. ce ruban est infini à droite et à gauche. "programme réduit du calculateur i pour le programme p et la donnée (l’instance) s ". s) la suite finie de 0 et de 1 qui se trouve sur le ruban de résultats quand le calculateur Ci s’arrête pour le programme p et la donnée s (quand ça se produit). Cn . nous pouvons classer ces calculateurs C0 . . une tête d’écriture vient écrire le résultat (codé uniquement en 0 et 1). Nous reviendrons sur cet aspect. C’est cette dernière propriété qui fait la caractéristique du calculateur par rapport à la machine de Turing universelle. Si on considère une suite infinie p de 0 et de 1 sur le premier ruban. Au début du calcul. sinon il ne s’arrêterait pas). s) est défini. on note Ci (p. Au début du calcul ce ruban contient. Toutefois on ne peut pour autant considérer pr comme étant le programme minimal au sens du nombre de symboles. considérons la suite binaire infinie pr|t où pr est le programme réduit et t une suite binaire infinie arbitraire. et pr|t la concaténation de pr avec t. C1 . écrire et décaler la tête de lecture/écriture vers la droite. la tête d’écriture ne peut se déplacer que vers la droite. En effet. l’ensemble Pri (p. codée en 0 et 1 la donnée (l’instance) s du calcul . Proposition 4. le ruban est infini à droite. – le deuxième ruban est un ruban de travail. On est fondé à parler alors de programme réduit. . – le troisième ruban est le ruban de résultat entièrement blanc au début du calcul. Ci n’a lu qu’un nombre fini de symboles de p (évident. . . s) ne dépend pas de t.50 Complexité et Algorithmique avancée autres. Cette suite finie est appelée programme réduit et notée pri (p. s) ce qui se lit. C2 . De même que pour les machines de Turing. le programme à exécuter. effacer. . La tête de lecture ne se déplace que vers la droite 1 . uniquement et elle ne peut qu’écrire. Alors Ci (pr|t.3. . .1 Pour tout entier i donné et toute suite finie s. ce ruban comprend une suite finie de 0 et de 1. s) n’est pas défini. s) des programmes réduits de C pour s est à "préfixe libre". Lorsque Ci (p. par jet de pièce par exemple. s ∈ {0. alors on peut écrire : pr = pr∗ |k ∗ où k ∗ est une suite binaire finie.Chapitre 4. Preuve 4. 1}N )). l’ensemble des programmes réduits associés se trouve muni d’une mesure prob() de poids total inférieur à 1 : (prob(Pri (s)) ≤ mes({0. Ci (pr . 1}N est muni d’une mesure standard qui s’étend à toute partie libre de préfixe « prefixe free » en posant : prob(pr) = mes({pr|s. elle découle de la définition du programme réduit. Par conséquent pr n’est pas un programme réduit pour Ci et s. Ck (pr. k = k ∗ |k 0 . Si pr est un programme réduit de Ci alors le calculateur Ci pour les données pr∗ |k ∗ |k 0 et s s’arrête en ayant lu uniquement pr∗ .3. s) = 0 Ck (pr. 1}N }) ce qui donne : prob(pr) = 1 2longueur(pr) Ce qui signifie que pour un calculateur donné Ci et une donnée s fixée. ∀pr. s) defini ∃pr .1 Calculateur universel On appelle calculateur Universel. et on note U un calculateur Ci tel que pour tout calculateur Ck il existe une constante simul(Ck ) avec la propriété : 0 0 0 ∀s. s) et |pr | ≤ |pr| + simul(Ck ) . L’ensemble {0. La Machine de Turing Universelle 51 (aucun n’est préfixe d’un autre).3. 4.1 La démonstration est évidente. c’est la probabilité pour que Ci avec la donnée s s’arrête lorsque le programme écrit sur son ruban de programme est choisi au hasard. le poids total. Ici. On peut toujours transformer toute suite binaire finie k ∗ en suite binaire infinie k en concaténant k ∗ avec une suite binaire infinie k 0 . s) defini Ci (pr . Supposons en effet que le programme réduit pr∗ soit préfixe de pr. appelé aussi nombre Ω 1 est la probabilité pour qu’un calculateur universel U s’arrête lorsqu’on lui donne un programme tiré au hasard. Le nombre de Chaïtin. De plus. on définit comme suit ce nombre. En vertu de ce qui précède. complexité de Kolmogorov ou complexité "à la Turing" comme nous l’étudions ici sont liées comme on peut le pressentir à la lecture des résultats précédents. 1.52 Complexité et Algorithmique avancée Un calculateur universel est. Ω= 1 X pr : programme reduit de U qui s0 arrete pour la donnee ∅ 2longueur(pr) ≤1 On définit de même le deuxième nombre de Chaïtin par : Ω1 = 1 H(n) 2 n∈N X H(n) désigne comme auparavant. Qu’il ne faut pas confondre avec la notation Ω pour la complexité dans la notation de Landaü . un calculateur qui doit être capable d’effectuer le travail de tout autre calculateur. mais aussi pratiques (qu’on pense tout simplement à l’utilisation quasi-systématique de la compression dans les échanges de données à travers les réseaux) qui permettent de fonder la théorie de Kolmogorov dont nous donnons une introduction au chapitre qui suit. Ce nombre possède des propriétés analogues au premier. le codage binaire de tout entier est composé d’une suite de 0 et 1.3. comme pour la Machine de Turing universelle. théoriques certes. le contenu en information de l’entier n écrit en binaire. 4. Ce sont ces considérations et tous les résultats qu’elles entraînent.2 Le nombre de Chaïtin La théorie précédente permettant de préciser la mesure associée à un programme réduit permet d’introduire un concept important lorsqu’on applique cette mesure à un calculateur universel. En effet. s) est lui même dénombrable.1 Introduction ’ensemble des programmes réduits pour un calculateur Ci et une donnée s étant dénombrables (chacun d’entre eux est une partie finie de {0. on ait |pr∗ | ≤ |prcm|. On aurait pu prendre un codage différent. la longueur des programmes en serait affectée. s) = Ck (pr0 . la complexité H0 obtenue est telle que : |H(s) − H0 (s)| ≤ c (c constante). (5.1) L On a vu comment on pouvait réaliser une Machine de Turing universelle. C’est un programme réduit minimal.Chapitre 5 Complexité de Kolmogorov (rudiments) 5. De même l’ensemble C des calculateurs possibles tels que Ci (pr. 1}N ) il existe une taille minimale pour un programme réduit (la borne est 0 puisque la taille est entière). |prcm| a une signification bien précise. il existe donc au moins un calculateur de C tel qu’il admette pour programme réduit un programme de cardinal minimal prcm. En d’autres termes. On note H(s) cette complexité. Supposons qu’on ait pris U0 à la place de U. ou contenu en information de s. Cette valeur ne dépend pas réellement du calculateur universel choisi. ∅). il s’agit d’une question de codage. il n’existe pas de calculateur Cl tel que Cl (pr∗ . . en fait. s) étant définie. c’est la complexité (de Kolmogorov) de s. pour U(prcm. L’information de Kolmogorov peut être vue comme l’information absolue d’un objet puisqu’elle mesure la quantité d’information qui. On a aussi appelé l’information de Shannon. La complexité de Kolmogorov ou quantité absolue d’information d’un objet est de même nature que. en physique. par elle même.1 Interprétation intuitive Le contenu en information. c’est une caractéristique dudit objet. en adoptant ce point de vue .54 Complexité et Algorithmique avancée 5. la ligne de transmission.1. parce que leur description est moins aisée. c’est à dire nécessite un énoncé plus long.1. on peut consulter [CLN04] . c’est-à-dire intrinsèquement. et il n’y a nul besoin à une référence extérieure autre qu’une MTU ou un calculateur universel pour ce faire. Le contenu en information est alors le nombre de bits nécessaires à la description dudit objet.2 Paradoxe Ce paradoxe a été formulé par Bertrand Russell en 1908 qui propose de définir le nombre entier suivant : 1. Pour une autre façon d’aborder le problème. la masse d’un objet. Il y a là une différence fondamentale avec la théorie de l’information de Shannon qui définit l’information par rapport à un support technologique. Il s’agit d’une mesure intrinsèque à l’objet considéré. on s’expose au paradoxe suivant : 5. Toutefois. Information de transmission puisqu’elle est définie comme étant la quantité d’information à transmettre pour permettre la sélection d’un objet parmi toute une collection d’objets prédéfinis. Ainsi le nombre 21789 est-il certainement moins complexe que la suite suivante : 26535897932384626433832795028841971693993751 05820974944592307816406286208998628034825342 64709384460955058223172535940812811706798214 8086513282306. On voit immédiatement qu’il est des objets plus complexes que d’autres. au sens de Kolmogorov se définit par rapport à chaque objet pris individuellement. permet de décrire complètement l’objet. Cette description n’est valable que si elle permet de restituer en entier l’objet 1 . c’est une valeur attachée à chaque objet et qui ne dépend de rien d’autre que l’objet lui-même. Il y a alors une méthode de description. on sait que tout sous-ensemble strict non vide de N + admet un plus petit (un plus grand pour N − ) élément. soit il n’existe pas et alors TOUS les entiers peuvent être décrit en moins de mille symboles ce qui est une absurdité. D est une fonction de l’ensemble de description Y qui contient tous les éléments y dans l’ensemble X des objets x. pour des raisons opératoires on ne considérera que les descriptions de longueur finie. D : Y → X ∧ {∀x1 ∈ X. soit D qui associe au plus un objet x avec une description y. par conséquent. Ce paradoxe objective la nécessité de préciser ce qu’on entend par «description» d’un objet. fut-il mathématique. De même pour chaque objet x. . lorsqu’on est confronté à un paradoxe en mathématiques. Au delà. Par contre. la preuve en est que N est infini et que l’ensemble des entiers pouvant être définis en moins de mille symboles est fini. ce qui est mal formalisé. c’est la notion de description. Complexité de Kolmogorov (rudiments) 55 Le plus petit entier positif ne pouvant être décrit en moins de mille symboles Soit ce nombre existe et nous l’avons décrit en moins de mille symboles.2 Description d’un objet Si notre méthode de description est discriminante. il ne saurait y avoir confusion entre deux objets. ∀x2 ∈ X. On remarquera au passage qu’il existe des entiers ne pouvant être décrits en moins de mille symboles. ainsi. en contradiction avec la définition. On en déduit immédiatement qu’il n’y a qu’un ensemble dénombrable d’objets. chaque description représente au plus un seul objet. calculateurs. {x1 = 6 x2 } ⇒ {D(x1 ) 6= D(x2 )}} Revenons à notre description à partir des Les descriptions sont alors des séquences de 0 et de 1. il existe D(x) description de x telle que deux objets différents ont chacun une description différente de l’autre : De plus.Chapitre 5. cela signifie le plus souvent que les notions ou concepts qui y sont manipulés sont mal formalisés. 5. si ici la notion de plus petit élément est bien formalisée . que pour une méthode de représentation donnée.1 Fonction partiellement récursive Le rôle de D est ici primordial. Comme pour les mesures des longueurs. Pour ce faire. 1. et plus précisément par la longueur de la chaîne la plus courte représentant l’objet considéré. le coût d’une telle description peut être mesuré par la longueur de la chaîne de bits de cette description. commune à tous (c’est une abstraction bien sûr. . Autrement dit la comparaison des complexités descriptionnelles ne dépend pas de la méthode de mesure dés lors qu’elle est cohérente et appliquée à tous les objets considérés 1 . La signification profonde en est que la complexité de Kolmogorov. On l’appelle aussi suivant les auteurs quantité absolue d’information ou pour faire court information absolue de l’objet x. ou complexité algorithmique descriptionnelle est une mesure intrinsèque à l’objet considéré. on doit s’assurer que cette complexité est donnée par une méthode universelle de description. L’ensemble des fonctions partiellement récursives admet une fonction qui minimise la description de toute autre. l’essentiel est qu’on reste pour les comparaisons dans un même système. Pour pouvoir assurer la réalité de la méthode D. peu importe qu’on utilise le système métrique ou le système anglo-saxon. et que la hiérarchie (c’est-à-dire la relation d’ordre) dans un système soit conservée dans l’autre. L’existence de D0 renvoie à l’existence du calculateur universel et du prcm. Cela signifie. On appelle cette longueur. la hiérarchie des complexités des objets est conservée. Si on veut pouvoir comparer les complexités d’objets différents. optimale. Soit D0 cette fonction partiellement récursive optimale. comme le calculateur universel). il faut que le passage de y à D(y) puisse être effectué. 5. L’existence d’une telle façon de faire se nomme ici fonction partiellement récursive. il y faut une aune commune. Complexité descriptionnelle de l’objet x avec la méthode D.56 Complexité et Algorithmique avancée Comme nous l’avons vu précédemment. La longueur de description de l’objet x conformément à D0 sera appelée ici Complexité algorithmique descriptionnelle . La puissance de la théorie de Kolmogorov tient précisément à cette indépendance de la complexité intrinsèque par rapport à la méthode de description des objets (algorithmes ou problèmes) considérés.2. dans l’ordre. le souci d’universalité de la théorie de Kolmogorov conduit à ne s’intéresser qu’à ces objets mathématiques que sont les suites binaires. Le mot vide est associé à 1.3) 1. Une façon simple de faire est de faire précéder chaque mot binaire 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 . construits avec les symboles de B. puis. il existe Ci .3. Ci ∈ N tel que : ∀x Kf0 (x) ≤ Kfi (x) + Ci .. L’objet est formellement bien défini et ce sans perte d’universalité. 2.3. 1 → 3 .1 (Fonction optimale) Il existe une fonction dite optimale f0 telle que. Considérons maintenant N ∗ . à la séquence binaire 01 on associe le nombre binaire 101. 01 → 5. N ∗ = {1. 0 → 2 . la longueur 2 d’un mot |m| codé comme décrit ci-dessus sera la partie entière de log2 m. Par conséquent. soit 5 en décimal. L’écriture |m| représente ici la longueur du mot m et pas sa valeur absolue . N privé de 0. Par exemple. (5. 1} l’alphabet binaire et B ∗ l’ensemble des suites finies. Complexité de Kolmogorov (rudiments) 57 Le paradoxe 5. quelle que soit une autre fonction fi . C’est pourquoi.. 3.1 Soit une fonction calculable : f : B ∗ =⇒ B ∗ .Chapitre 5. Soit donc B = {0. Définition 5. · · · .2) t est alors dit description de x relativement (par rapport) à f .} on va identifier B avec N ∗ en utilisant l’ordre lexicographique. ou mots finis. Théorème 5. .2 réapparaît alors sous une autre forme.1. La complexité de x ∈ B ∗ par rapport à f est la valeur : ( Kf (x) = min|t| tel que f (t)x ∞ si t n0 existe pas ) (5. c’est-à-dire l’ensemble des entiers positifs. 00 → 4 .3 Descriptions et tailles On sait depuis Leibniz que toute information peut-être codée par une séquence de bits. donc 01 → 5 2. le théorème d’incomplétude de Gödel sur lequel nous aurons l’occasion de revenir. 5. La question qui se pose est de savoir s’il existe une méthode permettant de dire si une séquence binaire est. ce que note l’indice i. Exemple du théorème d’incomplétude de Gödel Etant donnée une suite binaire x. Preuve 5. la complexité de Kolmogorov est-elle définie à une constante additive près. La réponse est NON ! comme nous l’allons voir. on peut fixer a priori la fonction optimale.3. Or. on peut énoncer le corollaire évident suivant : Corollaire 5. et seulement si. celle-ci sera dite aléatoire si la plus petite description binaire qu’on en puisse faire (i. il existe des séquences binaires aléatoires de toutes longueurs. il est dit sain si les propositions vraies peuvent y être démontrées comme vraies.1 La constante Ci ne dépend pas de x mais de la nature de la fonction fi . le prcm) est de longueur au moins égale à celle de la séquence x elle même. Un système formel est dit consistant si. on ne peut y trouver une proposition qui soit à la fois vraie et fausse. n >> f La procédure est alors la suivante : Pour toute séquence binaire x de longueur n >> f SI x est aléatoire ALORS imprimer x Cette procédure qui consiste à décrire x de longueur n utilise seulement une donnée de longueur log2 n + f bits sur U Cette longueur est . aléatoire. alors il existe une constante C.4) On retrouve là l’inégalité 5.1 Si fi et fj sont deux fonctions optimales. axiomes et règles d’inférence) descriptible entièrement en f bits sur le calculateur universel U.1 On trouvera la démonstration formelle complète de ce théorème dans le chapitre 17. f est la taille du prcm associé à F. ou non. Dès lors.1.3. Ainsi. et on la note alors K(x) et lorsqu’on l’utilise.e.3. Supposons un système formel F (définitions.58 Complexité et Algorithmique avancée Remarque 5. ne dépendant que de i et j telle que : ∀x |Kfi (x) − Kfj (x)| ≤ C (5. On peut entamer une recherche exhaustive de preuve d’aléatoirité de séquences de taille n nettement supérieures à f . ce qui signifie quelles sont incompressibles. en moins de n bits. La plupart des séquences binaires ne présentent pas de régularité calculable. .Chapitre 5. ce qui est contradictoire avec le fait que x soit aléatoire puisqu’étant telle. Complexité de Kolmogorov (rudiments) 59 considérablement inférieure à n. La séquence x ne peut à la fois être décrite en log n bits sur le calculateur universel et être aléatoire. par définition. une séquence binaire aléatoire de n bits ne peut être représentée. Nous avons qualifié de telles séquences d’aléatoires. . Troisième partie Rudiments mathématiques . . ou plus simplement le contrôle des réseaux. ou au-delà des machines elles-mêmes. Malheureusement. on démontre qu’il est impossible de construire un tel algorithme . permettra de savoir si ce programme fournira des résultats au bout d’un temps fini. ce problème est indécidable. cela revient à dire qu’il est impossible d’écrire un programme de MTU qui. informellement i un algorithme ne permet pas d’arriver au résultat en un nombre fini d’étapes. et le fait qu’elle soit uniquement capable de répondre qu’une donnée n’est pas un pseudo- S 1. Attention. il faudrait pouvoir construire un algorithme qui. Pour déceler la propriété de pseudo-algorithme. Du reste. . on affine les définitions en distinguant entre le fait pour une MTU de dire simplement qu’une donnée est un pseudo-algorithme quand il en est un et qu’elle n’en est pas un sinon.1. il y a des programmes qui ne s’arrêtent que lorsque la machine sur laquelle ils sont implémentés s’arrête.1 Quelques définitions fondamentales Le problème. c’est le cas par exemple des systèmes opératoires des machines. appliqué à un quelconque pseudo-algorithme. voir [Lav91b].1 6. c’est aussi le cas dans les réseaux de processeurs ou d’ordinateurs en ce qui concerne les programmes qui concernent les communications. et ce résultat est d’une extrême importance. Il en est ainsi par exemple des programmes d’acheminement des messages dans le réseau internet. on parle alors de pseudo-algorithme 1 . prenant un autre programme comme donnée. En termes de programmation. permettrait de trancher la question.Chapitre 6 Considérations théoriques 6. le fait qu’une Machine de Turing ne s’arrête pas ne signifie nullement qu’elle ne s’arrêtera jamais. – E = (1. – E = ensemble des nombres premiers .64 Complexité et Algorithmique avancée algorithme (c’est à dire que c’est alors un algorithme) mais qu’elle soit incapable de répondre sinon. En effet. On aimerait pouvoir dire si la machine va un jour s’arrêter. . Il n’existe pas d’algorithme (c. Cela peut durer des milliers d’années (nous le verrons lorsque nous étudierons la complexité.1. .1 Un ensemble E est dit récursif si et seulement si il existe une MT permettant de savoir. Par contre. 0.instance d’un problème donné. . .1 Essais de définitions Ensembles récursifs On se souvient ici comment on peut assimiler tout programme de MTU à un nombre. cette question.a. 0.. – E = ensemble des multiples de p donné . . une Machine de Turing particulière (en fait un programme et une instance) s’arrêterat-elle et si oui comment doit-on l’interpréter ? Telle est la question qui se pose. 6. Eh bien.) Ça ne signifie rien. de Machine de Turing) capable de décider si une Machine de Turing va. Définition 6.1.2. . – E = {ensemble des axiomes de Peano AxPeano} . – . – E = { Les tautologies du calcul propositionnel } . . (voir 4. ou non. . . connue sous le nom de problème de la halte n’est pas résoluble. pour tout entier n s’il est dans E. . – E = ensemble des nombres pairs . on peut utiliser cette propriété d’arrêt pour particulariser des ensembles. malheureusement. pour tout entier n la MT répond OUI ou NON suivant que n est dans E ou pas...) Suite binaire caractéristique des nombres impairs associée à N . c’est à dire que.1. 1. ou non s’arrêter pour une -ou toute.1. .2). Pour un schème donné et une instance particulière. ce qui nous permet de donner une définition simple de la récursivité. Exemples d’ensembles récursifs : – E = ensemble des nombres impairs .d. .2 6. 6. donc d’énumérer cet ensemble..2 Ensembles récursivement énumérables Il s’agit là d’une propriété plus faible 1 Définition 6. Exemple d’ensembles récursivement énumérables : – Tous les ensembles récursifs . si un ensemble et son complémentaire sont récursivement énumérables.. On note RE l’ensemble des langages acceptés par une MTU. 1. Considérations théoriques 65 Pour le dire autrement.1. un problème est représenté par le langage d’encodage de ses instances "oui". c’est-à-dire l’ensemble des langages récursivement énumérables. – L’ensemble des formules d’arithmétiques démontrables dans le système d’axiomes formels de Peano : ThPeano . L’algorithme «boucle» si on lui demande de statuer sur un élément qui n’est pas dans l’ensemble. c’est-à-dire plus générale 2..1. . Rappel : Mi (n) désigne le résultat éventuel du calcul de la i ème Machine de Turing Mi . Définition 6. Ainsi. l’ensemble lui même est récursif. De même Wi ⊂ N désigne l’ensemble des entiers pour lesquels Mi (n) fournit un résultat. C’est cohérent avec la Thèse de Church-Turing qui dit qu’un langage reconnaissable par une procédure effective est décidable par une machine de Turing. – E = {i : Mi (i) existe } . On appelle R -comme Récursivela classe des langages décidables par une MT.2 E est dit récursivement énumérable si et seulement si il existe une MT Mi telle que Wi = E avec 2 : Wi ⊂ N : ∃Mi (n). – L’ensemble des MTU qui s’arrêtent pour la donnée ∅ . On peut énoncer cela autrement. Au sens mathématique du terme.1. Cela entraîne un certain nombre de résultats. ayant reçu l’entier n en entrée. – .3 Est récursivement énumérable un ensemble E pour lequel existe un algorithme permettant seulement de décider si un élément quelconque est dans l’ensemble E.2. on dit aussi classe de décidabilité.Chapitre 6. théorème central que nous retrouverons encore sous la forme suivante qui est en fait un corollaire 2 1. n}) ∪ B sont tous infinis récursivement énumérables car chaque En est réunion de deux ensembles récursivement énumérables.4 (Approximable) E est approximable si et seulement si il est fini ou s’il contient un ensemble infini récursivement énumérable. .1 R ⊂ RE Remarque 6.1 Un nombre réel sera dit récursif si l’on connaît un algorithme permettant de déterminer la suite de ses décimales.1.1. On retrouve là sur notre chemin le théorème d’incomplétude de Gödel. La suite des En permet d’approximer E par union : E = ∀n ∈ N [ En n Si E est récursivement énumérable. Chaque fois que les mathématiciens manipulent un nombre réel. Lorsque E est un ensemble infini approximable qui contient un ensemble infini récursivement énumérable B . alors l’ensemble des nombres réels R est dénombrable. 2. etc. des produits infinis. Mais la réciproque est fausse. Le mathématicien Borel a longuement disserté en son temps sur la nature de l’ensemble R des nombres réels. 1. 6.2. une intégrale. alors les ensembles construits de la façon suivante : En = (E ∩ {0. 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. . . . ils le définissent par une série. En conséquence.66 Complexité et Algorithmique avancée D’où le théorème : Théorème 6. On voit bien le problème puisque le côté non dénombrable de l’ensemble R des réels est le fondement de l’analyse moderne 1 . Le théorème de Gödel s’énonce comme suit : pour tout système formel S contenant le langage de l’arithmétique (par exemple la théorie des ensembles). il est a fortiori approximable. il existe .3 Ensembles approximables et inapproximables Définition 6. Si tout réel est récursif. l’ensemble des réels récursifs est dénombrable.1.1. alors il existe un modèle où elle est vraie (au sens déductible du système d’axiomes) et un modèle où elle est fausse. il existe une MT M énumérant tous les énoncés vrais d’arithmétique. Exemples d’ensembles approximables : – Tous les ensembles récursifs ou récursivement énumérables . ou bien Mi ne s’arrête pas pour la donnée i et alors ¬F(i) est vraie et donc dans Arith et MM écrit NON.1 [Del94] Supposons que Arith soit un ensemble récursivement énumérable. et donc MM écrit OUI . on peut alors construire la MTU MM qui pour tout entier 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. en ce cas. .1. Supposons alors la formule F(i) dépendant de l’entier i pris comme paramètre exprimant «la Machine de Turing Mi s’arrête pour la donnée i». de complétude celui-ci et au moins aussi important nous dit que si une proposition est indécidable. et par conséquent Arith n’est pas récursivement énumérable. M non plus. Considérations théoriques 67 Théorème 6. – Arith l’ensemble des formules arithmétiques vraies est approximable et non récursivement énumérable. sinon le problème de la Halte serait décidable (Turing 1936) et donc si MM n’existe pas.2 (Gödel) L’ensemble Arith des formules d’arithmétique vraies dans l’axiomatique de Peano est un ensemble non récursivement énumérable. Un autre théorème de Gödel. Pour tout i une telle machine s’arrête car soit Mi s’arrête et F(i) est vraie et donc dans Arith. et MM s’arrête. Ce résultat signifie qu’aucun système formel n’est complet pour l’arithmétique. A partir de M. 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 0 et de 1 et n un entier.1.Chapitre 6. une proposition G indémontrable dans S (sauf si S est contradictoire. auquel cas il démontre n’importe quoi). Une telle machine ne peut exister. Preuve 6. Ceci est dû au fait qu’il contient des sous ensembles de formules vraies récursivement énumérables (ex : les formules du type a + b = c). L’ensemble des programmes de calculateurs contient un nombre infini d’éléments. L’intuition voudrait qu’on définisse la taille d’un ensemble comme étant le nombre de ses éléments. 6.1 Taille d’un ensemble Nous allons commencer par les ensembles finis. on va comparer l’ensemble des programmes possibles des calculateurs avec des ensembles d’autres objets. . De plus. Il est difficile de définir formellement ce que l’on entend par «taille» d’un ensemble. Cette propriété mérite d’être exploitée plus avant et va nous permettre d’entrevoir un certain nombre de choses sur la puissance des calculateurs. Le raisonnement est simple.3. on va avoir des ennuis dès qu’on va aborder le cas de N. ce qui est beaucoup trop fort comme supposition.1 – Hiérarchie des ensembles 6. en particulier que l’on sache compter.3 Des ensembles bien particuliers On a vu précédemment que les programmes des calculateurs et donc des machines de Turing pouvaient être identifiés par des nombres entiers.68 Complexité et Algorithmique avancée Non récursivement énumérables approximables Incompressibles Récursivement énumérables Récursifs Inapproximables Figure 6. Cela suppose déjà beaucoup de choses.1.1. le berger mettait un caillou (d’où le mot calcul issu du mot calculus qui signifie caillou en latin) dans une urne. ils les menaient à pacager plusieurs mois dans des enclos. on scellait l’ouverture de l’urne avec de la glaise sur laquelle le berger portait une marque distinctive.1 Les ensembles {2. M . il suffit de mettre en correspondance les éléments de l’un des ensembles avec ceux de l’autre. Dans l’exemple. Lorsque les bergers égyptiens menaient leurs troupeaux en transhumance. Nicole . {ł . C’est cette méthode. Gérard} ont même cardinal. . et ce d’une manière unique. 6 ↔ a. afin que l’opération soit faisable dans les deux sens. alors les deux ensembles sont équivalents du point de vue de leur taille. Considérations théoriques 69 Si on ne sait pas compter. c’est à dire qu’à un élément de l’un on fait correspondre un et un seul élément de l’autre 1 . son sceau en quelque sorte. a} . 9 ↔ c. Cette méthode consiste à tester l’égalité entre deux ensembles. Il y a une difficulté dans la définition de la bijection. En fait pour qu’il y ait même cardinalité (et donc bijection). c . il y a 4000 ans. {Paul . Lorsque tous les moutons étaient entrés. Si tous les éléments de chacun des ensembles sont utilisés d’une manière unique.1. 9. Chaque fois qu’une bête entrait dans le pré. Exemple 6. Lorsque la transhumance était finie. 6. il suffisait au berger d’ouvrir l’urne et de procéder en sens inverse. on peut prendre par exemple : 2 ↔ ł. on peut utiliser une des plus vieille méthode de calcul . 4} .qui est à l’origine du mot calcul . Maurice . Gérard ↔ 4 1. 4 ↔ M ou encore : Paul ↔ 2 . Au moment de laisser les bêtes pénétrer dans l’enclos. le berger savait si les fauves ou la maladie avaient mangé plus de moutons qu’il n’en était né durant la saison ou si au contraire il était né plus d’agneaux qu’il n’était mort de moutons et brebis. Maurice ↔ 6 . à savoir sortir un caillou de l’urne chaque fois qu’un mouton sortait du pré. taille qu’on appellera désormais cardinal. on les faisait passer par une porte qu’elles ne pouvaient franchir qu’une par une. Ainsi. Pour ce faire. la bijection que nous allons utiliser.Chapitre 6. Comparer les cardinaux de ces deux ensembles consiste à les mettre en bijection.qui nous a été enseignée par les bergers de la haute Egypte. Nicole ↔ 9 . 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 de termes ou symboles. Cette relation d’équivalence permet de regrouper les ensembles en classes d’équivalence. en notant Card(A) le cardinal d’un ensemble A. C) . A).5 S’il existe une bijection d’un ensemble X sur un ensemble Y. C)} ⇒ Eq(A. Deux ensembles ont même ordinalité s’il existe une bijection entre eux préservant leurs relations d’ordre respectives. on désigne ces classes par le nombre d’éléments qu’elles contiennent. transitivité {Eq(A. cardinalité et ordinalité coïncident. Feront partie d’une même classe deux ensembles de même cardinal. B) et Eq(B. (voir [Bou67] p. Y). La cardinalité d’un ensemble est donc réciproquement caractérisée par la classe de cardinalité à laquelle il appartient.38) La relation d’équipotence est une relation d’équivalence. Ainsi dans l’exemple précédent les trois ensembles appartiennent à la classe 4. . symétrie Eq(A. en effet {Card(A) = Card(B)} et {Card(B) = Card(C)}} ⇒ {Card(A) = Card(C)} vrai car la composition de deux bijections est une bijection. nous allons regrouper les ensembles de même cardinalité dans des classes. en effet.{Card(A) = Card(B)} ⇔ {Card(B) = Card(A)}. A) est vraie. On peux aussi définir les nombres ordinaux pour des ensembles sur lesquels est définie une relation d’ordre (ensemble ordonnés). B) ⇔ Eq(B. on démontre les propriétés suivantes : réflexivité Eq(A.2 Des cardinaux à l’infini Puisque nous savons comparer les cardinalités de deux ensembles. Pour les ensembles finis. Définition 6. la bijection étant elle-même symétrique . 6. on peut toujours mettre un ensemble en bijection avec lui-même . en effet . mais ce n’est pas le cas dans les ensembles infinis.1. Cette relation est notée Eq(X.3. En effet. on a : Card(A) = Card(A). l’ensemble vide appartient à la classe 0.1. Dans le cas des cardinalités finies. Les nombres caractérisant la cardinalité d’un ensemble sont les nombres cardinaux.70 Complexité et Algorithmique avancée Et ainsi de suite. alors X est dit équipotent à Y. 3 Pour tout cardinal infini a.1.1 Il existe un ensemble infini. ni les lemmes.1. ce qui nous ferait sortir du cadre de ce cours.1. Calcul sur les cardinaux infinis Théorème 6.1. On en déduit trois corollaires : . 2 = |{∅. Cardinaux infinis Définition 6. Ainsi : 0 est la classe d’équipotence de l’ensemble vide ∅ ou {} . par les cardinaux. Axiome 6.2 L’ensemble N × N est équipotent à N. on a donc n < a pour tout entier n. Si a est un cardinal infini et n un entier quelconque. et bien que la question ne soit pas tranchée (c’est une conjecture).1 Tout ensemble infini E contient un ensemble équipotent à N.6 [Bou67] On dit qu’un ensemble est infini s’il n’est pas fini. nous les citons car ils permettent de mieux comprendre les propriétés des ensembles infinis et les particularités des calculs y afférant. il est à présumer qu’il est indépendant. on a : a2 = a La démonstration se conduit en introduisant les deux lemmes suivants : Lemme 6. on définit ainsi tous les entiers . ce qui prouve que l’ensemble < a contient tous les entiers. Considérations théoriques 71 C’est d’ailleurs ainsi qu’on introduit les définitions des entiers. on ne peut avoir a ≤ n . 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. {∅}}| et ainsi de suite .1. On est obligé pour continuer d’introduire l’axiome suivant qu’on ne sait pas déduire des autres axiomes ou schémas d’axiomes connus. Lemme 6.Chapitre 6. 1 est la classe d’équipotence de l’ensemble qui admet pour élément l’ensemble vide ∅ . Nous ne démontrerons ni le théorème. c’est à dire s’il est équipotent à une partie de N.1. on a an = a pour tout entier n ≥ 1. à tout nombre impair p > 0 on peut faire correspondre le nombre entier q = p+1 2 .} Définition 6.3 Si a et b sont deux cardinaux non nuls dont l’un est infini.72 Complexité et Algorithmique avancée Corollaire 6. Corollaire 6. L’ensemble des nombres impairs est dénombrable. . Un rationnel peut être considéré comme une paire ordonnée de naturels (a. 1. L’ensemble Q des fractions rationnelles est dénombrable. La démonstration est évidente par récurrence 1 sur n.x}} ∧ {{x < 0} ⇒ {y = (−2.b = a + b = sup(a. on a : a. . si on veut être puriste. En effet.2 1. 2. Ensembles dénombrables Le premier et plus connu des ensembles infinis est celui des entiers naturels : N = {0.2 Le produit d’une famille finie (ai )i∈I⊂N de cardinaux non nuls dont l’un est un cardinal infini a est égal à a. Ce qui suppose quand même.1 Si a est un cardinal infini. La classe de cardinalité de N est notée ℵ0 (ℵ s’écrit aleph et se prononce alef) Exemple 6. b) a étant le numérateur et b 6= 0 le dénominateur et tels que 1. Corollaire 6. b). tout sous ensemble de N est dénombrable .1. Plus particulièrement.1. . ce qui nécessiterait de longs développements théoriques.1. qu’on sache correctement définir ce qu’est une récurrence. .1.x) − 1}} 3. L’ensemble Z des entiers relatifs est dénombrable la bijection se définit alors comme suit : ∀x ∈ Z. {{x > 0} ⇒ {y = 2.7 On dira qu’un ensemble est dénombrable s’il fait partie de la même classe de cardinalité que N. (1. Existe-t-il des ensembles infinis non équipotents à N ? On sait dans les ensembles finis que l’ensemble des parties d’un ensemble admet un cardinal exponentiellement supérieur à l’ensemble de départ. De plus en plus infini La question se pose de l’équipotence des ensembles infinis. (d) On numérote les chaînes ainsi obtenues. {0. à partir d’un tableau à double entrée par exemple. Soit E un ensemble fini . on a : Card(P(E)) = 2Card(E) Par exemple. (1. On peut en imaginer d’autres. Considérations théoriques 73 a et b n’aient pas de facteur commun. On a alors la bijection suivante 1 : {(0. l’ensemble des parties de {0. en ligne les numérateurs. 1}} Qu’en est-il de l’ensemble des sous-ensembles d’un ensemble dénombrable ? Théorème 6. L’ensemble des chaînes de caractères de longueur finie sur un alphabet. 1) ↔ 0.. et un entier différent dans chaque case . 1) ↔ 3.Chapitre 6. (c) pour des mots de même taille on les range suivant l’ordre lexicographique (comme celui du dictionnaire). . . en colonne les dénominateurs. (2. 1} est : {∅. {1}. 1) ↔ 1. 1. 3) ↔ 4.1. (b) on classe les chaînes de caractères par ordre de taille croissante . 2) ↔ 2.} 4. . . (1.4 L’ensemble des sous-ensembles d’un ensemble dénombrable n’est pas dénombrable. On peut ordonner Q de la façon suivante : On classe les paires suivant l’ordre induit par la somme a+b et pour chaque valeur de cette somme par ordre de numérateur croissant. {0}.. La bijection se construit de la façon suivante : (a) On fixe un ordre arbitraire sur les lettres de l’alphabet . Si S est dénombrable. Dans ces conditions on «sent» intuitivement qu’il n’existe pas de suite finie. Il y a donc contradiction. et étant composé d’éléments de E et seulement d’éléments de E. Supposons que D = sk alors ek ∈ D ce qui est impossible puisque ek ∈ D si et seulement si ek 6∈ sk . C’est à dire que le problème de la halte est indécidable. s1 .. .}. Considérons l’ensemble D = {ei |ei 6∈ si }. c’est un sous ensemble de E. s0 s1 s2 s3 s4 . e0 1 1 0 1 0 e1 1 0 1 1 1 e2 0 0 1 1 0 e3 1 1 e4 0 0 0 1 0 e5 0 . ou non. En effet. Soit E un ensemble dénombrable E = {e0 .} et soit S l’ensemble de ses sous-ensembles. Chaque ligne est la fonction caractéristique de l’ensemble si considéré s’il y a un « 1 » dans la ligne si et la colonne ej cela signifie que l’élément ej fait partie de l’ensemble si . . capable de nous dire pour toute suite finie si c’est un programme de calculateur. 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. . et non des moindres de ce théorème. On ne sait pas le démontrer. on peut le noter en extension S = {s0 . D contient tous les éléments ej de E tels qu’on trouve ∗ sur la diagonale du tableau et sur la ligne sj . C’est celui des symboles ∗ de la diagonale du tableau. c’est la thèse de Church (qu’on a utilisée pour démontrer le théorème de Gödel). e1 . mais ce ne peut pas être un des sous-ensembles si .74 Complexité et Algorithmique avancée Preuve 6.2 La technique de démonstration de ce théorème s’appelle diagonalisation ou technique de la diagonale.. on en a l’intuition. L’une des conséquences. est que l’ensemble des suites finies étant dénombrable mais infini.1. La contradiction porte sur notre hypothèse de dénombrabilité de E. . L’ensemble D existe donc. l’ensemble de ses sous ensembles n’est lui pas dénombrable.. programme de calculateur. e2 . .. . . C’est un sous ensemble de E. Tous les mots sont donc codés à partir de cet alphabet. il y aurait une MTU qui l’accepterait.1 La méthode d’énumération des MTU ci-dessus est exhaustive. c’est {0.1 L 6∈ RE.2 75 Indécidabilité Cette technique de diagonalisation est très féconde. T MTU0 MTU1 MTU2 ··· MTUi ··· m0 m1 m2 · · · mj · · · O N N ··· O ··· N N O ··· O ··· O O N ··· N ··· ··· ··· ··· ··· ··· ··· N O O ··· N ··· ··· ··· ··· ··· ··· ··· Considérons maintenant le langage L défini comme suit : Définition 6. L est dit indécidable. notée MTi accepte le mot mj . Chaque case du tableau est remplie de la manière suivante par un O ou un N : – T [MTUi . toutes les MTU sont décrites ainsi. Si L appartenait à la classe RE.Chapitre 6. il est connu. L est le langage des mots de la diagonale. elle permet de démontrer un certain nombre de cas d’impossibilité. c’est-à-dire le mot mi qui occupe la i-ème position pour la machine MTUi . Au passage.2. Considérations théoriques 6. on notera que l’ensemble des MTU est dénombrable. ou plutôt d’indécidabilité. Ainsi.1 L = {m|m = mi ∧ MTUi n0 accepte pas mi . notée MTi n’accepte pas le mot mj (elle calcule indéfiniment ou rejette le mot). i ∈ N ∗ } Comme on travaille ici avec des Machines de Turing Universelles. on n’a pas de problème d’alphabet. ou plutôt tous les langages possibles de MTU. 1}. considérons le tableau T suivant où chaque ligne correspond à une MTU (Machine de Turing Universelle) et chaque colonne à un mot.2. mj ] = O si la ième machine de Turing. – T [MTUi . mais une telle machine ne pourrait être une des machines de l’énumération. Théorème 6. Preuve 6. mj ] = N si la ième machine de Turing.2. En . c’est-à-dire si la MTUk n’accepte pas le mot mk . ou des classes de complexité. un lecteur intéressé pourra consulter l’ouvrage [Wol91]. Soit L∗ ce langage : L∗ = {m|m = mi ∧ MTUi accepte mi . i ∈ N ∗ } n’appartient pas à R. l’un dans RE et l’autre non. par définition même de RE. supposons que la machine MTUk accepte le mot mk . mk 6∈ L et bien sur si T [MTUk . Il n’est pas dans RE.3 Mathématiques ou informatique ? On navigue là aux frontières entre mathématiques et informatique. la «diagonalisation» précédente nous introduit à un problème mathématique qui a fait couler beaucoup d’encre et qui n’est. 6.76 Complexité et Algorithmique avancée effet. dans ce cas. mais il appartient à RE. pas encore bien résolu. L∗ et L.2. Ici on est confrontés au phénomène suivant . On peut donc énoncer le théorème suivant : Théorème 6. On est donc en présence de deux langages indécidables. mk ] = N. à notre connaissance.2. En effet. 6. par définition de L. on doit avoir. i ∈ N ∗ } Or on sait que si un ensemble et son complémentaire sont dans RE alors ils sont aussi dans R c’est en particulier vrai pour les langages. Toutefois. Revenons à notre langage L. il est des langages plus indécidables que d’autres. mk ] = O. mais le langage complémentaire de L y est. . c’est-à-dire qu’on ait T [MTUk .2 Le langage L∗ défini comme L∗ = {m|m = mi ∧ MTUi accepte mi . nous n’entrerons pas dans la construction des classes d’indécidabilité.1 Plus ou moins indécidable Il en va de l’indécidabilité comme des cardinaux infinis. Il existe une hiérarchie des indécidables comme il existe une hiérarchie des cardinaux infinis. L’étude fine de l’indécidabilité n’étant pas l’objet de cet ouvrage. on a mk ∈ L ce qui est contradictoire et démontre le théorème. il est donc indécidable. L 6∈ RE et L∗ ∈ RE. R n’est pas équipotent à N en vertu du théorème ci-dessus. on a R ⊃ N. C’est à dire à l’ensemble de toutes les parties de N. suppression ou rajout (insertion) d’un chiffre à la suite des chiffres constituant pi désigne un autre nombre réel. comme la base 10 par exemple. existe t’il ℵ2 > ℵ1 ? Quelle serait la nature d’un ensemble équipotent à ℵ2 ? 1. et de plus. Par conséquent. C’est une question indécidable. On est donc tenté d’écrire : |N| < |R| mais on note ℵ0 le cardinal de N et en vertu de ce que nous savons sur le cardinal de l’ensemble des parties d’un ensemble. finies et non finies de chiffres. on ne peut le faire (en faisant abstraction de la virgule) avec un nombre fini de chiffres. on peut écrire : Card(R) = 2ℵ0 Et on note : Card(R) = ℵ1 Se pose alors une double question. On peut donc identifier R à l’ensemble des suites. Existe-t-il un ensemble contenant N. on ne peut l’écrire exactement que «pi» ou par une définition telle que c’est le rapport du périmètre de tout cercle à son rayon. Toute substitution. Prenons par exemple le nombre bien connu Π.Chapitre 6. On peut faire ça autant de fois qu’on le veut. 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. Considérations théoriques 77 Considérons l’ensemble R des nombres réels. Mais si on veut l’écrire dans un système de numération positionnelle. . 2. Transitivité {a//b et b//c} =⇒ {a//c}. Notons là ρa . Treillis et Algèbre de Boole ous introduisons dans ce chapitre les structures mathématiques qui permettent en grande partie la base théorique de l’informatique. Symétrie a//b =⇒ b//a . Soient deux droites a et b.1. . L’ensemble des éléments de E qui sont équivalents à a par la relationρ forment la classe d’équivalence de a. N 7. L’informatique ne travaillant que sur des objets discrets (des bits).1 Relations d’équivalence Soit E l’ensemble des droites de R3 .Chapitre 7 Ordres. La relation // " est parallèle à" possède les propriétés suivantes : 1. 3. nous pouvons déterminer facilement si a et b sont parallèles ou non. 7. donc énumérables. Réflexivité ∀a.1 Ensemble quotient Soit un ensemble E muni d’une relation d’équivalence ρ et un élément a ∈ E. Une relation binaire possédant ces trois propriétés est dite d’équivalence. a//a . elle manipule essentiellement des ensembles ordonnés discrets qui confèrent aux données et aux calculs les particularités qui sont utilisées pour les traitements informatiques. L’ensemble des variétés linéaires est l’ensemble quotient R3// .1 La relation est parallèle à est une relation d’équivalence dans R3 .1 Un ensemble partiellement-ordonné 1 est un ensemble dans lequel est définie une relation binaire ≤ qui.1. Certains utilisent les symboles suivants qui signifie en fait successeur et ≺ qui signifie précédent. à partir d’éléments non équivalents. deux classes d’équivalence possédant un élément en commun sont identiques. .2. Réflexivité ∀x. ne peuvent contenir d’élément commun. Un ensemble muni d’une telle relation est dit partiellement ordonné ou.1. Définition 7. par angliscisme. 1. b ∈ ρa } =⇒ {a ρ b }. Cette relation crée une partition de l’espace tridimensionnel R3 en ce qu’il est convenu d’appeler en géométrie dans l’espace. pour tout triplet x. y. 7.2 Ordre. 3. 1. On nomme Ensemble quotient de E par ρ l’ensemble des classes d’équivalence déterminé par ρ sur E. {c ∈ ρa et c ∈ ρb } =⇒ {ρa ≡ ρb }. ordre partiel et préordre [Bir67] La relation binaire ≤ qui peut être interprêtée par "plus petit ou égal à" . x ≤ x . la partition de N se fait entre nombres entiers pairs et impairs. et comme les sous-ensembles ainsi formés. "est une partie de" possède des propriétés qui lui confèrent le statut de préordre ou aussi ordre partiel. 2. les classes d’équivalence de E forment une partition de E. poset. De même pour la parité et la non parité dans N . "contenu dans" . des sous-espace vectoriel (on dit aussi variétés linéaires) qui sont constituées chacune de droites parallèles entre-elles. Deux éléments quelconques de ρa sont {a. Dans ce cas. Exemple 7.1 équivalents . z satisfait aux conditions suivantes : 1. tout élément de E appartient à sa propre classe d’équivalence.80 Complexité et Algorithmique avancée Propriété 7. 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’un pré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 ordre partiel. Soit Σ(E) l’ensemble de tous les sous-ensembles de E, dont E lui-même et ∅. La relation x ≤ y signifiant que x est sous-ensemble de y est un préordre. Exemple 7.2.2 Soit N ∗ l’ensemble des entiers positifs non nuls, la relation 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 sur un 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 partiellement ordonnés P et Q est une bijection qui satisfait l’équation 7.1. Un isomorphisme d’un ensemble partiellement-ordonné sur lui-même est appelé automorphisme. Deux ensembles partiellement ordonnés P et Q sont dits isomorphes (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 que {x˘ ρy} ⇐⇒ {yρx}. Théorème 7.2.1 (Principe de dualité) L’inverse d’un ordre partiel est 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’ensemble pré-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 ∼ La relation de = X. dualité est symétrique. 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 de tous 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çon la borne inférieure qui est également unique lorsqu’elle existe. Définition 7.3.1 (Treillis) Un treillis 1 est un ensemble partiellement ordonné tel que tout couple d’éléments admet une borne supérieure notée x ∧ y et une borne inférieure notée x ∨ y. Un treillis est dit complet si et seulement si tous ses sous-ensembles possèdent une borne supérieure et une borne inférieure. Les opérations binaires ∧ et ∨ des treillis possèdent des propriétés algébriques importantes : 1. Idempotence x ∧ x = x et x ∨ x = x ; 2. Commutativité x ∧ y = y ∧ x et x ∨ y = y ∨ x; 3. Associativité x ∧ (y ∧ z) = (x ∧ y) ∧ z et x ∨ (y ∨ z) = (x ∨ y) ∨ z ; 4. Consistance {x ≤ y} ⇐⇒ {x ∧ y = y} et {x ≥ 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) et x ∨ (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ême des opérateurs. La propriété 3 vient du fait que x ∧ (y ∧ z) = (x ∧ y) ∧ z et x∨(y∨z) = (x∨y)∨z sont des expressions égales respectivement à la borne inférieure et à la borne supérieure de l’ensemble {x, y, z}. La propriété 4 se 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 "ensemble réticulé", mais elle s’applique plutôt aux cas où les treillis considérés sont continus. Chapitre 7. Ordres, Treillis et Algèbre de Boole 83 propriétés 1 à 5 et du principe de dualité. La distributivité faible vient de ce que on a évidemment x ∧ y ≤ x et aussi x ∧ y ≤ y, ainsi que x ∨ y ≥ y et 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 implique 7, le deuxième terme étant obtenu à partir du premier par application du 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 tous les treillis. Les propriétés 7 deviennent alors des égalités. De plus, en arithmétique classique, la distributivité ne s’applique pas pour l’addition x + (y.z) 6= (x + y).(x + z). La distributivité d’un treillis ou d’un sous-treillis fini lui confère des propriétés qui sont hors du propos du présent ouvrage mais qui peuvent permettre 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 triplets d’éléments et dont on pourrait penser qu’il faut la vérifier pour tous les triplets, une propriété sur les paires d’éléments permet d’obtenir un algorithme 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éfini comme 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 treillis fini 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 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 treillis distributif complémenté. Dans un treillis distributif, les compléments sont uniques quand ils existent 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 un et un seul complément noté ¬x ou x possédant de plus les propriétés suivantes : 1. Complémentarité : x ∧ x = 0 et x ∨ x = 1 les éléments 0 et 1 sont 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 prendre deux valeurs et deux seulement, à savoir {vrai ou f aux} ou encore {0, 1} avec 1 pour vrai et 0 pour f aux. Ces éléments 0 ; 1 ou vrai ; f aux sont les éléments universels. Comme nous avons pu le constater ci-dessus, l’algèbre de Boole comporte trois opérateurs appelées connecteurs qui sont ∨ qui correspond au ou logique ; ∧ qui correspond au et logique et ¬x qui est la négation qu’on note aussi x. Les deux premiers connecteurs sont des opérateurs binaires, le troisième est un opérateur unaire, la négation. Le mode opératoire correspondant peut être visualisé par le tableau suivant : 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, à un ensemble de valeurs booéennes font correspondre un ensemble des mêmes f valeurs, f : B − → 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 0 0 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 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 y12 y13 y14 y15 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 86 Complexité et Algorithmique avancée 2 Tableau des 22 opérations booléennes à 2 variables x2 = 1100 Opérateur fonction de base x1 = 1010 booléen équivalente 0 0000 0 1 0001 x1 ↓ x2 2 0010 3 0011 4 0100 5 0101 6 N˚ Libellé nom commun FAUX Jamais x1 ∧ x2 = x1 ∨ x2 NOR ni-ni a x1 ∧ x2 = x1 ∨ x2 inhibition 1 ¬x2 Négation 2 x1 ∧ x2 = x1 ∨ x2 inhibition 2 x1 ¬x1 Négation 1 non x1 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 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 x2 x1 ∨ x2 non x2 a. Ou aussi Aucun b. 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érateur ET conjonction ; EQ, équivalence ; OU disjonction ; et VRAI, tautologie Chapitre 7. Ordres, Treillis et Algèbre de Boole 7.6 87 Expressions booléennes et problème SAT On peut, à partir des opérateurs ainsi définis, définir de manière inductive, le concept d’ expression booléenne. Définition 7.6.1 (Expression booléenne) Nous appellerons expression booléenne et noterons en général φ, une expression formée comme suit : – soit par une seule variable booléenne xi ; – soit par une expression de type ¬φ ou encore φ appelée alors négation de φ, où φ est elle-même une expression ; – soit une expression de forme (φ1 ∨ φ2 ) où φ1 et φ2 sont des expressions booléennes. Une telle expression est appelée une disjonction ; – soit encore une expression de la forme (φ1 ∧ φ2 ) où φ1 et φ2 sont des expressions booléennes. Une telle expression est appelée une conjonction. Une expression booléenne (ou une expression logique 1 ) n’a de valeur que si l’on affecte des valeurs de vérité aux variables qui la composent. Une fonction qui affecte de telles valeurs de vérité à des variables booléennes ou logiques s’appelle fonction d’interprétation. Une fonction d’interprétation particuliè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 la valeur 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 f aux ou {0, 1}. Par la suite, nous ne différencierons plus {1, 0} et l’écriture {vrai, f aux}, on identifiera par convention 1 à vrai et 0 à f aux 2 utilisant indifféremment l’une ou l’autre notation. La valeur d’une expression booléenne est obtenue par combinaison des opérateurs ci-dessus. Allant du cas simple de la variable unique aux expressions combinant les divers opérateurs, nous dirons procéder par induction. 1. On dit aussi proposition logique et on parle alors de calcul propositionnel 2. On pourrait très bien faire le contraire, à savoir identifier 1 à f aux et 0 à vrai. – si φ = (φ1 ∨ φ2 ) ou φ = (φ1 ∧ φ2 ) alors X(φ) = X(φ1 ) ∪ X(φ2 ). Exemple 7. x2 . . .. Définition 7. X0 ⊆ X sur les valeurs logiques {vrai. 1) quelle que soit les affectations de valeurs de vérité aux variables qui les composent.6. – si φ = φ1 alors X(φ) = X(φ1 ) . On définit alors ce que signifie " V satisfait φ". j.3 (Expression valide ou Tautologie) {∀xi ∈ {0. .n). Supposons maintenant que V soit appropriée à φ. 0}.. . xn ) = 1} ⇔ {f est valide}. affectation appropriée à φ. c’est à dire à celles qui prennent la valeur de vérité vrai (resp. L’algèbre booléenne de la logique s’intéresse aux expressions dites valides. i = (1. En effet. xj . la table de vérité de cette expression est la suivante : 7. f (x1 .6.6. Soit φ une expression booléenne. .2 (Valeur de vérité) Une valeur de vérité V associée à un ensemble de variables booléennes.6..88 Complexité et Algorithmique avancée Définition 7. ou ce qui revient au même {1. On définit inductivement l’ensemble X(φ) des variables booléennes tel que X(φ) ⊆ X dans φ comme suit : – si φ est composé d’une seule variable booléenne xi .1 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 Satisfaction d’une expression Soit donc V une valeur de vérité associée à un ensemble X0 de variables booléennes tel que X(φ) ⊆ X0 . on appelle une telle affectation. 2.2 L’expression φ = ( x1 ∧ x2 ) ∨ x1 est valide (est une tautologie). f aux}. 1}. est une application d’un ensemble fini X0 de variables booléennes. alors X(φ) = {xi } . noté V φ. Treillis et Algèbre de Boole 89 Définition 7.Chapitre 7.(d’après[Pap95]) Exemple 7. si φ = φ1 ∧ φ2 . notée V φ. alors V φ si V(xi ) prend la valeur vrai . . il faut que les deux termes de la conjonction le soient.6. alors V φ seulement si V 2 φ1 . et on note : φ1 ≡ φ2 . et alors V : x = y = z = vrai satisfait φ et est aussi une valeur de vérité appropriée pour φ (en fait {v satisf ait φ} =⇒ {V φ}). Il peut être plus court et surtout plus explicite d’utiliser les implications. c’est à dire ici. {{φ1 ≡ φ2 }et{V φ1 }} =⇒ {V φ2 } Des expressions équivalentes peuvent être considérées comme représentatives du même objet mathématique et elles sont alors interchangeables. Ainsi . – et. il faut que V (x ∨ y). Ordres. ici V z. alors {V φ} =⇒ {V φ1 ou V φ2 } . Exemple 7.e. il s’ensuit que V 2 (x ∨ y). c’est à dire encore V 2 y. alors {V φ} =⇒ {V φ1 et V φ2 }. Dans le cas contraire. on a bien sûr V φ1 . Comme on a V(y) = f aux. De même. Une valeur de vérité appropriée à φ serait :V(x) = V(z) = vrai et V(y) = f aux.4 (Satisfaction) Si φ est une variable xi ∈ X(φ). On dit alors que les expressions φ1 et φ2 sont équivalentes. Informellement. pour que φ soit satisfaite. c’est à dire si : V φ ? En fait. Ainsi (φ1 =⇒ φ2 ) est une expression plus explicite et plus courte pour (φ1 ∨ φ2 ).6. alors V 2 x. Deux expressions φ1 et φ2 sont dites équivalentes si et seulement si toute valeur de vérité appropriée à l’une des deux est aussi appropriée à l’autre. – Si φ = φ1 ∨ φ2 . abrégée) pour ((φ1 =⇒ φ2 ) ∧ (φ2 =⇒ φ1 ). Si φ = φ1 .4 (Valeur de vérité "satisfaisante") Par contre : {V(x) = V(z) = V(y) = vrai} =⇒ {V φ}. Mais comme φ est une conjonction. dire que l’affectation V de valeurs aux variables booléennes d’une expression booléenne φ est une valeur de vérité appropriée pour φ. Supposons V x .6. Par conséquent V 2 φ. La question maintenant est de savoir si V satisfait φ. signifie que cette affectation n’entraîne pas de contradiction dans φ.3 (valeur de vérité appropriée non satisfaisante) Soit l’expression booléenne φ = ((x ∨ y) ∧ z). (φ1 ⇐⇒ φ2 ) est une écriture condensée (i. 2 Algèbre de Boole Les opérateurs booléens (connecteurs logiques) munissent l’ensemble des propositions logiques (des variables et expressions booléennes) d’une structure appelée Algèbre de Boole. des connecteurs) généralisés et . 5.6. 2. on a les propriétés suivantes : 1. Distributivité (φ1 ∧ (φ2 ∨ φ3 )) ≡ (φ1 ∧ φ2 ) ∨ (φ1 ∧ φ3 ) et (φ1 ∨ (φ2 ∧ φ3 )) ≡ (φ1 ∨ φ2 ) ∧ (φ1 ∨ φ3 ) .2.1 Formes normales P Notation Comme en arithmétique classique. elles peuvent toutes s’écrire suivant deux formes standarts.90 Complexité et Algorithmique avancée 7. Ipsonégation φ ≡ φ qui découle de la définition de la négation . Associativité ((φ1 ∨ φ2 ) ∨ φ3 ) ≡ (φ1 ∨ (φ2 ∨ φ3 )) ≡ (φ1 ∨ φ2 ∨ φ3 ) et ((φ1 ∧ φ2 ) ∧ φ3 ) ≡ (φ1 ∧ (φ2 ∧ φ3 )) ≡ (φ1 ∧ φ2 ∧ φ3 ).6. Ainsi. Exemple 7. 7.5 (FNC) L’expression (x1 ∨ x3 ) ∧ (x2 ∨ x3 ) est une forme normale conjonctive. 4. Exercice 3 Démontrer les formules 5 (distributivité) et les formules de De Morgan 6. Q Définition 7. pour les symboles V W et on utilise des opérateurs (i. 3. De plus.6. Idempotence φ1 ∨ φ1 ≡ φ1 et symétriquement φ1 ∧ φ1 ≡ φ1 . ≡ (φ1 ∧ φ2 ) et 7. les expressions booléennes présentent une particularité trés pratique. Ce sont là aussi des conséquences immédiates des définitions . 6. Chaque disjonction est alors appelée clause.6. . Formules de De Morgan (φ1 ∨ φ2 ) (φ1 ∧ φ2 ) ≡ (φ1 ∨ φ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 ∧ . (x1 ∨ x3 ) et (x2 ∨ x3 ) en sont les clauses.5 (Forme normale conjonctive) On appelle Forme normale conjonctive ou FNC une expression booleénne formée de conjonctions de disjonctions. Complémentarité φ ∨ φ ≡ 1 et φ ∧ φ ≡ 0 .e. 6. dit autrement..3 Le problème SAT Le problème central auquel se heurtent les logiciens et identifié par Lévine et Cook comme central en théorie de la complexité est celui dit de la satisfiabilité . Treillis et Algèbre de Boole 91 Définition 7. 1} aux variables constituant cette FNC et lui conférant la valeur 1 ? Comme nous le verrons. existe-t-il une valeur de vérité satisfaisante pour cette FNC.6 (FND) L’expression (x1 ∧ x3 ) ∨ (x2 ∧ x3 ) est une forme normale conjonctive. la théorie de la complexité calculatoire se pose la question de savoir s’il existe toujours. φ = x.6. Exercice 4 Démontrer le théorème 7. plusieurs solutions sont possibles.1 La preuve s’obtient par application systématique des formules de De Morgan et de la propriété d’idempotence pour ne pas avoir de variable répétée. voir [Lav74].6. il s’énonce comme suit : Étant donnée une FNC. existe-t-il une affectation de valeurs {0.6.6 (Forme normale disjonctive) On appelle Forme normale disjonctive ou FND une expression booleénne formée de disjonctions de conjonctions.1 (Théorème général des formes normales ) Toute expression booléenne peut s’écrire sous forme normale conjonctive ou sous forme normale disjonctive. en examinant d’abord le cas où l’expression ne contient qu’une seule variable. un algorithme. . (x1 ∧ x3 ) et (x2 ∧ x3 ) en sont les monômes. Preuve 7.6. 7. Théorème 7.. ou.1 On procèdera par induction et éventuellement idempotence. c’est-à-dire dans le pire des cas. Chaque conjonction est alors appelée monôme.Chapitre 7. Ordres. puis le cas de la négation φ = φi etc. On peut remarquer que le passage d’une forme de l’expression à une autre. l’écriture sous forme normale conjonctive ou disjonctive s’obtient par un procédé algorithmique. polynomial en temps susceptible de répondre à cette question.6. Exemple 7. . ou disjonctif noté ⊕.1 Portes et circuits digitaux es circuits électroniques. digitaux représentent la réalisation physique des propriétés logiques d’algorithmes de calcul. V W Une table comme celle-ci ou comme celles des opérateurs . Pour cela. auxquels on ajoute en général un opérateur. ¬ s’appelle une porte logique. appelé aussi XOR qui de définit par la table de vérité suivante dont le schéma de réalisation physique est donné par le graphe C1 de la figure 8. On peut "coder dans le dur" les algorithmes. on utilise les propriétés de l’algèbre de Boole et de ses opérateurs. .Chapitre 8 Circuits booléens 8. Une porte logique est une unité de calcul . c’est à dire réaliser physiquement des circuits électroniques qui exécutent des fonctions précises. c’est à leur aspect logique et graphique que nous nous attachons.1 : L 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. la valeur qu’elle transmet est décidée par un agent extérieur. Ici. Sur la figure 8. Par contre ce schéma C2 est celui de deux fonctions différentes Z et T dépendantes des mêmes valeurs de 3 variables x. c’est l’assignation de valeur à une variable. Le mot digital est un mot de la même famille que doigt et désigne un nombre. Un circuit digital 1 est constitué de portes logiques et portes d’entrée reliées par des fils. 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 . 1. Les fils (les arcs sur le graphe représentatif) permettent de transmettre les valeurs d’une sortie de porte à l’entrée d’une autre. y. on obtient une valeur en sortie du circuit.e. on obtient une telle valeur en sortie en accord avec la table de vérité correspondant à la porte considérée. nous dirons que la deuxième porte dépend de la précédente. par opposition ici à circuit analogique. on dit alors que le circuit a calculé cette valeur et a exécuté la fonction (i. l’algorithme correspondant).1 ce sont les variables x et y qui jouent ce rôle pour le circuit C et x. Une porte d’entrée n’a pas de sortie. On utilise aussi le terme de porte d’entrée. – la porte XOR (⊕) inférieure a aussi deux sorties. différentes. on a pour le schéma C2 : T = (x ∧ y) ∨ ((x ⊕ y) ∧ c) et Z = (x ⊕ y) ⊕ c. Dans ce cas. Bien sûr dans un tel cas. Lorsqu’on assigne des valeurs aux portes d’entrées. Dans la figure 8. c’est deux fois la même sortie ou même valeur de sortie. .94 Complexité et Algorithmique avancée logique possédant des entrées et une sortie (en général une ou deux entrées et une sortie). y et c pour le circuit C∗ .1. c. il n’y a pas deux sorties. Lorsqu’on assigne des valeurs 0 ou 1 aux entrées. c’est-à-dire deux valeurs. Circuits booléens 95 Z T ∨ ∨ Z ∧ ⊕ ¬ X Circuit C1 ∧ ∧ ⊕ ¬ ¬ ∧ ⊕ Y X Y C Circuit C2 Figure 8. on utilise des "briques" de base. c’est à dire des portes déjà prêtes qu’on assemble entre elles.1. ¬. Une base universelle est une base à partir de laquelle on peut générer toutes les fonctions booléennes. ou.1. C’est la "base" du circuit.1 {∨. alors que {∧.Chapitre 8. ∧. Définition 8. universelle. non soit symboliquement ∧. ¬} est une base. ∨.1 – Graphes de schémas logiques de circuits digitaux 8. ⊕} n’en est pas une.2 (Base standard) On appelle base standard. ∨.1. .1.1 (Base) Une base d’une fonction booléenne F est un ensemble de fonctions booléennes à partir desquelles ont peut générer la fonction F. la base formée des opérateurs et. Exemple 8.1 Base standard Pour construire un circuit de façon générale. Définition 8. le monôme (x ∧ y ∧ z) . Ainsi. le nombre de clauses est au plus 2n . – pour la ligne n˚3 .1. Exemple 8. on peut associer une clause conjonctive ou monôme. à chaque valeur 1 de la fonction. Ainsi. Pour une fonction f à n variables booléennes. soit ici 8 qui est le nombre de lignes du tableau. la fonction f s’écrit en Forme Normale Disjonctive et contient quatre monômes et s’écrit alors : f = (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) . 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).96 Complexité et Algorithmique avancée La base standard est en fait universelle. – pour la ligne n˚2 .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. le monôme (x ∧ y ∧ z) . ce qui signifie que toute fonction booléenne f peut-être représentée par un circuit à partir de cette base. toute fonction booléenne pouvant être calculée (au sens des circuits) avec ces trois opérateurs. schéma dans lequel on n’a pas détaillé les schémas propres aux monômes. et ainsi.2 permet de voir le schéma de principe du circuit associé à la fonction f . . l’un qui calcule l’expression T = (x ∧ y) ∨ ((x ⊕ y) ∧ c) et l’autre évidemment z = (x ⊕ y) ⊕ c On vérifiera qu’en fait le circuit C1 est une porte logique ⊕. on peut toujours remplacer dans les schémas la porte ⊕ par son schéma. f ∨ ∨ ∨ f (x ∧ y ∧ z) (x ∧ ¬y ∧ ¬z) (¬x ∧ y ∧ ¬z) (¬x ∧ ¬y ∧ z) Figure 8. Ainsi on n’est amené à ne considérer que la base standard qui est universelle.2 – Schéma logique du circuit booléen : f = (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) ∨ (x ∧ y ∧ z) En fait. Circuits booléens 97 La figure 8. dans la figure 8.1 C2 représente la combinaison de deux circuits.Chapitre 8. . x2 .1 Toute fonction booléenne f . Il est alors facile de construire une expression booléenne. . vn ). vrai) et la négation de toutes les variables ayant pris la valeur 0 (resp. À chaque n-uple v = {v1 .. xn représente une fonction booléenne f (x1 .. 1}. .. 1} ou encore . Preuve 8. x2 . {{f (v) = 1} ⇐⇒ {V φ}} et {{f (v) = 0} ⇐⇒ {V 2 φ}} De cette façon.2. 1}n : ∀X ∈ F. En effet. x2 . la réciproque est vraie. . f (X∗ ) = 0. on fait correspondre un monôme de l’expression générale. xn ) si. . f aux}n −→ {vrai. 1}n − F. 1}n de tous les n-uples.2. L’expression booléenne représentative de la fonction f est alors obtenue par réunion de tous les monômes de type Cv pour toutes les . valeurs de vérité telles que f prenne la valeur vrai F ⊆ {0.. pour tout n-uple de valeurs de vérité ∀v : v = (v1 . vn } de F. avec n = | X(φ) |. vi ∈ {0.1 Soit F le sous ensemble de {0. à n variables peut s’écrire sous forme d’une expression booléenne φf de variables x1 . Comme nous allons le voir..98 8. f : {vrai. . . xn . . toute expression booléenne représente une fonction booléenne.2.1 (Fonction booléenne) Une fonction booléenne f à n variables est une application : f : {0. vrai si V φ et faux si V 2 φ. Théorème 8. f (X) = 1 et ∀X∗ ∈ {0. pour toute valeur de vérité V assignée aux variables de φ. Soit Cv un tl monôme. Une expression booléenne φ de variables x1 ... f aux} Une expression booléenne φ peut être vue comme une fonction booléenne à n variables fφ ... . On peut ainsi préciser le rapport entre expression et fonction booléenne.. une valeur de vérité est définie pour φ . par conjonction des variables ayant pris la valeur 1 (resp.. faux). 1}n −→ {0. v2 .2 Complexité et Algorithmique avancée Fonctions booléennes et circuits Définition 8. De plus.1 représentant une configuration de variables booléennes ayant toutes la valeur 1 (i. Lupanov en déduit un schéma général d’une expression booléenne qui peut alors être visualisée comme montré par la figure 8. il est en général hors de question de construire φf qui possède un nombre de symboles de l’ordre de O(n2 × 2n ).1) Chacun des monômes (xij ∧ . Circuits booléens valeurs de v.. (8.. chaque sommet du schéma représentatif étant associé à un composant) à un coefficient multiplicatif près .e.4.Chapitre 8. En fait.. On a donc la forme normale disjonctive :φf = c’est à dire : φf = (xi1 ∧ . 8. seuls les symboles associés aux opérateurs apparaissent.. on utilise plusieurs mesures : – Le nombre total de "composants" qu’on appelle la taille du circuit .. et un opérateur unaire noté ¬x ou x pour la négation de la valeur prise par la variable x. ∧ xin ) 99 W ∀v∈F Cv . qui est en fait représentatif du nombre de sommets (et donc de composants. il s’agit là d’une démarche théorique en vue de la démonstration. Lupanov [Lup63] partant du principe que toute expression booléenne n’utilise que la base standard (dite aussi base canonique) c’està-dire in fine que trois opérateurs. Lupanov mesure la complexité d’un circuit booléen au nombre minimal de composants de base nécessaires à sa réalisation.3 Circuits booléens En 1963. – le nombre d’arcs... ∧ xik ) ∨ . ∨ (xil ∧ . deux binaires (∧ noté aussi en logique et 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’incidence sur la suite-). Bien entendu. ∧ xil ) de l’équation 8.. Il en déduit une écriture "graphique" des expressions booléennes basée sur deux éléments graphiques de base et deux seulement comme nous l’avons noté précédemment. . respectivement vrai). Dans ce type de représentation. . à partir de portes (circuits de base) et des lois pour les composer. x2 . on pourrait rajouter le nombre minimal de générateurs nécessaires à sa construction. xn } sont appelés les portes du circuit C. On peut ainsi créer une algèbre des circuits.1 (Circuit booléen) Un circuit booléen est un graphe orienté C = (X. Les arcs sont orientés dans le sens de parcours du circuit par les impulsions électroniques ...3. Les arcs (xi . dans l’ordre induit par les arcs 1 . Γ) dont les sommets X = {x1 . Définition 8. xj ) ∈ Γ relient les portes entre-elles. domaine qui sort du propos du présent ouvrage.100 Complexité et Algorithmique avancée ET/OU ∧∨ NON ¬ « Briques » de base des graphiques de Lupanov Figure 8. Γ− (x) ≤ 2 et Γ+ (x) ≤ 1 1..3 – Opérateurs booléens vs graphes – la longueur de la plus longue chaîne du graphe associé appelée alors la profondeur du circuit. un circuit booléen possède les caractéristiques suivantes : 1. De plus. En considérant le demi-treillis associé à un tel schéma. il s’agit alors du domaine de la complexité algébrique. en termes de théorie des graphes.1} xi ∈ {0. si Γ+ (xi ) = 0 alors celle-ci est dite une sortie du circuit (ou extrant ou encore. Une famille de circuits C = {C0 . c’est un arbre . à chaque porte xi est associé un type t(i) ∈ {vrai. La porte xi est alors considérée comme une porte d’entrée du circuit (ou encore intrant. f aux. 3.1} x2 ∈ {0.. pour une porte xi .} est dite calculant f : {0.4 – Schématisation générale d’une expression booléenne 2. f aux}} =⇒ {Γ− (xi ) = 0}. C1 . . – {t(i) ∈ {∨. C est sans circuit. – {t(i) ∈ {vrai. Cn . ou en anglais input) . ∧}} =⇒ {Γ− (xi ) = 2 } 4. 1} est une restriction de f sur {0.1} 0. La fonction f est alors dite posséder une taille de circuit polynomiale si il existe une famille C de circuits et un polynôme p(n) tel que C calcule f et qu’on a : taille(Cn ) ≤ p(n).1} Figure 8. . en anglais output) . ¬}...1} xn ∈ {0. 1}n −→ {0. Ci . ∀n ∈ N . ∨. – t(i) = ¬ alors Γ+ (xi ) = Γ− (xi ) = 1 . Circuits booléens 101 x1 ∈ {0. ∧. 1}∗ −→ {0. 1} si et seulement si Cn calculefn et que fn : {0.1 xn-1 ∈ {0. . 1}n .. ..... le graphe d’un circuit booléen est dit acyclique.Chapitre 8. c’est-à-dire la longueur du plus long chemin qui mène d’une entrée du circuit à la sortie. la complexité en temps d’un tel circuit est mesurée par la profondeur dudit circuit.102 Complexité et Algorithmique avancée En fait.3. 8. 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 donc sans doute très difficile.1 Circuit-SAT Comme on pouvait s’y attendre. il existe une variante de SAT pour les circuits (voir [Pap95] p. 81) appelée CIRCUIT-SAT.0. . Étant donné un circuit C. C’est une façon très simple de décrire une structure ou une situation..). mais plutôt fini pour les applications courantes) dans lui-même.. métropolitain. Γ) est le graphe au sens des applications d’un ensemble discret (fini ou non. en biologie ou en météorologie comme en neurologie ou en sciences sociales. P 9.Chapitre 9 Quelques problèmes de référence our la suite de l’exposé. la structure la plus employée est celle de graphe. Ber69] et aussi [Roy70]) est une structure mathématique composée d’un ensemble fini de sommets X = x1 . entre personnes. Qu’il s’agisse de représenter un réseau (route.. Un graphe G = (X.. réseau d’eau.. xn et d’un ensemble fini d’arcs Γ ⊆ X × X. . réseau informatique..) ou une relation (entre mots dans un texte. La plupart des problèmes intéressants en informatique sont posés en termes discrets. nous ferons référence à quelques problèmes types qui sont représentatifs des situations auxquelles nous serons confrontés. Le graphe illustre le dicton français "un bon dessin vaut mieux qu’un long discours". entre pièces détachées. .1 Introduction à la théorie des graphes Un graphe (voir [Ber58.. L’une des structures de modélisation couramment employée est le graphe. . c’est à dire combinatoires. on parle d’arêtes en lieu et place d’arcs. il sera dit fortement connexe s’il existe un chemin entre tout couple de sommets. des neurones aux réseaux routiers ou aux oléoducs. – chemin Un chemin entre deux sommets x et y est une succession d’arcs tels que l’extrémité de l’un soit origine du suivant. .e. Dans la figure 9.2 Exemple de représentation de graphes On peut représenter le graphe G de la figure 9. E. D. C. D. quel qu’il soit. Un chemin élémentaire [x. et [A.1. Γ} . l’un dans un sens. X = {A. F] aussi.1 [A. un arc n’apparaît qu’une seule fois . – connexité. . F} . – chaîne Les mêmes notions. non orientées sont utilisées. Au lieu de chemin on parle alors de chaîne . Ainsi [A.1. – adjacence et voisinage Deux sommets sont dits adjacents s’ils sont reliés par un arc ou une arête et ils sont alors dits voisins . – degré Le nombre d’arcs issus d’un même sommet donne le degré extérieur de ce sommet. B. Les graphes sont de précieux outils de modélisation pour maintes situations du monde réel.104 9. D. B. on a : Γ+ {E} = 2 et Γ− {E} = 3 et Γ{x} = 5. dans la figure 9. il y a toujours deux arcs. un sommet n’apparaît qu’une seule fois. Lorsqu’il s’agit de graphes non-orientés. 9. D. quel qu’il soit. F] est un chemin élémentaire de A à F. . x étant origine et y extrémité du chemin. E.1.y] est un chemin dans lequel. Ces degrés sont notés respectivement pour un sommet x : Γ+ {x} et Γ− {x} et le degré du sommet est : Γ{x} = Γ+ {x} + Γ− {x}. C.y] est un chemin dans lequel. Un chemin simple [x. E. et le nombre d’arcs incidents en un sommets (i.1 comme suit : G = {X. F] est une chaîne élémentaire de A à F. y arrivant) donne le degré intérieur dudit sommet. forte connexité Un graphe sera dit connexe s’il existe une chaîne entre tout couple de sommets. Ainsi. l’autre dans l’autre). mais on utilise aussi souvent des graphes non-orientés (c’est à dire alors qu’entre deux sommets liés dans le graphe. E.1 Complexité et Algorithmique avancée Petit vocabulaire de théorie des graphes Le concept de graphe est un concept orienté. B). F). Quelques problèmes de référence A 105 C E F B D Figure 9. Nous reviendrons sur ce problème de la représentation et du codage de l’énoncé du problème et des données. par file des successeurs et/ou des prédécesseurs. (E. (C. (B. sur la figure 9. (F. (C. A).Chapitre 9. F). E). (C.1 – Exemple de graphe Γ = {(A. (E. (C. .3 une représentation de graphe par matrice booléenne. (D. D). (A. D). On pourrait encore décrire le graphe d’une façon plus informatique. D). E). E)} Ou comme suit. B). par la matrice d’adjacence G : G = A B C D E F A 0 0 1 0 0 0 B 1 0 0 0 1 0 C 0 0 0 0 0 0 D 0 1 1 0 1 0 E 1 0 1 0 0 1 F 0 0 1 1 0 0 On verra plus loin. 1.3 Complexité et Algorithmique avancée Quelques sous-ensembles remarquables de sommets F E Ensembles stables intérieurement. – .a..B}!. Ainsi peut-on définir des ensembles dits stables.F}!.e. A.C}!. un chemin) ..E.d qu’on ne peut y rajouter un sommet)!et aussi au sens du cardinal (i. le nombre de stabilité interne de ce graphe est donc égal à 3. – toute chaîne (resp. C. chemin) joignant deux sommets n’appartenant pas au sous-ensemble considéré passe obligatoirement par un sommet du sous-ensemble . {D. A D B C Les trois sommets en noir. – il n’y a ni chemin ni chaîne entre tout couple de sommets du sous-ensemble considéré . tant intérieurement qu’extérieurement : . orienté ou non. {A.106 9. {D. Figure 9. maximaux!: {A.C. D forment un ensemble stable intérieurement. maximal au sens de l’inclusion (c.2 – Ensemble stable intérieurement Dans un graphe.D}!. en nombre de sommets). un sous-ensemble de sommets peut-être jugé remarquable par rapport à des propriétés de connexion : – deux sommets du sous-ensemble sont toujours reliés par une chaîne (resp. 2 illustre cette notion de stabilité interne.. Pour un graphe G. Les problèmes de recherche d’ensembles stables ou absorbants se posent en termes de minimisation de fonction booléennes. l’e. {I ⊆ X est un e. appelé aussi nombre d’absorption du graphe considéré.i {A. De plus. D} est maximal au sens du cardinal.e.s.i) si. d’un même graphe est encore un e.e.i dans ce graphe qui contienne plus de trois sommets. De plus. c’est à dire qu’il n’existe pas d’e.e. identifier un e. Dans un réseau par exemple. dans un graphe connexe.} ⇐⇒ {∀xi . I ⊆ X forme un ensemble stable intérieurement (e. xj ) 6∈ V} La figure 9. De plus. La réunion de deux e.i.s.s.1. (xi .m.i. notés ici e.1 (Stabilité interne) Soit G = (X. En théorie des jeux le concept peut s’avérer fondamental (voir [Roy70] T. par conséquent. Set covering problem en anglais.s. Quelques problèmes de référence 107 Définition 9.s.Chapitre 9. On peut remarquer que E n’est jamais vide puisque X est toujours un e..s.2. C. xi ) ∈ Γ .s.e. p. un ensemble E ⊂ X est dit stable (e.25). Les éléments minimaux de ce sup-demi-treillis. les ensembles stables ici sont maximaux au sens de l’inclusion.m. peut s’avérer crucial pour déterminer les noeuds stratégiques en cas de panne. On note en général E l’ensemble des e. Le concept d’ensemble stable extérieurement est trés important en théorie des graphes.s. xj ∈ I. est aussi un e. et seulement si deux sommets quelconques de cet ensemble ne sont pas adjacents. Le cardinal minimal pour un e.e.s. C’est à dire que : ∀xi 6∈ E ∃xj ∈ E : (xj ..s. et seulement si : E ∪ Γ(E) = X. on le note : β(G). sont définis par le fait qu’aucun de leurs sous-ensembles stricts n’est un e. E muni de la relation d’inclusion est un sup-demi-treillis. il conduit au problème connu sous la dénomination de problème du recouvrement 1 . en abrégé).e. . ou absorbant si. . Γ) . Ce nombre est le nombre de stabilité interne du graphe.s.e.2 (Stabilité externe) Soit un graphe orienté G = (X.m.s. tout complémentaire d’un e.e.s. V) un graphe nonorienté.s. c’est-à-dire qu’on ne peut pas leur rajouter un sommet sans perdre la propriété de stabilité interne.e. d’un graphe.s. Définition 9. 1.e.1. fournit le nombre de stabilité externe. Γ) un graphe. à savoir le problème dit de satisfiabilité ou encore SAT.e. le problème de la recherche des ensembles stables d’un graphe peut-il être posé sous forme de minimisation d’une fonction booléenne et donc sous une forme standard sur laquelle nous reviendrons et qui est centrale en théorie de la complexité. stable extérieurement) doit.1 nous indique qu’un ensemble absorbant (i. soit contenir si soit au moins un de ses descendants.j ) est la matrice booléenne associe à G. P est dit absorbant [Ber58. S étant l’ensemble des sommets et Γ celui des arcs.1 Soit un graphe G (voir figure 9.j ∧ xi = 1 (9. et si on associe aux sommets si de S les variables booléennes xi . l’expression xi ∨ j ai. Exemple 9.j ∧ xj doit prendre la valeur 1 quelque soit xi . Ber69] ou stable [Roy70] si et seulement si : ∀si ∈ S.e.1. la condition 9. On peut donc ré-écrire la condition 9. (d’après [Lav74]) qui est aussi le plus petit cardinal de couverture.4 Complexité et Algorithmique avancée Ensembles absorbants et nombre d’absorption Soit G = (S.2) La solution de cette équation booléenne 9. Donc. dans l’expression booléenne W W de P.3) de matrice booléenne associée : .1 sous forme d’équation booléenne : Cp ≡ ^_ i j ai. si ∪ Γ(si ) ∩ P = 6 ∅ (9. Ainsi. absorbants).108 9. Le nombre d’absorption est alors : β(G) = min | P | qui est la valeur du cardinal minimal d’un ensemble stable de G.1.2 donne tous les ensembles stables extérieurement (i.1) Si A = (ai.j ∧ xj = j ai. 5} 1 4 1 Figure 9. la question est : existe-t-il un chemin d’origine xa et d’extrémité xb ? Comme nombre de problèmes. Γ).2 Existence de chemin Soit un graphe G = (X. xj ) ∈ Γ un arc. Γ).3 – Ensemble absorbant 9.2. il y a une grande quantité d’instances possibles à ce problème. |X| ∈ N et Γ ⊆ X × X .Chapitre 9. Un élément x ∈ X est appelé un sommet et (xi . G = (X. Quelques problèmes de référence 109 1 2 1 7 1 1 A= G 6 1 3 1 5 X1 X2 X3 X4 X5 X6 X7 _________________ 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 P ensemble stable minimal de cardinal minimal!: P = {1. l’une décrivant une classe de problèmes. c’est-à-dire en fait de façons de poser le problème lui même. alors que . Un couple de sommets (xa . existe-t-il un chemin de xi à xj ? est une instance générique . xb ) étant donné. |X| ∈ N et Γ ⊆ X × X. Nous serons amenés à distinguer entre instances génériques et instances particulières pour un problème donné. l’autre un élément de la classe. 4 : Chaque instance. (C. D. (D. Nous verrons que cette forme est très riche et a joué un rôle central dans l’élaboration de la théorie. P} . . G.110 Complexité et Algorithmique avancée A B S C P E F G D Figure 9. (B. (C. (S. S). (B. (F. et existe-t-il un chemin de S à P ? est une instance particulière et caractérise le problème sur le graphe de la figure 9. C). A). A). G). La forme prise par la question caractérise le problème. B). (A. De tels problèmes. On remarquera que le problème précédent pose une question dont la réponse est soit oui. (F.4 – Existence de chemin entre deux sommets X = {A. E). F). (E. G)}. F. (C. soit non. non seront par la suite appelés problèmes de décision . D). C. générique ou particulière est un objet mathématique (ici un graphe et deux de ses sommets) sur lequel on pose une question à laquelle on espère une réponse. E. B. Γ = {(A. (D. à réponse oui. E). S. D). (S. E). P). G). (P. Chapitre 9. on a alors S = ∅. Chaque sommet peut se trouver dans un des deux états. vide au début . file. d’exprimer ceux-ci et d’en mettre en évidence quelques propriétés permettant de les comparer à une aune commune. tas. si un sommet est non marqué. Il conviendrait ici de préciser la forme sous laquelle sont présentées les données d’une part. . les structures de données utilisées d’autre part pour représenter les données intermédiaires comme l’ensemble S. et on inclut j dans S puis on en exclut i si et seulement si ∀x ∈ Γ+ {i}. S’il s’agit d’une pile. il s’agit d’un principe algorithmique. j) ∈ Γ et j 6∈ S. sans plus. cela signifie qu’il n’a jamais fait partie de S. nous reviendrons sur le concept de machine de Turing. on choisit un sommet i ∈ S et on considère un sommet j ∈ X non marqué tel que (i. Ainsi les performances de l’algorithme dépendent-elles de nombreux éléments. permettant à la fois de préciser les concepts de problème et d’algorithme. On continue jusqu’à ce qu’on ait de nouveau S = ∅. alors si xj est marqué. Si on marque xj . Lorsque l’arrêt de l’algorithme a lieu. À chaque itération. ou algorithme glouton .. D’autres aspects de spécification sont laissés dans l’ombre comme la façon d’opérer le choix d’un élément dans S par exemple. la réponse est oui . L’algorithme le plus classique pour résoudre notre problème d’existence est connu sous le nom d’algorithme de recherche. C’est ce que nous avons ajouté dans la spécification sous forme de commentaire à la ligne 18 bis. Dans le chapitre suivant. on obtient un parcours dit en largeur qui nous assure. La forme la plus élémentaire en est la suivante : On maintient une structure de données qui est un ensemble de sommets S. sinon elle est non. D’autres structures de données comme le Tas. marqué ou non marqué . comme dans l’exemple de spécification ci-dessus. on utilise une méthode dite en profondeur d’abord. on a S = ∅. On peut remarquer qu’une première amélioration intuitive est d’ajouter un test de terminaison. si la structuration de S est une file. Au départ. Exprimé ainsi. À chaque étape de l’algorithme. x ∈ S. ou d’autres critères de choix d’un élément de S (aléatoire par exemple) peuvent être utilisés. il n’est plus nécessaire de continuer. si y est marqué que c’est par le plus court chemin au sens du nombre d’arcs. On marque alors j.. on initialise l’algorithme en marquant xi et en l’incluant dans S. Quelques problèmes de référence 111 Notre propos est de nous intéresser aux algorithmes qui résolvent ce problème. modèle formel. pile. inspirée de l’algorithme de Trémaux. 15 pour i = 1 à d faire 16 si mark(succ(xx. 02 var 03 pile: pile. 05 i. /* parcours "en profondeur d’abord" /* 11 tantque pile <> vide 12 xx:= sommet(pile). n. pile). 13 dépiler(sommet(pile)). 04 x. 06 successeurs : tableau(n):entier. y.pile). 10 mark(x) := 1. d: entier. booléen. xx : Sommet. 14 d := deg(xx). 08 begin /* initialisation de la pile /* 09 empiler(x.i)). x.y: Sommet). n: entier.i)) := 1 /* 18 bis /* si mark(y) = 1 alors print "oui" stop /* 19 finsi 20 finpour 21 fintantque 22 si mark(y) =1 alors imprimer "oui" 23 sinon imprimer "non" 24 finsi 25 end Exist ---------------------------------------------------- . 18 mark(succ(xx. 07 mark : tableau(n).112 Complexité et Algorithmique avancée ---------------------------------------------------Algorithme glouton à pile: ---------------------------------------------------01 Procedure Exist(succ: GrapheSuc. j.i)) = 0 alors 17 empiler(succ(xx. Dans le meilleur des cas. la théorie de la complexité raisonne en "pire des cas" et le pire des cas reste le même avec ou sans cette instruction. Là. on marque en fait tous les sommets atteignables à partir de x.2. Il n’en est rien du point de vue fondamental. bien connu. . Dans le pire des cas. soit n2 arcs. le nombre d’opérations élémentaires effectuées par l’algorithme est une constante arithmétique (i. pour chaque sommet inclus dans la pile. plusieurs cas peuvent se présenter. Si y est un des sommets de l’arborescence. le théorème dit Flot-max = Coupe min. "en moyenne 1 " cette instruction est censée améliorer les performances de l’algorithme.5 )) . y est directement successeur de x et est le seul ! Dans ce cas. l’arborescence est de hauteur 1 et se réduit à un arc. Par contre. Le nombre d’opérations élémentaires est de l’ordre de n2 . En effet. En effet. on soulève un autre problème qui est : qu’est-ce que la moyenne dans ce cas ? Les notions de cas moyen ou moyenne des cas ou graphe aléatoire sont loin d’être évidentes.3 Flot maximal Notre deuxième problème type est le problème dit du flot maximal. tous les sommets du graphe sont dans l’arborescence de trémaux.e.1 113 Complexité Si on s’intéresse au nombre d’opérations élémentaires nécessaires à l’exécution de cet algorithme. il faut tester tous ses successeurs pour savoir lequel est marqué et lequel ne l’est pas. 9. Dans la version "basique" ci-dessus de l’algorithme. en fait il faut donc s’intéresser à tous les arcs du graphe. donc il existe des chemins d’origine x permettant d’atteindre tous les sommets du graphe. alors il est marqué et la réponse à l’algorithme est "oui" comme nous l’avons vu. un nombre entier). et qui ont donné le premier algorithme (malheureusement de complexité minimale O(n5 ) et [Din70] qui donne le meilleur algorithme connu (en O(n2.Chapitre 9. 1. On pourraît penser que l’adjonction de la ligne de code 18 bis améliorerait les choses. Quelques problèmes de référence 9. On obtient une arborescence de racine x qui est l’arborescence de Trémaux. et pour la résolution duquel on dispose du théorème fondamental dû à Ford et Fulkerson [FF62] sur lequel tous les algorithmes de flot sont basés. j) ≥ f (i. xn } permettant de maximiser (respectivement minimiser) la fonction f sous les contraintes représentées par la matrice A et le vecteur B. Sa forme générale est la suivante : Problème d’optimisation : [Max ou Min f (x)] A. . . Par exemple. Le problème s’énonce comme suit : On donne un graphe avec capacités G = (X. . Tol39] reformulé en 1954 par Dantzig qui lui a donné le nom de simplexe. c’est un problème dit d’optimisation que nous noterons désormais FLOT MAX_O . [Kan60. j) et que : Maxf (p. Toutefois. }). lorsque f . et les contraintes sont linéaires comme g(X) telle que : (g(X) = {x1 . xn . p ∈ X. x2 . k). Γ ⊂ X × X. . s) : ∀i ∈ X. 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. (9.5. X j f (j. Les deux sommets s et p sont deux sommets privilégiés. il s’agit d’un problème dit de programmation linéaire dont le premier algorithme de résolution. . connu aujourd’hui sous le nom de simplexe. . C : Γ → N∗ .g(X) ≤ (≥) B X ∈ E (E ensemble sur lequel X prend ses valeurs) Trouver la valeur X = {x1 . Le problème est de faire passer un flot F maximal de s à p en respectant les contraintes de capacité dans un graphe du type de celui de la figure 9. p. X est l’ensemble fini des sommets. x2 . j). i) = X f (i.114 Complexité et Algorithmique avancée voir aussi [GTT89] pour une revue des algorithmes de flot. s. |X| ∈ N∗ . C). s ∈ X. Plus généralement.3) k Sous cette forme. le problème FLOT MAX n’est pas un problème de décision. . où c(i. et p étant appelé puits. . ce type de problème dans lequel il s’agit de maximiser ou minimiser une fonction est appelé aussi problème d’optimisation. graphe dans lequel. Un tel graphe est appelé réseau de transport. l’utilisation de l’algorithme du simplexe pour résoudre un problème de flot à contraintes linéaires s’avère extrêmement . Γ. s étant appelé source. est dû à Kantorovitch et Tolstoï en 1939. c’est-à-dire tel que pour chaque arc on ait : c(i. C’est pourquoi on a élaboré des algorithmes spécifiques. Quelques problèmes de référence 115 décevant en termes de performances. Toutefois. ici.5 – Exemple de graphe avec capacités 1. c’est leur complexité. 2 d 6 a 6 s Source h 8 9 e 2 9 1 4 5 3 6 3 8 b 1 f 8 8 4 2 g 12 2 11 c p Puit 7 7 14 6 k 9 l Graphe avec capacités : réseau de transport Figure 9. On verra par la suite comment transformer tout problème d’optimisation en problème de décision. De ce point de vue. mais de ce point de vue seulement. Nous noterons désormais cette formulation du problème par FLOT MAX_D. . précisément pour des problèmes de complexité dus à la nature profonde de l’algorithme du simplexe. FLOT MAX_D et FLOT MAX_O sont équivalents. Nous verrons plus loin à quelle aune mesurer ce temps. on peut poser le problème FLOT MAX_O sous forme de problème de décision de la façon suivante : Pour le réseau G.Chapitre 9. on pose la question : Existe-t-il un flot de valeur supérieure à V par exemple. et la réponse attendue ne peut être que oui ou non. et plus particulièrement le temps de calcul 1 qu’ils induisent. Souvenons nous ici que la seule chose qui nous intéresse par rapport aux algorithmes que nous étudions. j) ∈ Γ∗ . j) et (i. on sait que c’est en construisant le chemin de nombre d’arcs minimal sur G∗ qu’on obtient les meilleures performances en temps pour l’algorithme. j) > 0} =⇒ { (i. dans l’algorithme de Ford-Fulkerson. il y a souvent de fortes analogies entre les problèmes. j) − f (i. s. j) = 0 (c’est-à-dire que le flux qui traverse l’arc (i. i) = f (i. et A l’ensemble des arcs d’origine dans U et d’extrémité dans V. est central.4 Couplage dans un graphe biparti Ce problème.) étant donné un flot F sur un graphe avec capacités G = (X. Il a donné lieu à une abondante littérature. De plus. U et V sont des ensembles de sommets. on considère le graphe G∗ = (X. j) de G est alors dit saturé. j) et c∗ (j. l’algorithme de Ford-Fulkerson fait appel au problème précédent. Dire si F est maximal. i) = f (i. . j) = c(i. Il n’y a pas d’arcs d’extrémité dans U. p. c’est déterminer s’il existe une chaîne améliorante dans G. ce qui est notre premier problème de référence. Ainsi. C). i) ∈ Γ∗ } et c∗ (i. Un graphe biparti se définit comme suit : Soit un graphe B = (U. (j. ni d’arc d’origine dans V. . Γ. j) − f (i. comme les autres problèmes évoqués ici. j) − f (i. c’est-à-dire s’il existe un chemin de s à p dans G∗ . on utilise donc un parcours en largeur. (. j) − f (i. ici.116 Complexité et Algorithmique avancée Par ailleurs. C∗ ) dit d’écart construit comme suit : {c(i. 9. i) ∈ Γ∗ et c∗ (j. j) = 0} =⇒ {(j. A). j) 6∈ Γ∗ } Lorsqu’on a comme ci-dessus l’égalité c(i. . j) du graphe est égal à la capacité dudit arc) l’arc (i. j) {c(i. simple à poser. on utilise le concept de chaîne améliorante. p. s. c’est un cas particulier d’un problème plus général connu sous le nom de Problème du recouvrement minimal (voir [Lav74] par exemple). celui de l’existence de chemin. En effet. Γ∗ . V. Un couplage (on dit aussi parfois couplage parfait) dans un tel graphe est un ensemble C ⊆ A comprenant n arcs tels que. V. A). Le problème du couplage s’énonce comme suit : Etant donné un graphe biparti B = (U. (voir des algorithmes pour résoudre ce problème en [HK73]. (x0 . A ⊆ U × V Les graphes bipartis dont il est question ici sont tels que les deux ensembles de sommets contiennent le même nombre d’éléments. . y). pour tout couple (x. il n’y a pas deux arêtes adjacentes à un même sommet. . un }. V = {v1 . y 0 ) d’arcs de C. . Graphes bipartis sans couplage possible avec couplage possible Figure 9. Dans le couplage. . Quelques problèmes de référence 117 U = {u1 . existe-t-il un couplage contenant n arcs (|U| = |V| = n) ? C’est-à-dire un couplage tel que tout sommet soit extrémité d’une arête et d’une seule.Chapitre 9. Un problème qui s’en déduit immédiatement est le problème dit du couplage maximal lorsque on a |U| = 6 |V|. v2 . . et y = 6 y 0 . . u2 . on ait x 6= x0 . vn }. .6 – Graphes bipartis avec et sans possibilité de couplage . . [Lav74]). k. si ∈ {vrai. . . . f aux}. Un autre exemple. Une forme conjonctive d’une fonction booléenne serait alors : (si ∨ . . . . on peut construire un graphe de flot R = (X. Cela peut se faire parfois directement. ∧ (sk ∨ . . Le problème se pose comme suit : Soit S = {s1 . A). . Par ailleurs. . Étant donné un graphe biparti B = (U.. s2 . . particulièrement significatif et qui nous servira par la suite. On peut en donner un exemple avec le problème du couplage. et plus généralement en mathématique est de transformer un problème qu’on ne sait pas résoudre en un autre. ce problème a de nombreuses applications concrètes dont la moindre est la minimisation du nombre de composants électroniques de base dans un processeur. n} Le problème de la satisfiabilité consiste à trouver une assignation de valeurs {vrai . qu’on sait résoudre. ∨ sl ) avec i. .. Γ) tel que représenté sur la figure 9. f aux} aux variables booléennes de telle sorte que la valeur de la fonction f soit vrai 9.. . on verra dans la suite de l’ouvrage que la démarche consiste précisément à tout ramener à SAT. il ne s’agit pas spécialement d’un «cas d’école».118 Complexité et Algorithmique avancée 9. ∨ sj ) ∧ . En fait.5. consiste à poser un problème directement sous forme SAT. ce qui est d’une importance capitale pour toute l’industrie informatique. . sn } un ensemble de variables booléennes. V. . . .7.5 La satisfiabilité Il s’agit là d’un problème qui va être décisif dans notre étude ultérieure et qui est étroitement lié à celui du couplage. Le lecteur vérifiera facilement qu’alors. j. i ∈ {1. chercher un couplage (éventuellement maximal) sur B revient à chercher un flot maximal sur R.1 Une technique algorithmique : la réduction Une technique très féconde en algorithmique. Cette technique a donné lieu en algorithmique à ce qu’on nomme la réduction. n} . l ∈ {1. Chapitre 9. Un autre exemple.8 : X = {s. Quelques problèmes de référence S 119 P Figure 9. particulièrement significatif et qui nous servira par la suite.7 – Transformation d’un problème de couplage en problème de flot Prenons par exemple le problème dit de la couverture d’un échiquier par des chevaux. soit la configuration suivante : Il s’agit alors de trouver ce qu’on nomme aussi une couverture mini- . Cela peut se faire parfois directement. on verra dans la suite de l’ouvrage que la démarche consiste précisément à tout ramener à SAT. voir ([Lav74]). soit la configuration de la figure 9. Prenons par exemple le problème dit de la couverture d’un échiquier par des chevaux. p} ∪ U ∪ V. En fait. voir ([Lav74]). Le lecteur vérifiera facilement qu’alors. consiste à poser un problème directement sous forme SAT. u) : u ∈ U} ∪ {(v. Γ = {(s. p) : v ∈ V} ∪ A et dont toutes les capacités sont égales à l’unité. chercher un couplage (éventuellement maximal) sur B revient à chercher un flot maximal sur R. . soit Ci = (si1 ∨ · · · ∨ sik ∨ sip ) telle que ∀sik ∈ Ci .4) C’est-à-dire qu’il faut trouver une conjonction de variables booléennes telle que SAT = 1. On associe alors à chaque élément de E. sm }. fcheval = 1. Ainsi. en }. Qui plus est. ei ... n ∈ N ∗ P(E) l’ensemble des parties de E. .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. . S ⊂ P(E) famille de sous-ensembles de E. ou dans le cas ci-dessus de la couverture de l’échiquier par des chevaux.. . dans le cas présent. . il faudrait que cette conjonction contienne un minimum de variables auxquelles on affecte la valeur 1 de façon à obtenir la couverture minimale de cardinal minimal de l’échiquier par des chevaux. ici en utilisant un minimum de chevaux. sj . avec S = {s1 . . . . ei . ei ∈ sik . . . En effet. d’algorithme polynomial pour le résoudre et il y a tout lieu de penser qu’un tel algorithme n’existe pas (mais on ne sait pas le démontrer). placé en chacune d’elle peut atteindre la case c4 .. En effet. . supposons un ensemble E = {e1 . Mais elle peut également être interprétée comme étant l’ensemble des cases à partir desquelles un cheval. Le problème est alors SATE = C1 ∧ · · · ∧ Ci ∧ · · · ∧ Cn . (9.5.1 (Interprétations) On peut remarquer que cette écriture supporte deux interprétations symétriques l’une de l’autre. 9. une clause Ci de SAT. Cette remarque montre comment poser directement un problème de recouvrement sous forme SAT.6 Le voyageur de commerce Il s’agit là d’un problème central en algorithmique qui représente l’archétype du problème pour lequel il n’existe pas jusqu’à présent. 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’ensemble des cases de l’échiquier accessibles par le cheval placé en c4 . on associe une clause à chaque élément de S. . . où . Les paramètres de ce problème consistent en un ensemble fini de villes C = c1 . . . . c1 . D). cn et pour chaque paire d’entre elles.Chapitre 9. Quelques problèmes de référence a 1 2 3 4 5 6 7 8 b " c d e " f h " " " " " " " " g 121 " " " Figure 9. . . cj ). un cycle hamiltonien si le graphe est non orienté. la distance qui les sépare d(ci . sur le graphe G = (C. . un circuit hamiltonien s’il est orienté.8 – Transformation d’un problème d’échecs en termes de recouvrement ou FNC Considérons donc le désormais classique problème du voyageur de commerce (VRP) . c(k) > des villes (un parcours de celles-ci) ou en termes de théorie des graphes. < c(i) . c(j) . Une solution de ce problème est une permutation sur C. . c3 ) = 5. c4 ) = 9. c2 . d(c3 .P. c4 ) = 3. calculer à chaque fois la valeur associée à chaque circuit ou cycle hamiltonien trouvé et conserver celui de valeur minimale. d(c1 . ce sont les arêtes ou les arcs). Dire qu’on a obtenu une solution réalisable de valeur 28 ne signifie pas pour autant qu’on ait résolu le problème.9 – Graphe pour une instance du problème du voyageur de commerce (V. d(c1 . c2 ) = 10. c2 . Cette solution doit en outre minimiser la somme : d(c(i) . Pour un problème à n villes. .) + . . On ne sait pas si cette solution est celle de longueur (ou de coût) minimale.) . il suffit d’énumérer 12 (n − 1)! cycles. c(k) ) + d(c(k) . Exemple 9. d(c2 . c4 ) = 9. d(c1 . le nombre de solutions réalisables est (n−1)! et on ne connaît pas d’autre algorithme fournissant la solution exacte que celui qui consiste à tout énumérer. . d(c2 .1 La figure 9.R. c3 . c(j) ) + d(c(j) . c3 ) = 6. .6. c4 . c4 > est une solution de valeur 28. . . . c(n) ) + d(c(n) .122 Complexité et Algorithmique avancée C = c1 . c2 . . . < c1 . Pour cette instance. . c(l) ).9 illustre une instance particulière de ce problème qui est : C = c1 . + d(. c3 . cn et D est l’ensemble des routes reliant les villes (en termes de graphes. Si le graphe n’est pas orienté. 10 C1 C2 9 9 9 5 6 C3 C4 3 Figure 9. . . c(l) ) > Max La réponse là aussi ne peut être que oui ou non. cn et D est l’ensemble des routes reliant les villes entre elles (en termes de graphes. VRP_D. c(j) . d’un problème d’optimisation. .. . et une valeur numérique Max. conformément à ce que nous avons vu ci. . . L’exécution de l’algorithme proprement dite ne nécessitant quand à elle que de l’ordre de n positions mémoire. . existe t’il une permutation de l’ensemble des villes < c(i) . ce sont les arêtes). c(k) ) + d(c(k) . Le problème ainsi posé sera noté.dessus... c’est à dire un ensemble de villes C = c1 . comme pour les flots.n2 positions mémoire. c(j) ) + d(c(j) . . . Il s’agit ici. Comme dans le cas du problème de flot maximal. c2 . a étant une constante multiplicative. nous noterons donc cet énoncé de problème.) + . c(k) > (un parcours de celles-ci) ou en termes de théorie des graphes. VRP_O. . . c(n) ) + d(c(n) . où C = c1 .. . un cycle ou un circuit hamiltonien sur le graphe G = (C. on peut transformer ce problème en problème dit de décision de la façon suivante : Etant donnée une instance générique. . . cn . D). ce n’est pas le cas en espace mémoire. Le stockage des données nécessite au plus de l’ordre de a. telle que l’on ait : d(c(i) . . + d(. Quelques problèmes de référence 123 On remarquera toutefois que si cet algorithme s’avère prohibitif en temps calcul.Chapitre 9. c2 . . résolution tant donnés des algorithmes pour résoudre un même problème. à connaître une évaluation du temps nécessaire pour résoudre des problèmes de taille de plus en plus grande. a-t-on un espoir de trouver un algorithme plus performant (i.e. « en un temps raisonnable ». on peut aussi le faire en termes d’espace. Plus généralement. étant donné un algorithme. c’est à dire savoir si on a espoir un jour de pouvoir disposer d’un algorithme résolvant ce problème. pour de « grandes tailles ». Nous allons essayer d’abord de voir sur quoi nous pouvons fonder notre jugement. Plus généralement on parle alors de ressources nécessaires.Chapitre 10 Algorithme. A chaque problème. lequel est le meilleur. É . De même pour un problème donné. de complexité moindre) que ceux existants ? C’est ce à quoi nous allons essayer d’apporter des éléments de réponse dans ce qui suit. Au lieu de raisonner en termes de temps. pour une classe de problèmes donnée. on associera un entier (ou plusieurs) appelé taille du problème qui est la mesure de la quantité minimale de données à fournir à l’algorithme considéré pour résoudre le problème. On est intéressé. pour un algorithme donné. on est intéressé à savoir quelle est sa «nature profonde» en termes de complexité. de savoir comment évolue la quantité de ressources nécessaires à sa résolution en fonction des tailles de problèmes traités. on va se poser la question. pourquoi et qu’est-ce que cela signifie ? Quelle est la nature profonde du problème. et ceci. il faut se resituer dans le contexte. lorsque la taille du problème tend vers l’infini. La taille d’un problème de multiplication de matrices peut-être la plus grande dimension des matrices multipliées. Par contre s’il s’agit d’un module d’une chaîne de programmes qui est appelé à fonctionner longtemps et de très nombreuses fois. La mesure du «temps d’exécution» d’un algorithme exprimé en fonction de la taille d’un problème est appelée complexité en temps du dit algorithme. la taille d’un problème de graphes peut-être le nombre n de sommets. La limite de la fonction mesure ainsi formée. et donc élaborer un algorithme. asymptotique. l’efficacité se réduit à la complexité de l’algorithme et comporte en général deux paramètres : 1. il s’agit alors d’y regarder à deux fois. On peut donner des définitions analogues pour la complexité en espace. ou encore la taille des nombres dans le cas de nombres réels. Lorsqu’un programme est appelé à être exécuté souvent. le temps . mais aussi qui dépend de la complexité du problème à résoudre. Le problème à résoudre est-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. l’espace. .126 Complexité et Algorithmique avancée Par exemple. ou le nombre m d’arêtes. on s’intéressera à son efficacité qui est liée à la complexité de l’algorithme sous-jacent. Dans ce dernier cas on se posera les problèmes de simplicité et intelligibilité dudit programme. on a intérêt à choisir l’algorithme le plus simple sans trop se préoccuper de ses performances (à condition que la taille des données soit réduite). On se tournera donc vers des algorithmes les plus simples possibles à efficacité égale. et en espace. c’est-à-dire à traiter une classe de problèmes ? Si il s’agit d’un programme destiné à n’être utilisé qu’une seule fois et dans un cas relativement simple puis abandonné. On appliquera ici la règle des avionneurs qui disent "un bel avion vole bien". 10. Hors les problèmes propres à la programmation. m) lorsque m < n2 . ou encore le couple (n. être maintenu et remanié par différentes équipes. 2. s’appelle complexité asymptotique en temps. ou les deux. lesquels sont liés au système informatique sur lequel est implémenté le programme.1 Faire son choix lorsqu’il s’agit d’écrire un programme. l’efficacité du programme. Mais quoiqu’on fasse. choisir la solution la plus efficace. de la configuration du système sur lequel le programme est implémenté (réseau.. c’est la complexité du problème qui est déterminante. .. une fonction g(n) est dite en O(f (n)) s’il existe une constante c telle que 1 : |g(n)| ≤ c. un programme d’une efficacité supérieure à la complexité du problème. On trouvera en annexe les définitions précises des notations de Bachmann & Landau.2 Pourquoi la complexité ? C’est la complexité intrinsèque d’un algorithme ou d’un problème qui est déterminante. 1. Il s’agit donc ici de pouvoir comparer les algorithmes entre eux. Le meilleur programmeur codant le meilleur algorithme pour un problème. Algorithme. ∀n ∈ N∗ |f (n)| On pourrait penser que le facteur déterminant dans la taille des problèmes traités sur ordinateur est la vitesse des dits ordinateurs. ne pourra obtenir. Ainsi. et en particulier que l’énorme accroissement de vitesse dû aux progrès technologiques est déterminant en la matière. machine simple. ordinateur parallèle. ou l’espace mémoire dont elle dispose. dans le cas général. Si un algorithme «exécute» un problème de taille n en un temps c. nous dirons alors que la complexité en temps de cet algorithme est O(n2 ). et suivant la spécificité des problèmes à résoudre et de la taille des données. la rapidité de la machine sur laquelle il est exécuté.Chapitre 10. Plus précisément. En effet cette dernière. le fait d’avoir à utiliser des mémoires annexes comme des disques ou à gérer des échanges de messages peut influer sur l’efficacité d’un programme. résolution 127 Il faut ici faire attention au fait qu’on parle bien de complexité de l’algorithme et non de l’efficacité du programme. et non comme on pourrait le penser en première approche.n2 pour une constante c. est fonction de l’habileté du programmeur.). comme nous l’allons voir quelle que soit la rapidité de la machine. quelle que soit l’habilité du programmeur ou. 10. Supposons que nous disposions des six algorithmes A1 . A6 avec les complexités en temps suivantes : Algorithme Complexité en temps A1 n A2 n log n A3 n2 A4 n3 A5 2n A6 n! La complexité en temps étant mesurée ici par un nombre d’unités de temps nécessaires pour exécuter l’algorithme sur une donnée de taille n. Ce n’est pas la technologie qui permettra de résoudre les problèmes aux tailles dont nous avons besoin. une minute et une heure par chacun des six algorithmes déjà évoqués : . . Une avancée décisive aussi et qui relancerait notablement la recherche serait la mise en évidence d’un algorithme de résolution en temps polynomial du problème SAT. l’algorithme A1 peut. ou relativement peu de choses. effectuer un calcul sur une donnée de taille 1000. des algorithmes (ou peut-être aussi de la façon de poser les problèmes). En dernier ressort. c’est-à-dire de l’automate déterministe de Markov ou de la machine de Turing. Une amélioration notable viendrait du dépassement du modèle théorique d’ordinateur. alors que dans le même laps de temps. Le tableau ci-dessous donne les tailles des problèmes d’une même classe qui peuvent être résolus en une seconde. nous y reviendrons. que l’unité de temps soit ici la milliseconde. A2 . l’algorithme A5 ne pourra dépasser la taille 9. . l’avancée décisive viendra des méthodes de résolution. . dont nous allons traiter. pour fixer les idées. . ce qui est déterminant c’est la complexité de l’algorithme utilisé. en une seconde. Supposons.128 Complexité et Algorithmique avancée En fait il n’en est rien. La course technologique à la vitesse des machines paraît dérisoire à côté de certains problèmes. 1010 variables (i. soit 17’ 28” 576 A6 environ 263 ∗ 1015 secondes. 02 secondes A2 0. Rappelons pour mémoire que le plus grand programme linéaire traité à ce jour 1 représente une donnée de plus de 9. même avec des machines un million de fois plus rapides.000 × 300. 32 secondes A3 0. résolution Algorithme Complexité 129 Taille maximale du problème traitée en temps 1 seconde 1 minute 1 heure A1 n 1000 60 ∗ 1000 3. on a un algorithme de complexité en temps O(n!). que pour une donnée de taille 20 par exemple. si on veut résoudre un programme linéaire par énumération exhaustive de tous les sommets du polytope des contraintes.Chapitre 10. On peut aussi relativiser les progrès de la technique. 6 ∗ 106 A2 n log n 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. . 576 secondes. soit encore environ 8 ∗ 109 années ! Une complexité de ce dernier type n’a rien d’une absurdité. 1. Posons-nous en effet la question : quel est l’impact de l’accroissement de la puissance des ordinateurs.000). 4 secondes A4 8 secondes A5 1048. En 2000. On saisit de suite les limites d’un tel algorithme. cela signifie en temps pour les six algorithmes : Pour A1 0. Ainsi. environ 3 ∗ 1012 jours. si on veut comparer par rapport à une taille fixe pour une donnée de problème. Algorithme. une matrice de taille 300.e. les augmentations de tailles auquelles on peut prétendre. et de la taille du problème à traiter.n). on aurait les résultats suivants permettant d’apprécier. mesurée en vitesse de calcul. T2 . donné et des algorithmes de complexités données. la science d’un instrument n’étant pas un concept pertinent. n’a pas de sens. Ainsi pour des instances T1 . En fait.3 Interpréter la complexité Attention toutefois à ce qui précède. traduit en français signifierait «science du calculateur» ce qui. en fonction de la puissance des ordinateurs. alors ce dernier est meilleur pour les tailles de problèmes comprises entre 2 et 9.n2 ) est meilleur pour les . ou en O(2n ). il faille utiliser l’algorithme en O(n) de préférence à celui en O(n2 ). comme nous l’avons fait remarquer au début. et un autre en O(n2 ) pour un même problème. Taille maximale du problème traité Complexité en temps 100 fois plus 1000 fois plus de 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 conglomérat de techniques comme pourrait le laisser penser le terme américain computer science lequel. ni ce dernier de préférence à celui en O(2n ).n2 ) et un autre en O(1. répétons le. en français. T4 traitées toutes en un même temps de base. un autre en O(10.130 Complexité et Algorithmique avancée sur les tailles d’un problème donné pour un algorithme donné exécuté en un temps donné ? Le tableau ci-dessous donne un aperçu de la réponse. tout dépend du coefficient de proportionnalité. Dire qu’un algorithme est en O(n). 10. si on a un algorithme en O(1000. Ainsi.2n ). l’algorithme en O(10. ne signifie pas que dans tous les cas. T3 . Algorithme.4. 10. résolution 131 problèmes dont la taille est comprise entre 10 et 100 (bornes incluses). on ne peut définir les mots qu’avec des mots. on peut imaginer un algorithme comme un programme d’ordinateur écrit en un langage précis sur la sémantique duquel tout le monde serait d’accord. solution Nous appellerons problème une question possédant différents paramètres. Nous n’entrerons donc pas dans le jeu formel qui consiste à tout définir en détail. 10. séquentielle dans le temps. – les contraintes auxquelles doit satisfaire la réponse à la question. et l’algorithme en O(1000.Chapitre 10. Un problème est décrit par la donnée de : – une description générale de tous ses paramètres . et on est donc confronté à la base minimale admissible pour communiquer.n) est meilleur en temps pour tout problème de taille supérieure à cent. Malheureusement. et la description formelle des paramètres une instance générique. c’est-à-dire la solution du problème. 10. il fournit la (ou une) solution de Π . cet algorithme étant appliqué à une instance particulière I de Π.4. permettant de résoudre un problème. Remarquons toutefois que les mots peuvent donner du grain à moudre.1 Problème. nous donnerons les acceptions et définitions des mots clés employés. instance. en fait une Machine de Turing. Mot est en effet le dieu de la moisson au XI ème siècle avant notre ère chez les phéniciens.2 Algorithme En première approche. Pour en avoir une idée plus concrète. et si cela reste vrai pour toute instance particulière I de . La donnée d’un ensemble de valeurs des paramètres du problème sera appelée une instance particulière du problème. Un algorithme est dit résolvant un problème Π si. ou variables libres. dont les valeurs ne sont pas spécifiées.4 Des mots Le temps est venu d’essayer de préciser le vocabulaire employé. nous dirons qu’un algorithme est une procédure pas à pas. Ainsi.P. .e. . Ce qui est important.R. 10. . puis de n(n−1) nombres donnant les 2 distances entre les villes.) 1 .) 1. . . .132 Complexité et Algorithmique avancée Π. signifie : Voyageur Représentant Placier.9). . (voir 9. + aq+1 . c’est à dire que : t1 = a1 (t2 )q + a2 (t2 )q−1 + . algorithmes et utilisant les deux seuls symboles 0 et 1. sur un modèle unique.P. pour produire la solution du problème dans le pire des cas (nous reviendrons sur ce dernier aspect.4. c’est que ces différentes façons de faire soient polynomialement liées entre elles. ai ∈ R et i = {1. V. il existe différentes façons de décrire les données d’un même problème.P. ce qui est la dénomination officielle du voyageur de commerce. De plus.3 Taille d’une instance On parle souvent de la taille des données d’un problème. pour le problème du voyageur de commerce (désormais V.6 et la figure 9. on nuancera le jugement suivant que la solution est fournie en un temps fini ou non. on parlera d’une donnée de taille 4 (i.R. q + 1}. la Machine de Turing Universelle comme étudié au chapitre 4 page 39 (voir aussi [Tra63] et [Tur36]) et utilisant un alphabet permettant de coder instances. la taille de ces nombres elle même peut entrer dans la mesure de la taille des données. ou de la taille d’une instance.5 Fonction de complexité en temps La fonction de complexité en temps pour un algorithme exprime le nombre d’unités de temps nécessaires pour chaque taille d’instance donnée. et que dire des nombres transcendants lorsque le problème en traite ? En fait. d’une façon informelle. On peut écrire toutes ces données d’une manière unique. nécessite la donnée de n villes.R. solutions. le nombre de villes) alors qu’un V. q ∈ N∗ . 2. c’est à dire que le passage d’une façon de faire f1 induisant une taille de données t1 à une autre façon de faire f2 induisant une taille t2 n’entraîne qu’une variation de taille polynomiale. 10. En fait. RAM (Randomized Access Memory 1 ). codage 10. en 1930. une note envoyée par Louis Couffignal à l’Académie des Sciences. c’est-à-dire que ce type de mémoire est à accès libre. résolution 133 Bien sûr. On appelle problème de décision un problème dont la solution est oui ou (exclusif) non. Ce qui ne veut rien dire. direct. un problème de décision Π consiste simplement en un ensemble 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. indépendamment des travaux de Markov et Turing. paraît la note décisive sur "l’emploi de la numération binaire dans la machine à calculer". Goldstine. à Lebedev [Leb51] et Trathenbrot [Tra63] en URSS de concevoir et construire les premiers ordinateurs dont sont issus tous nos ordinateurs séquentiels modernes. 10. un observateur extérieur ne peut dire si l’accès à la mémoire concerne une lecture ou une écriture. est consacrée à une nouvelle machine à calculer. Neumann aux USA (voir [BGN46]). Il s’agit d’une forme standard qui permet de considérer une forme unique de problème. en fait cela signifie seulement qu’à un instant donné.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. En 1936. . Machine de Turing et automates (voir [Mar54] & [Tur36]). il donne au Collège de France une conférence sur les "machines à calculer.6 Problèmes de décision. L’ensemble de ces résultats a été réuni dans sa thèse de doctorat d’état en 1938 [Cou38].6. Ce concept a permis à Burk. comment sont codées les instances d’un problème. leur principe et leur avenir". une traduction littérale pourrait faire penser qu’il s’agit de mémoires à accès aléatoire. Algorithme. Il faut noter tout de même qu’en France. Formellement. L’innovation n‘est pas des moindres puisque c’est là la préfiguration des ordinateurs. Il existe plusieurs modèles. langages.Chapitre 10. c’est la Machine de Turing qui est le modèle théorique ayant permis de refonder le concept d’algorithme et qui fournit le paradigme de l’informatique. Historiquement. Attention. et les résultats de l’application de l’algorithme aux dites instances. contrairement aux mémoires de type ROM où à une bande par exemple. il ne s’agit là que de généralités tant que l’on n’a pas défini plus précisément ce qu’est un algorithme. En 1932. ) + . peut être décrit comme suit : instance générique : C = c1 . . . 001.. 11. .1 Le problème de décision lié au V.6. 00. c(l) ) ≤ B? 10. – la deuxième partie pose une question dont la réponse ne peut être que oui ou (exclusif) non.P. ayant une longueur totale inférieure ou égale à B .6. .1 Pour un ensemble fini de symboles. . . . c(1) > des villes telle que : d(c(i) . Cette forme est appelée un langage. c(k) ) + d(c(k) .2 Langage La raison principale de la restriction de la théorie aux problèmes de décision tient à ce qu’ils ont une forme « naturelle » qui est pratique pour une étude mathématique précise.est oui). 1}. . mais on peut toujours s’y ramener. et sur cette instance. ..6. Σ. de fonctions . . . La façon dont sont spécifiés YΠ et DΠ doit être claire. et de . cn . . de graphes. question : Existe-t-il un cycle hamiltonien des villes de C. une distance d(ci i. 01. et nous allons voir comment. c(j) ) + d(c(i) . c(1) . . nous notons Σ∗ l’ensemble de toutes les chaînes finies de symboles de Σ. 1. et une borne B ∈ N∗ . terme que nous définissons comme suit : Définition 10. 10. c’est à dire une permutation < c(1) .134 Complexité et Algorithmique avancée -la solution. tout problème ne possède pas a priori une structure de problème de décision. et l’instance appartient à YΠ si et seulement si la réponse à la question posée pour l’instance particulière considérée est « oui ». Par exemple. Exemple 10. 010. alors Σ∗ est constitué de la chaîne vide « » (on utilise aussi Λ). . 000. Evidemment. pour Σ = {0.. cj ) ∈ N∗ pour toute paire de villes. 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 en termes d’ensembles. c2 . des chaînes 0. n ∈ N∗ ensemble des villes.R. c(n) ) + d(c(n) . + d( . 1000. Une instance appartient à DΠ si et seulement si elle peut être obtenue à partir de l’instance générique par substitution de types aux composantes génériques. en les termes de l’instance générique. 001.6. qui s’écrit : L(Π. e). on dira que L est un Langage sur l’alphabet Σ. si un résultat est consistant pour le langage L(Π.2 On appelle codage raisonnable tout codage qui induit une taille de donnée qui est fonction polynomiale de la taille de l’instance codée. Ces trois classes de séquences de caractères constituent le langage associé à Π et e. Ainsi. le problème Π et le codage e pour Π partitionnent ∗ Σ en trois classes de chaînes de caractères . 111. – celles qui ne représentent pas des instances de Π . Si L est un sous ensemble de Σ∗ . résolution 135 toutes les autres chaînes finies de 0 et de 1. 01. il existe deux polynômes P et P0 tels que si I ∈ DΠ et x une chaîne de symboles codant l’instance I de Π sur e. Définition 10. non générique) de Π par une chaîne appropriée de symboles pris dans un alphabet fixé Σ. 1101010 est un langage sur {0. appliquée aux problèmes de décision tient à ce que.3 Codage La liaison entre problème de décision et codage est due au schéma de codage qu’on utilise pour coder une instance d’un problème chaque fois qu’on veut faire un calcul sur cette instance. Algorithme. . – celles qui codent des instances de Π pour lesquelles la réponse est non . e) = {x ∈ Σ∗ : Σ alphabet utilisé par e et x codage par e d’une instance I ∈ YΠ }. Il en est de même pour la représentation binaire des entiers. 10. Cela signifie que pour un codage raisonnable e de Π .Chapitre 10. 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. alors : longueur(I) ≤ P(|x|) . et pour Σ∗ lui même.6. 1}. alors il l’est aussi pour le problème Π codé par e. – celles qui codent des instances de Π pour lesquelles la réponse est oui. De cette façon. La consistance de cette théorie formelle.e. propre à toute démarche théorique. intermédiaire. et |x| ≤ P(longueur(I)) Remarque 10. les propriétés d’un algorithme ou d’un problème sont indépendantes du codage raisonnable employé. DΠ −→ Z+ qui est polynomialement liée à la longueur des données obtenue pour un schéma de codage raisonnable. l’abstraction que nous justifions ici par cette remarque. On en arrive là à un de nos buts. En effet. à chaque fois que nous évoquerons un problème. cette remarque nous autorise désormais à parler des algorithmes et des problèmes indépendamment de tout codage. . Cette abstraction va nous simplifier notablement la tâche car nous n’aurons pas.1 En fait. à revenir sur les formes prises par sa formulation et son codage ni aux propriétés de ceux-ci. exprimée en nombre de symboles. La remarque signifiant que tout problème de décision possède une fonction de codage.6. de x.136 Complexité et Algorithmique avancée |x| représentant la longueur. Quatrième partie Les concepts fondamentaux de la complexité . . Chapitre 11 Modèles de calcul, classes de complexité 11.1 La Machine de Turing comme modèle de calcul a Machine de Turing, comme nous l’avons vu précédemment est le 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 machines 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 à plusieurs rubans dont le concept permet d’inférer celui de calculateur, les machines «tout à droite» ou «tout à gauche», les machines de Turing alternantes, et certains auteurs introduisent le concept de machine de Turing 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. L 1. Nous nous contentons ici d’évoquer le fait que certains auteurs introduisent ce concept. Pour la suite de notre exposé, ce concept n’est pas pertinent, nous verrons qu’on peut très bien s’en passer. Il est un principe en science qui consiste à n’introduire de nouveau concept que si l’absolue nécessité s’en fait sentir, ou si cela permet de simplifier de manière significative l’exposé, ce qui n’est pas le cas ici. 140 Complexité et Algorithmique avancée Définition 11.1.1 Une Machine de Turing (désormais MT) à un ruban est 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 symboles 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). Certains auteurs ajoutent un symbole particulier comme premier symbole signifiant comme par exemple ; indiquant que là doit commencer la lecture des symboles sur le ruban mais si on donne la position de la tête de lecture-écriture en position de départ, ce symbole n’est plus 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 simple ou un pas de calcul. Le fonctionnement de la MTU est alors simple. La fonction t étant le programme 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 seul triplet. 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 concept de 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 formellement une 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 a alors Σ ( Γ) 2. On utilise en général le terme schème pour une machine de Turing particulière ou naïve, et le terme programme lorsqu’on code ladite machine sur la machine de Turing universelle, partout notée ici MTU. 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 par la machine en remplacement de σ, et on a : τ, σ ∈ Σ. On peut évidemment avoir τ = Λ dans ce cas, cela signifie que la machine efface le contenu de la case considérée. – m précise le déplacement, ou non, de la tète de lecture/écriturede la machine ; m ∈ {G, D, N}. La donnée de la MT est une chaîne uv ∈ Σ∗ . La tête de lecture est 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, à raison d’un symbole par case, dans l’ordre induit par uv. Initialement, les cases contiennent le symbole blanc. L’état dans lequel se trouve la machine au départ est toujours par convention ici q0 . La position de départ, c’est-à-dire le premier symbole placé 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 pourquoi certains auteurs ajoutent un symbole particulier qui est alors par convention le premier symbole lu par la machine. Nous n’en ferons rien ici, ce n’est pas nécessaire. On peut formaliser un peu plus : Définition 11.1.2 (Configuration) On appelle configuration d’une machine de Turing universelle : Conf = uqi v; u, v ∈ Σ∗ où qi est l’état courant de la machine. Le mot uv est écrit sur le ruban et toutes 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 = u0 q 0 v 0 ) avec éventuellement q = q 0 . On suppose que uv = wστ w0 avec u = wσ où w ∈ Σ∗ est une suite de lettres (i.e. un mot), σ ∈ Σ une lettre et v = τ w0 où τ ∈ Σ est une lettre et w0 ∈ Σ∗ est un mot. Conformément à 11.1, on a : 1. Ou dérivation chez certains auteurs. 142 Complexité et Algorithmique avancée 1. {t(q, τ ) −→ t(q 0 , τ 0 , G)} =⇒ {u0 = w et v 0 = στ 0 w0 } ; 2. {t(q, τ ) −→ t(q 0 , τ 0 , N)} =⇒ {u0 = u et v 0 = τ 0 w0 } ; 3. {t(q, τ ) −→ t(q 0 , τ 0 , D)} =⇒ {u0 = uτ 0 et v 0 = w0 }. Dans une machine de Turing universelle, on a au plus simple, Σ = {0, 1}, et donc σ, τ ∈ {0, 1} et u, u0 , v, v 0 , w, w0 ∈ {0, 1}k , k ∈ N ∗ . Définition 11.1.4 (Transition) {Conf0 −→ Confn } ⇔ {∃i : 0 ≤ i ≤ n; Confn = uqf v; qf ∈ F et ∀i ∈ 1..n, Confi −→ Confi+1 } (11.2) Remarque 11.1.1 Cette définition de la transition suppose bien sûr que 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 mot u ∈ Σ∗ − Λ 1 est dit reconnu par la machine M si, démarrant sur une configuration initiale u, q0 (la position ici de q0 ne préjuge pas de la position de départ de la tête de lecture) la machine s’arrête au bout d’un temps fini dans une configuration de type qoui , v. C’est ce qui permet de définir un langage reconnu par M : {Σ∗ LM = {u ∈ {Σ − Λ}∗ |u, q0 −→ u0 , qoui , v}; D’où une définition formelle des langages récursifs : Définition 11.2.1 (Langages récursifs) Étant donnée une machine de Turing M =< Q, Σ, q0 , t, F > , et le langage L, {M reconnaît L} ⇐⇒ {u ∈ L} ⇔ {u, q0 → u0 , qoui , v} {u ∈ / L} ⇔ {u, q0 → u0 , qnon , v} ∀u ∈ LM termine 1. Rappel : Λ est le symbole associé au vide. 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 la machine 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’elle accepte u. Dans le cas contraire, si la machine termine dans l’état qnon pour 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 tel que {u ∈ {Σ − Λ}∗ } ∧ {u ∈ L} on a : M(u) = oui, c’est-à-dire que la machine M pour la donnée u s’arrête en un temps fini dans l’état qoui et si u ∈ / L, M ne s’arrête pas (M(u) =%) 2 . Alors le langage L est dit récursivement énumérable. Remarque 11.2.1 Il s’agit là d’une commodité de raisonnement car on ne peut pas savoir que la machine ne s’arrêtera pas. C’est juste un moyen 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 M0 qui reconnaît L. La machine M0 agit exactement comme M, sauf qu’au lieu de passer en l’é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 le langage : {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ère de divisibilité par 4 d’un nombre codé en binaire. Cette définition de la reconnaissance d’un langage ne signifie nullement que M s’arrête pour toutes les séquences d’entrée de Σ∗ , mais seulement pour celles qui sont dans LM . Si x appartient à Σ∗ − LM alors le calcul de 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]. 144 Complexité et Algorithmique avancée un temps fini pour toutes les séquences finies possibles sur l’alphabet donné. En ce sens, le programme de MT ci-dessus est un algorithme car il s’arrête pour toute séquence finie sur {0, 1}∗ . La correspondance entre reconnaissance de langage et résolution de problème de décision est alors la suivante : Définition 11.2.2 (Résolution des problèmes de décision) On dira 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 de l’alphabet extérieur, et LM = L(Π, e). 11.2.0.1 Fonction récursive f Si f est une fonction {Σ − Λ}∗ − → Σ∗ et M une machine d’alphabet extérieur Σ, on dira que M calcule f si et seulement si pour tout mot u ∈ {Σ − Λ}∗ ; M(u) = f (u). Si une telle machine M existe, alors f est dite fonction récursivement calculable ou simplement fonction ré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 ∆ q0 1 1 0 0 Λ Λ 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 la réponse est oui. Le schème de la MT, ou programme, M, est donné par la table ci-dessus. C’est la fonction de transition δ qui à 11100 fait correspondre qoui . δ(11100) = qoui Dans cet exemple la position initiale de la machine est le premier 1 à gauche, mais ce n’est pas une obligation générale. On voit bien ici qu’il serait extrêmement simple de faire démarrer le calcul sur le dernier symbole (0 ou 1) à droite, la modification du schème serait facile pour ce 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 q3 1. q0 Λ. q0 } −→ {OUI!} par {Λ. Il suffirait de rajouter deux états qoui et qnon et de remplacer {Λ. D. et NON si tel n’est pas le cas. Ici. D. G. nous ne nous intéresserons qu’aux palindromes binaires comme par exemple 101 ou 1111 etc. Le schème devient alors : . q5 } −→ {1. q5 } et la fonction de transition δ : Schème : δ q0 q1 q2 q3 q4 q5 0 α. {0.2 Soit le programme (schème) de MT suivant : Σ = {0. De plus on revient à la forme standard de problème de décision. Λ. G. G. c’est pour la clarté de l’exposé. q4 Λ. q3 0.2. q1 . D. D. q4 0. q2 . q2 } −→ { 0. N. G. q0 α. 1. q2 } −→ { NON!} par {0.146 Complexité et Algorithmique avancée conserve le même sens. Exemple 11. q1 NON. G. α}. mais ce n’était pas obligatoire. q3 . G. q1 1. N. soit 11011 la réponse sera OUI. qnon }. q4 NON! Λ OUI! Λ. qnon } et {1. q3 1. q4 . Ainsi on reste cohérent avec la définition de la machine de Turing sans introduire de mot en plus dans l’alphabet. D. D. q2 Λ. q5 α Λ. pour position initiale : Λ Λ 1 1 0 1 1 Λ Λ ∆q0 Cette machine de Turing répond donc OUI si la chaîne binaire qui lui est fournie est bien un palindrome. On remarquera que la chaîne vide est un palindrome Ici on a utilisé les mots OUI et NON. N. qoui } . q3 Avec. mais pour une chaîne telle que 1110 par exemple la réponse sera NON. D. D. Ainsi. ! 0. G. Q = {q0 . q0 } −→ { Λ. q1 Λ. pour la chaîne de l’exemple. q5 } −→ {NON!} par {1. q3 1 α. En effet. G. 11.1. Nous voulons ici signaler l’existence de modèles de calcul permettant d’aborder sous un autre angle les problèmes de complexité. q3 q3 0. q3 Λ. N.3.1 Un automate fini est un n − uple A = (Q. q1 q1 0. q1 1. classes de complexité δ 0 1 q0 α. q0 . N. la particularité des modèles ici présentés est qu’ils permettent tous de traiter de la théorie de la complexité. D. q1 q2 0. D.Chapitre 11.3. q0 Λ. D. q4 α. q4 Λ.1 Automates de Markov On peut aussi présenter différemment la théorie des machines de Turing par un concept théorique équivalent. D. F) où : . D. δ. q4 1.3 Λ 147 α Λ. G. D. G. q0 q4 0. 11. q5 q5 Λ. G. G. Modèles de calcul. Σ. qnon qoui qnon 11.3. qnon Λ. q3 1. N. G.1 Automate fini Définition 11. les automates de Markov. q3 1. D. q2 α. D. q3 ! ! ! 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). qoui Λ. G. .148 Complexité et Algorithmique avancée – – – – – Q est un ensemble fini d’états appelé espace d’états .3. La RAM comprend de plus un programme composé de 7 instructions. A) = {w ∈ Σ∗ |∃ qf ∈ F : q −→ qf } est dit langage accepté par A. à savoir : 1. q0 est l’état initial par convention . an }.1. . si |δ(q. . . a1 a2 . On note alors w = a1 a2 .3. ΣΛ = {a ∪ {Λ}} . . Étant donné un alphabet Σ = {a1 . al et le langage : w L(q. régulier La succession des ai . . si+1 ) est appelé chemin σ de longueur l. une machine RAM 2 est formée d’un nombre considéré comme infini de registres identifiés et dont chacun contient un mot de Σ. a) ≥ 1| l’automate est dit non déterministe 1 Une séquence de transitions telle que σ = t1 . du moins à leur origine. |δ(q. c’est-à-dire si à un état et un symbole de l’alphabet correspond une et une seule transition. tl . (q. al est appelée parfois trace du chemin. a) ≤ 1|.2 Langage accepté. A) est noté L(A). . δ : Q × ΣΛ −→ 2Q est la fonction de transition . Un automate fini est dit déterministe si les transitions forment une injection. Cette définition n’a pas grand chose à voir avec le concept de Machine de Turing non-déterministe introduit par certains auteurs pour étudier la classe N PC.2 Machines RAM Ce modèle est plus proche des machines réelles.3. F ⊆ Q est l’ensemble des états finaux (dits aussi accepteurs). Sinon. 11. . . déterministe ou non. t2 . Les automates étant souvent visualisés sous forme de graphes orientés. et L(q0 . 11. 2. . Σ est un alphabet fini .2 (Langage régulier) Un langage L ⊆ Σ∗ est dit régulier s’il est accepté par un automate fini. l ≥ 1 avec 1 ≤ i ≤ l où ti = (si . Pour Random Access Memory. . a) ∈ Q × Σ. ai . . ce qui ne signifie nullement machine à accès mémoire aléatoire. . Définition 11. y compris le mot vide. les si jouent le rôle de sommets et les ai d’arcs. n ∈ N ∗ . mais seulement que la mémoire peut être lue et écrite à tout moment. ou plus souvent mot associé. Ci après nous allons en donner une approche un peu plus formelle. . 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. Les portes {s1 . 1}. 1}n − → {0.3. Γ) tel que les sommets S = {s1 . toute formule booléenne ψ à n variables définit f une fonction f : {0. ADDj Y(1 ≤ j ≤ k) provoque la concaténation de aj à la fin du mot contenu par le registre Y . sn } représentent les portes du circuit. . 4. continue FIN. Tout arc (i. on peut définir un circuit comme suit : Définition 11. 5. 7. j) ∈ Γ est tel que i < j représente une connexion unidirectionnelle. En s’abstrayant de l’aspect électronique du circuit.Chapitre 11.3.3 (Circuit booléen) Un circuit booléen est un graphe sans cycle C = (S. 2. ce qui revient aussi à y "écrire" le mot vide . . alors on peut lui associer une formule booléenne canonique ψf qui pour une assignation u de valeurs booléennes aux variables est telle que : {f (u) = 1} ⇐⇒ {u satisfait ψf } La réciproque et vraie. Y ←− Z substituer le contenu du registre Z à celui de Y . DEL Y suppression du premier caractère du mot contenu dans Y . sn−1 } sont de demidegrés extérieurs Γ+ = 1 ou Γ+ = 2. 3. 1} telle que ψ est satisfiable si et seulement si f (u) = 1. JMP X0 (jump) passer à la ligne X0 . CLEAR Y effacer le contenu du registre Y. . Y JMPj X0 (jump conditionnel) aller à a ligne X0 si le mot contenu dans Y commence par aj . 1}n − → {0.3 Circuits booléens ou digitaux Nous avons abordé déjà dans le court chapitre consacré aux circuits digitaux. . toujours dans l’esprit toutefois de [Lup63]. . . seule la porte sn étant de degré 0. classes de complexité 149 1. . 11. Modèles de calcul. f Si on a une fonction booléenne à n variables f : {0. 6. le problème qui consiste à réaliser physiquement une fonction booléenne par un dispositif électronique (voir le chapitre Circuits booléens page 93). . m = .1 1 Soit m la taille d’un circuit (i.n 2 m n Il y a donc des fonctions qui ne sont pas calculées par ces circuits. D’après le polycopié de Bruno Grenet de l’ENS-Lyon auquel nous avons emprunté quelques notions. − t(i) ∈ {∧. alors : 2. 2. 1}|@C : |C| < 2n . On trouvera dans le chapitre consacré aux circuits. 1}n −→ {0.1 (Taille minimale d’un circuit) ∀n ≥ 2. C calcule f 2. son type sera noté t(i). Par conséquent avec m portes. on a m2 . 1} =⇒ Γ− si = 0.(n + 5)) ) = 2 .150 Complexité et Algorithmique avancée elle est dite "porte de sortie". . Les portes sont typées dans {0.n 2 2. ∨. et on a : Si t(i) ∈ {0.n Preuve 11. 2n En considérant pour m la taille. Si si est une porte. ou encore les systèmes acceptables de programmation. Toute porte telle que Γ− = 0 est les dite porte d’entrée. < 2n .3. on a (m2 . 1}. t(i) = ¬ =⇒ Γ− si = 1.3. ∨} =⇒ Γ si = 2. ¬}. On sait par ailleurs n qu’il y a 22 fonctions booléennes {0. 2.e. l’étude sort du périmètre de cet ouvrage qui est essentiellement basé sur les machines de Turing et calculateurs universels. le nombre de sommets du graphe 2 ) : pour chaque porte si . Il existe encore d’autres modèles de calcul comme le modèle de Post.(n + 5))m choix. c’est la négation. c’est une porte d’entrée. d’autres mesures de complexité d’un circuit. Théorème 11.n − log n+5 log((m .(n + 5) choix possibles.n 2. 1. 1. ∃f : {0. 1}n −→ {0. ∧. Exemple 11. par contre.3. les rubans sont indépendants. fini. Comme pour la MTU séquentielle. le déplacament de la tête de lecture diffère d’un ruban à l’autre. Supposons qu’on dispose d’une machine à 2 bandes. 11. Dans ce modèle. D. et tel que Λ ∈ Σ . Σ.4 (Machine à plusieurs rubans) Une machine de Turing à k rubans est un quintuplet M =< Q. t. t – t la fonction de transition t : Q × Σk → − Q × Σk × {G. q0 . Les configurations sont toujours représentées par des mots. il est indifférent de considérer que ce sont les rubans ou les têtes de lecture qui se déplacent.Chapitre 11. F > où : – Q est l’ensemble des états de la machine ou alphabet intérieur . c’est de dupliquer la chaîne de bits à tester de façon à ce qu’elle soit inscrite sur les deux bandes en sens contraire.2.2. – F ⊂ Q l’ensemble des états d’arrêt. N}k la fonction de transition . Ensuite on positionne les têtes de lecture de chacune des bandes à une extrémité de la chaîne de bits sur chaque bande. Comme le montre la définition ci-dessus. – Σ l’alphabet extérieur. c’est la fonction de transition qui travaille maintenant sur un k-uplet au lieu d’un caractère seul. On peut visualiser une telle situation comme suit : Première bande Λ Λ I ∆ État q0 I 0 I I Λ Λ Λ . La première chose à faire. Modèles de calcul.4 151 Machine de Turing à plusieurs rubans Définition 11.3. on peut voir facilement l’intérêt d’une machine à plusieurs rubans.1 Sur l’exemple de test des palindrômes ci-dessus. – q0 ∈ Q l’état initial . la seule chose qui change. classes de complexité 11. il convient de le préciser une fois pour toutes.3. q0 1. 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 la lecture ou l’écriture est celle du deuxième ruban. q0 ··· Λ. D∗ . Λ∗ . D . de la gauche vers la droite. q0 → 0. q0 1. 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 ∆ Λ .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. 1∗ . la vérification du palindrome est facilitée. D. D∗ . 0∗ . 1∗ . 0∗ . Des configurations possibles seraient alors les suivantes : 0. étant entendu que sur les deux bandes les têtes de lecture sont positionnées en état q0 sur le bit le plus à gauche. Λ∗ . q0 → 1. Les configurations significatives seraient alors : 0.Chapitre 11. Λ∗ .4. classes de complexité 153 Les têtes de lecture se déplaçant alors en sens contraire. le temps ici se définit par rapport à la machine elle-même. Nous étant ramené à la Machine de Turing Universelle. q0 1. D .4 → Λ. ce n’est pas gênant. 0∗ . celle de la première bande de gauche à droite et bien sûr celle de la seconde bande de droite à gauche. 1∗ . G∗ . il nous faudrait prendre la plus grande partie aliquote de ceux-ci comme unité. Définition 11. 1∗ . q0 ··· 11. Remarque 11. q0 → 0.1 Cette définition est endogène à la machine de Turing. pour l’étude qui nous intéresse ici. on considère donc ici que chacune d’entre elles nécessite le même temps de calcul que nous prenons alors comme unité de temps puisqu’indivisible. D. OUI ! ··· ··· Complexité en temps On peut maintenant aborder le problème de la définition de la complexité en temps des algorithmes et des problèmes. q0 Λ. c’est à dire l’arrêt de la machine. Si nous étions amenés à comparer ces unités de temps avec des temps exogènes.4. Modèles de calcul. C’est en particulier le cas en algorithmique distribuée où on ne possède pas d’un modèle universellement reconnu pour estimer la complexité en temps des algorithmes. Λ∗ . nous sommes descendus au niveau "le plus fin" du calcul et les opérations y sont les plus élémentaires possibles. 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. en particulier dans le cas des communications . G∗ . 0∗ . On peut aussi dire que c’est le nombre de fois où la MT a lu ou écrit sur le ruban. Comme on peut le voir.1 On appelle temps pour un programme M d’une MT sur une donnée x. Dans l’immédiat. le nombre d’étapes du calcul jusqu’à l’état final. 1 (Cas des machines à plusieurs rubans) Si le langage L est reconnu par une machine à k + 1 rubans en temps t.4. décidés) par une machine de Turing travaillant en temps t(n). comme équivalentes. À une constante multiplicative près. pour une MTU particulière l’étude resterait pertinente à un coefficient multiplicatif près. On trouvera un exemple et la justification théorique dans [Lav91a]. On définit la classe de complexité en temps TEMPS(t) comme étant la classe des langages reconnus (i.4. t(n) t : N −→ N . k ∈ N ∗ processeurs qu’avec p.4. et limn→∞ = ∞. des variations de temps sont considérées. pour la théorie de la complexité.2 (Complexité en temps) Pour un programme M d’une MT qui s’arrête en un temps fini pour toute donnée x de Σ∗ . sa fonction de complexité en temps TM : N ∗ −→ N ∗ est donnée par : TM (n) = max{m : ∃x ∈ Σ∗ . alors il existe une machine à k rubans qui reconnaît L en temps (1 + c). En effet dans certains cas réels de calcul sur ordinateur parallèle par exemple. Définition 11.t. .3 (Classe de complexité en temps) Soit t : N −→ N .1 (Accélération linéaire) Soit une constante c > 0. Attention toutefois.m} Définition 11. 1.154 Complexité et Algorithmique avancée asynchrones (et même pour définir les algorithmes). avec 1 c > 0. 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. Théorème 11. alors : n TEMPS(ct) = TEMPS(t) Ce qui signifie que ce qui nous intéresse.4.e. Toutefois. il faut bien remarquer le "il existe" sinon on risque une grossière erreur. |x| = n | le calcul de M sur la donnée x prend un temps . c’est la nature de la variation du temps en fonction de la taille de la donnée d’entrée (le nombre de variables) et non le temps passé au calcul en lui même. Corollaire 11. } Et on en déduit la définition de la classe de complexité en espace.1 On commence par démontrer le lemme suivant : .Chapitre 11. 11.1 (complexités spatiale vs temporelle) EM (u) ≤ TM (u) ≤ 2cM EM (u) Preuve 11.6.6. |x| = n| le calcul de M sur la donnée x utilise m cellules. On définit comme suit la complexité spatiale : Définition 11. plusieurs rubans de travail. on n’évalue l’espace utilisé pendant un calcul que sur le ou les rubans de travail. reconnus) par une MT utilisant m cellules de rubans pour son calcul.6 Relation entre complexités temporelle et spatiale Les complexités spatiale et temporelle sont liées par le théorème suivant : Théorème 11. On définit la classe de complexité en espace ESPACE(m) comme étant la classe des langages décidés (i. plusieurs rubans de sortie. classes de complexité 11. Si on considère des MT à plusieurs rubans d’entrée. on définit sa complexité en espace EM : N ∗ −→ N ∗ par : EM (n) = max{m : ∃x ∈ Σ∗ .e. Définition 11.5 155 Complexité en espace On est intéressé aussi à savoir quel est l’espace occupé sur le ou les rubans durant le calcul effectué par la MT.2 (Classe de complexité en espace) Soit e : N −→ N . Modèles de calcul.5. L’espace comptabilisé sur le i-ème ruban durant le calcul C se note li (C) et est égal au nombre de cellules visitées sur ce ruban.1 (Complexité spatiale) Pour un programme M d’une MT qui s’arrête en temps fini pour toute donnée x de Σ∗ .5. La constante cM caractéristique de la machine ne jouant qu’un rôle multiplicateur. on s’intéresse à l’évolution de la fonction temps lorsqu’on fait tendre la taille des instances particulières vers l’infini. PTIME en anglais . dans le pire des cas.1 EM (u) ≤ TM (u) C’est évident. 11. On note aussi cette classe : PTemps 1 .3 de la page 154 : [ P= TEMPS(nk ) k≥1 Définition 11. dans le pire des cas pour l’algorithme. la classe P.7 La classe P Un programme de MT est dit programme polynomial en temps s’il existe un polynôme p tel que : ∀n ∈ N∗ .7.1 (Classe de langages P) P = {L : ∃M.156 Complexité et Algorithmique avancée Lemme 11. en réutilisant la définition et le formalisme de 11.6. Nous sommes maintenant en mesure de définir la classe de langages ou encore de problèmes la plus importante que nous ayons à considérer.4.7. Définition 11. Ou encore. L = LM : ∃p|TM(x) ≤ p(x)}. on ne peut pas "visiter" plus de cellules que d’unités de temps utilisées pour le calcul sachant qu’en une unité de temps on ne peut lire ou écrire que dans une seule cellule à la fois. 1. TM (n) ≤ p(n) En d’autres termes. La seconde partie de l’inégalité TM (u) ≤ 2cM EM (u) est due au fait que la machine M termine sur u et donc ne "voit" u qu’une fois et une seule (elle ne peut s’arrêter qu’une fois) et que le nombre possible de configurations de la machine est déterminé par l’espace utilisé.2 (Complexité d’un problème) La complexité d’un problème est celle du meilleur algorithme qui le résout. ici EM (u). On parlera désormais d’algorithme polynomial en temps aux lieu et place de programme polynomial en temps pour une MTU. à savoir le test de primalité déterministe (voir [AKS04]). Remarque 11.2 Parmi ces problèmes de la classe P il convient de signaler un nouveau venu dont on a longtemps pensé. . nous ferons en fait le raccourci qui consiste à parler de l’algorithme formel qu’on étudie. classes de complexité 157 Définition 11. si pour introduire cette classe les anglo-saxons utilisent le concept de Machine de Turing Non Déterministe. En anglais. en rapport avec les propriétés d’un programme de MTU. e) ∈ P. Si on voulait créer un acronyme équivalent à l’anglais il faudrait donc nommer cette classe PN D. Modèles de calcul. elles signifient Non deterministic Polynomial soit en français Polynomial non déterministe.7. c’est-à-dire s’il existe un programme de MTU "résolvant" Π dans le codage e. comme on veut). la classe N P 1 . elles sont souvent interprétées en français comme signifiant Non Polynomiale ce qui est pour le moins abusif. Le plus souvent l’algorithme est connu. Essayons d’abord de nous faire une idée intuitive de cette classe N P. ce serait long et fastidieux. Il est non seulement polynomial. Nous garderons toutefois N P car. dans un codage approprié. ce concept n’est pas ici nécessaire. 11. mais de plus en O(log n)12 . Chaque fois que nous parlerons d’un algorithme polynomial. Pour des raisons pratiques évidentes. représentant cet algorithme. 1.8 La classe N P Nous introduisons maintenant notre deuxième classe de problèmes de décision (ou de langages. Remarque 11.7. on ne ramènera pas tous les algorithmes étudiés à la forme programme de MTU.Chapitre 11.1 L’appartenance à la classe P pour un problème suppose l’existence d’un algorithme polynomial en temps pour résoudre ce problème. Ces initiales prêtent à confusion.7. à l’instar de la programmation linéaire qu’il était non-polynomial.3 (Appartenance à la classe P) Un problème de décision Π appartient à la classe P pour le codage e si L(Π. Remarque 11. En fait. Si on est sceptique.158 11. . Qu’est-ce à dire ? Il ne faut pas que cette vérification prenne un temps prohibitif. On fixe donc la règle suivante . on va demander à la personne concernée de prouver son assertion en fournissant une permutation des villes possédant les propriétés voulues. on ne connaît pas d’algorithme polynomial permettant de résoudre ce problème exactement. C’est de même par rapport à cette propriété que nous allons pouvoir mettre en évidence des sous-classes dans N P . la réponse est oui. Ce n’est pas parce que la procédure de vérification de la solution prend un temps polynomial qu’il en est de même pour 1. C’est cette notion de vérifiabilité polynomiale qui va caractériser la classe N P. il existe un circuit hamiltonien pour lequel. pour que cette démarche soit praticable. Il doit alors exister une façon simple de vérifier que la solution fournie par la personne en question est bien un circuit hamiltonien 1 d’une part. et d’autre part. que la valeur de celui-ci est bien supérieure ou égale à B. les distances entre celles-ci. et une borne B(B ∈ N ∗ ).8. la procédure de vérification doit se faire en un temps polynomial sur une MTU par rapport à la taille de la solution à vérifier. existe-t-il un circuit de toutes les villes.8. Supposons que pour une instance particulière I de ce problème quelqu’un annonce que pour cette instance du problème de décision. Nous formulerons donc la procédure de vérification comme un algorithme général dont la complexité en temps sur une MTU est polynomiale pour l’instance I. de longueur B au moins ? Dans l’état actuel de nos connaissances. il faut absolument que la vérification de la solution fournie soit simple.1 La vérifiabilité polynomiale n’implique pas la résolubilité polynomiale. Rappel : un circuit hamiltonien dans un graphe est un circuit qui passe une fois et une seule par tous les sommets du graphe considéré.1 Complexité et Algorithmique avancée Approche informelle de la classe N P Revenons à notre exemple du voyageur de commerce qui s’énonce comme suit sous la forme de problème de décision : Problème du VRP sous forme décisionnelle Etant donnés un ensemble de villes. – Si I 6∈ YΠ . 2. on obtient une réponse non . on obtient une réponse oui . on possède une chaîne de caractères S de l’alphabet de I (alphabet extérieur de la MT) qu’on appelle en général alors structure sur I. On peut dire qu’un problème fait partie de la classe N P mais dire qu’un algorithme en fait partie n’a pas de sens. 3. 2. on ne sait pas distinguer le cas de la réponse non du cas où la machine ne s’arrête pas. Par contre. Modèles de calcul. On peut définir la classe N P en termes de vérifiabilité. La classe N P ne concerne que les problèmes. classes de complexité 159 l’algorithme de résolution. comme nous l’allons voir. Lorsque pour une instance I du problème. on possède une chaîne de caractères de l’alphabet du problème censée coder une solution du problème . La difficulté est dans ce "aucune" car. alors il existe une structure S qui. on sait vérifier si une chaîne de caractères de l’alphabet du problème est oui ou non une solution du problème. Trois cas peuvent alors se produire : 1. Dans ce dernier cas. la MT ne s’arrête pas. de façon triviale la vérifiabilité polynomiale. ce n’est pas parce qu’on ne connaît pas d’algorithme polynomial qu’il ne peut en exister. On considérera qu’un problème de décision Π est candidat à la classe N P si pour toute instance particulière I ∈ DΠ on a les deux propriétés suivantes : – Si I ∈ YΠ . provoque une réponse oui pour la seconde phase de l’algorithme. alors il n’existe aucune structure S issue de I provoquant une réponse oui pour la seconde phase de l’algorithme.. . la résolubilité polynomiale entraîne. pas les algorithmes. Pour caractériser l’appartenance d’un problème à la classe N P il faut considérer en première approche deux étapes : 1. on teste alors la dite structure S sur une MT. lorsqu’elle est issue de l’instance I. ce que certains auteurs appellent un certificat.Chapitre 11. C’est ce qu’on nomme le problème de la halte. Toutefois. est-ce que X est faux sur I ? Si le problème est résoluble en temps polynomial par un algorithme.8. Ainsi. est-ce que X est vrai sur I ? On dira que son problème complémentaire se formule de la façon suivante : Etant donné I. comme l’énonce le théorème du chapitre 2.8. Définition 11. étant donnée une séquence de toutes les villes on sait vérifier en temps polynomial si cette permutation est -ou non.2 (La classe N P des problèmes) La classe N P (Polynomialement vérifiables) est donc la classe de tous les problèmes de décision polynomialement vérifiables. nous pouvons dire qu’il fait partie de la classe N P.3. On ne connaît aucun algorithme polynomial susceptible de le résoudre et. à la condition que le problème soit un problème de décision).1 page 22) : Théorème P ⊆ NP 11. En clair. en l’état actuel des connaissances on est incapable de dire s’il en existera un.une solution attendue du problème (attention. et seulement si.8. S est un circuit hamiltonien de longueur voulue. alors son complémentaire aussi. La résolubilité polynomiale implique trivialement la vérifiabilité polynomiale. qu’on rappelle (voir 2. un jour. Ceci vient du fait qu’un algorithme .2 Classe Co-N P Il n’y a pas de symétrie pour les problèmes de N P. Définition 11.1 (Problème polynomialement vérifiable) Un problème de décision Π est à solution polynomialement vérifiable ou vérifiable polynomialement s’il existe un polynôme p tel que. pour une instance particulière I du problème. Si un problème a la structure générale : Etant donné I.160 Complexité et Algorithmique avancée Ainsi en est-il du problème du voyageur de commerce ou VRP. suite à l’étude préalable concernant le problème du voyageur de commerce. pour toute instance I ∈ YΠ il y a une structure S pour laquelle il existe un algorithme de vérification de la solution en temps p(longueur(I)) polynomial. il doit exister au moins une structure S issue du calcul sur I telle que l’algorithme de vérification répondra oui pour I et S si. il n’existe pas d’algorithme.8. On reviendra sur les problèmes qui sont les "pires" de N P . Au passage. polynomial en temps. Par exemple. La même situation se reproduit dans de nombreux cas dans N P. Il suffit d’inverser les instances qoui et qnon dans un programme de MT.8. La réponse est alors oui ou non. Ainsi. est il vrai qu’il n’y ait aucune tournée sur toutes les citées de valeur inférieure à B ? Dans le pire des cas. Commentaire : En fait. Nous venons d’étudier ci-dessus des modèles de calcul dans le cadre de la complexité en temps. bien que l’appartenance à P pour un problème implique aussi l’appartenance à P pour son complémentaire. dans l’état actuel des connaissances.Chapitre 11. Le problème complémentaire s’énonce comme suit : Etant donné un ensemble de villes. on ne connaît aucun algorithme qui ne doive examiner toutes ou presque toutes les tournées possibles (le nombre de telles tournées est (n − 1)!). en particulier pour les problèmes dans N P pour lesquels on ne connaît pas d’algorithme polynomial pour les résoudre.1 {Π ∈ P} ⇐⇒ {Π ∈ P} Et aussi Théorème 11. Modèles de calcul. pour résoudre ce problème. on ne peut rien dire de tel pour les problèmes de N P.2 {Π ∈ P} =⇒ {Π ∈ Co − N P} Cette propriété est généralement fausse dans le cas de la vérifiabilité. à savoir : 1. classes de complexité 161 s’arrête quelle que soit la séquence initiale. la complexité d’un langage ou d’un problème est concernée par trois éléments d’appréciation ou de mesure. En d’autre termes. les distances entre celles-ci. et une borne B. D’où : Théorème 11. on voit apparaître là une famille de problèmes pires 1 que les pires de N P. La théorie de la complexité concerne en fait toute ressource de calcul mesurable. revenons au problème du VRP. en temps ou espace polynomial que Π ¯ ∈ N P}. .. co − N P = {Π|Π Soit. La complexité (c’est-à-dire. la valeur prise par la fonction) ne doit dépendre que de la taille de la donnée d’entrée... Les problèmes de Co−N P sont tels qu’on peut vérifier ¯ n’admet pas de solution. • le type de problème ou langage considéré. ce qui est intéressant pour un algorithme ou un problème. De plus elles doivent être uniformément croissantes. l’énergie..162 Complexité et Algorithmique avancée • la ressource consommée pour la résolution ou la reconnaissance suivant qu’il s’agit d’un langage ou d’un problème. le modèle des circuits booléens. Le problème reste toutefois de définir quel type de fonction utiliser pour mesurer la-dite complexité. comme noté ci-dessus que P ⊂ N P ∩ Co − N P. C’est ce qui conduit à considérer les choses in abstracto sans se préoccuper de savoir de quelle ressource il s’agit. le système de Post. • le modèle de calcul considéré. c’est sa complexité asymptotique. en termes de langage : co − N P = {Σ∗ − L|L langage sur l’alphabet Σ et L ∈ N P Il est évident. 11. la quantité d’information. la machine de Turing. optimisation. à savoir f (n + 1) ≥ f (n) ∀n ∈ N . décision .9 La classe N P ∩ Co − N P Les problèmes de N P sont tels que toute séquence de l’alphabet extérieur Π candidate à être solution peut-être acceptée ou rejetée en temps polynomial. Par contre la réciproque est fausse. l’espace. Ce peut être le temps. f Ces fonctions doivent toutes être de type f : N ∗ − → N ∗ .. c’est-à-dire la fonction représentative de la variation de la complexité lorsqu’on fait tendre la taille de la donnée vers l’infini. Des points de vue théorique et pratique. ce qui suppose qu’on sache quantifier et mesurer la ressource en question . le modèle quantique. le lambda-calcul . Le théorème de Ford-Fulkerson qui s’énonce comme suit : Flot maximum = Coupe minimale exprime en fait un principe dit de dualité. il est dans P.. La notation matricielle A . c2 .Y ≥C Y ∈ Rn ˜ signifie transposée de A.Chapitre 11.1 ∈R .. 1. . .1 a2.1 ··· am. Le problème dit du Flot maximal et celui de la coupe minimale sont polynomialement réductibles l’un à l’autre et tous deux dans N P.X ≤ B m X∈R Le dual 1 en est alors : PL Minimiser B. . ··· .X sous les contraintes A. on dit qu’ils sont duaux. a1. Kar74]) donnent des algorithmes polynomiaux. Il en est de même du problème de la Programmation linéaire qui s’écrit : PL x1 x Maximiser c1 .Y sous les contraintes e A.9. classes de complexité 11.n × x1 x2 ··· xm ≤ b1 b2 ··· bm soit plus simplement en notation matricielle : PL Maximiser C.. .. les algorithmes bien connus de Ford-Fulkerson ([FF56.n a2..n ··· am. .. Modèles de calcul.1 163 Dualité Un problème comme celui du flot maximal (voir 9. cn × 2 ··· xm sous les contraintes xi a1. FF62]) d’abord. de Dinic-Karzanov ensuite ([Din70.3 page 113) fait partie de N P ∩Co−N P en effet. sans détruire la chaine initiale.1. on est en position de départ pour l’addition 2 + 3 codée unaire. 2. Position de départ : Λ Λ 1 1 0 1 1 ∆q0 Λ Λ Exercice 7 Écrire un schème d’une machine de Turing reconnaissant si une chaine de digits binaires forme un palindrome. Attention. Exercice 8 Écrire le schème de l’addition de deux nombres unaires séparés par une astérisque : Λ Λ 1 ∆q0 1 ∗ 1 1 1 Λ Ici. On pourra s’appuyer sur l’exemple donné dans le chapitre. y) + 1 itérations si x et y sont les nombres à additionner. Exercices Exercice 5 En partant du schème de la machine décrit en 11. vient du fait que le problème du flot maximal peut facilement se poser sous forme d’un programme linéaire (mais ce n’est pas efficace en termes de performances. il y a plusieurs solutions à cet exercice dont une ne nécessite que max(x. programmation linéaire et flot maximal. le modifier pour que la machine reconnaisse : 1. Exercice 6 Écrire un schème d’une machine de Turing reconnaissant si une chaine de digits binaires forme un palindrome. en prenant pour position de départ le dernier bit à droite de la chaîne d’instance.164 Complexité et Algorithmique avancée La filiation entre les deux problèmes. c’est pourquoi on a mis au point des algorithmes spécifiques). si la chaîne binaire inscrite sur le ruban comprend deux zéros dans ses bits les plus à droite . si la chaîne de bits contient au moins un bit à la valeur "un". .2. écrire un programme permettant de savoir s’il existe -ou non. classes de complexité 165 Exercice 9 Sachant que la multiplication est une succession d’additions. Exercice 13 Imaginez un algorithme programmable sur un ordinateur classique permettant de construire un cycle hamiltonien sur un graphe quelconque. modifier le schème précédent pour obtenir celui de la multiplication d’entiers codés unaires. il ne faut pas hésiter à rajouter des symboles dans chaque alphabet.Chapitre 11.un circuit hamiltonien sur un graphe donné. Déterminer une machine de Turing à un seul ruban qui remplace 1. Imaginez un algorithme programmable sur un ordinateur classique permettant de résoudre ce problème. Plus Grand Commun Diviseur . Soit w un mot d’entrée sur Σ∗ . Position de départ : Λ Λ 1 1 ∆q0 1 1 1 Λ Λ Il s’agit là de soustraire le nombre deux (2) à trois(3) Exercice 11 À partir de la solution de l’exercice précédent. Modèles de calcul. écrire le schème de la division euclidienne. écrire le schème du calcul du PGCD 1 de deux nombres comme donnés comme à l’exercice précédent.On considère l’alphabet Σ = {0. 1}. Attention. la position de départ étant le dernier batonnet à droite du nombre de gauche qui est à soustraire de celui de droite. Exercice 16 [carré d’un mot] 1. Exercice 10 Écrire un schème d’une machine de Turing effectuant la soustraction de deux nombres unaires. c’est assez difficile. Exercice 15 À partir de la solution de l’exercice précédent. Exercice 12 À partir de la solution de l’exercice précédent. Exercice 14 Le problème du VRP est posé comme étant celui de la recherche d’un circuit hamiltonien de valeur minimale sur un graphe. B111111B. . Montrez qu’un langage défini par une grammaire LR(k) est reconnu en temps polynomial par une machine de Turing. B110B. . . . . 1 par b). 2. 2. 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. ABA11ba.166 Complexité et Algorithmique avancée alternativement le symbole 0 ou 1 le plus à droite par A ou B (0 sera remplacé par A. A10111a. ABABbba. ABA1bba. 1 sera remplacé par B) puis le symbole 0 ou 1 le plus à gauche par a ou b (0 par a. AB011ba. Montrez qu’il existe une machine de Turing reconnaissant le langage de A en temps polynomial. Montrez qu’il existe une machine de Turing reconnaissant L en temps polynomial. . Soit L un langage régulier.Vérifier votre calcul pour w=011 Exercice 17 [Reconnaissance de langage] 1. Vous devez obtenir . . Vous expliquerez au préalable de manière succincte la stratégie de votre machine. . . le rôle de chaque état utilisé. 3. Par exemple. 3. Exécuter votre machine sur le mot d’entrée .En déduire une machine de Turing à un seul ruban qui reconnaît le langage L = {ww/w ∈ Σ∗ }. si le mot d’entrée est 0101110. Soit A un automate à pile déterministe. AB0111a. les exécutions successives vont donner A101110. . . En effet.1 Le monde de N P ous nous intéressons ici aux relations existant entre problèmes polynomiaux et problèmes de la classe N P. c’est à dire de savoir s’il existe des problèmes qui sont dans N P et qui ne sont pas dans P. Dans ce qui suit nous supposerons que P = 6 N P et même plus précisément que : P ⊂ NP Nous allons donc nous intéresser à des problèmes de N P − P en . Nous allons être amenés à introduire une nouvelle classe de problèmes que nous nommerons N PC pour problèmes N P − Complets.Chapitre 12 Complétude N P 12. alors la distinction entre P et N P − P revêt une signification primordiale. eu égard à leur complexité. on ne connaît pas d’algorithme polynomial le permettant. N 12. Tous les problèmes de P peuvent être résolus par des algorithmes en temps polynomial alors que pour les problèmes qui sont dans N P − P . et nombre de chercheurs conjecturent qu’il ne peut y en avoir.1.1 La transformation polynomiale Si la classe P est différente de N P. Dans un premier temps nous allons nous donner une méthode permettant de comparer des problèmes entre-eux. la question se pose de savoir si l’introduction du concept de classe N P a un sens. 1 Une transformation polynomiale d’un langage f L1 ⊆ Σ∗1 en un langage L2 ⊆ Σ∗2 est une fonction f : Σ∗1 − → Σ∗2 qui satisfait aux conditions suivantes : 1. Les caractéristiques qui nous intéressent sont donc conservées. x ∈ L1 ssi f (x) ∈ L2 . L’idée.168 Complexité et Algorithmique avancée supposant qu’il y en a. et réciproquement : {L1 6∈ P =⇒ L2 6∈ P}. L1 et L2 . se note L1 ∝ L2 Lemme 12. Si on parle en termes de problème. 3.1 Si L1 ∝ L2 . dans la mesure où nous nous intéressons au caractère polynomial -ou non polynomial. 2.une telle transformation conserve le dit caractère. alors on a {L2 ∈ P =⇒ L1 ∈ P}. par conséquent le caractère polynomial sera conservé. e1 ) en L(Π2 . On sait qu’un polynôme de polynômes est un polynôme. avec les schèmes d’encodage associés e1 et e2 . e2 ). le programme de la transformation est polynomial en temps. quand elle existe. il existe un programme de MTU qui peut calculer f . La transformation polynomiale entre deux langages.1.1. De même. En effet. Si Π1 et Π2 sont des problèmes de décision. on peut regarder une transformation polynomiale du problème de décision Π1 en un problème Π2 comme f une fonction f : DΠ1 − → DΠ2 satisfaisant aux deux conditions suivantes : . Définition 12. ∀x ∈ Σ∗1 . un polynôme de fonctions non-polynomiale reste non-polynomial. L’idée principale que nous allons être amenés à utiliser est celle de transformation polynomiale à partir de laquelle on se munit de l’outil correspondant. on écrira Π1 ∝ Π2 (avec respect des schèmes donnés) lorsqu’il existe une transformation polynomiale de L(Π1 . puisqu’on utilise ici le terme de "classe" polynomiale ou de classe N P est donc de mettre en évidence une relation d’équivalence qui générera la classe qui nous intéresse. Chapitre 12.1 Un langage L est dit N P − complet si L ∈ N P et. ∀I ∈ DΠ1 . Nous allons maintenant nous employer à les caractériser. 2. . on aurait en ce cas démontré que P = N P.1.2. f est calculable en temps polynomial par un algorithme déterministe . et tous les problèmes de la classe N P sont alors résolubles en temps polynomial sur une MTU. La classe des problèmes N P − complets est une classe d’équivalence de problèmes qui sont les plus difficiles de N P. 12. on conjecture que : P 6= N P. on a entrevu de façon intuitive qu’il existe des problèmes plus difficiles que d’autres. on a Π0 ∝ Π. on a L0 ∝ L. Lemme 12. pour tout autre problème de décision Π0 ∈ N P. I ∈ YΠ1 ssi f (I) ∈ YΠ2 La relation de transformabilité polynomiale est transitive.2 La classe N PC des problèmes N P-complets Dans le chapitre précédent. Ainsi. Pour ce qui nous concerne ici. et donc. ce qui la rend opérationnelle pour ce qui nous intéresse. Cela signifie que si on sait démontrer qu’un des problèmes de la classe N P − complet est résoluble en temps polynomial sur une MTU. Par ailleurs. si un problème Π fait partie de la classe N P − complet. alors ils le sont tous. Complétude N P 169 1. pour tout autre langage L0 ∈ N P. Ce qui formellement s’énonce : Définition 12. on dira qu’un problème de décision Π est N P − complet si Π ∈ N P et que. Informellement.2 {{L1 ∝ L2 }et {L2 ∝ L3 } =⇒ {L1 ∝ L3 }} La démonstration est assez facile pour qu’on puisse la laisser au lecteur. et jusqu’à plus ample information. les problèmes de la classe N P − complet sont les problèmes réputés pour être les plus difficiles de la classe N P. tous les problèmes de la classe N P sont transformables en Π par une transformation polynomiale. 1 peut conduire à penser que : 1. nous allons introduire la classe des problèmes de décision dits N P − complets qu’on notera également N PC . La figure 12. P T N PC = ∅ . à la vérité. c’est démontrer qu’un certain nombre de problèmes sont équivalents entre eux eu égard à leur complexité en temps. 2. On a ainsi une vue plus précise de la classe N P qu’on peut visualiser par un dessin comme suit : NPComplets P-Polynomiaux NP Figure 12. on n’en sait rien. Tout ce qu’on sait faire. et aussi N P − {P S N PC} = 6 ∅ Or.1 – Visualisation des classes élémentaires de complexité Dans ce qui suit. et qu’on ne . par transformation polynomiale.170 Complexité et Algorithmique avancée Et même plus précisément : P ⊂ N P. De même pour le test de primalité d’un nombre dont on a longtemps pensé qu’il n’y avait pas d’algorithme polynomial pour le résoudre (voir [AKS04]). Murty [CM89]). on aurait de plus : P = N P. pour qu’un problème de N P soit dit N P. N PC). les problèmes de la classe N PC ne peuvent être.2 Le problème de la satisfiabilité Le problème dit de satisfiabilité (voir [Coo71. on ne sait pas démontrer non plus qu’il n’en existe pas. c’est pourquoi on a pensé longtemps que le problème lui-même était de nature non-polynomiale. 6 N P. par transformation polynomiale.complet (i. mais en 1974. et tous donc appartiendraient à P et en conséquence. pour faire partie de la classe N PC. mais c’est tout. la satisfiabilité De façon littérale. Lév73a]) que nous avons déjà rencontré. Complétude N P 171 possède pas d’algorithme polynomial en temps dans le pire des cas pour en résoudre au moins un. . s’énonce comme suit : 1. Dans des cas extrêmes cet algorithme est non-polynomial en temps.1 Un problème N P − complet. la classe de problèmes auxquels nous allons maintenant nous intéresser est telle que si on trouvait un algorithme polynomial en temps pour l’un d’entre eux. par transformation polynomiale. Il est déja arrivé que pour un problème réputé non polynomial on trouve un algorithme polynomial (cela a été le cas par exemple de la Programmation Linéaire pourtant largement pratiquée et pour laquelle on utilise l’algorithme dit du simplexe dû à Kantorovitch et Tolstoï en 1939 [KAN39] et [TOL39] et popularisé en 1956 par Dantzig 1 ).2. Si on admet que P = la réciproque n’est pas vraie. espace). Par ailleurs on connaît d’autres problèmes pour lesquels on dispose d’algorithmes polynomiaux dans le pire des cas. 12. il faut (mais il ne suffit pas) que tout problème de N P puisse. transformés en tout autre problème de la classe N P.e. Toutefois.Chapitre 12. 12. Khatchiyan (voir[Kha79] a fourni un algorithme polynomial pour résoudre ce problème et de nombreux autres on suivi (Karmarkar [Kar84a. s’y ramener. alors tous seraient résolubles en temps polynomial. se prêter à une vérification de solution qui soit faisable en temps polynomial (resp. S’agissant des problèmes pour lesquels on ne possède pas d’algorithme polynomial. Kar84b].2. il est même exponentiel. De plus un problème auquel tout autre problème de N P peut se ramener par transformation polynomiale doit. ∧ xt ). . c’est-à-dire que "littéral x" désigne x ¯ (ou ¬x) ou x. Les termes clause et monôme étant plutôt utilisés en algèbre de Boole et les termes minterme. . Exemple 12. respectivement dans les cas de forme conjonctive et de forme disjonctive. . . 1. 1}). m. j.. xi . m. p. 3. l. . t ∈ {1. f aux} ou dans {0. k. n} prenne la valeur vrai ou 1. il suffit qu’un seul de ses monômes le soit. maxterme en logique et électronique... L’écriture duale est une forme normale disjonctive .. . ∧ xp ) ∨ · · · ∨ (xq ∧ . k. p. . . k... . p. q. . l. n} . . t ∈ {1.. t ∈ {1. . k. t ∈ {1. . m. . m. . j. .1 Pour qu’une FNC soit satisfaite il faut que chacune de ses clauses le soit. j. q. n} . n} et la question devient : quelle doit être une assignation de valeurs vrai (resp. ∧ (xq ∨ . ∧ xk ) ∨ (x1 ∧ xm . 2. . p. Pour qu’une FND soit satisfaite. . ..2 Une expression booléenne φ est dite satisfiable si il existe une assignation de valeurs à ses variables (une instanciation de celles-ci) telle que l’expression prenne la valeur vrai (ou 1 en algèbre de Boole) 3 . 1) ou f aux (resp.172 Complexité et Algorithmique avancée Etant données des littéraux booléens 1 x1 . ∨ xk ) ∧ (xl ∨ xm . q. .1 (FND) Une forme normale disjonctive serait : F0 = (xi ∧ xj . RAPPEL : Cette fonction est dite écrite sous forme normale conjonctive et chaque terme entre parenthèses (clause) est aussi appelé un maxterme. L’expression littéraux booléens désigne ici des variables booléennes indépendamment du fait qu’elles apparaissent niées ou non dans les clauses. i.. . ∨ xt ) 2 i. .2.2. . quelles sont les valeurs à assigner à ces variables pour que l’expression. ∧ xt ) . Remarque 12. . Les termes de base (les monômes) en sont aussi appelés des mintermes. l. x2 . i. q. Définition 12... . ∨ xk ) ou du type (xq ∧ . .2. . i. j. . ∨ xp ) ∧ . On ne fera pas la différence ici . aussi appelée FNC pour Forme Normale Conjonctive : F = (xi ∨ xj .. . 0) aux variables pour que F0 prenne la valeur vrai ou 1 ? Les expressions du type (xi ∨ xj . seront appelées respectivement clauses et monômes. xn (donc prenant leurs valeurs dans {vrai. l. 3 SAT. Complétude N P 173 Définition 12. problème N P − complet Le premier problème de décision à avoir été considéré comme N P − complet est précisément celui de la satisfiabilité. toutes les combinaisons possibles ou presque.Chapitre 12. dans le pire des cas. pour trouver une assignation de valeurs satisfaisant la condition de satisfiabilité.2 l’expression ((x1 ∨ x2 ) ∧ x2 ) est satisfiable.3 Une expression booléenne φ est dite valide si pour toute assignation de valeurs à ses variables (toute instanciation de cellesci) l’expression prend la valeur vrai. Par conséquent nombre de chercheurs .e. l’expression (x1 ∨ x2 ) ∧ (x1 ∨ x2 ) ∧ x1 ∧ x2 ne peut être satisfaite. L’expression (x1 ∨ x2 ) ∧ (x1 ∨ x2 ) est quant à elle. l’écrire sous forme normale conjonctive (respectivement : disjonctive) en minimisant le nombre de mintermes (resp. de même nature que celui de la satisfiabilité s’y ramène directement (voir [Lav74] pour l’algorithmique qui s’y rapporte).2. Ce problème. Par contre. de valeurs pour toutes les variables jusqu’à en trouver une qui satisfasse l’égalité F = vrai. est valide). La raison du choix de SAT vient du fait qu’il s’agit d’un problème central. Ce problème s’appelle aussi problème du recouvrement d’un ensemble par un sous ensemble de ses parties (Set covering problem en anglais).1 Une expression booléenne est satisfiable si et seulement si sa négation n’est pas une tautologie (i. Le lecteur le démontrera facilement par utilisation des formules de De Morgan.2. (on dit aussi alors que l’expression est une tautologie). En effet. Dans le cas général.2. elle prend la valeur vrai pour f (x1 ) = f (x2 ) = f aux. de maxtermes). La situation de l’exemple 12.2 ressortit à un cas plus général : Propriété 12. il n’y a pas d’autre solution que d’essayer.2. une tautologie. Un autre problème très proche est : Étant donnée une fonction booléenne quelconque. 12. Exemple 12. sur lequel maints mathématiciens et informaticiens se sont penchés sans jamais en exhiber une solution en temps polynomial. en l’état actuel de nos connaissances. 1 Première partie : SAT est dans N P Lemme 12.1 SAT ∈ N P Soit C l’ensemble des clauses d’un problème SAT . 12. l’autre beaucoup plus longue et difficile.3. il nous faut donc maintenant mener la démonstration en deux temps. la vérification prend un nombre de pas de . Par facilité d’écriture. Pour introduire la classe N PC des problèmes. pas facilement). La forme normale conjonctive (ou FNC).3. nous nommerons désormais.1 Le théorème de Lévine-Cook Théorème 12.3. Pratiquement tous les problèmes classiques de mathématique peuvent s’exprimer en expressions de la logique formelle (ce qui ne signifie en rien que ce soit facile à faire) et toute fonction booléenne peut se ramener à une forme normale conjonctive (là non plus. qui consiste à montrer que tout problème de N P peut. par transformation polynomiale.1 (Théorème de Lévine-Cook) : SAT est N P−complet. brève. s’écrire sous forme d’une instance de SAT.3. pour laquelle il faut montrer que SAT fait partie de N P . une MTU vérifie en temps polynomial si cette assignation (ou instanciation réelle) valide -ou non. ce problème : SAT. La démonstration se mène donc en deux parties (voir [Coo71. une première. La vérification se fait évidemment en temps polynomial.l’instance générique en question. La machine vérifie en effet en temps polynomial que chacune des clauses de C prend la valeur vrai pour cette assignation de variables. dans ce qui suit. En effet si la proposition est vraie. 12. c’est-à-dire SAT est donc centrale. il n’existe pas d’algorithme permettant de le résoudre en temps polynomial dans le pire des cas.1.174 Complexité et Algorithmique avancée conjecturent que pour ce problème. GJ79]). Étant donnée une assignation de valeurs (un vecteur booléen) aux variables d’une instance de SAT. Une autre raison qui a conduit à prendre SAT comme problème central est liée à l’algèbre de Boole qui est l’algèbre de la logique. on a évidemment : SAT ∈ N P. sur une MTU.Chapitre 12. e].1. c’est de considérer tous les langages de N P et de donner une transformation fL polynomiale du langage associé en LSAT . il suffit pour ce faire que la MTU remplace dans l’instance générique. Le passage à la forme langage vient de ce qu’il nous faut pouvoir parler de tout problème de N P.3. e étant un schème d’encodage «raisonnable» au sens où nous l’avons précédemment défini : Rappel : On appelle codage raisonnable tout codage qui induit une taille de donnée qui est fonction polynomiale de la taille de l’instance codée. L ∝ LSAT Une façon standard de pouvoir traiter de tous les problèmes de N P de façon générique. Il nous faut donc montrer maintenant que tout langage de N P peut être transformé polynomialement en LSAT . du fait que la fonction booléenne.2 Seconde partie Lemme 12. Si la proposition est fausse également. ce qui entraîne un calcul dont la complexité en temps est de l’ordre d’un polynôme "en n" où n est le nombre de variables à instancier. nous utiliserons la forme langage. à savoir que tout problème dans N P est transformable polynomialement en SAT.3.2 Tout problème transformable en SAT dans NP est polynomialement Pour la deuxième partie de la démonstration. laquelle est d’autant plus facilement manipulable qu’on ne connaît pas de méthode générique formelle autre pour caractériser "tout problème" de N P (sinon SAT). prend la valeur vraie pour l’affectation de valeurs aux variables prend un temps polynomialement borné. SAT est alors représenté par le langage LSAT = L[SAT. qui consiste à montrer le lemme. chaque variable par sa valeur. En fait cela revient à dire que la vérification. instance de SAT. soit formellement : ∀L ∈ N P. . Complétude N P 175 calcul sur une MTU qui s’exprime linéairement en le nombre de variables et le nombre de clauses du problème SAT considéré. L’utilisation des langages permet par abstraction de parler de «tout langage» et donc de ramener le problème général à sa forme générique. C’est évident. 12. δ avec : – Q espace des états de la machine (appelé aussi alphabet intérieur). C’est à dire que s’il existe une affectation de valeurs {vrai. fini. qN )) × Γ −→ Q × Γ × {G. q0 . N}). Soit M un programme reconnaissant en temps polynomial le langage L = LM spécifié par : Γ. Le symbole Λ en faisant partie. qY étant associé à OUI et qN à NON. Soit p(n). D. avec n ∈ N et p(n) ≥ n ∀n . Λ. Σ. un polynôme . – Γ pour la généralité du propos. on distinguera Γ et Σ. c’est à dire l’ensemble des symboles disponibles pour écrire la donnée sur le ruban 1 . le programme de MTU capable d’effectuer cette transformation. Il s’agit donc ici 1. – Σ alphabet extérieur de la machine restreint à la donnée de départ. L’état q0 étant l’état initial de la machine . avec Σ ⊂ Γ où Γ est l’ensemble. 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 forme générique. f aux} aux variables booléennes satisfaisant SAT. qui symbolise le blanc ou absence de symbole .176 Complexité et Algorithmique avancée En d’autres termes. bornant la fonction de complexité en temps : TM (n). De plus il faut que cette transformation se fasse en temps polynomial (c’est le rôle de fL ). qY . Notre propos ici est donc de construire. . – qY et qN étant les états d’arrêt de la MTU associés aux états OUI et NON respectivement. à chaque séquence x de Σ∗ doit correspondre un mot du langage L si et seulement si SAT prend la valeur vrai. qN . La fonction fL peut être vue comme une application des séquences de Σ sur les instances de SAT. Q. fL doit être telle que. Attention. – δ (ou t) est la fonction de transition : δ : (Q − (qY . de tous les symboles de l’alphabet extérieur et Σ l’ensemble des symboles utilisés pour coder la donnée d’entrée . il faut pouvoir poser tout problème de N P sous forme de résolution d’une instance SAT. de façon générique. c’est à dire lorsque x ∈ L. avec r = |Q| − 1 et l’alphabet extérieur Γ = {s0 = Λ. par convention. Sachant que la tête de lecture/écriture de la MTU démarre. La phase du calcul de vérification peut alors être complètement décrite en trois points.e. q1 = qY . Soit l’espace (i. st }.Chapitre 12. ce qui consiste à montrer comment faire correspondre un ensemble de clauses à une séquence x acceptable par le programme M de la MTU. . q3 . qr }. U est composé de trois parties permettant donc de spécifier l’état qk de M. sur la bande. que les cases −p(n) à p(n) + 1 . à savoir : – la donnée du contenu des cases concernées . donc ici il s’agit de vérifier si la réponse est OUI. – l’état correspondant de la machine (la lettre de l’alphabet intérieur) . . La construction de fL va donc consister à affecter des clauses vraies qui spécifient clairement ces trois éléments à chaque étape du calcul. l’indice de la case en jeu. . cela signifie qu’il y a un calcul de M (pour la commodité de l’exposé. et ne peut à chaque étape que lire/écrire dans une des cases contigüe (voir chapitre 2 le fonctionnement détaillé d’une MTU) un tel calcul de la MTU ne peut concerner. . au plus. . l’alphabet intérieur) des états décrit par : Q = {q0 . rappel : il s’agit d’un problème de décision. sur la case 1. Complétude N P 177 de construire fL . – la position de la tête de lecture/écriture. q2 = qN . on n’a à considérer au plus que p(n) + 1 itérations (i. De plus. s2 . le contenu de celle-ci. avec t = |Γ| − 1 . . on confond ici le programme M et la machine qui l’exécute) sur x tel que tant le temps de calcul de vérification de la séquence 1 que la longueur de la séquence elle-même (peu importe comment elle a été obtenue) sont bornés par un polynôme p(n) avec n = |x|. 1. Si x ∈ Σ∗ est accepté par M. s1 . comme il doit y avoir au plus p(n) étapes. temps) différentes. .e. Soit U l’ensemble des variables de fL permettant de décrire une itération particulière . k] P(n) ≥ i ≥ 0.e. souvent une topologie . . 2. k] ∪ H[i. Pour bien faire. dans certains cas. et on a alors P(n) ≥ i ≥ 0 ainsi que r ≥ k ≥ 0 . k] La position de départ est constituée de deux grandes parties. – Q[i. écrite dans les cases 1 à n et la séquence candidate à être solution une fois l’instance paramétrée instanciée en instance numérique 1 . r ≥ k ≥ 0 Au temps i. on peut être amené à distinguer trois niveaux d’instanciation. k] où i caractérise l’itération (l’item de temps). k] caractérise le fait qu’à l’itération (i. langage décrivant les problèmes de N P. la première est le codage de l’instance particulière du problème considéré. j. j] P(n) ≥ i ≥ 0 . 1. une instance particulière ou encore instance paramétrée qui définit une sous classe. M est dans l’état qk H[i. P(n) + 1 ≥ j ≥ −P(n) et t ≥ k ≥ 0. w écrite dans les cases −1 à −|w|.temps) i la machine M est dans l’état qk . – S[i. Il y a là une difficulté d’interprétation due aux niveaux auxquels on se place. j.178 Complexité et Algorithmique avancée U = {Q[i. On a alors P(n) ≥ i ≥ 0 ainsi que P(n) + 1 ≥ j ≥ −P(n) . t ≥ k≥0 Au temps i la case j contient k S[i.e. On a alors P(n) ≥ i ≥ 0 . elle consiste en la donnée de la séquence x de Σ. – H[i. j]} ∪ S[i. j. au temps) i. P(n) + 1 ≥ j ≥ −P(n) .temps) i. l’ instance générique qui est représentative de TOUS les problèmes d’une classe .e. k] caractérise le contenu k de la case j à l’itération (i. P(n) + 1 ≥ j ≥ −P(n) Au temps i la tête lit la case j P(n) ≥ i ≥ 0 . toutes les autres cases 1. j] caractérise la case j lue par la tête à l’itération (i. ce qui peut se résumer dans le tableau suivant (voir aussi [GJ79]) : Variable Rang Signification Q[i. Chapitre 12. – ⇔ Il existe une affectation vrai satisfaisant SAT pour l’ensemble des clauses dans fL (x). Les clauses de fL peuvent être divisées en 6 groupes imposant chacun des types séparés de contraintes à chaque affectation vrai satisfaisant SAT. . Ainsi. le calcul est dans l’état initial de vérification de x G5 A l’itération p(n). 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) . chaque case contient un et un seul symbole de Γ G4 A l’itération 0. Ces contraintes sont en fait celles. satisfaisant SAT) si et seulement si c’est une affectation dont le nombre d’itérations de la phase de vérification de la séquence candidate et la longueur de w sont bornés supérieurement par p(n). fL satisfait une des deux conditions de la transformation polynomiale. une instance numérique dans laquelle on a attribué une valeur aux paramètres.e. Complétude N P 179 étant vides. L’autre condition. à savoir que fL doit calculer en temps polynomial va être vérifiée par la suite. classiques. La transformation fL construit un ensemble de clauses impliquant ces variables de telle façon qu’une affectation vrai soit une affectation satisfaisante (i. M est dans l’état qY et x est accepté 3. Groupe Clauses du groupe G1 A toute itération i correspond un et un seul état de M G2 A toute itération i la tête de lecture/écriture lit une case et une seule G3 A toute itération i. Ainsi. associées au fonctionnement de toute machine de Turing. 1].(r + 1). p(n) + 1 ≥ i ≥ −p(n). G6 Groupe Clauses du groupe La question qui se pose maintenant est de savoir comment sont constitués ces groupes. j. l]. si la tête de lecture n’est pas entrain de lire la case j au temps i et que la case j contient sl à l’itération i mais plus à l’itération i + 1.180 Complexité et Algorithmique avancée A toute itération i. Ces clauses s’expriment comme suit : G6. p(n) > i ≥ 0. r ≥ k > j ≥ 0 Les p(n) + 1 premières de ces clauses peuvent être simultanément satisfaites si et seulement si. Le nombre de clauses dans chaque groupe. Q[i. Le premier garanti que si la tête de lecture/écriture n’est pas en cours de lecture de la case j au temps (i.e. case j.(r/2)) sont évidemment satisfaites puisque M ne peut être en plus d’un seul état. t ≥ l ≥ 0}. la configuration au temps i + 1 est obtenue par simple application de la fonction de transition δ à la configuration i. Les clauses suivantes (il y en a (p(n) + 1). . j]. r]}. alors la clause ci-dessus dépendante de . On construit pareillement les groupes G2 et G3 . H[i. a chaque itération i. G1 est constitué des clauses : {Q[i.1 et G6. l]}. j]. Le groupe G6 est constitué de deux sous-groupes de clauses.2 . Pour toute itération i. Q[i. k]}p(n) ≥ i ≥ 0. p(n) > i ≥ 0.1 = {{S[i. j. 0]. S[i + 1. Q[i. à l’itération) i. G6. . p(n) ≥ i ≥ 0 et {Q[i. alors le symbole dans la case j ne doit pas changer entre les itérations i et i + 1. M est dans un état de Q au moins. ainsi que le nombre de littéraux dans chaque clause sont bornés par une fonction polynomiale en n.Les groupes G4 et G5 consistent chacun en une seule clause. . symbole sl . . Ainsi. Il s’ensuit que fL possède une affectation vrai satisfaisant SAT si et seulement si x ∈ L. On génère ainsi 6(p(n)). Dans le cas contraire. . . p(n) + 1 ≥ j ≥ −p(n). j. sl ) = (qk0 . k1 ]}. j. qN }. . 0]. −p(n)]. 0]}. . . H[i. n + 1. sl0 .(t + 1) clauses permettant à G6 de générer des affectations satisfaisant SAT et cohérentes avec les contraintes. . Q[i. . Q[i. j. S[i. qN }. G2 p(n) ≥ i ≥ 0 . k0 ]}. Complétude N P 181 i. {H[i.2 lorsque qk ∈ Q − {qY . k2 ]}. j. . t]}. et l ne peut être satisfaite. {H[0. . p(n) + 1 ≥ k > j ≥ −p(n)}. Dans G6. t ≥ k0 > k ≥ 0 {Q[0. . k]. 0. {S[i. . 0]}. Si x ∈ L . 1]} . Il reste toutefois à démontrer que pour tout langage L. On a ainsi montré comment construire un ensemble de clauses permettant de générer fL . {S[0. j]. p(n) + 1]}. H[i. . . . D = 0. {S[0. {S[0. kn ]}. . r]}.Chapitre 12. les valeurs de ∆.G1 ∪ G2 ∪ G3 ∪ G4 ∪ G5 ∪ G6 . elle doit être satisfaite. 1]. . −p(n) + 1]. la construction de G est telle que toute affectation satisfaisant SAT de G doit correspondre à un calcul acceptable de M sur x. . {S[0. 0]} avec x = sk1 sk2 . S[i. p(n) ≥ i ≥ 0. {S[0. . k]}p(n) ≥ i ≥ 0. p(n) + 1. p(n) + 1 ≥ j ≥ −p(n). 1]. H[i. r ≥ k > j ≥ 0 {H[i. j. 1. 1]}. . {S[i. j]. Inversement. ∆) et pour qk ∈ {qY . Q[i. G3 p(n) ≥ i ≥ 0. p(n) ≥ i ≥ 0. skn G5 {Q[p(n). . S[i. k 0 = k et l0 = l. 2. k 0 et l0 sont telles que d(qk . n.(r + 1). . fL (x) peut être construit sur x en temps polynomial de n = |x|. k]}. . j. 0]}. G4 {S[0. alors il existe un calcul acceptable par M sur x de longueur au plus p(n)∗ qui impose une affectation de valeur vrai satisfaisant au clauses de G = . {S[0.(p(n) + 1). . p(n) ≥ i ≥ 0. {Q[i. 0]}. Récapitulons : Groupe G1 Clauses du groupe {Q[i. n + 2. 0]. S[i. S[i. l]}. j + ∆]} {H[i. ou plus exactement de L en LSAT . G6 G6. j]. l]. t ≥ l ≥ 0}. c’est un problème ouvert. j. S[i + 1. On peut donc énoncer : Théorème 12. ils n’interviennent qu’en qualité de constantes facteurs de|U| et |G| . j]. Pour chaque L ∈ N P. l]. p(n) + 1 ≥ i ≥ −p(n). k0 ]} {H[i. j. Ce qui serait intéressant maintenant serait de démontrer que la réciproque est fausse. Q[i + 1. Comme |fL | = |U|. la construction de l’ensemble U des variables de fL . S[i. j. Q[i. fL est une transformation polynomiale de L en SAT. j]. j].|G| log |U|.|G|. j]. une conjecture dont la démonstration éventuelle est laissée à la sagacité du lecteur.2 SAT est N P -complet. Q[i. Q[i. l]. On peut négliger le facteur logarithmique puisqu’il n’affecte pas le caractère polynomial. SAT est N P-complet. Puisque k et t sont fixés d’avance. ce qui conduit à une taille d’au plus 2. on a : |G| = O(p(n)2 ) et |U| = O(p(n)2 ). H[i + 1. H[i. j].3. de longueur |U|. p(n) > i ≥ 0.1 = {{S[i. on a par conséquent : |fL | = O(p(n)4 ) et il s’agit bien d’une borne polynomiale. j.|U|.2 = {{H[i.182 Complexité et Algorithmique avancée G6. le polynôme p. c’est à dire qu’il s’agit d’un codage raisonnable . Une clause ne peut contenir plus de 2. . De cette façon. l0 ]}} Groupe Clauses du groupe Étant donné L. et la collection G des clauses. Une fois acquis le programme M. S[i + 1. on obtient une fonction de SAT exprimée de façon raisonnable.|G|. l]. on choisit un programme particulier M qui reconnaît L en temps polynomial. j. par exemple. le caractère polynomial du calcul s’ensuit dés lors qu’on montre que la longueur |I| du codage d’une instance I est elle même polynomial. Par conséquent.|U| littéraux. j]. j. et le nombre de symboles requis pour décrire un littéral n’excède pas log |U|. il répond non. on a : L = {x | (x. Définissons la relation R : (x. y pour tester si (x. c’est à dire la borne raisonnable pour R.e équilibré) si et seulement si {(x. Proposition 12. Si tel est le cas. y) ∈ R ∀y} Cette proposition est une façon très intuitive d’aborder la signification de N P. et alors la MTU calcule en temps polynomial sur x. à savoir que . y) ∈ R} est reconnaissable polynomialement sur une MTU.1 Supposons qu’existe une telle relation R. la longueur du second terme est toujours bornée par un polynôme dont le mônome de plus haut degré s’exprime en fonction de la longueur du premier terme. alors L est reconnaissable en temps |x|k ∀k. Preuve 12. De plus. 12. l’algorithme répond oui sinon.2 Complétude N P 183 Équilibre Soit R ⊆ Σ∗ × Σ∗ une relation binaire sur des chaînes de caractères construites sur l’alphabet Σ. À l’inverse. On dira de plus que R est polynomialement raisonnable (i. En d’autres termes.3.1 : Soit un langage L ⊆ Σ∗ . y) ∈ R. y) ∈ R ∀y}. Il est donc flagrant qu’il existe un calcul acceptable raisonnable si et seulement si x ∈ L. y) ∈ R} =⇒ {|y| ≤ |x|k ∀ k ≥ 1}. R est dite polynomialement reconnaissable (ou décidable) si le language {x.3. supposons maintenant que L ∈ N P. y) ∈ R si et seulement si y est le codage d’un calcul acceptable sur la MTU effectué sur l’entrée x. puisque nous avons supposé que la MTU reconnaît L. y : (x. il accepte ou rejette. La MTU étant polynomialement bornée. la relation R est donc raisonnable et reconnaissable polynomialement puisque elle peut être testée en temps linéaire lorsque y code un calcul acceptable de la MTU. Tout problème de N P a une propriété remarquable. L ∈ N P si et seulement si il existe une relation polynomialement reconnaissable raisonnable possédant la propriété :{L = x : (x. Dans ce cas L peut ê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).Chapitre 12. et une séquence y (séquence candidate à être solution) de longueur au plus |x|k .3. La difficulté des calculs dépend de ce qu’on veut. certains auteurs avancent celui de Machine de Turing non Déterministe pour justifier l’obtention dudit certificat. on pourraît presque dire qu’elle contient tous les problèmes intéressants tels la recherche des plus courts chemins dans un graphe valué. tout problème de N P présente des cas particulier ou des formulations particulières qui sont dans P. Pour SAT par exemple. Cette classe comprend énormément de problèmes de calcul ressortissant à divers domaines. assignations de valeurs vraies à des propositions logiques. qu’en introduisant le concept de certificat. Mais la question est de savoir où est la frontière entre P . 2.3. une instanciation "numérique" des variables) qui satisfait φ (c’est-à-dire qui confère à φ la valeur 1. d’autres fois on pourra se contenter d’un représentant de la solution. d’autres fois encore de solutions ε − approch´ ees. 12. . C’est alors.3 L’appartenance à N PC Tout problème de calcul peut être étendu de telle façon qu’il finisse par appartenir à N PC. N P et N PC pour peut qu’elle existe. Dans le problème de recherche d’un circuit hamiltonien dans un graphe.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. Parfois il s’agit de trouver un optimum dans un ensemble de possibles.. On ne sait en général pas comment exhiber une telle reconnaissance 2 en temps polynomial. Revenons à N P. Évidemment. voire pire. Ce que certains auteurs nomment certificat. une telle reconnaissance d’une expression booléenne φ est une assignation T de valeurs aux variables (i. De même. Il y a plusieurs façons d’aborder la question et de prouver qu’un cas particulier d’un problème entraîne l’appartenance dudit problème à 1. les instances non ne possèdent pas nécessairement de tels reconnaissances.. etc.e. la reconnaissance du graphe G considéré se fait précisément par construction d’un circuit hamiltonien. ou vrai si on parle en termes logiques). chemin et circuit hamiltoniens. minimisation de fonctions booléennes. mais au moins on sait qu’elle existe lorsque l’instance considérée est une instance oui. placements de transistors dans les VLSI. T est court relativement à φ et n’existe que si l’expression est satisfiable. d’autres fois encore la solution s’exprime en termes de satisfaction de contraintes. 1 Le cas de k-SAT Proposition 12. Pour ce faire. quand on a juste à constater qu’on obtient des instances appartenant au cas particulier considéré. (en supposant qu’ils sont différents) donc. C’est-à-dire qu’on doit avoir pour un problème (i. pour démontrer qu’un problème fait partie de N PC il ne sera plus nécessaire de refaire toute cette démonstration. xn et des clauses C = c1 . . que SAT se réduit polynomialement au problème considéré. c’est la réduction polynomiale. . La construction de C∗ s’avère un peu plus délicate. et puisque N PC est une classe d’équivalence. Preuve 12. X∗ contient a minima les variables de X . . Désormais.3. puisque TOUT problème de N P est réductible polynomialement à SAT.3. x2 . La plus utilisée.Chapitre 12. . Complétude N P 185 N PC.e. . Il suffira de démontrer que le problème considéré est équivalent à SAT. langage) L considéré : SAT ∝ L et L ∝ SAT.3. on a N PC ⊂ N P.2 Supposons qu’on ait un ensemble de variables booléennes X = x1 . Le problème est alors de construire X∗ et C∗ . on a donc : X∗ = X m [ j=1 Xj0 et C∗ = m [ C0j j=1 La notation X0 représente des ensembles de variables dont la composition sera explicitée ci-après.2 : 3-SAT est dans N PC. 3-SAT est composé alors de l’ensemble X∗ de variables booléennes et d’un ensemble de clauses C∗ tel que ∀c∗i ∈ C∗ . c2 . 12. |c∗i | = 3. Nous allons montrer comment construire une instance générique de 3-SAT équivalente à cette instance générique de SAT. pour montrer qu’un problème P fait partie de N PC il suffira de montrer que SAT ∝ P ou. il faudra démontrer que la problème considéré se réduit polynomialement à SAT et inversement. puisqu’il y a transitivité qu’un problème Pi : SAT ∝ Pi est tel que Pi ∝ P. cm de cardinalité quelconque. . .3. Pour démontrer que SAT est dans N PC nous avons dû démontrer que tout problème de N P pouvait se réduire polynomialement à SAT. En fait. . On est alors dans le cas générique de SAT. nous l’avons vu. . 3. lorsque la clause contient plus de 3 littéraux. yj1 }. j Il nous faut prouver maintenant que l’ensemble des clauses de C∗ n’est satisfiable que si l’ensemble des clauses de C l’est et réciproquement. si le nombre de littéraux dans la clause de SAT concernée est k. et : – C0j = {{z1 . y 2j }} . elles ne font que du "remplissage" . on peut opérer de la façon suivante : – Xj0 = {yji : 1 ≤ i ≤ k − 3}. on a – Xj0 = ∅ et : – C0j = {{cj }} . . zk les littéraux issus de X. y 1j } . y 1j . alors il faut l’éclater en plusieurs clauses équivalentes de 3 variables exactement. lorsque la clause ne contient que 2 variables. les rôles respectifs des variables yj1 et yj2 s’annulant réciproquement grâce à leurs négations. . y 2j }. – idem pour le cas 2. 2. 4. il convient alors d’en rajouter 2 pour atteindre 3 variables dans une nouvelle clause correspondante pour 3 − SAT on a alors : – Xj0 = {yj1 .186 Complexité et Algorithmique avancée et c’est celle-ci qui va permettre de déterminer ce que sont les Xj0 et combien il convient d’en introduire. on a alors : – Xj0 = {yj1 } et : – C0j = {{z1 . on voit que : – Pour le cas 1 l’équivalence est évidente. zk }} . Dans ce cas. yj1 }} ∪ {{y ij . yj1 . z2 . yj2 }. {z1 . yji+1 : 1 ≤ i ≤ k −4}∪{{y k−3 . lorsque la clause considérée contient exactement 3 variables. {z1 . En reprenant les 4 cas ci-dessus point par point. . yj1 . {z1 . {z1 . z2 . 3 ou plus de variables booléennes. le cas 3 ne posant pas de problème particulier . Lorsque la clause de SAT ne contient qu’une seule variable. il faut alors en rajouter une seule. yj2 } et – C0j = {{z1 . il n’y a rien à changer. Soient z1 . 2. yj2 }. . Nous serons amenés à considérer quatre cas suivant que les clauses considérées contiennent 1. 1. y 1j . z2 . zk−1 . zi+2 . . z2 . Dans la littérature anglo-saxonne.} qui est une systématisation de 1. 1. chaque sommet appartient à une clique 2 . Pour ce qui est des clauses. induit au plus n. Pour associer le problème de la recherche d’un ensemble stable à une instance SAT.m clauses supplémentaires. Γ) est un ensemble de sommets tel qu’il n’y ait pas d’arête les joignant deux à deux.yil } ∪ {y il . Un tel ensemble stable maximal est aussi un ensemble couvrant. 12. ∪ {. le nombre de littéraux nouveaux introduits est une fonction linéaire du nombre initial de variables.3 (Ensemble stable. On peut donc toujours transformer SAT en 3-SAT par réduction polynomiale et donc aussi en temps polynomial. on utilise le terme d’ensemble indépendant (independent set). Dans un ensemble stable maximal. c’est-à-dire qu’il y a toujours une arête entre deux sommets. ainsi. Un graphe complet. . yi2 } ∪ . on opère un "chaînage" des clauses introduites par un jeu sur les variables et leurs négations. y) ∈ Γ} . (xi . qu’on notera S∗ si on ne peut y ajouter un sommet sans violer la définition : {S∗ |∀y ∈ X − S∗ . on notera le problème SETST pour la suite. . . yi1 } ∪ {y i1 . . la transformation. maximal) La recherche d’un ensemble stable maximal 1 (désormais on ne précisera pas intérieurement) dans un graphe est N PC. il faut décomposer le graphe en cliques disjointes. .3... xj ) ∈ /Γ Un tel ensemble S est dit maximal. Pap95]) Théorème 12. On remarque que dans chacun des cas. xj ∈ S. lorsque toutes les clauses initiales de SAT on plus de 3 variables. 2. Rappel : Un ensemble stable S dans un graphe G = (X.3. La structure obtenue est de la forme : {.4 Couverture d’un graphe (voir aussi [GJ79..Chapitre 12. Complétude N P 187 – dans le cas 4. . ∃ x ∈ S∗ : (x. S ⊆ X|∀xi .. . .. Preuve 12. Par ailleurs si un graphe contient un triangle. Donc. Cn et |Ci | = 3 (12. on aura montré que SETST est de même nature que 3-SAT du point de vue de la complexité. sinon il y a une arête au moins qui joint deux sommets de l’ensemble (évident). dans 3-SAT on doit faire en sorte que la solution ne puisse contenir qu’une seule variable de chaque clause. SETST est un problème de N P Ce résultat est évident. puisque ce qui nous intéresse ici c’est un théorème d’existence. et réciproquement.3 La preuve se mène en trois parties : 1. il nous faut montrer qu’il existe des graphes qui se réduisent polynomialement à 3-SAT et dont les ensemble stables maximaux sont des solutions de 3-SAT. – tout autre sommet du graphe qui n’est pas dans S0 est extrémité d’une arête dont l’autre extrémité est dans S0 .1) Considérons les clauses de 3-SAT. Transformons 3-SAT en SETST : On sait que k-SAT est dans N PC et plus particulièrement. sachant que c’est le cas le plus simple. on peut vérifier en temps polynomial que : – il n’existe pas d’arête joignant deux sommets de S0 . . soit donc formellement une instance générique de 3-SAT : φ = C1 . . Il n’est nul besoin de travailler sur toutes les topologies possible de graphes.3.188 Complexité et Algorithmique avancée Le plus simple de ce type de graphes est un graphe décomposable en cliques formées de trois sommets. . 3-SAT. c’està-dire ici que SETST est dans N PC. Donc. C’est pourquoi nous nous référerons par la suite à 3-SAT. Il nous faut montrer d’abord qu’on peut assimiler 3SAT à un graphe et que la solution de 3-SAT est un ensemble stable maximal du graphe. 2. Il nous faut donc transformer 3-SAT polynomialement en SETST. . c’est-à-dire en "triangles". on peut assimiler chacune des clauses à un triangle d’un graphe dont les sommets seraient étiquetés par les variables composant les clauses. si on sait réduire polynomialement 3-SAT à SETST. étant donné un ensemble S0 de sommets d’un graphe. alors l’un des sommets doit faire partie de SETST et un seul. . . Dans l’exemple 12.3 = V. On ajoute comme arête entre les triangles des arêtes telles que (xi . a chaque sommet de chaque triangle. xi ∈ Cj et xi ∈ / Cj .1 est la première variable de la première clause. tous les triangles étant disjoints.2 ∨ α3.1. c’est-àdire qu’on ajoute des arêtes entre des sommets de triangles différents si et seulement si les sommets extrémités de ces arêtes représentent des littéraux opposés. il sera associé à deux sommets différents du graphe.4 ∨ α2. dans deux triangles disjoints.2 = V et α1.4 ) On fait correspondre à φ un graphe construit comme suit : A chaque clause de φ on fait correspondre un triangle du graphe. La signification alors en devient plus claire. Considérons donc les graphes composés de triangles au sens ci-dessus.3 ∨ α3. Complétude N P 189 Il suffit donc de considérer une classe de graphes représentative de ces propriétés.2 ) (α1.2 ∨ α2.1 = V où α1. interdit de prendre α1. Exemple 12. Ainsi.1 ) ∧ (x1 ∨ x2 ∨ x4 ) ∧ C2 ∧ (x1 ∨ x2 ∨ x4 ) ∧ C3 ∧ (x1 ∨ x2 ∨ x4 ) (α1.1 ∨ α2. il y a un sommet par littéral dans chaque clause ce qui signifie que si un littéral apparaît dans deux clauses différentes.1 considérons l’instance suivante de 3-SAT à 4 clauses : φ = (x1 ∨ x2 ∨ x4 ) ∧ (x1 ∨ x2 ∨ x4 ) ∧ (x1 ∨ x2 ∨ x4 ) ∧ (x1 ∨ x2 ∨ x4 ) φ= Clauses φ= (x1 ∨ x2 ∨ x4 ) C1 (α1.Chapitre 12.1 ∨ α3. xi ). on associe un littéral de la clause qui a servi à créer le triangle.3. choisir α1.3 ∨ α2.3.4 ∨ α3.3 ) ∧ C4 (α1. j |i = 1.k ] : i = 1. Réciproquement Si il existe une solution satisfaisant φ.190 Complexité et Algorithmique avancée Dans cette nouvelle formulation. l’autre non dans E puisque si l’un l’est. .j . αi. φ est satisfaite. Il ne peut y avoir. A) avec φ S = {si. Le graphe associé à φ se construit comme suit : Gm = (S. Les variables booléennes (les littéraux mis à la valeur V -ou 1-) de E constituent donc une solution de φ..3 Pour qu’il y ait un ensemble stable maximal dans Gm φ de taille m.j = αi. alors elle contient un littéral mis à la valeur V (i. il faut bien comprendre les significations des littéraux et leurs relations avec les variables Lemme 12. d’une façon plus formelle. m et j ∈ {1. on a Ci = (α1i ∨ α2i ∨ α3i ) où αij est un littéral qui peut être une variable booléenne ou sa négation. . appelons le E.l : i = 6 l. il faut et il suffit que φ soit satisfiable. l’autre est "couvert" par le fait qu’on a pris la précaution de créer une arête entre deux littéraux opposés.j . Par ailleurs aucune clause ne contient deux littéraux de variables booléennes opposées (une niée et une non niée). j 6= k} [ {[si.m. 2.e 1) issu de chaque clause et représente un sommet d’un triangle associé à cette clause. par construction deux littéraux. si. Pour bien comprendre l’exemple 12. 3. Et comme E contient un et un seul littéral par clause. |E| = m il est constitué d’un littéral par sommet de chacun des triangles. . Si un tel ensemble stable existe. l’un nié.3. Ainsi. . il apparaît clairement que la satisfaction de φ ne peut se faire qu’en donnant la valeur V à une variable et une seule dans chaque clause. 3}} Ensemble des sommets A = {[si.l ]} Ensemble des arêtes.1. Ainsi. la solution contient exactement m littéraux. on remarquera que les problèmes de clique et d’ensembles stables extérieurement sont étroitement liés à SETST et sont eux aussi . Ce faisant. m est le nombre de clauses dans φ et donc de "triangles" dans Gm φ. si.3. on peut définir la classe CoN PC. 12. Essayer de "baliser" cette frontière entre N PC et N P est l’objet du chapitre suivant. on trouve le même résultat en établissant des équivalences systématiques de problème à problème. Définition 12. comme on pouvait s’y attendre. mais. Co − N PC = {Π en termes de langage : Co − N PC = {Σ∗ − L | L langage sur l’alphabet Σ et L ∈ N PC}. tantôt une ∝-équivalence à un problème lui-même ∝-équivalent à SAT.6 Sur l’équivalence de certains problèmes Nous avons montré.3. Toutefois. Lorsqu’on analyse la complexité d’un problème de N PC. pour pouvoir démontrer l’existence de la classe N PC que certains problèmes étaient équivalents à SAT par réduction polynomiale (notée ∝) du fait que ces problèmes sont tous équivalents à SAT.1 En termes de problème : ¯ | Π ∈ N PC}. ces démonstrations d’équivalence n’ont pas toutes été menées de la même façon.Chapitre 12. . 12. ils appartiennent à la même classe d’équivalence. sans passer par la réduction polynomiale. Ce faisant bien sûr on admet implicitement que P = 6 N P. Complétude N P 191 dans N PC. la démonstration par réduction polynomiale à SETST se fait facilement.5 La classe Co-N PC De même que pour la classe Co-N P.3. Tantôt on démontre directement une ∝-équivalence à SAT.3. nous en laissons le soin au lecteur. on essaie de préciser où est la frontière entre les cas qui ressortissent à la classe P et ceux qui sont dans N PC. et celle-ci est N PC lui-même. 2. 1. 2. et on souhaite les disposer de la manière suivante : les deux cubes de la couleur 1 sont séparés par un cube. Donnez une formule booléenne exprimant que deux cubes ne peuvent être à la même place.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). Exercice 20 [k-SAT : les cas k = 2 et k > 2] 1. et nous leur ferons confiance. 3. 3. ceux de la couleur 2 par deux cubes. Enoncez le théorème de Cook. k) (il y a 2n positions et 2n cubes). . montrent que le problème de Langford admet une solution si et seulement si n est de la forme 4k + 3 ou 4k + 4 (on voit aisément que pour n = 1 ou n = 2. Par convention. on va numéroter les cubes de 1 à 2n. 5. . Donnez la définition du problème SAT. il ne saurait y avoir de solution). On admettra que SAT est N P. Donnez une formule booléenne exprimant que tous les cubes sont correctement positionnés et qu’ils ne se chevauchent pas. Définissez la réduction polynomiale. Montrez que le problème de Langford est N P. avec le cube j et le cube 2n + j de couleur j On va résoudre ce problème par une recherche arborescente : à chaque couple cube-position (i. on associe un littéral pik signifiant “le cube i est en position k”. Exemple : 4 1 3 1 2 4 3 2 Les mathématiciens. . . Donnez une conjonction de disjonction de littéraux exprimant le fait que les cubes j et 2n + j sont correctement placés l’un par rapport à l’autre (donc que leurs positions respectives sont séparés de j cubes). Définissez un problème NP-complet. 4. 4. Donnez la définition du problème k-SAT. On suppose connu que le problème du cycle hamiltonien (trouver un cycle dans un graphe passant une et une seule fois par chaque sommet) est NP-complet. 2. et échouant si cette substitution entraîne une clause à faux. correspondant au 4 arêtes de G et les arêtes (1-2)-(2-3). (a) Proposez un codage pour une instance de 2-SAT (pensez au codage utilisé en TD). (c) Ecrivez une machine de Turing cherchant les clauses dans lesquelles apparaît un littéral à faux et stockant le deuxième littéral de ces clauses sur un ruban auxiliaire. Proposez un codage pour représenter les graphes sur un ruban de machine de Turing. 3. Complétude N P 193 6. Le graphe dual G∗ d’un graphe G est le graphe dont les sommet sont les arêtes de G. (2-3)-(3-4). Par exemple. (1-2)-(1-3). Montrez que le problème du cycle eulérien est équivalent à celui du cycle hamiltonien sur le graphe dual. 2. 1. son dual aura 5 sommets.Chapitre 12. On veut montrer que 2-SAT est dans P. 3 et 4 et les arêtes 1-2. 2-3. (b) Ecrivez une machine de Turing remplaçant une variable par sa valeur. (2-3)-(1-3) et (3-4)-(1-3). Ecrivez une machine de Turing polynomiale prenant en entrée un graphe codé selon le codage proposé à la question précédente et fournissant le graphe dual. si le graphe G a quatre sommets 1. . Exercice 21 [Cycle eulérien] On considère un graphe G non-orienté. l’autre est nécessairement à vrai. et dans lequel une arête rejoint deux sommets si et seulement si ils représentent des arêtes de G ayant un sommet en commun. L’idée de cette démonstration est que si l’un des deux littéraux d’une clause est à faux. et concluez. (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écessaire). (e) Calculez la complexité de cette dernière machine de Turing. Le problème du cycle eulérien consiste en la recherche d’un cycle dans un graphe passant une fois et une seule par chaque arête. 3-4 et 1-3. Qu’en concluez-vous ? Le théorème d’Euler nous apprend qu’un graphe admet un cycle eulérien si et seulement si tous ses sommets sont de degré pair. On cherche maintenant à construire une instance de PLNE à partir V Wn d’une instance de SAT : m j=1 i=1 li (les li étant des littéraux). Mj . à chaque sommet on . montrez que la transformation est polynomiale. 4. αij et βi (1 ≤ j ≤ m. Ecrivez une machine de Turing polynomiale résolvant le problème de décision du cycle eulérien. Proposer une instance de la PLNE satisfiable si et seulement si l’instance de SAT considérée est satisfiable. Proposer une inéquation imposant qu’une variable ait la valeur 0 ou 1. 5. optimale pour le critère j i=1 ij i P max{ ni=1 βi xi }. 6. Qu’en concluez-vous ? Exercice 22 [Programmation linéaire en nombres entiers] La programmation linéaire en nombres entiers (PLNE) consiste à trouver une solution entière à un système du type Pn /1 {mj ≤ α x ≤ M ≤ j ≤ m}. f (a) 6= f (b). b) ∈ E. Proposer une formule entière représentant la négation d’une variable booléenne. 5. 1. Autrement dit. On représentera une variable booléenne par une variable entière.194 Complexité et Algorithmique avancée 4. Montrez que PLNE est N P. la valeur entière 1 représentant la valeur booléenne vrai. et la valeur entière 0 la valeur booléenne faux. Exercice 23 [Coloriage des graphes] Un k-coloriage d’un graphe G = (V. Après avoir proposé des codages adaptés de la PLNE et de SAT. E) est une application f : V → [[1. les mj . Conclure. 6. k]] telle que ∀(a. 1. 2. 1 ≤ i ≤ n) étant donnés ainsi que n et m. Proposer une inéquation représentant les conditions que doivent satisfaire les variables entières pour que la conjonction de départ soit satisfiable. 3. 5. Exercice 25 Expliquer succinctement pourquoi la fonction de réduction décrite ci-dessus s’effectue en temps polynomial. 10. les vj forment une clique. 8. existe-t-il un k-coloriage de G ? 1. . Montrer que si et nsi (1 ≤ i ≤ n) sont de couleurs différentes. On travaille sur un (n + 1)-coloriage. si et nsi sont reliés à vj pour tout i 6= j et j = 6 0 . Montrer que les vi (0 ≤ i ≤ n) sont tous de couleurs différentes. le sommet associé est de la couleur du sommet associé à l’un des littéraux de la clause. Expliquer pourquoi Col est NP. Montrer l’implication inverse. la formule de départ est satisfiable. si et nsi sont reliés . de façon à ce que deux sommets adjacents soient toujours de couleurs différentes. et aux sommets correspondant aux littéraux n’appartenant pas à la clause . et que cette couleur n’est pas f (v0 ).. si et nsi . Conclure. soit f (v0 ). 7. on introduit un sommet cj par clause .Chapitre 12. Montrer que la transformation est polynomiale. pour tout i. On propose la transformation d’une instance de 3-SAT en une instance de Col suivante : à chacune des n variables propositionnelles xi . 3. 6. Nous considérons le problème de décision Col suivant : étant donné un graphe G et un entier k . et que leur couleur est soit f (vi ). 9. Montrer que pour toute clause. c’est-à-dire un entier. on associe trois sommets vi . Exercice 24 suivante : Donner le graphe associé pour l’expression 3-SAT (l1 ∨ l2 ∨ l3) ∧ (l1 ∨ l2 ∨ l4) ∧ (l2 ∨ l3 ∨ l5) ∧ (l3 ∨ l4 ∨ l5). En déduire que chaque clause contient au moins un littéral dont le sommet associé dans un (n + 1)-coloriage est d’une autre couleur que v0 . Quel est le problème d’optimisation associé à Col ? 2. En déduire que si le graphe associé est (n + 1)-coloriable. 4. les ck sont tous reliés à un sommet v0 . Complétude N P 195 associe une “couleur”. . Or cette situation n’est pas nécessairement systématique. Xβ ) est un arc de Gφ si et seulement si il y a une clause (α ∨ β) ou . (Xα .1.1 Le cas 2-SAT Proposition 13. I 13.Chapitre 13 Le pire n’est pas toujours certain l convient de rappeler ici que cet ouvrage ne traite pour l’essentiel que de la complexité calculatoire dans le pire des cas. bien qu’appartenant à la classe N PC présente quelques particularités qui permettent de le traiter de manière réaliste. il arrive même pour certains problèmes et algorithmes qu’elle soit exceptionnelle (c’est le cas par exemple en programmation linéaire pour l’algorithme du simplexe). Nous allons traiter ci-après de cas dans lesquels "on peut faire quelque chose". puis nous nous intéresserons au problème connu sous le nom de Problème du sac à dos qui.1 2-SAT est dans P Soit φ une instance de 2-SAT .1 Autour de SAT 13.1. On peut définir un graphe Gφ (X. C’est un ensemble de clauses contenant chacune au plus deux littéraux. Γ) associé à ce problème comme suit : Les sommets de G sont associés aux variables de φ et à leurs négations . D’abord nous examinerons quelques cas particuliers de SAT. alors (Xβ . dans l’exemple de la figure 13. .1 aux clauses sont associées des arcs comme suit : Apparaissent alors des symétries dans G. chaque clause doit être vérifiée individuellement).1 représente l’interprétation graphique de l’instance : φ = (x1 ∨ x2 ) ∧ (x1 ∨ x3 ) ∧ (x1 ∨ x2 ) ∧ (x2 ∨ x3 ) ∧ (x1 ∨ x3 ). Les chemins dans Gφ sont donc aussi des implications par transitivité. On aurait pu écrire φ sous forme normale disjonctive. Par exemple. c’est à dire x2 alors pour que cette clause soit vérifiée (φ étant une forme normale conjonctive 1 . En fait les arcs de Gφ représentent les implications (=⇒) induites par les clauses de φ. C’est le sens des implications induites par les clauses de φ. La figure 13. 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. Ainsi si (Xα .1 – Interprétation graphique de 2-SAT 1. Xβ ) est un arc de Gφ . Ainsi. il faut que x1 = 1 ou vrai.198 Complexité et Algorithmique avancée (α ∨ β) dans φ. dans la clause (x1 ∨x2 ) si on prend x2 = 0 ou x2 = f aux. X1 X2 ¬X2 ¬X1 X3 ¬X3 φ=(x1∨x2)∧(x1∨¬x3)∧(¬x1∨x2)∧(x2∨x3)∧(x1∨x3) Figure 13. Xα ) l’est aussi. 1. comme (Xα . c’est à dire une assignation vraie telle qu’il n’y ait aucun arc de Gφ qui relie vrai à f aux. On considère tous les sommets de Gφ accessibles depuis Xα . et que φ puisse être satisfaite par une assignation vraie T des variables. D’où le théorème : Théorème 13. X2 ) . – (X3 . Xβ ) est un arc de Gφ . dans la figure 13. Supposons que T(x) = vrai (le même argument tient pour T(x)). Cette étape est bien fondée puisque s’il y a des chemins de Xα à Xβ et Xβ . et T(x) = vrai tandis que T(x) = f aux.1 In absurdo : supposons qu’il existe un chemin de X à X et de X à X dans Gφ . 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 . supposons maintenant qu’il n’y ait aucune variable avec un tel chemin dans Gφ . X1 ) qui fait pendant à (X3 . – la clause (x1 ∨ x3 ) est représentée par l’arc (X1 . X1 ) . à tout arc (Xα . il s’ensuit que (α ∨ β) est une clause de φ.1. Ainsi. et on leur assigne la valeur vrai.Chapitre 13. X2 ) qui fait pendant à (X2 . – (X2 . Ce sont tous les sommets à partir desquels Xα est accessible. doit-on rajouter les arcs : – (X2 . – (X1 . il faut ajouter son symétrique naturel (Xβ . Xα ). et donc un chemin de Xα à Xα . X2 ) . X1 ) . alors il y a aussi des chemins de Xα à Xβ et Xβ (par symétrie de Gφ ). Toutefois. X1 ) . X2 ) . – (X1 . Puisqu’il existe un chemin de X à X. X1 ) qui fait pendant à (X1 . Preuve 13. Cette clause ne peut être satisfaite par T. Nous cherchons une assignation de valeurs aux variables entraînant la valeur vrai. il y a donc contradiction.1. X3 ) qui fait pendant à (X3 . Xβ ) dans ce chemin tel que T(α) = vrai et T(β) = f aux. X3 ). Inversement. En itérant la démarche suivante : On part d’un sommet Xα dont la valeur n’a pas encore été définie et telle qu’il n’y ait pas de chemin de Xα à Xα . X3 ) qui fait pendant à (X3 . Xβ ). De plus. Et on assigne la valeur f aux aux négations des sommets ainsi identifiés. ce qui est contradictoire . X1 ). – la clause (x1 ∨ x3 ) est représentée par l’arc (X3 . X3 ) . – 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 .1 : φ est non satisfiable si et seulement si il existe une variable x telle qu’il existe un chemin de X à X et de X à X dans Gφ . il doit exister un arc (Xα . Une façon simple de résoudre est alors d’assigner à la valeur 1 une variable dans chaque clause. Et comme ces étapes sont toutes identiques. Il s’agit alors de construire un monôme constitué de . la recherche d’un tel chemin peut-être faite en temps polynomial. CQFD. s’il existe un chemin de Xα à un sommet déja marqué f aux lors d’une étape précédente. Corollaire 13.1 2–SAT ∈ P.2. chaque fois qu’un sommet est assigné à la valeur vrai. Preuve 13. alors Xα est un prédécesseur de ce sommet et la variable associée doit aussi être assignée à la valeur f aux.200 Complexité et Algorithmique avancée avec l’hypothèse. il ne peut y avoir d’arc de vrai à f aux. De plus.de littéraux sous certaines formes (niée ou non niée) permet d’élaborer des algorithmes particuliers. tous les sommets doivent être assignés pour que l’expression soit satisfaite.1 SET et SAT Ainsi en est-il par exemple du problème dit du recouvrement (SET covering problem en anglais).2 Sachant que le théorème 13.1. En particulier.1 nous dit qu’une condition nécessaire et suffisante pour que φ soit non satisfiable est de trouver une variable x telle qu’il existe un chemin allant du sommet X associé à x dans Gφ au sommet X associé à la variable x. On répète cette étape jusqu’à ce que tous les sommets soient assignés.1. CQFD. Plus difficile est le problème de couverture minimale qui se décline en deux problèmes. Ce problème est un cas particulier de SAT pour lequel il n’apparaît aucun littéral nié dans les clauses.1. La minimalité peut être comprise au sens de l’inclusion. et inversement pour f aux. Puisqu’on suppose qu’il n’y a pas de chemin de Xα à Xα et inversement. tous ses successeurs sont assignés à vrai.2 Cas particuliers de SAT Certaines conformations de SAT permettent d’obtenir des résultats en temps polynomial. 13. Cette assignation satisfait φ. Par conséquent la non-existence d’un tel chemin pour chaque sommet peut également être prouvée en temps polynomial. l’occurence -ou non. 13. Ainsi l’ensemble des expressions booléennes présente. Exemple 13. 1}n .Chapitre 13. par un théorème général d’algèbre de Boole.2. on dit qu’une fonction booléenne est satisfiable si il existe une assignation de valeurs A(xi ) → {0. par rapport à la non-satisfiabilité. on l’appelle couverture de cardinal minimal.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 . une tautologie est satisfiable. Il s’agit alors de trouver la couverture minimale (au sens de l’inclusion comme précisé ci-dessus) mais comprenant un nombre minimal de littéraux. on n’en connaît pas d’autre (voir [Lav74] pour l’algorithmique afférente). et une couverture de cardinal minimal : x2 ∧ x3 On peut remarquer qu’on dispose là d’un algorithme de transformation d’une FNC en FND équivalente. tautologie et non-satisfiabilité On sait. La minimalité peut aussi s’entendre au sens du cardinal du monôme. On étend donc le vocabulaire propre à SAT aux fonctions booléennes en général. Ainsi..2 Validation. Si toute assignation est telle que A |= f . Cette situation se note A |= f on dit aussi en logique que A est un modèle pour f .n} aux variables qui la composent de telle façon qu’on ait : f = 1. alors f est dit être une tautologie et on note |= f .2. une certaine symétrie. à savoir si on enlève un seul des littéraux. . 1}n :|= ¬f } =⇒ {f est non − satisfiable} Cette propriété est vraie pour toute expression booléenne. Ainsi. que toute fonction booléenne f peut se mettre sous forme de FNC ou sous forme de FND. Propriété 13. Le pire n’est pas toujours certain 201 littéraux exclusifs. Il s’agit là d’un algorithme qui est de complexité exponentielle. i = {1. et qui est "plus" que N PC puisque sa vérification n’est elle-même pas polynomilae. 13.1 {f −→ {0. on dit aussi que f est valide. il n’y a plus couverture. Il s’agit alors d’énumérer toutes les couvertures minimales d’une FNC et de les utiliser comme monômes dans la FND.2. 2 L’expression booléenne (x1 ∨ x2 ) ∧ x2 est satisfaite par l’assignation x1 = 1.1) où le nombre de propositions combinées par ∧ est aussi élevé que désiré (et peut être nul). forme normale disjonctive. Il s’agit là d’une forme très importante de SAT qui peut se résoudre non seulement polynomialement.. . Une tautologie donnée sous forme FNC ou FND est reconnaissable à sa structure et cette propriété fournit donc un algorithme polynomial pour identifier certains cas de non-satisfiabilité.3 Clauses de Horn Un autre cas particulier de SAT pour lequel on peut exhiber un algorithme polynomial est celui des clauses de Horn (voir [Hor51]). 13. De même.comme suit : (x1 ∨ x2 ∨ . Quelle que soit une assignation de valeurs {0.. Les formules de De Morgan font qu’on peut réécrire ces clauses de Horn sous forme normale conjonctive -FNC.202 Complexité et Algorithmique avancée Exemple 13. Ces propositions jouent un rôle fondamental. ∧ xi ) =⇒ y. 1} à chacune des variables. En logique. on aura ¬f ∗ = 0. 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. x2 = 0 ou encore par l’assignation x1 = x2 = 0.2. Ici. dans la programmation logique par exemple et dans la conception des systèmes experts.. il s’agit donc d’une tautologie : |= f ∗ . (13.. c’est-à-dire non-satisfiable.2. une clause de Horn est une proposition du type : (x1 ∧ x2 ∧ x3 . L’expression inverse ¬f ∗ s’écrit : ¬f ∗ = (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ) ∧ (x2 ∨ x3 )∧ (x3 ∨ x1 ) ∧ (x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) Elle est contradictoire. ∨ xi ) ∨ y. et en particulier en calcul propositionnel. mais en temps linéaire. quelle que soit l’assignation de valeur qu’on donne aux variables. Il suffit qu’une assignation donne la valeur 1 à l’un des monômes pour qu’on ait f ∗ = 1. on a toujours f ∗ = 1. 3 (Clauses de Horn) (x) . c’est-à-dire une clause (x1 ∨ x2 ∨ .2. ne pouvant plus progresser pour cause d’épuisement des cas à examiner. xi = 1 et y = 0} tous les xi à la valeur 1. il fournisse le résultat final.et donc qui permet aussi de répondre si SAT-Horn (SAT écrit sous forme de clauses de Horn) qui est une conjonction de clauses de Horn est -ou non. tous les littéraux. s’apparentant par sa démarche à celle de la programmation convexe. L’algorithme classique de résolution est de type dit glouton .1. (x1 ∨ x2 ∨ x3 ∨ x4 ) sont des clauses de Horn.. les autres sont en fait des implications puisqu’elles peuvent être ré-écrites sous la forme {(x1 ∨ x2 ∨ x3 ∨ x4 )} ⇐⇒ {(x1 ∧ x2 ∧ x3 ) =⇒ x4 } Sous cette forme. il procède par agrégation progressive de résultats partiels jusqu’à ce que.p} ⊂ N∗ . L’une des plus brillantes utilisation des clauses de Horn est le langage de programmation Prolog qui est basé sur l’utilisation systématique de ces clauses. Exemple 13..satisfiable. (x1 ∨ x2 ∨ x3 ∨ x4 ) . 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ème par calcul des prédicats du premier ordre. La dernière ne contient que des variables niées. Ce type d’algorithme est basé sur l’hypothèse qu’on passe d’une solution à une meilleure par un processus continu et progressif. qui donc est une implication comme montré ci-dessus en 13. Pour que la clause prenne la valeur 1 il faut alors qu’on ait y = 1. on initialise le calcul en assignant la valeur 0 à toutes les variables.Chapitre 13. En effet. . il existe un algorithme simple d’assignation de valeurs {0. On peut réduire deux clauses de Horn à une clause de Horn. En preuve automatique des théorèmes. Le principe de l’algorithme est assez simple. une fonction f SAT qui est une conjonction de clauses de Horn est résoluble en temps polynomial. x. sauf à la rigueur un doivent représenter des négations de variables. ∨ xi ∨ y) dans laquelle {∀i ∈ {1.. Pour chaque clause. donc les xi à la valeur 0. sans saut. Il consiste en un premier temps à travailler clause par clause. on peut atteindre ainsi une très grande efficacité en représentant les prédicats sous forme de clauses. 1} aux variables qui permet de dire si une clause Horn est satisfiable -ou non. Dans une clause de Horn. (x1 ∨ x2 ) . On considère alors une implication fausse (x1 ∧x2 ∧· · ·∧xi ∧· · ·∧xp ) =⇒ y. .e. Preuve 13. si il existe. sans remise en cause des choix dans l’ensemble V lors de la progression de la vérification. par construction. x2 . xm } ⊆ V. 0). Par ailleurs.2. supposons que tel ne soit pas le cas... On opère ainsi de proche en proche pour toutes les implications non satisfaites.. Dans une telle clause. La non vérification de cette clause implique {x1 . On aurait alors V ⊆ V1 .204 Complexité et Algorithmique avancée Toutes les variables sont initialisées à f aux (respectivement 0).. Le cardinal de V va croissant. variable par variable. Considérons une telle implication non satisfaite. on vérifie par l’absurde que V est unique. D’où : Théorème 13. tous les xi ont la valeur vrai (respectivement 1). l’algorithme termine en ayant satisfait toutes les implications de l’instance φ de SAT considérée. ∧ xm ) =⇒ y). On inclut alors y dans l’ensemble V et on pose y = vrai (resp. et y = f aux (resp. Il s’ensuit que : . Or il ne peut y avoir une clause implicative de φ qui soit à la fois vérifiée pour V1 et pas pour V. ∨ xm ) non vérifiée. On considère un ensemble V qui contiendra les variables à valeur vrai (respectivement 1). le nombre de variables d’une instance de SAT étant fini. est tel que : V ⊂ V∗ .1 (In absurdo) Supposons que tel ne soit pas le cas. 1) qui vérifie aussi toutes les implications de φ. . la seule possibilité est qu’il existe une clause de type (x1 ∨ x2 ∨ ..2. satisfaire) cette clause. En effet. Or tout ensemble V∗ de variables à valeurs vrai satisfaisant φ. L’algorithme démarre en testant une à une les clauses non satisfaites contenant un littéral non nié. elle est du type ((x1 ∧ x2 ∧ . Toutes les implications de φ étant satisfaites. La procédure d’examen de SAT-Horn proposée ci-dessus procède par examen séquentiel de chaque clause. alors il existe un autre tel ensemble V1 de variables de φ à valeurs vrai (i.e. c’est à dire les implications. 0) puisque la clause est non satisfaite.. Il s’ensuit qu’aucun ensemble contenant V ne peut vérifier (i.1 L’instance φ de SAT constituée de clauses de Horn est satisfiable si et seulement si la valeur de vérité des variables de l’ensemble V tel qu’obtenu comme décrit par l’algorithme satisfait φ. pi ∈ N|i ∈ {1. k ≤ n (13. pi ∈ N|i ∈ {1. on reconnaît là un problème classique de programmation linéaire en nombres entiers.2. avec vi ∈ N|i ∈ {1.n} ⊂ N.n} ⊂ N.2. Toutefois pour notre propos on peut se ramener à une forme plus simple. le problème est d’emporter un maximum d’objets (sans répétition) en respectant au plus strict la borne supérieure de poids et en maximisant si possible la valeur totale emportée.. vi ∈ N et un sac à dos dont la charge est bornée supérieurement à un poids P. Le pire n’est pas toujours certain 205 Théorème 13. n ∈ N.n} ⊂ N. Étant donnés n objets i de poids respectifs entiers pi .n} ⊂ N. Et même ici linéaire. En effet. Le problème se décline comme suit : étant donné un ensemble d’objets I = {i1 .. k ≤ n (13.4) En fait celà revient à considérer que valeur et poids sont identiques pour tous les objets ce qui ne change rien quant au fond.3) j=1 Sous cette forme..2) j=1 sous la contrainte j=k X pij ≤ P ∈ N .. i ∈ {1.n} ⊂ N. pi ∈ N et de valeur vi .2 SAT-Horn peut être résolu en un nombre polynomial 1 d’opérations élémentaires en fonction du nombre de variables..Chapitre 13.in }. . ce 1.3 SATHorn ∈ P 13. Ou encore : Théorème 13.3 Le sac à dos Le problème dit du sac à dos se présente de la façon suivante. Max(k) : pi1 + pi2 · · · + pij + · · · + pik ≤ P ∈ N .. le problème est alors : Maximiser V = j=k X vij . (13. i ∈ {1. n ∈ N . .5) Si on se contente d’une couverture de E sans exprimer de contrainte particulière. .0. on associe une clause à chaque élément de S. . ei ∈ sik . il faut réintroduire une borne minimale sous la forme suivante : Problème 13. Le problème est alors SATE = C1 ∧ · · · ∧ Ci ∧ · · · ∧ Cn . famille de sous-ensembles de E. .in }. sm } avec S ⊂ P(E).3. mais linéaire en temps. 13. – un ensemble de poids des dits objets pi .4 du problème. Toutefois. i ∈ {1. .206 Complexité et Algorithmique avancée problème étant "plus simple" que le problème initial. supposons un ensemble E = {e1 . . . .1 (SAD-décision) Instance : – un ensemble d’objets I = {i1 .1 Recouvrement On a vu (page 120) comment poser directement un problème de recouvrement sous forme SAT. . pi ∈ N pi étant le poids de l’objet i. soit Ci = (si1 ∨ · · · ∨ sik ∨ sip ) telle que ∀sik ∈ Ci . n ∈ N ∗ . une clause Ci de SAT. . le problème initial ne peut être de complexité inférieure. En effet. Nous allons montrer que le problème dit du sac à dos (désormais SAD) est dans N PC pour ce faire il nous faut auparavant revenir sur le problème du recouvrement. P(E) et l’ensemble des parties de E. et S = {s1 . Par contre si on souhaite obtenir une couverture . sj . . en }. . si on veut poser le problème du sac à dos (désormais SAD) sous forme de problème de décision. la résolution du problème est non seulement polynomiale.. On associe alors à chaque élément de E.3.n} ⊂ N. Ainsi. j=1 En vertu du principe qui veut que qui peut le plus peut le moins nous nous en tiendrons à la formulation 13. (13.. QUESTION : Existe-t-il un sous-ensemble Ik ⊂ I tel que : j=k X p ij ≤ P j=1 et j=k X pij > V. ei . . . et deux bornes P et V. . . ei . .60 ainsi que [Pap95] p. Pour ce faire nous utiliserons la forme simplifiée 13. . . À chacun de ces sous ensembles.1 k − SAT ∝ SET.0.3. La deuxième partie de la démonstration consiste à démontrer que SAD se réduit polynomialement au problème du recouvrement. et l clauses. Considérons l’ensemble U : |U| = l. Pour montrer que le problème du sac-à-dos est dans N PC. alors chaque clause peut être associée à un élément de U et chaque variable à un sous ensemble (éventuellement vide) de P(U). Une autre façon de faire est de considérer qu’il s’agit d’un cas particulier de partitionnement (voir [GJ79] p. . Commençons donc par modifier la façon de poser le problème.Chapitre 13. S = {s1 . il suffit de remarquer que sous sa forme restreinte 13. Bien entendu. . on associe son vecteur caractéristique : . c’est évident . .4 : Considérons tous les "sacs possibles" c’est-à-dire une famille S de sous ensembles des objets . considérons un problème k − SAT. le temps de résolution s’exprime en le nombre de cas possibles (on peut être amené à exhiber toutes les couvertures) et donc dans ce cas le problème est dans la classe N PC. . De plus la transformation est polynomiale.1 En effet.3. Théorème 13. vérifier qu’une somme de nombres entiers est inférieure à un entier donné se fait en temps polynomial. chaque clause contient exactement l variables.4. sj .3. De même on a k − SAT ∝ SET.202-203). il contient le problème du recouvrement qui est lui dans N PC comme on vient de le voir. il faut montrer qu’il existe un problème Π2 ∈ N PC tel que Π2 se réduise polynomialement à Π1 . sm } ⊂ P(I). dans le pire des cas. niées ou non. 13.2 Retour à SAD Rappel : Pour montrer qu’un problème Π1 est dans N PC. . En effet. le problème reste entier si on veut seulement recouvrir un sous-ensemble de E donné.3. Lemme 13.1 Le problème du sac à dos est dans N P Preuve 13. alors. Le pire n’est pas toujours certain 207 de cardinal minimal. ou une couverture de cardinal inférieur à une valeur donnée. Le nombre d’opérations (additions de nombres entiers) par essai est borné supérieurement. k)} (13. sans que cela ait une répercussion quelconque sur la généralité du problème. k) comme étant la valeur maximale atteinte en mettant dans le SAD les k premiers objets dont la somme totale est exactement Pd. . xi ∈ {0.6) . j ≤ 2n . i=1 i on est revenu sur le problème classique du recouvrement aux notations près. . xi = 1 ⇒ i ∈ Sj . . j tq i = {1. avec la contrainte supplémentaire portant sur le cardinal inférieur ou égal à P de la couverture.3. xn ]. n = |I| tel que : ∀i. . 13. xi = 0 sinon Pour un vecteur X donné. k + 1) = Max{V(Pd. que tous les objets ont même poids. xi . dans SAD.P. k). En effet. . W Il s’agit alors de trouver un monôme de la FND j=K j=1 Cj avec Vi=n Cj = i=1 xi ou une couverture de la FNC (SAT) obtenue par application des formules de De Morgan. il suffit d’essayer toutes les sommes qui satisfont cette contrainte. i=1 Et on doit avoir de plus pour chaque sous-ensemble sj d’objets P considéré : Val = i=n i=1 xi × p(i) ≤ P. D’où le théorème : Théorème 13. Si on ajoute comme contrainte : Pi=n x · p(i) ≥ V signifiant en fait qu’on emporte un maximum d’objets.n}. 1}..208 Complexité et Algorithmique avancée Xj = [x1 . Ceci nous donne un schéma d’algorithme qui consiste à calculer à chaque itération : V(Pd. Cela nous donne une façon de résoudre le problème SAD.1 Pseudo-polynomialité Supposons. caractéristique d’un contenu possible du sac. la valeur associée au dit sac est donnée par Val = i=n X xi × p(i). il y en a n. . . Il est bien dans N PC mais d’une façon particulière sur laquelle nous revenons ci-après.2 SAD ∈ N PC Ce problème présente une particularité. .3. pi+1 + V(Pd − Pdi+1 . Considérons V(Pd. · · · . Pourtant dans le pire des cas. On trouvera dans [HS74] une méthode de résolution du problème SAD qui est dérivée de la résolution du problème du partitionnement dont SAD est une variante. Rappelons pour mémoire qu’un simplexe de Rn est le polytope formé de n faces de Rn−1 non dégénéré.n}. CM89]) mais qui dans les cas "courants" sont moins performants.j ∈ R . bi ∈ R L’algorithme le plus utilisé pour résoudre ce problème. x2 . Kar84a. cet algorithme est exponentiel et on en connaît pourtant de polynomiaux (voir [Kha79.X (13. · · · bm ). est dû à Kantorovitch [Kan60.7) A.4 Conclusion Il faut faire très attention avec les problèmes de N P et les algorithmes. On s’y ramène en considérant une instance oui si on trouve une valeur V à l’ensemble obtenu qui est supérieure à une valeur plancher donnée. KM49] et Tolstoï [Tol39] en 1939 et est sans aucun doute le plus performant à l’heure actuelle pour les "cas courants" (voir [KM72]). · · · . Kar84b. xj . Une méthode plus générale de résolution de problèmes d’extrema en nombres entiers est donnée par [Dan57]. Dantzig qui a redécouvert l’algorithme en 1956 et l’a popularisé sous ce nom. SAD n’est pas un problème de décision. j = {1. En effet. 0) = 0∀Pd Il 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 variables du problème. ai..j ]. considérons le problème bien connu de la programmation linéaire qui s’énonce comme suit : Problème 13. .m}. tel que nous l’avons posé. le simplexe 1 . xj ∈ R . Il reste là une question à résoudre.. bi .1 (Programmation linéaire) Max C.X ≤ B Avec X = (x1 . Le nom simplexe est dû à G. 13.Chapitre 13. A = [ai. B = (b1 . i = {1. · · · xn ). Le pire n’est pas toujours certain 209 En initialisant le calcul par :V(Pd. 1.4. b2 . . celui de la machine de Turing.1 Le produit matriciel La problématique du produit matriciel est bien connue de tous les étudiants des matières scientifiques. problème aux enjeux majeurs pour le calcul.Chapitre 14 Complexité et efficacité usqu’ici nous avons étudié la complexité théorique des algorithmes. Il s’agit de la multiplication matricielle. multiplier entre elles deux matrices A et B à n lignes et n colonnes nécessite un programme à trois boucles imbriquées du type : . mais dont l’efficacité réelle en machine laisse à désirer. Nous en prendrons ici pour exemple un algorithme dont la complexité théorique est trés bonne. ou plus généralement de la théorie des automates finis. J 14. Malheureusement. en l’état actuel de la technologie. En machine. eu égard à un modèle abstrait. L’organisation des calculs en machine induite par la forme prise par l’algorithme peut jouer un rôle important dans l’efficacité réelle du programme d’ordinateur. En particulier. marquant ainsi une avancée significative sur les algorithmes déja connus en la matière. il y a parfois (souvent ?) «loin de la coupe aux lèvres». les algorithmes sont codés en des langages qui permettent à des ordinateurs d’exécuter les calculs induits par lesdits algorithmes. il s’agit de deux tableaux de nombres comportant chacun n2 éléments. Or depuis 1969 il existe un algorithme en O(nlog2 7 ) dû à Straßen [Str69].. Fin_Faire. .j)+C(i.j) Fin_Faire. totalement inapplicables en l’état à cause du caractère récursif 1 des algorithmes.k)*B(k. Winograd [Win70] améliore encore légèrement cette borne mais en jouant uniquement sur les additions et soustractions. ou borne. 32 voir [Pan78. Pan80. on peut obtenir pour la complexité de la multiplication matricielle. Il s’agit ici de la récursivité au sens informatique du terme. . la multiplication matricielle ne peut être de complexité inférieure à O(n2 ). Par conséquent. soit un total de 2 × n3 opérations arithmétiques scalaires. Ce programme s’écrit simplement avec une complexité en O(n3 ) tant pour les multiplications que pour les additions.... Nous allons nous intéresser ici à la méthode de multiplication de matrices dûe à Straßen (voir [Str69]). Malheureusement il s’agit là de résultats théoriques. et non au sens mathématique de «ensemble récursif» ou «fonction récursive». La question qui se pose alors est de savoir quelle limite. mais l’algorithme de Straßen montre que cette complexité est inférieure à O(n3 ). Pour i de 1 à n Faire Pour j de 1 à n Faire Pour k de 1 à n Faire C(i. Pan81]. La question s’est donc naturellement posée de savoir si on pouvait encore descendre en dessous du résultat de Straßen. On sait par les travaux de Pan que la multiplication de deux matrices n × n est de complexité supérieure ou égale à O(n2+ ) . Si on considère deux matrices (n × n). c’est à dire au sens de procédure informatique.212 Complexité et Algorithmique avancée . étant à l’heure actuelle estimé à la valeur 0. Fin_Faire. 1.j)= A(i. Chapitre 14. La différence peut sembler mince. B et la matrice résultat C en quatre quarts : A= a11 a12 ! .5) O(N2.1) b21 b22 c11 c12 C=A×B= ! .2 213 La multiplication de Straßen Soient A et B deux matrices carrées d’ordre 2. avec N = 2n . B= a21 a22 b11 b12 ! . c21 = m6 + m7 .3 c11 = m1 + m2 − m4 + m6 .6) c’est à dire En effet . i = 1 · · · 7 comme suit : m1 = (a12 − a22 ) · (b21 + b22 ) . m5 = a11 · (b12 − b22 ) m2 = (a11 + a22 ) · (b11 + b22 ) . (14. Complexité et efficacité 14. la multiplication de 2 matrices à deux lignes deux colonnes ne nécessite que 7 multiplications scalaires au lieu des 8 habituelles. c12 = m4 + m5 .3) – ensuite on évalue les cij en utilisant les relations : 14. (14. la complexité s’exprime alors en : O(Nlog2 7 ) (14. m7 = (a21 + a22 ) · b11 m4 = (a11 + a12 ) · b22 .4) Complexité de la méthode de Straßen Pour deux matrices carrées d’ordre N. (14. – On découpe les matrices A. c22 = m2 − m3 + m5 − m7 . (14. (14.2) c21 c22 – on calcule les 7 produits mi . m6 = a22 · (b21 − b11 ) m3 = (a11 − a21 ) · (b11 + b12 ) . nous allons voir que tel n’est pas le cas .81 ). Sachant que pour additionner deux matrices vides il faut 0 addition scalaire.11) . Si on raisonne non plus en termes scalaires mais en termes matriciels. Donc ici pour effectuer les 10 additions/soustractions de matrices (2n−1 × 2n−1 ).214 Complexité et Algorithmique avancée dés lors que la taille des matrices augmente. Afin de considérer le rôle du nombre d’additions finales qui est susceptible d’évoluer par la suite.7) Ces Nlog2 (7) sont inférieurs aux N3 classiques de la multiplication matricielle. chacune représentant un quart de la matrice dont elle est issue. Puisqu’il y a 7 multiplications à chaque niveau.(n−n) (14. il faut pour chaque addition/soustraction 22n−2 additions. et pour n = 1 . la deuxième pour les additions finales.T(0) + 7n−1 .22.(n−1) (14.j .22. En effet. on a la relation 1 : f (N) = 7 × f (N − 1) et f (0) = 1 =⇒ f (N) = 7N = Nlog2 (7) (14. ci. Les 7 équations de précompilation qui permettent de calculer les produits nécessitent 10 additions/ soustractions scalaires. bi.a. soit encore T(n) = 7 × i=n−1 X i=1 1.j nécessitent quant à eux 8 additions/soustractions scalaires. est donc de dimension (2n−1 × 2n−1 ). alors.22.(n−1) (14. La première pour chacun des 7 produits. ce qui est supérieur aux 4 habituelles. L’addition de deux matrices n × n nécessite n2 additions scalaires. rappel : 2log2 7 = 7 T(n−i) + a.j sont alors des matrices et non plus des scalaires. les ai.T(1) = 7n . mais le nombre d’additions est lui de 10.j . soit au total 18 additions/soustractions. on le notera a. Alors T(n−1) est composée de deux parties. ce sont 18 additions/soustractions de matrices (2n−1 × 2n−1 ) qui sont effectuées.T(n−1) = 72 × T(n−2) + 7. si on note f (N) la fonction représentative du nombre de multiplications.8) 7.a.22.9) 7n−1 . Notons T(n−1) le nombre d’additions/soustractions effectuées à une étape du calcul.(n−2) (14. Les calculs des ci.10) soit pour n − 1 . On en déduit : T(n) = 7 × T(n−1) + a. 807 − 6 × 10242 = 1966176780 opérations scalaires indifférenciées pour la méthode de Straßen.12) et en repassant en N. la complexité de la méthode de Strassen est en O(nlog2 7 ) soit environ O(n2. tous types confondus. il y faut : 2.Chapitre 14.13) En notations de Landau. Complexité et efficacité 215 Ce qui donne ici en réintégrant les 7n multiplications : a a T(n) = (1 + ) × 7n − × 22n 3 3 (14. 14.La complexité totale en nombre d’opérations arithmétiques scalaires de la méthode de Strassen est donc : a a Tot(N) = (1 + ) × Nlog2 7 − n2 3 3 (14. en considérant les formules initiales de Straßen. on a a = 18 et donc une complexité qui s’exprime en : 7 × Nlog2 7 − 6N2 .N3 = 7 × Nlog2 7 − 6N2 (14. avec N = 2n . Cherchons à déterminer pour quelle dimension de matrice le nombre total d’opérations scalaires. . en 2 × N3 il y faut alors : 2 × 10243 = 2147483648 opérations scalaires et : 7 × 10242. En fait.807 ). il faut donc atteindre des matrices de dimensions 1024 × 1024 pour que la méthode de Strassen devienne plus intéressante que la méthode classique. devient plus petit par la méthode de Strassen que par la méthode classique. C’est le cas lorsque les scalaires constituant les matrices sont des entiers.1 De la complexité à l’efficacité Si on ne fait pas de différence entre multiplication et addition. Par la méthode classique. À partir de cette dimension la méthode de Strassen est donc plus économe en nombre d’opérations.3.14) Si on ne distingue pas les multiplications des additions. la multiplication coûte beaucoup plus cher en temps machine que l’addition. faisant passer le nombre a de 18 à 15. on utilise la version de Winograd (voir [Win70]) pour la méthode de Straßen. Dans ce cas. L’expérimentation a montré qu’en l’état actuel de la technique. et la méthode de Strassen s’avère plus intéressante beaucoup plus tôt. à libérer la machine de cette gestion de la récursivité tout en gardant les avantages intrinsèques de l’algorithme et.216 Complexité et Algorithmique avancée Dans le cas de nombres réels. toute machine est rapidement saturée. d’autre part. nous allons montrer comment générer automatiquement les formules de Straßen pour toutes les matrices carrées d’ordre n. LN05a]. à donner la possibilité de travailler sur des régions non forcément contiguës.Toutefois elle est récursive et d’un facteur de branchement de 7 (voir [Baa98] ainsi que [Ha04]). en particulier dans le cas courant où les scalaires constituant les matrices sont représentés en virgule flottante. Elle est obtenue pour N = 128. la convergence est obtenue pour N = 110 avec respectivement 10648000 et 10672717 opérations scalaires pour la méthode classique et l’algorithme de Straßen. 14.2 La programmation récursive La programmation de cette méthode ne pose pas de problème particulier. La méthode conduit. en affectant trois unités de temps calcul (trois cycles d’horloge) à une addition et cinq unités à une multiplication. elle permet de plus. Par une démarche analogue à celle que nous avons eu en [Lav82. elle permet d’affranchir le système d’exploitation de la machine de la gestion de la récursivité inhérente à la formulation de Straßen . d’une part. si de plus. ce qui interdit l’utilisation pratique de cette méthode. Cette remarque permet d’accroître potentiellement les avantages de la méthode de Straßen.3. LN05b. Lav85] sur le problème dit des tours de Hanoï. d’exploiter au maximum le parallélisme des machines à mémoire distribuée. la convergence est beaucoup plus rapide. et ouvre la voie à une parallélisation massive en grain fin de celle–ci [Ha04. La génération automatique des formules de Straßen présente un double avantage : 1.il est impossible de continuer par la même méthode sur des matrices d’ordre . 2. Dans ces conditions. avant tout. les expressions énoncées par la relation (14. on note [a]λ1 λ2 . B). Complexité et efficacité 217 32. Nous donnons ci-aprés une version nouvelle de la méthode de Straßen en éliminant la récursivité. βi ) est une combinaison de certains quarts de la matrice A (respect. Dans le schéma du produit matriciel A × B = C donné par Straßen. Ainsi. pour λ ∈ Λ = {11. nous passons en revue les différentes hypothèses et..2). Nous dirons que n est l’ordre de la matrice et k est son degré. .e.4. . et. 14. alors on note [a]λ la matrice de degré k − 1 égale au quart adéquat de a.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. nous proposons enfin une méthode iterative simple qui nous fournit l’expression des termes αγ et βγ en fonction des éléments aij et bij .3) suivent toutes le même format : mi = αi × βi ∀i ∈ {1. n = 2k ). les notations que nous utiliserons ultérieurement. . Dans [Baa98].4. surtout.4 Reformulation de la méthode de Straßen On donne ci-aprés une méthode itérative [BL01] permettant d’obtenir l’expression de tout scalaire cij en fonction des coefficients aij et bij des matrices A et B. . si a est une matrice de degré k. nous déduisons pour chacun des n2 littéraux (λ) son expression en fonction des termes mγ conformément à la relation (14. La marche à suivre repose sur un résultat que nous énoncerons à la proposition (14.. . Nous établissons. 21. la correspondance entre les éléments cij de la matrice résultat C et les termes scalaires ζλ . 14. 12. Ensuite.λp la matrice [· · · [[a]λ1 ]λ2 · · · ]λp de degré k − p.Chapitre 14. 7} où le terme αi (respect. on montre comment ramener un système de matrices de tailles quelconques à celui énoncé ci–dessus. Nous fournirons un moyen d’obtenir systématiquement les formules de straßen pour toute valeur de n. C’est ce qui a poussé Roch et Trystram [RT82] à utiliser une méthode composite pour multiplier des matrices de grandes tailles.18) . dans un premier temps. Lorsque p 6 k. 22}. Mais. du moment que ces derniers termes représentent des produits des scalaires αγ par βγ . γ ∈ {−1. 1}. b) le produit de α[σ]γ (a) par β[σ]γ (b) avec γi ∈ [1. b) = 7 X δγ. b) 14.4).λ mγ (a. 7} : αγ (a) = X ελ. nous obtenons l’expression des quatre quarts de la matrice résultat.γ ∈ {−1.1 Pour tout λ ∈ Λ. 7] ∀ i ∈ [1. 1} va permettre de retenir les quarts de la matrice a necessaires à l’expression de αγ (a).17)). lesquels ont tous le même format. Enfin.γ ∈ {−1. Cette combinaison dépend de l’indice γ pour lequel un coefficient ελ. b).γ [a]λ . ϕλ. 0. on pose : ζλ (a. certains quarts de la matrice b.15) λ∈Λ la matrice de degré k − 1 obtenue en combinant certains quarts de la matrice a.218 14. . où α[σ]γ (a) (respectivement β[σ]γ (b)) est obtenu en additionnant et/ou soustrayant certains éléments de la matrice a (respectivement b).γ ∈ {−1. .4. en combinant les sept produits. Il en résulte que les sept produits de Straßen s’écrivent tous selon un même schéma : mγ (a. 0. ελ. pour tout γ ∈ Γ = {1.15) à (14. Ainsi pour λ ∈ Λ.γ ∈ {−1.4.γ [b]λ .4.3 Généralisation Afin de généraliser les formules de Straßen (les relations (14. 0. d’où la proposition suivante que nous généraliserons ensuite : Proposition 14. 1} (14. δλ. notons m[σ]γ (a. 1} (14. 0.16) λ∈Λ qui est une matrice de degré k − 1 qui combine. [a × b]λ = ζλ (a. . . 1} (14. On note. 0. b) = αγ (a) × βγ (b) et qui sont des matrices de degré k − 1.17) γ=1 qui est aussi une matrice de degré k − 1 et qui correspond à un des quatre quarts de la matrice résultat enoncé par la relation (14. De même pour : βγ (b) = X ϕλ. k]. moyennant l’indice γ et le coefficient ϕλ. .2 Complexité et Algorithmique avancée Proposition de Straßen Soient a et b deux matrices de degré k. Soit aussi : [a × b]λ1 λ2 . γ2 X γp δγp .λp (a. . b)]λp+1 ...γp (a. ζλ1 λ2 . βγ1 .λ2 ..γp (a. Complexité et efficacité P αγ1 .λp mγ1 γ2 .γ1 [b]λ1 . .4.γp γp+1 (a) = αγp+1 (αγ1 . ..λp λp+1 = [[a × b]λ1 λ2 ..γp−1 .. On déduit de ces définitions que : αγ1 . λp ∈ Λp ... b) Preuve 14..γp−1 γp (b) = P λp ϕλp .λp (a.γp−1 γp (b)). P λ1 ελ1 .γp P λ1 P λp−1 ϕλp−1 ... .γp−1 γp (a) = λp ελp . .γp−1 ..4. b) = αγ1 .λp λp+1 = [ X δγ1 ....Chapitre 14.. b)]λp+1 γp = X γ1 δγ1 .. ... .λp mγ1 γ2 ...... γ2 γ1 X δγp . .. b) γp qui est aussi une matrice de degré k − p. λ2 .. βγ1 .λ1 X δγ2 . pour λ1 ..γp 219 P λp−1 ελp−1 .λ1 γ1 X X δγ2 .. γ2 δγp .λp ]λp+1 = [ζλ1 λ2 .. On pose aussi. b) = X δγ1 .2 [a × b]λ1 λ2 . [a × b]λ1 λ2 .λ2 . mγ1 ...λp = ζλ1 λ2 .γp γp+1 (b) = βγp+1 (βγ1 ..λ2 ..λp (a.γp−1 γp (a) × βγ1 .. c’est la proposition de Straßen.λp−1 λp . .γp (a.. b)]λp+1 . .. Proposition 14..λ1 X δγ2 .λp−1 λp .γp−1 γp (a.. . .1 Par induction sur p.λp [mγ1 γ2 . Pour p = 1. ϕλ1 .. Par hypothèse d’induction.γp−1 γp (b) qui sont des matrices de degré k − p.γp−1 γp (a)).γ1 [a]λ1 . on déduit..γp (a)...γp (b)) Mais mγp+1 (αγ1 .λp+1 mγ1 γ2 ..γp (b)]λp+1 [mγ1 .. b) On a donc [mγ1 γ2 .. = [αγ1 γ2 . b) γp+1 =1 et [a × b]λ1 λ2 .....γp γp+1 (a...γp (a.γp (b)) = P7 γp+1 =1 δγp+1 ..λp λp+1 P P γ1 δγ1 .γp (a). dans un premier temps. βγ1 γ2 .λp γ2 δγ2 .1 Idée de base De cette étude. b)]λp+1 7 X = δγp+1 . une procédure itérative qui fournit l’expression de tout scalaire cij en fonction des coefficients aij et bij des matrices a et b..γp+1 (a. b)]λp+1 = ζλp+1 (αγ1 γ2 ....5.... b) 14. On peut ainsi établir. βγ1 .γp γp+1 (a..5 L’algorithme 14.. βγ1 . la correspondance entre les .λ2 .γp (b)) = αγ1 .λp λp+1 (a.γp (a) × βγ1 γ2 .λp+1 × mγp+1 (αγ1 .4.. P γp+1 δγp+1 ...220 Complexité et Algorithmique avancée Par la proposition de Straßen..λ1 = P γp δγp ..γp (a)...γp γp+1 (b) = mγ1 ..λp+1 mγ1 . b) = ζλ1 λ2 .γp (b)) = αγp+1 (αγ1 ..γp γp+1 (a) ×βγ1 ... L’idée de la méthode repose sur le résultat de la proposition (14.γp (a.2).....γp (a)) ×βγp+1 (βγ1 .... l’expression des termes αγ (a) et βγ (b) en fonction des éléments aij et bij .5. nous donnons. chaque littéral λ est examiné en k étapes. b). du moins sans pile intermédiaire). Ha Quoc Trung (voir [Ha04]). LN05b. Lav85]. La première phase va nécessiter k étapes.2 Obtention des produits de Straßen L’algorithme procède en trois phases. néanmoins elles restent bornées supérieurement par kn2 . 14. et une amélioraton des conditions d’exécution lorsqu’on ne peut éliminer toute la récursivité. Ensuite.6 Règles d’obtention des termes En appliquant l’algorithme présenté par la figure . Conclusion On obtient ainsi systématiquement les coefficients d’un produit matriciel de Straßen. nous déterminons le p ème élément λp d’un littéral λ tel que le terme ζλ (a. LN05a] Cette nouvelle formulation. afin de lui associer la liste des littéraux γ. A la deuxième phase. A chaque étape p. 14. tout comme la méthode itérative directe (c’est-à-dire. et du moment que ces derniers termes représentent des produits des scalaires αγ (a) par βγ (b). enfin. La programmation cependant se heurte à de nombreuses difficultés. Le lecteur intéressé consultera avec beaucoup de profit la thèse de M. Alors que la troisième et dernière étape va affecter à chacun des littéraux γ sa liste d’éléments aij et bij .18) . nous sommes en mesure de fournir l’expression de n’importe quel élément cij de la matrice résultat d’une manière singulière. . b) conformément à la relation (14. Ces résultats posent de manière nouvelle le problème de l’écriture itérative systématique de tous les algorithmes donnés de façon récursive lorsqu’une telle dérécursivation est possible (ce qui n’est pas toujours le cas. 1 ≤ p ≤ k. L’utilisation du parallélisme permet d’en renouveler la problématique [HL03.CONCLUSION 221 éléments cij de la matrice résultat C et les scalaires ζλ (a. ne devant rien à la dérécursivation) de résolution du problème des Tours de Hanoï [Lav82. Le nombre des étapes de cette dernière phase varie d’un littéral γ à un autre . nous déduisons pour chacun des n2 littéraux (λ) son expression en fonction des termes mγ (a. est libérée de la récursivité. b) soit associé à un coefficient cij = [a × b]λ . . Cinquième partie Résoudre quand même les problèmes difficiles . . dans un problème dit de voyageur de commerce (V. les seules dont on soit sûr qu’elles donnent une solution exacte.) 1 à n villes.1 L’exhaustivité des procédures Ainsi. 1. il y a (n − 1)! possibilités. on a mis au point des méthodes destinées à lutter contre l’exhaustivité des procédures. L 15. L’idée en est de ne pas énumérer tous les cas possibles.P. on sait qu’il y en a de l’ordre de 10110 ce qui. très vite dépasse tout ce qu’on peut imaginer (Le nombre d’électrons dans l’univers est de l’ordre de 1090 ) et n’est pas accessible à quelque machine actuelle ou à venir que ce soit par des méthodes exhaustives. des méthodes dites d’énumération implicite.R. Il s’agit le plus souvent de trouver une configuration particulière dans une multitude de possibles. On est confronté à ce qu’on appelle "l’explosion combinatoire" des possibles. Dans ce contexte. et pour faire jouer un ordinateur aux échecs en examinant toutes les combinaisons possibles. dans la progression du calcul permettent d’abandonner des branches entières de l’arbre des calculs possibles.Chapitre 15 Des algorithmes pour problèmes N PC a plupart des problèmes de la classe N PC sont des problèmes combinatoires. c’est-àdire de se donner des critères qui. VRP signifie Voyageur Représentant Placier . 1 Soit à résoudre un problème de VRP à cinq villes dont les coûts de transit.1 La méthode PSEP La première et sans doute la plus ancienne de ces méthodes est la méthode dite par séparation et évaluation progressive. le coût étant obtenu en faisant la somme des valuations des arcs composant ledit circuit.1.1) Le coût de transfert de la ville 3 à la ville 2 est de 15 et celui de 2 à 3 est de 13. Le critère de choix est le plus souvent une fonction d’évaluation. 1 2 3 4 1 ∞ 11 7 13 11 2 5 3 13 15 ∞ 23 11 4 9 13 5 ∞ 3 5 3 7 7 7 ∞ 5 ∞ 13 15 15 (15. Elle est connue sous le nom américain de Branch and Bound . tous basés sur des heuristiques. Ce type de méthode est aussi très utilisé en programmation linéaire en nombres entiers. PSEP. On en trouvera un exemple facilement accessible et pédagogique dans [FRT76]. Ici. Le problème exprimé en termes de théorie des graphes consiste ici à trouver un circuit hamiltonien de coût minimal.1. 241. et ainsi de suite.226 Complexité et Algorithmique avancée Il en est ainsi de nombre d’algorithmes.1. elle est due à Bernard Roy et Michel Simmonard en 1961 [RS61] et est exposée systématiquement dans l’ouvrage [Roy70]. le nombre de circuits différents possibles est 4!. Exemple 15.1. Nous allons présenter la méthode à partir d’un exemple tiré du tome 3 de [R+ 85] p. non symétriques. le principe de séparation porte sur : "on prend un arc ou . d’une ville à l’autre sont donnés par le tableau suivant : C= . 15. redécouverte en 1963 voir [LMSK63] et exposée dans [LW66]. Dans le cas présent. 15.1 Le principe de séparation La méthode procède d’abord par séparation de l’ensemble des possibles. c’est à dire ici 24. 2 3 4 5 1 ∞ 04 4 2 C(2. 1). 5) de valuation 3 pourrait paraître un meilleur choix. 1) et ceux qui ne le contiennent pas. On a choisi un des arcs de valuation minimale. supposons qu’on prenne l’arc (2. il sera de valeur nécessairement supérieure à 5. sinon il ne serait plus hamiltonien. on obtient : . 1). pour les deux sous ensembles de circuits possibles. mais le choix des arcs se fait en tenant compte -dans la mesure du possibledes choix induits par la suite. 15.1. on borne inférieurement les valeurs espérées pour les circuits. 1). Des algorithmes pour problèmes N PC 227 non" dans le circuit hamiltonien. L’arc (4.2) On a fait apparaître là la matrice C(2. l’ensemble des circuits hamiltoniens possibles est séparé en deux sous ensembles. 1).1) = 3 00 ∞ 8 00 4 6 2 ∞ 02 5 00 4 02 ∞ (15.1. on procède par normalisation de la matrice en faisant apparaître un zéro par ligne et par colonne en retranchant tous les plus petits éléments en ligne puis en colonne de façon à aboutir à un zéro au moins par ligne et colonne. les nombres en exposant .2 L’évaluation Si un circuit hamiltonien contient l’arc (2. Ainsi. Ainsi en appliquant ce procédé à la matrice initiale.Chapitre 15. Ledit circuit aura donc pour valeur une quantité supérieure ou égale à celle du chemin de valeur minimale reliant les deux sommets et ne contenant pas l’arc (2. 1). il est toutefois nécessaire que les sommets 2 et 1 fassent partie du circuit. C= 1 2 3 4 5 1 ∞ 00 02 2 4 2 06 ∞ 8 6 10 3 2 00 ∞ 8 00 4 6 6 2 ∞ 02 5 00 00 4 02 ∞ . Le choix de l’arc sur lequel séparer est guidé par le calcul de la fonction d’évaluation. Fonction d’évaluation : En fait.1) de choix associée au sous ensemble de circuits tels qu’ils contiennent tous l’arc (2. Ici. C’est la fonction d’évaluation qui permet ce bornage . Si on considère l’ensemble des circuits ne contenant pas l’arc (2. à savoir le sous-ensemble de circuits qui contiennent l’arc (2. (3. elle n’a pas besoin d’être normalisée. Il nous faut donc repartir de la matrice correspondante et faire le choix de NE PAS prendre l’arc(1. soit : .(1.1).4) = C(2.(3. On recommence le même raisonnement à partir de C(1.1). Or.(1. 5) qui présente ici le regret maximum. d’où la matrice C(2. Ici.3). c’est un saut dans l’arbre des solutions . 3) augmenterait la valeur du circuit de 4 unités. 4). 4) qui présente le regret maximal.(1. 2 3 00 ∞ 00 4 ∞ 02 00 5 02 ∞ 3 2 4 (15.4). on a un sous ensemble évalué à 41 (celui ne contenant pas l’arc (1.(1. elle n’a donc pas à être normalisée. soit une valuation de 37 + 4 = 41 pour ce choix. La matrice C(2. sur la matrice C.3).3) La matrice C(2.3) = 3 3 8 4 6 02 ∞ 00 5 00 2 00 ∞ . 1) est donc 37 + 6 = 43.4) Le choix se porte alors sur l’arc (1.2) .1).(1. de . Cette matrice comporte un zéro par ligne et colonne. La somme des valeurs retranchées pour normaliser la matrice C donne la valeur qui y est associée. 2 4 5 3 ∞ 8 08 4 6 ∞ 06 5 06 08 ∞ .5) = 4 6 ∞ 5 ∞ 0 (15.4) présente un zéro par ligne et par colonne. et le choix de l’arc (1. à savoir le coût supplémentaire à ajouter à celui du circuit en cours de construction si on ne fait pas ce choix là.1).1).5) nécessite une normalisation en retranchant 6 à la ligne repérée 4. si on ne choisit pas l’arc (2. 1). le coût est au moins de 6 unités supplémentaires. soit ici 37.1). la valeur 6 étant le "regret" associé au non-choix de l’arc (2.228 Complexité et Algorithmique avancée sont des "regrets". 3)). d’où la nouvelle matrice C(2.(1. La valuation associée à l’ensemble des circuits qui ne contient pas l’arc (2. Ne pas choisir l’arc (1.1).3) après calcul des nouveaux regrets et celle déduite du choix de l’arc (3. 2 4 5 1 ∞ ∞ 02 2 00 ∞ 00 C(2. 2 4 C(2. 3) est celui qui entraîne le moins de "regret".(1.1).(1. C(2.4) de (15. ce qui amène le coût du choix correspondant à 37 + 6 = 43.3) = . 1). Des .5) non (1. 2 5 C(2. L’arborescence développée est donnée par la figure 15.1).3) 41 (1.3) 37 (3.Chapitre 15.1. on y examine 11 choix possibles alors qu’un examen exhaustif de tous les choix possibles nous conduit au mieux à 24.4).5) C(2.1 – Arborescence PSEP L’intérêt de la méthode est explicite lorsqu’on examine l’arborescence de la figure 15.3) 43 Figure 15. 5].3) : . 2.4). 3.4) non (3.(4.1) C(2.3) C(2.1)!.3) non (1.(1.5) Ce qui conduit au circuit [5.1)!.4)!.1)!.1 : Matrice C 37 (2. 1.(1.(4.4) C(2. Des algorithmes pour problèmes N PC 229 plus il existe un choix à coût nul.(1. 3) qui conduit à la matrice C(2.1)!.4) 43 45 41 (4.1) non (2.(1.3) = 3 ∞ 0 5 0 ∞ (15.(1. 4.1).1) 37 C(2.3) 43 (1. celui de l’arc (4.3) 41 43 non (4.(4.(1. Chaque joueur est obligé de prendre au moins un élément et au plus trois à chaque tour. 15.2 Le cas des jeux En ce qui concerne certains jeux comme le jeu d’échecs. Le premier joueur a trois choix possibles. Le gagnant est celui qui prend le dernier élément de la pile. . Exemple 15. à partir d’une "bonne" heuristique. on peut utiliser les mêmes idées que dans la méthode PSEP.1 Considérons pour illustrer le propos. Ainsi le joueur qui commence est sûr de gagner s’il ne prend qu’un seul élément à chaque tour. On a fait figurer en ovale les résultats des choix du joueur qui démarre et en carrés ceux du suivant.2. une variante du jeu de nim. c’est à dire celui qui laisse la pile vide. prendre un. le tic-tac-toe. le second joueur a les mêmes possibilités de choix en fonction de ce qui reste d’éléments dans la pile. et trois seulement . De même. deux ou trois éléments sur la pile. De plus. Deux joueurs prennent alternativement des éléments sur une pile. on peut représenter les différentes situations de jeu par un arbre. ou en calculant d’emblée une bonne solution réalisable) peuvent permettre de limiter encore l’énumération. On considère toujours dans ce genre de jeu que les deux adversaires jouent de façon optimale. à construire dès le départ un cicuit hamiltonien dont la valeur va servir de borne "d’élagage".2. il est alors sûr de gagner au moins 1 dans le pire des cas. le jeu dit de nim ou de Marienbad . le gain du gagnant est proportionnel au nombre d’éléments qu’il a pris au dernier tour. on suppose qu’il y a 6 éléments dans la pile). Les choix associés peuvent être représentés par un arbre ternaire (voir figure 15. L’une de ces méthodes consiste. Au lieu d’examiner là aussi toutes les situations possibles et d’opérer un choix de stratégie gagnante. Supposons qu’il y ait n éléments au début.230 Complexité et Algorithmique avancée méthodes utilisant une fonction d’évaluation plus sophistiquée (en combinant borne supérieure et borne inférieure par exemple. quoi que joue son adversaire. il reste 3 objets dans la pile. Des algorithmes pour problèmes N PC 6 A B 3 C 3 Niveau Max E 1 Niveau Max 2 3 1 4 2 D 1 F 2 1 G 3 H 4 3 Niveau Min K 231 1 2 L 5 Niveau Min 2 3 I 3 J 2 1 2 M 3 Figure 15.3. Recalculons les "gains" de Max de la façon suivante : – on suppose que Min joue de façon optimale pour lui . Max ne pouvant plus alors qu’en prendre 1 et ne gagner que 1. Le "gain" de Max est alors 1 au mieux . Min va donc prendre les 3 objets et son gain sera de 3 et ce sera la perte de Max .2 – Arbre partiel du jeu de nim Dans cet exemple. le "gain" de Max en B est alors −3 . – en C. – en B. il reste 4 objets. – on calcule dans chaque sommet le gain espéré pour Max sachant que Min joue de façon optimale . Le joueur Max cherche à maximiser la fonction "gain" et le joueur min à la minimiser. . l’arborescence de jeu se trouve alors valuée comme dans la figure 15.Chapitre 15. ou l’inverse. suivant la nature du jeu. Min ne peut en prendre au plus que 3 ce qui est sa stratégie optimale. appelons les joueurs Max pour celui qui commence et Min son adversaire. – et ainsi de suite. mais il est assuré de gagner s’il joue en C au premier coup. Supposons qu’un arbre de jeu soit celui de la figure 15.1 La méthode alpha/bêta Le raisonnement va utiliser les mêmes principes que dans la méthode PSEP.4. c’est à dire de jouer en C dans l’arborescence. Max ne pourra plus en prendre qu’un. Alors Min jouera en E. quoi que fasse son adversaire.3 – Arbre partiel du jeu de nim ré-évalué Le jeu de Max consiste alors à prendre 2 objets au premier coup. 15. C’est cette façon de faire qui va nous guider dans l’algorithme.2.232 Complexité et Algorithmique avancée 6 A 2 3 B -3 C 3 Niveau Max E 1 Niveau Max 1 1 2 D 1 F 2 1 G 3 H -1 3 Niveau Min K -1 -1 2 L -2 Niveau Min 2 3 I 3 J 2 1 M -3 Figure 15. L’idée est de limiter autant que faire se peut l’énumération des . c’est à dire prendra 3 objets et au coup suivant. l’évaluation des situations de jeu a été faite du point de vue du joueur Max. d’énumérer tous les cas possibles et de choisir celui qui nous intéresse. on ne peut rien évaluer. SSS∗ . Scout qui est une combinaison des deux précédents. α/β.4 – Arbre de jeu évalué pour alpha/béta situations possibles. – évaluation de C. Ainsi.Chapitre 15. Dans la figure 15. tant qu’on n’a pas atteint un sommet pendant (une feuille de l’arbre). Plusieurs algorithmes existent pour limiter l’énumération. l’algo- . pour faire jouer un ordinateur aux échecs. coupe Alpha dans un premier temps. de l’ordre de 10110 . Ainsi au démarrage. si on considère toutes les pièces en position de départ. dans le jeu d’échec. le nombre total de parties possibles est. quelle que soit sa puissance. il est exclu. comme nous l’avons noté ci-dessus. Dans ces conditions. ce qui est supérieur au nombre d’électrons dans l’univers (environ 1090 ). Des algorithmes pour problèmes N PC 233 A Niveau Max 1 I B Niveau Min -3 1 J M 6 F Niveau Max -3 C 4 1 6 N -1 6 L 6 -2 8 9 K -6 0 -3 -3 H G Niveau Min 4 4 6 E 2 2 4 D 1 -3 -3 2 4 1 Figure 15. Nous allons nous intéresser à l’algorithme dit α/β en ce qu’il est dans la filiation directe du précédent et n’est pas propre au jeu d’échecs contrairement aux algorithmes SSS∗ et Scout.4. et elle est remontée à A qui est sur un niveau Max. G étant de niveau Min.D]. on évalue les deux cas possibles. – évaluation de B. Ce n’est pas la peine de continuer . . De C.C. suivant). on explore E qui est sur le niveau Min. on prend le minimum. Il en irait tout autrement si on commençait par explorer le nœud de valeur 2. donc F. coupe Bêta C étant évalué. ce ne serait pas la peine de les évaluer puisqu’au nœud C qui est un niveau Max. Le nœud C est alors complètement évalué . la valeur pertinente est 2. soit 1 ici. – évaluation de K Le nœud K génère une feuille de valeur −3 (ou 0. Ici. au niveau supérieur qui est un niveau Min. on a déja une valeur 1 qui est supérieure à -3. la valuation de E ne peut être qu’égale ou inférieure 1 à -3. Le nœud F de niveau Max est généré et évalué provisoirement à 1. De E on évalue une feuille de valeur -3. comme dans une PSEP quand on opère une descente en profondeur au début pour obtenir une première borne. soit 4 et 1. L’évaluation de B est définitive. les feuilles pendantes à E ne joueront donc plus de rôle dans l’évaluation de la racine de l’arbre. et génère le nœud J de niveau Max qui est également provisoirement doté de la valuation 1.234 Complexité et Algorithmique avancée rithme va décrire la branche [A. Comme D est un nœud Min. on "remonte" la valeur trouvée en B. comme cette valeur est supérieure celle de B (qui est 1). il est inutile d’explorer les autres sous-arbres de racine F il s’agit là d’une coupe Bêta. J génère le nœud K de niveau Min qui est également doté de la valuation 1 laquelle correspond à un nœud de niveau Max. Par conséquend K qui est de niveau Min ne peut pas générer une valeur supérieure à 1. Les deux feuilles pendants à G sont de valuations 2 et 4. y aurait il un grand nombre d’autres feuilles pendantes à E. valeur qui est "remontée" en C. l’exploration de K peut 1. qui est de niveau Max prendrait la valeur au moins 2.B. en D. il faudrait continuer l’exploration de E. – évaluation de I et coupe Alpha le nœud I de niveau Min est provisoirement doté de la valuation 1 de A. Le nœud G de niveau Min est généré et évalué lui aussi provisoirement à 1. on peut les "laisser tomber". et que B est sur un niveau max. C’est une coupe ALPHA marquée sur la figure 15. 2) = 1.5 par un double trait bleu. valeur qui ne saurait influer sur celle de B puisque B est de niveau Min et que Min(1. Par conséquent l’exploration de F est terminée. 5 – Arbre de jeu et coupes alpha/béta La racine A de l’arbre est donc évaluée. on laisse la valeur −3 à J qui est ainsi complètement examiné et évalué. sa valeur déterminée par les autres sous arbres de racine I ne peut être qu’inférieure à −3 et ne peut donc influer sur la valeur de A (qui est 1) et qui est de niveau Max. . alors le gain sera supérieur. 2. qu’on pense par exemple au déroulement d’un arbre de jeu d’échecs sur 7 niveaux comme cela se fait dans certains programmes d’échecs.Chapitre 15. mais l’arbre pourraît être beaucoup plus important. Si. c’est une coupe Alpha. Le sous arbre de racine M ne sera donc pas généré ni évalué. – évaluation de J Le nœud J génère la feuille L de valeur −6. cette valeur est remontée en I . le nœud I étant sur un niveau Min. Ici on a pris un exemple simple pour les besoins de l’exposé. 1. J étant sur un niveau Max. mais on suppose ici que Min aussi joue de façon optimale. A Niveau Max 1 I B Niveau Min -3 J M 6 F Niveau Max -3 1 C 2 1 6 N -1 6 L 6 -2 8 K -6 -3 -3 H G Niveau Min E 2 2 4 D 1 -3 -3 4 1 Figure 15. Des algorithmes pour problèmes N PC 235 donc cesser et il est inutile de générer tous les sous arbres de racine K 1 . par inadvertance Min joue F. elle a la valeur 1 qui est le gain que peut espérer Max s’il "joue" B (puis D si Min joue C) 2 . d’autres méthodes encore sont spécialisées pour des cas particuliers de problèmes.. elles ne modifient pas la complexité théorique des problèmes abordés et ne permettent que très rarement d’aborder des grands problèmes (du moins en séquentiel). . Dans ce cas. ces méthodes et d’autres qui en sont inspirées (A∗ . il est hors de question d’opérer pareillement. voire pour résoudre des problèmes qu’on ne sait pas résoudre autrement. ce qui est du ressort des joueurs.4 on a fait figurer en noir les nœuds non générés. on est obligé de limiter la profondeur de l’arborescence et cette profondeur participe à la puissance du programme mis en jeu. méthodes TABOU ou méthode dite de RECUIT SIMULÉ lorsque la fonction à optimiser n’est pas convexe. dès le début d’une bonne borne est décisif. L’obtention. donc "économisés" dans l’énumération implicite et en bleu (deux traits courts forts) les coupes Alpha.236 Complexité et Algorithmique avancée Sur la figure 15. . Toutefois. Dans le chapitre 16 nous présentons une autre méthode plus générale pour aborder la résolution des problèmes de NPC. D’autres méthodes existent pour d’autres contextes en programmation mathématique par exemple. il est décisif d’avoir une bonne fonction d’évaluation d’un coup. On remarquera que les coupes dépendent du parcours de l’arbre des solutions. AB∗ .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 N PC. en général.. Toutes les améliorations qui ont été apportées à la méthode PSEP cherchent à obtenir dès le départ une bonne borne. Dans le cas de l’explosion combinatoire. Il n’en va pas de même dans le cas des jeux. Pour le jeu des échecs par exemple. déduite de la figure 15. c’est à dire à plusieurs centaines de variables.5. Dans la méthode PSEP. mais aussi pour améliorer les performances des algorithmes plus classiques. on peut obtenir une bonne borne en opérant une "descente" directe dans l’arbre de façon à obtenir une bonne solution à partir d’une heuristique. la plus proche possible de l’optimum car c’est ce qui guide la recherche et limite l’énumération.) peuvent rendre de grands services. 15. et en rouge les coupes Beta (un seul trait court fort). On s’attachera à illustrer les techniques les plus importantes en étudiant des algorithmes-exemples et on passera en revue différents domaines ou champs d’applications où les algorithmes probabilistes se montrent les plus efficaces. Il convient toutefois de préciser que la définition d’algorithme nécessite d’être revue. P 16. L’analyse de complexité (au sens mesure de performances) peut cependant être plus délicate.1 Des algorithmes aux parfums de casinos Les algorithmes probabilistes ont pour caractéristique de mettre le hasard à profit en faisant des choix aléatoires. Les algorithmes probabilistes sont souvent plus simples que les algorithmes déterministes analogues qui traitent le même problème. En effet.g. On examinera certaines techniques d’analyse (e. une conséquence de l’utilisation du hasard est que deux exécutions d’un . Il est donc naturel d’explorer certaines techniques développées par l’algorithmique avancée.Chapitre 16 Introduction à l’algorithmique probabiliste ourquoi les algorithmes probabilistes ou comment l’aléatoire apporte un «plus» ? L’aléatoire est une ressource algorithmique des plus intéressantes d’un point de vue opérationnel. Le plan du chapitre sera de suivre ces remarques. C’est donc l’opportunité de discuter d’algorithmes astucieux. définir la bonne variable aléatoire en est l’exemple le plus concret). 1998.238 Complexité et Algorithmique avancée algorithme probabiliste avec les mêmes données d’entrée peut prendre un temps d’exécution différent et éventuellement donner des résultats différents. 1998 . 1998. intervalles contenant la bonne réponse) avec une probabilité d’erreur. Ceci nous amène à définir trois types d’algorithmes probabilistes : – les algorithmes numériques probabilistes . entre 1995 et 1999.e. 1998. 1998. 1998. entre 1996 et 2000 . entre 1997 et 2001. entre 1992 et 1997. L’algorithme de type Monte Carlo. 2002. renvoyer une mauvaise réponse ou ne jamais terminer. . 1998. l’algorithme de type Las Vegas trouve toujours la bonne réponse mais il est parfois incapable de finir le calcul.. R (Monte Carlo) 1998. Les deux premiers types d’algorithmes se caractérisent par le fait qu’ils terminent. donne une réponse précise mais qui peut parfois être erronée. R (Las Vegas Carlo) 1998. bus error. Comme nous pouvons le constater. une suite finie d’instructions précises qui résoud un certain problème mais pour lequel son exécution pour un jeu de données d’entrées sera menée plusieurs fois jusqu’à ce que l’exécution termine ou bien que la solution soit considérée comme correcte. 1998. – les algorithmes de type Monte Carlo . Exemple La Coupe de Monde de Foot. 1998. 1998. . quant à lui. Un algorithme probabiliste sera donc. on peut 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 de Foot ? R (numérique probabiliste) entre 1994 et 1998. 1994... Désolé. 1998. avec une faible probabilité. – les algorithmes dits de Las Vegas. analogue à un algorithme déterministe. On autorisera donc qu’un algorithme puisse. l’algorithme numérique probabiliste fournit des réponses approximatives (i. Afin d’illustrer le comportement des différents types d’algorithmes. 1998. 1998. Enfin. les algorithmes de type Las Vegas se caractérisent par le fait qu’il fournissent toujours une réponse correcte (s’ils terminent). b) factorisation d’un entier. nombre d’objets distincts dans un ensemble très grand.1.3 Algorithmes de Monte-Carlo Ces algorithmes donnent toujours une réponse. Exemple 16. – La probabilité d’échec peut être réduite arbitrairement.1.1.1. 3.1. Introduction à l’algorithmique probabiliste 16. extrapolation. Exemple 16. En effet. mais sa précision est d’autant meilleure en moyenne que le temps dont l’algorithme dispose est grand. beaucoup plus rapide en moyenne que dans le pire des cas. Estimation d’une valeur numérique (valeur d’une intégrale. nombre d’objets dans un ensemble très grand. – La probabilité de succès d’un tel algorithme est d’autant plus grande que temps dont il dispose est grand .1 1.) . ces algorithmes exploitent la remarque suivante : s’il existe un algorithme déterministe déjà connu pour résoudre un problème donné. Exemple 16. Les algorithmes dits Sherwood ou Las Vegas de deuxième ordre sont une classe d’algorithmes de Las Vegas qui retournent toujours une réponse et qui est toujours exacte. 2. alors l’utilisation du hasard permet de diminuer cette différence entre bons et mauvais exemplaires pour les configurations de données d’entrée. Techniques de simulation .1. mais celle-ci n’est pas toujours exacte. 16. Il est difficile de déterminer si la réponse obtenue .2 a) problème des 8 reines . 16. etc.2 Algorithmes de Las Vegas (deux cas à distinguer) Ces algorithmes ne retournent jamais de réponse inexacte mais ils peuvent ne pas trouver de réponse.Chapitre 16.1 239 Algorithmes numériques probabilistes Un algorithme numérique probabiliste produit toujours une réponse approximative.3 le tri de Hoare prend un temps moyen de O(n log n) et un temps de Ω(n2 ) dans le pire des cas. Interpolation. Un algorithme probabiliste du type Monte Carlo peut effectuer très rapidement cette même opération de vérification avec une probabilité aussi proche de 1 que l’on veut. – Calculer les deux membres F(r) et G(r) . rapide et sans refaire le calcul. le procédé de vérification consistant à refaire le calcul est lent d’une part et inefficace si l’erreur est dans le programme d’autre part.2...2 Probabilités versus déterminisme 16. Nous prendrons pour exemple ici une vérification des identités polynomiales et nous allons comparer les performances des deux algorithmes. . 16. Comme pour les algorithmes de Las Vegas. Supposons que nous voulions vérifier l’exactitude de l’équation suivante : (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 Qd Pd i i=1 (x − ai ) à la forme canonique i=0 ci x . L’algorithme probabiliste Voici maintenant un algorithme probabiliste pour effectuer cette même vérification : – Prendre aléatoirement et uniformément r ∈ {1. la probabilité de succès (c’est-à-dire ici de réponse correcte) d’un tel algorithme est d’autant meilleure que le temps dont il dispose est grand.240 Complexité et Algorithmique avancée est correcte. – L’algorithme décide en fonction du résultat si F(r) = G(r) ou F(r) 6= G(r). En effet. – Les deux expressions sont équivalentes si et seulement si les ci sont égaux. . 100d} ..1 Le problème Nous voulons vérifier l’exactitude des résultats d’un calcul de façon efficace. .. Commençons tout d’abord par un rappel cette propriété : Un ensemble d’événements E1 . il est possible de réduire cette probabilité d’erreur à un niveau insignifiant.. Cette erreur peut arriver si r est une racine de l’équation F(r) − G(r) = 0. La complexité de cet algorithme déterministe est Θ(d2 ) alors que celle de l’algorithme probabiliste est O(d)... Même si l’algorithme probabiliste est très rapide il présente une certaine probabilité d’erreur. 10k d} on a alors P(echec) 6 10−k . comme nous allons le voir dans ce qui suit.. en choisissant un intervalle de valeurs plus grand {1.Chapitre 16. Mais une équation d’ordre d ne peut avoir plus de d racines.... il suffit de réitérer l’algorithme pour obtenir une probabilité d’exactitude du résultat aussi proche de 1 que l’on voudra sans augmenter significativement la complexité de l’algorithme.. ∩ Ek ) = k Y P(Ei ) i=1 Ceci signifie qu’en réitérant l’algorithme k fois (avec remise) P(echec) 6 Qk i=1 1/100 = (1/100)k . . Donc : il existe au plus d valeurs ∈ {1.. . 100d} | F(r) − G(r) = 0 On peut améliorer l’efficacité de cet algorithme. car en exploitant les propriétés multiplicatives de la probabilité des événements indépendants. Introduction à l’algorithmique probabiliste 241 La probabilité d’échec de l’algorithme probabiliste est P(echec) 6 1/100. Cependant. Ek sont dits indépendants si et seulement si : P(E1 ∩ E2 ∩ .. C’est là ou l’aspect probabiliste vient à notre secours. mais on est limité par les capacités des ordinateurs. garantissant ainsi 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 que F(r) 6= G(r). Kruskal ([Kru56] ou Prim ([Pri57]. 16. Un arbre couvrant minimum est un arbre couvrant de poids minimum. Quand le graphe soumis en entrée à la procédure n’est pas connexe. Une variété d’algorithmes a été développée pour ce problème.3 Les probabilités pour réduire la complexité Exemple de l’Arbre Couvrant Minimum Probabiliste 16. déterminer un arbre couvrant minimum de G.2 Le Problème Étant donné un graphe G valué. E) un graphe connexe avec n sommets et m arêtes valuées à valeurs réelles wij ∈ R pour tout couple de sommets (i. Un arbre couvrant de G est un sous-graphe acyclique T qui inclut chaque sommet de G et est connexe. La particularité de cet algorithme est qu’il fonctionne de façon récursive et opère sur des (sous-)graphes non nécessairement connexes. Nous nous proposons d’étudier un algorithme probabiliste qui exploite l’entrelacement d’une technique de réduction du nombre de sommets avec la réduction du nombre d’arêtes à retenir pour la construction de l’arbre couvrant minimum par échantillonnage probabiliste.3.1 Généralités Soit G = (V.3. la plupart d’entre eux sont basés sur une stratégie gloutonne et .242 Complexité et Algorithmique avancée 16. il n’y a pas d’Arbre Couvrant (désormais AC) et on généralise aisément la notion d’arbre couvrant minimum à celle de forêt couvrante minimale. j) ∈ E. On citera notamment les algorithmes de Borükva ([Bor26]) (Sollin). Le problème de l’arbre couvrant minimum a fait l’objet de nombreuses études en optimisation combinatoire et on renvoie le lecteur aux nombreux ouvrages d’algorithmique traitant ce sujet. Un arbre couvrant a exactement n − 1 arêtes. Le poids d’un arbre est défini comme la somme des poids des arêtes. n) = min {i| log(i) ≤ m/n} et log(i) n dénote la i-ème application du logarithme (cf. Dans tous les cas il reste cet aspect théorique de la conception d’un algorithme probabiliste dont le temps d’exécution moyen est O(m) avec une forte probabilité.3. si T n’est pas un arbre couvrant minimum. une procédure d’échantillonnage des arêtes permettant d’éliminer des arêtes "lourdes" et une phase de vérification permettant de conserver les arêtes pertinentes pour la construction de l’arbre couvrant minimum. 16. [DRT92]) Bien que cela soit un algorithme en temps presque linéaire pour toute application pratique. L’algorithme probabiliste combine des étapes de Borükva. – On montre aisément qu’un arbre couvrant minimim de G contient uniquement des arêtes bleues (P1 ) – L’idée de l’algorithme de Borükva est de contracter les arêtes bleues incidentes à chaque sommet de G (P2 ) . alors l’algorithme retourne une liste d’arêtes dont n’importe laquelle peut améliorer T. le meilleur algorithme déterministe s’exécute en temps O(m log β(m. On dispose en effet d’algorithmes déterministes de vérification en temps linéaire. ([DRT92]. Les arêtes bleues Une arête bleue est une arête de poids minimum incidente à un sommet. Introduction à l’algorithmique probabiliste 243 s’exécutent en temps presque linéaire O(m log n) (tels les algorithmes de Borükva. Kruskal ou Prim). [KRT93]) et on retiendra tout particulièrement la caractéristique suivante de ces algorithmes qui. A l’heure actuelle. les structures de données sont suffisamment compliquées pour que l’on préfère utiliser des algorithmes en temps O(m log n). n)) où β(m.3 L’algorithme de Borükva Le principe de l’algorithme de Borükva (voir [Bor26]) qui est un algorithme glouton pour l’arbre couvrant minimum dont le temps d’exécution est en O(m log n).Chapitre 16. 3. il est aisé de vérifier que chaque arête marquée doit éliminer un sommet. 2. Eliminer les boucles et les arêtes multiples crées par les contractions sauf l’arête de poids minimum. les boucles formées devant être éliminées. Examinons le bénéfice de la réalisation d’une phase de Borükva. On remarque que l’ensemble des arêtes marquées pour une contraction durant une phase de Borükva induit une forêt. Marquer les arêtes bleues devant être contractées. chacune des arêtes contractées appartient . Par ailleurs. Déterminer les composants connexes formées par les arêtes marquées 3.3. Le processus de contraction sur l’arête bleue pour chaque sommet du graphe sera appelée une étape de Borükva. Le nombre d’arêtes sélectionnées est au moins n/2. Puisque chaque sommet choisit exactement une arête à marquer. 16. cela implique la fusion des deux extrémités en seul sommet qui réunit toutes les arêtes incidentes de deux sommets.1 Algorithme de Borükva 1.244 Complexité et Algorithmique avancée Lorsqu’on contracte une arête bleue. montrons qu’une phase de Borükva s’implémente en temps O(m log n). Ceci à cause du fait que chaque arête sur laquelle s’opère la contraction est l’arête minimale d’au plus deux sommets. D’après la remarque (P1 ).3. Le nombre d’arêtes dans G0 est d’au plus m puisqu’aucune nouvelle arête n’est créée durant ce processus. une contraction peut créer des arêtes multiples entre les paires de sommets mais seules les arêtes de poids minimum doivent êtres retenues.1 Complexité de la phase Borükva Etant donné un graphe G avec n sommets et m arêtes. Une implémentation d’une phase de Borükva est donnée par l’algorithme suivant : Algorithm 16. Le graphe G0 obtenu après une phase de Borükva a au plus n/2 sommets. Remplacer chaque composante connexe par un sommet 4. v) > wF (u. Soit G0 le graphe obtenu par une phase de V sur G. v).4. Remarque Soit F une forêt quelconque dans G. v) ∈ V.4 Arêtes "lourdes" et vérification d’arbre couvrant minimum Soit F une forêt de G. Le temps nécessaire à la réduction est O(m + n).3. soit en enlevant l’arête . v).1 Définition d’une arête F-lourde Une arête (u. 16. alors elle ne se trouve pas dans l’arbre couvrant minimum de G. v) ≤ wF (u.Chapitre 16. 16. v) s’il existe et posons wF (u. v) entre eux dans le graphe F. v) est F-lourde si la forêt F contient un chemin de u vers v utilisant seulement des arêtes d’un poids plus petit que celui de (u. L’algorithme de Borükva réduit donc le problème de l’arbre couvrant minimum sur un graphe à n sommets et m arêtes au problème de l’arbre couvrant minimum sur un graphe à au plus n/2 sommets avec au plus m arêtes. Une arête (u.3. Si les deux sommets se trouvent dans la même composante connexe de F. v) le poids maximum d’une arête du chemin P(u. Il est aisé de voir que l’arbre couvrant minimum de G est l’union des arêtes marquées pour contraction durant cette phase avec les arêtes de l’arbre couvrant minimum de G0 . il existe un chemin unique P(u. v) ∈ E est dite F-lourde si w(u. Il s’ensuit que le temps d’exécution en pire des cas est O(m log n). v) lui même. 16.4. et considérons une paire quelconque de sommets (u. Si une arête (u. L’arête (u. Notons par wF (u.v) est F-lourde. v) = ∞ si u et v ne sont pas reliés dans F. Introduction à l’algorithmique probabiliste 245 à l’arbre couvrant minimum de G.3. v) est dite F-légère si w(u.2 Vérification Une arête "améliore" une forêt si en l’ajoutant à une forêt soit elle réduit le nombre d’arbres dans cette forêt. Théorème 16. On ne détaille pas ici ces algorithmes et on indiquera simplement leurs performances. il existe des algorithmes de vérification en temps linéaire qui peuvent être utilisés pour faire une étape de plus. En fait. . Il est assez clair que cela est équivalent à vérifier que T est un arbre couvrant minimum. Un algorithme de vérification pour un arbre couvrant minimum peut être vu comme prenant en entrée un arbre T d’un graphe G et vérifiant que les seules arêtes T-légères sont arêtes dans T lui-même.5 Échantillonnage aléatoire pour les arbres couvrants minimum Avant d’étudier comment l’aléatoire peut être utilisé pour accélérer l’algorithme de Borükva.1 Etant donné un graphe G et une forêt F. on développe un lemme technique sur l’échantillonnage aléatoire d’arêtes de graphe G.3.246 Complexité et Algorithmique avancée de poids le plus grand dans l’unique cycle crée par son ajout. donne une forêt de poids inférieur ou égal à celui de F. Considérons un graphe (aléatoire) G(p) obtenu en ajoutant indépendamment chaque arête de G dans G(p) avec probabilité p. 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. toutes les arêtes F-lourdes dans G peuvent être identifiées en O(m + n).3. 16. Le seul usage de l’aléatoire dans l’algorithme d’arbre couvrant minimum est l’utilisation de l’échantillonnage aléatoire pour identifier et éliminer les arêtes dont on est certain qu’elles ne peuvent appartenir à l’arbre couvrant minimum. Il est possible de concevoir un algorithme glouton qui commence avec une forêt vide F et considérant les arêtes de G de manière à augmenter le poids vérifie si chaque arête successive est F-légère auquel cas l’arête est utilisée pour améliorer la forêt courante. et identifier toutes les arêtes F-lourdes et F-légères par rapport à n’importe quelle forêt F. De tels algorithmes de vérification sont aisément adaptés pour vérifier des forêts couvrantes minimales. 1 Nous prouvons en donnant ici une façon de construire en même temps le graphe H et sa forêt couvrante mimimale F. Preuve 16. H et F sont vides. ajoutons e à F. Si e est F-légère. le nombre attendu d’arêtes F-légères sera au plus n/p.3. Après. Maintenant. Pr[x>z] ≥ Pr[y > z] Si X domine stochastiquement Y alors E[X] ≥ E[Y]. Initialement. Pour de grandes valeurs de p.Chapitre 16. l’espérance de X est donnée par n/p. lançons une pièce de monnaie avec probabilité de pile p. En particulier. Soit F la forêt couvrante minimum pour G(p). Traitons les arêtes dans cet ordre. nous nous attendons à ce que il y ait très peu d’arêtes de G qui soient F-légères. nous allons calculer l’espérance du nombre d’arêtes F-légères.3. considérons si elle est F-lourde ou Flégère. Pour une arête e traitée. Lemme 16. Un rappel de quelques résultats de probabilité élémentaires. Supposons que les arêtes de G soient rangées en ordre croissant. Car une arête est ajoutée dans F si et seulement si elle est . Plus précisément. Une variable aléatoire X domine stochastiquement une autre variable aléatoire Y si ∀ z ∈ R. Rappelons qu’une variable aléatoire X a une distribution binomiale négative avec paramètres n et p si il correspond au nombre de tentatives indépendantes requises pour n succès quand chaque tentative a une probabilité de succès p. Si cette pièce est pile. Nous constatons aisément que à la fin F est la forêt couvrante minimum de H dont H est construit par selection de chaque arête de G avec probabilité p. On n’a pas de garantie que G(p) soit connexe. Alors le nombre d’arêtes F-légères dans G(p) est stochastiquemet dominé par une variable X ayant une distribution binomiale négative de paramètres n et p. la forêt F doit être une bonne approximation de l’arbre couvrant minimum de G. Introduction à l’algorithmique probabiliste 247 Le graphe G(p) a n sommets et un nombre d’arêtes estimé à n/p. De plus. ajoutons e à H.1 Soit F une forêt couvrante minimale dans le graphe aléatoire G(p) obtenu en incluant indépendamment chaque arête de G avec la probabilité p. 16. auquel cas il établit une forêt couvrant minimale.2 Le temps d’exécution moyen de l’algorithme arbre couvrant minimum est O(m + n). et avec ce pile-là. il peut traiter des graphes non connexes.6 Algorithme d’arbre couvrant minimum linéaire L’algorithme probabiliste entrelace des phases de Borükva qui réduisent le nombre de sommets avec des phases d’échantillonnage aléatoires qui réduisent les arêtes. nous ne considérons pas des cas des F-lourdes. |F| ≤ (n − 1). Alors le nombre de F-légères est égal au nombre de pièces de plomb que nous avons lancées. il s’exécute avec une complexité équivalente à celle de l’algorithme de Borükva. Toutefois. Avec G ayant n sommets. et puis l’algorithme de vérification est employé pour éliminer toutes les arêtes qui ne sont pas F-légères. Pour une fois que nous lancions la pièce de plomb. l’espérance de nombre de pièces de plomb lancées est |F|/p. elle est pile avec probabilité p.7 Algorithme probabiliste de construction d’un arbre couvrant minimal Théorème 16. dans le pire des cas. nous ajoutons l’arête dans F. Nous allons montrer ci-après que l’espérance mathématique du temps d’exécution de cet algorithme est linéaire. L’arbre couvrant minimum par rapport aux arêtes restantes. Donc.3. la forêt couvrante minimale F est calculée en utilisant la récursivité. 16. Après la phase d’échantillonnage.248 Complexité et Algorithmique avancée F-légère. Démonstration . est calculé en utilisant à nouveau une invocation de l’algorithme. Même si cet algorithme est appelé arbre couvrant minimum. Cela implique que le nombre attendu d’arêtes F-légères est au plus n/p.3. Supposons que nous lancions une pièce de plomb dans le cas où l’arête traitée est F-légère et celle de cuivre dans le cas où l’arête traitée est Flourde.3. qui sont F-légères . calculer le graphe G1 ayant au plus n/4 sommets et considérons C. |V| = n.3. La vérification de l’étape 4 s’exécute en O(m + n) et donne un graphe G3 avec au plus n/4 sommets et un nombre d’arêtes moyen d’au plus n/2. 2. Renvoyer F = C ∪ F3 Soit T(n. ce qui fait O(m+n) et donne un graphe G1 avec au plus n/4 sommets et m arêtes. Introduction à l’algorithmique probabiliste 249 Algorithm 16. l’ensemble des arêtes sélectionnées durant ces 2 phases. pondéré Output : arbre (ou forêt) couvrant de poids minimum F 1. entrelacées avec la simplification des graphes quotients. et les éliminer pour obtenir le graphe G3 3. Examinons le coût des différentes étapes de cet algorithme. Elle utilise 2 applications de l’algorithme de Borükva. Trouver la forêt couvrante minimale de G3 a un temps moyen . 1.2 Algorithme de Borükva Input : G=(V. Si G est vide alors stopper et renvoyer F←C. calculer la forêt couvrante minimale F2 du graphe G2 – En utilisant un algorithme de vérification en temps linéaire. 4. m/2) par induction et grâce à la linéarité de l’espérance mathématique. De manière récursive. identifier des arêtes F2 -lourdes de G1 . Trouver la forêt couvrante minimale de G2 a un coût moyen T(n/4. 5. Soit G2 = G1 (p) un graphe obtenu par échantillonnage aléatoire à partir de G1 avec la probabilité p = 1/2 – En appliquant récursivement l’algorithme. 2. on réalise un échantillonnage aléatoire pour donner le graphe G2 = 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.Chapitre 16.E) . non orienté. |E| = m . m) l’espérance mathématique du temps d’exécution de l’algorithme d’arbre couvrant minimum sur des graphes à n sommets et m arêtes. En utilisant 2 applications de Borükva. appliquer l’algorithme et calculer la forêt couvrante minimale F3 pour le graphe G3 . la donnée d’un problème 2-SAT a exactement 2 littéraux par clause. problème plus difficile et nous montrerons la pertinence de l’utilisation d’un algorithme probabiliste. m) ≤ T(n/4. Par exemple. Ainsi. A partir de cette solution nous allons déduire une solution pour 3-SAT. Pour le problème de la k-satisfiabilité (k-SAT). Le problème général SAT est NP-difficile. φ = (x1 ∨ x¯3 ) ∧ (¯ x1 ∨ x¯2 ) ∧ (x1 ∨ x3 ) ∧ (x4 ∨ x¯2 ) ∧ (x4 ∨ x¯1 ) . Au total. 16.(n + m).4. Nous allons tout d’abord étudier un algorithme probabiliste pour 2-SAT. n/2) + c(n + m) pour une certaine constante c.4 Résoudre SAT de manière probabiliste 16.1 Rappel Le problème général de satisfiabilité est une formule booléenne donnée sous la forme d’une conjonction (ET) d’un ensemble de clauses. où chaque clause est la disjonction (OU) de littéraux et où un littéral est une variable booléenne ou sa négation. on obtient donc T(n. l’expression suivante est une instance 2-SAT. m/2) + T(n/4.250 Complexité et Algorithmique avancée T(n/4. ce qui donne le temps d’exécution en moyen de l’algorithme arbre couvrant minimum égal à O(n + m). Une solution à une instance d’une formule SAT est une affectation de valeur V ou F aux variables de façon à ce que toutes les clauses soient satisfiables. la formule de satisfiabilité est restreinte de façon à ce que chaque clause ait exactement k littéraux. un cas particulier du problème qui se résout en temps polynomial. 6.c. Une solution de cette relation de récurrence est 2. n/2). O(n) itérations suffisent pour l’étape 6. et modifier les affectations des valeurs aux variables de manière à ce que la clause devienne satisfaite. . Dans ce cas.Chapitre 16. Considérons pour l’instant que la formule est satisfiable et que l’algorithme s’exécutera aussi longtemps que nécessaire pour trouver une affectation satisfaisante pour rendre la formule satisfiable. Introduction à l’algorithmique probabiliste 16. Si l’algorithme termine avec une affectation des valeurs aux variables telle que la formule soit satisfiable alors on a résolu le problème.. L’algorithme peut sélectionner cette clause et mettre le littéral x1 à V. (x4 ∨ x¯1 ) sera non-satisfaite et l’algorithme peut changer la valeur d’une variable de cette clause. Notations – n : nombre de variables booléennes de la formule – m : paramètre entier qui détermine la probabilité que l’algorithme termine avec une réponse correcte. chaque étape peut être exécutée en O(n2 ). alors il y a deux changements possibles de l’affectation qui satisferont la clause (sur 4 au total).3 proposé décide lequel de ces changements essayer de façon aléatoire. Nous appellerons étape chaque fois que l’algorithme modifie une affectation de variable. chercher une clause qui n’est pas satisfaite..2 251 Analyse d’une solution probabiliste à 2-SAT Une approche assez immédiate pour trouver une solution pour une formule 2-SAT est de commencer avec une affectation. Considérons la formule SAT exemple φ = (x1 ∨ x¯3 ) ∧ (¯ x1 ∨ x¯2 ) ∧ (x1 ∨ x3 ) ∧ (x4 ∨ x¯2 ) ∧ (x4 ∨ x¯1 ) si on commence avec toutes les variables à F alors la clause (x1 ∨ x3 ) n’est pas satisfaite. Portons notre attention sur le nombre d’itérations de la boucle Répéter jusqu’à .4.4. L’algorithme 16. etc. Puisqu’une formule 2-SAT a O(n2 ) clauses distinctes. de l’algorithme. S’il existe deux littéraux dans la clause. Le cas où l’affectation ne donne pas une formule satisfiable retiendra notre attention plus tard. En démarrant avec Xi < n. on a Xi+1 = 1 Pr(Xi+1 = 1|Xi = 0) = 1 – Supposons que 1 ≤ Xi ≤ n − 1. . l’algorithme termine avec affectation satisfaisante. . nous choisissons une clause qui est insatisfaite. Si une instance satisfiable est trouvée. 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’algorithme. xn ) 2. . la probabilité d’augmenter le nombre de correspondances (entre Ai et S) est . Soit Xi le nombre de variables dans l’affectation courante Ai qui ont la même valeur que l’affectation satisfaisante S. .252 Complexité et Algorithmique avancée Algorithm 16. – Comme la clause n’a pas plus de 2 variables. Puisque S satisfait la clause. combien de temps il faut pour que Xi atteigne n. comment Xi évolue au cours du temps. renvoyer la valeur de cette affectation 4. Démarrer avec une affectation quelconque de valeurs aux variables x = (x1 . nous examinerons. En fait. cela signifie que Ai et S se différencient sur la valeur d’au moins une des variables de cette clause. – D’abord si Xi = 0 alors pour tout changement dans la valeur de variable de l’étape suivante. Quand Xi = n. A chaque étape. 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 valeur 3.4. le pire cas est lorsque l’algorithme s’arrête quand Xi = n. l’algorithme peut terminer avant que Xi n’atteigne n si il trouve une autre affectation satisfaisante mais pour notre analyse.3 2-SAT PROBA Input : 1. X2 ... . Définissons le processus stochastique (Yi ) = Y0 . Y2 . . . – il s’ensuit que la probabilité de faire décroître le nombre de correspondances est au plus 1/2. X1 ... Ceci de plus. 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 qui n’est pas nécessairement une chaîne de Markov. est une version pessimiste du processus stochastique X0 ... dépend sur les clauses qui ont été considérées auparavant.. Y1 . Introduction à l’algorithmique probabiliste 253 au moins 1/2. Y1 . Il est donc assez clair que le temps moyen pour atteindre la valeur n à partir de n’importe quelle configuration est plus grande pour la chaîne de Markov Y que pour le processus X. Le processus stochastique X0 . X2 . X1 . n’est pas nécessairement une chaîne de Markov. On exploitera donc cette propriété.. – La probabilité peut être égale à 1 si Ai et S se différencient sur la valeur des 2 variables de cette clause. car lorsque Xi augmente lors du passage à l’étape suivante avec une probabilité d’au moins 1/2. Y0 = X0 Pr(Yi+1 = 1|Yi = 0) = 1 Pr(Yi+1 = j + 1|Yi = 1) = 1/2 Pr(Yi+1 = j − 1|Yi = j) = 1/2 que l’on vérifie aisément comme étant une chaîne de Markov. .Chapitre 16. Yi augmente avec une probabilité exactement égale à 1/2. puisque la probabbilité de Xi augmente et peut dépendre du fait que Ai et S se différencient sur une variable ou deux dans la clause non satisfaite que l’algorithme choisit à cette étape. Y2 . Cette chaîne de Markov Y0 . Nous allons introduire une chaîne de Markov afin de d’estimer le nombre maximum d’itérations pour notre algorithme. 4. la première consiste à résoudre un système de n + 1 équations à n + 1 variables linéairement indépendantes.. Soit hj le nombre d’étapes pour atteindre n en partant de l’état j. l’état suivant est j + 1 et donc Zj = 1 + Zj+1 donc. 2.254 16. hj est une borne supérieure du nombre moyen d’étapes pour que l’instance S soit en concordance totale avec l’affectation de départ où j variables coïncident avec les affectations de l’instance S. pour 1 ≤ j ≤ n − 1 2 2 h0 = h1 + 1 La résolution de ce système peut se faire de deux façons équivalentes.. Soit Zj .3 Complexité et Algorithmique avancée Étude de la chaîne de Markov permettant d’estimer la complexité en temps de l’algorithme La chaîne de Markov modélise une marche aléatoire sur un graphe non-orienté G. 1. hn = 0 h0 = h1 + 1 puisque de h0 on se déplace vers h1 en une étape. Considérons que partant de l’état j où 1 ≤ j ≤ n − 1 Avec proba 1/2. une variable aléatoire représentant le nombre d’étapes pour atteindre n de l’état j.. n et pour 1 ≤ i ≤ n − 1. 1 1 E[Zj ] = E (1 + Zj−1 ) + (1 + Zj+1 ) 2 2 comme E[Zj ] = hj on a par linéarité hj−1 + 1 hj+1 + 1 hj−1 hj+1 hj = + = + +1 2 2 2 2 On obtient donc le système d’équations h0 = 0 hj−1 hj+1 hj = + + 1. . le sommet i est connecté aux sommets i − 1 et i + 1. Pour l’algo 2-SAT. Les sommets de G sont représentés par les entiers 0. On utilise la linéarité de l’espérance mathématique pour déterminer une expression pour autres valeurs de hj . De manière évidente. l’état suivant est j − 1 et donc Zj = 1 + Zj−1 Avec proba 1/2. . Si la formule est satisfiable.. on montre que.1 Cas où la formule est éventuellement insatisfiable Théorème 16.4.4. on a hj = hj+1 + 2j + 1 – vrai quand j = 0 car h1 = h0 − 1 – de hj = hj−1 + hj+1 + 1 on obtient 2 2 hj+1 = 2hj + hj−1 − 2 = 2hj − (hj + 2(j − 1) + 1) − 2 = hj − 2j − 1 En utilisant l’hypothèse d’induction. = n2 i+1 n−1 X 1 i=0 Considérons qu’une formule 2-SAT avec n variables est satisfiable et que l’algorithme 2-SAT soit en mesure de s’exécuter jusqu’à l’obtention d’une affectation satisfaisante. Alors.Chapitre 16.1 L’algorithme 2-SAT retourne toujours une réponse correcte si la formule est insatisfiable. nous pouvons conclure que h0 = h1 + 1 = h2 + 1 + 3 = hj − 2j − 1 = n−1 X 2i + 1 i=0 n−1 X = 2 i=0 = . 16. avec probabilité d’au moins 1 − 2m l’algorithme renvoie une affectation satisfaisante. l’espérance mathématique du nombre d’étapes pour trouver une telle affectation est au plus O(n2 ).3.. sinon il renvoie incorrectement que la formule est insatisfiable avec probabilité 2−m . pour 0 ≤ j ≤ n − 1. Introduction à l’algorithmique probabiliste 255 L’autre façon de faire consiste à raisonner de manière inductive. . Nous proposons un algorithme probabiliste qui résout 3-SAT en un temps qui est exponentiel en n mais qui est beaucoup plus 1. il serait par conséquent surprenant qu’ un algorithme probabiliste puisse résoudre ce problème en temps polynomial en n (i.256 Complexité et Algorithmique avancée Preuve 16. la question qui se pose est de savoir quelle est la probabilité conditionnelle que l’algorithme ne trouve pas d’affectation satisfaisante au segment i.1 Il est clair que s’il n’y a pas d’affectation satisfaisante alors l’algorithme retourne correctement le fait que la formule est insatisfiable.4. Supposons que la formule soit satisfiable. Découpons l’exécution de l’algorithme en segments de n2 étapes. Etant donné qu’aucune affectation satisfaisante n’est trouvée dans les i − 1 premiers segments. Pr(Z > 2n2 ) ≤ n2 1 = 2n2 2 .4 Généralisation à 3-SAT L’objectif est à présent de généraliser la technique employée pour 2-SAT afin d’obtenir un algorithme probabiliste 3-SAT. Ce problème est NP-Complet.e.4. Soit Z le nombre d’étapes du départ du segment jusqu’à l’obtention d’une affectation satisfaisante. Soit une variable aléatoire positive X et a > 0 alors E(X) a Exemple 1 : jeu de pile ou face La borne supérieure de la probabilité d’obtenir plus de 3n/4 face dans une séquence de n essais est : P(X > a) 6 P(X > 3n/4) 6 E(X) n/2 2 = = 3n/4 3n/4 3 . Par le lemme énoncé précédemment. l’espérance mathématique du temps pour trouver une affectation satisfaisante quelque soit la configuration de départ est n2 . En appliquant l’inégalité de Markov 1 Donc. la probabilité que l’algorithme ne trouve pas d’affectation satisfaisante après m segments est bornée par ( 12 )m 16. l’espérance mathématique du temps). l’espérance mathématique du temps) pour obtenir une affectation satisfaisante. Soit Ai l’affectation après i étapes et Xi le nombre de variables (i.4 3-SAT PROBA 1. s’il en existe une.e. Si une instance satisfiable est trouvée.1 L’algorithme Algorithm 16. et donc les Ai . Répéter jusqu’à m fois. retourner le résultat 4.e. littéraux) dans l’affectation courante qui correspondent avec S. quand il est appliqué à 3-SAT. 16. m est un paramètre qui contrôle la probabilité de succès de l’algorithme. 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 courante 3. Par la même démarche que pour l’algorithme 2-SAT.4. Supposons que l’instance soit satisfiable et que S est une affectation satisfaisante.Chapitre 16. La première approche est identique à celle présentée précédemment. Démarrer avec une instance quelconque 2.4. 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/3 Les équations s’expliquent aisément parce qu’à une étape donnée une ou plusieurs clauses sont non satisfaites. sinon retourner que la formule est insatisfiable Concentrons nous sur la détermination de la borne supérieure en temps (i.4. Dans cet algorithme. Introduction à l’algorithmique probabiliste 257 efficace que l’approche exhaustive et naïve reposant sur le test de toutes les affectations possibles. la performance d’une variante de l’algorithme utilisé pour 2-SAT. Considérons en premier lieu. . Avec une probabilité d’au moins 13 . Il y a pour cela deux observations à faire : 1. Cependant. De façon analogue on obtient une borne supérieure du nombre moyen d’étapes jusqu’à ce que Xi = n en analysant une chaîne de Markov Y0 . unités de temps) en moyenne pour déterminer une affectation satisfaisante. la chaîne est plus encline à décroître qu’à croître. avec un peu de perspicacité on peut améliorer significativement le processus. on augmente le nombre de correspondances entre l’affectation courante et S.e. Avec une distribution de probabilité exponentiellement . Y1 . 1 6 j 6 n − 1 3 3 h0 = 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. Si on choisit une affectation satisfaisante uniformément au hasard.258 Complexité et Algorithmique avancée doivent être en contradiction sur au moins une variable de cette clause. telle que Y0 = X0 P(Yi+1 = 1|Yi = 0) = 1 1 P(Yi+1 = j + 1|Yi = j) = 3 2 P(Yi+1 = j − 1|Yi = j) = 3 Dans ce cas. Soit hj le nombre d’étapes pour atteindre n en partant de j. on obtient le système d’équations suivant : hn = 0 hj = 2hj−1 hj+1 + + 1. Ce résultat n’est pas très convaincant car il y a 2n affectations possibles à tester. alors le nombre de variables qui correspondent à S ont une distribution polynomiale avec une espérance mathématique de n2 .. plus on a tendance à aller vers 0. il recommence la recherche avec une nouvelle affectation choisie au hasard. le processus démarre avec une affectation initiale qui correspond à S en plus de n2 variables de façon significative. n → −∞) mais non négligeable. Soit qj une borne inférieure de la probabilité que notre algorithme modifié atteigne S (ou toute autre affectation satisfaisante) quand il démarre avec une affectation qui inclut exactement j variables qui ne concordent pas avec S. 16.Chapitre 16.k) déplacements.4. 2. C’est-à-dire 2 1 qj > maxk=0.j Ckj+2k ( )k ( )j+k 3 3 . C’est donc une borne inférieure sur la probabilité que l’algorithme atteigne une instance satisfiable en j + 2k 6 3n étapes. On a donc plutôt intérêt à redémarrer le processus à chaque fois pour un nombre d’itérations réduit plutôt que d’exécuter le processus sur de nombreuses et longues périodes sur la même affectation..5 Proposition d’algorithme modifié L’algorithme 3-SAT bis prend jusqu’à 3n étapes pour atteindre une affectation satisfaisante en partant d’une affectation quelconque. Remarquons que : 2 1 Ckj+2.e. Plus l’exécution de l’algorithme se prolonge. Considérons une particule se déplaçant sur une ligne indexée par des entiers avec une probabilité de 31 d’aller vers le haut et une probabilité de 32 d’aller vers le bas.. Lorsque l’algorithme démarre. Soit q la probabilité que le processus 3-SAT atteigne S (ou toute autre affectation satisfaisante) en 3n étapes en démarrant avec une affectation choisie uniformément au hasard. Introduction à l’algorithmique probabiliste 259 faible (i.k ( )k ( )j+k 3 3 est la probabilité de k déplacements vers le bas et (k + j) déplacement vers le haut dans une séquence de (j + 2.. S’il échoue. il a tendance à se déplacer vers 0 plutôt que n. Nous cherchons ici à déterminer combien de fois le processus doit recommencer avant d’atteindre une affectation satisfaisantes.. 5 3-SAT+ PROBA 1.4. retourner le résultat 3. Répéter jusqu’à m fois. pour j > 0. Choisir uniformément au hasard un des littéraux de la clause et changer la valeur de la variable dans l’affectation courante 2. on a aussi : 1. sinon retourner que la formule est insatisfiable En particulier. 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 satisfaites i. Si une instance satisfiable est trouvée. √ √ m 2πnCen 6 m 6 2 2πm( )m e . Choisir arbitraitement une clause qqc insatisfaite ii. Rappel de la formule de Stirling : Pour n > 0. si on considère le cas où k = j on a 2 1 qj > Cj3j ( )j ( )2j 3 3 On peut approximer Cj3j avec la formule de Stirling 1 Donc pour j > 0 Cj3j = 3j! j!(2j)! q 2π(3j) 3j e e √ √ ( )3j ( )2j ( )j ) 4 2πj 2π2j e 2j j √ 3 27 = √ ( )j 8 πj 4 √ c 27 j 3 avec c = √ = √ ( ) j 4 8 π > Donc.260 Complexité et Algorithmique avancée Algorithm 16. .n étapes partant d’une affectation choisie au hasard. qj ≥ n X Pr(affectation au hasard ayant j différences avec S)qj j=0 ≥ n X 1 j 1 n c 1 C ( ) √ j + 2n j=1 n 2 j2 n c 1 X 1 Cjn ( )n (1)n−j ≥ ( √ )( )n n 2 j=1 2 c 1 1 ≥ ( √ )( )n (1 + )n n 2 2 c 1 3 ≥ ( √ )( )n ( )n n 2 2 n c 3 = (√ ) n 4 Supposons qu’une affectation satisfaisante existe. Donc le nombre moyen d’étapes avant la détermination d’une solution est bornés par O(n3/2 ( 34 )n ). Disposant d’une borne inférieure pour qj . l’algorithme utilise au plus 3n étapes. on peut établir une borne inférieure pour q. le nombre d’affectations testées avant de déterminer une telle affectation satisfaisante est une variable aléatoire géométrique de paramètre q. la probabilité que le processus atteigne une affectation satisfaisante en 3. Introduction à l’algorithmique probabiliste 261 2 1 qj ≥ Cj3j ( )j ( )2 j 3 3 c 27 j 2 j 1 2 ≥ √ ( )( )( )j j 4 3 3 c 1 ≥ √ j j2 On notera aussi que q0 = 1.Chapitre 16. Le nombre moyen d’affectations testées est 1q et pour chaque affectation. 262 Complexité et Algorithmique avancée L’algorithme modifié pour 3-SAT correspond donc à un algorithme de Monte-Carlo. Si l’espérance mathématique d’étapes avant de 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 soit trouvée alors que la formule est satisfiable est bornée supérieurement par 2−b . 16.5 Un problème d’accord Un problème fréquemment abordé dans le contexte de l’informatique répartie consiste à briser la symétrie qui existe au sein d’un ensemble de processus communiquants. Il est pour cela possible d’utiliser l’algorithmique probabiliste. Ce problème est dans la litté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 biologie une illustration tout à fait éclairante de ce problème. Une classe particulière de mites (Genus Myrmoyssus) résident en tant que parasites sur la membrane de l’oreille de papillons de la famille Phaemidae. Ces papillons sont des proies pour les chauves-souris et la seule défense dont ils disposent est qu’ils peuvent percevoir le sonar utilisé par une chauve-souris s’approchant. Malheureusement, si les deux oreilles du papillon sont infectées par les mites, alors la capacité de perception du sonar des prédateurs est considérablement diminuée, et donc les chances de survie des deux espèces - le papillon et la colonie de mites - sont considérablement réduites. L’intérêt des mites est donc d’assurer la survie de leur hôte, ce qu’elles peuvent réaliser en infectant uniquement une oreille. Les mites doivent donc faire face à un problème d’accord. Comment des mites infectant une oreille particulière garantissentelles leur survie en obligeant les autres mites à infecter la même oreille ? Le protocole utilisé par ces mites implique le dépôt de traces chimiques autour des oreilles du papillon. Chapitre 16. Introduction à l’algorithmique probabiliste 16.6 263 Une solution synchrone Notre intérêt pour ce problème a bien sûr une motivation informatique. Considérons une collection de n processus identiques qui opèrent de manière totalement asynchrone. Il n’y a pas d’horloge globale commune accessible et aucune hypothèse ne peut être formulée concernant les vitesses relatives des différents processus. Les processus doivent donc atteindre le consensus sur un choix unique sur une collection de m options identiques. On va pour l’instant adopter un modèle simple pour la communication entre processus. On dispose d’une collection de m registres accessibles en lecture et écriture pour l’ensemble des processus. Plusieurs processus peuvent simultanément tenter d’accéder ou modifier un registre. Pour gérer de tels accès qui provoquent des conflits, on considèrera que les processus utilisent un mécanisme de verrouillage par lequel un et un seul processus obtient l’accès à un registre quand plusieurs processus tentent d’y accéder ; de plus, tous les processus restants attendent alors jusqu’à ce que le verrou soit levé et entrent de nouveau en compétition pour accéder au registre. Les processus doivent exécuter un protocole pour choisir une option unique parmi les m choix possibles. Ceci est réalisé en garantissant qu’à la terminaison du protocole, exactement √ un seul des m registres contient un symbole spécial désigné par . La complexité d’un protocole de coordination est mesurée en termes du nombre total d’opérations de lecture/écriture réalisées par les n processus (Il est évident que le temps d’exécution a peu de sens dans un environnement asynchone). On sait que tout protocole déterministe résolvant ce problème a une complexité en Ω(n1/3 ). On va maintenant illustrer la puissance de l’algorithme probabiliste dans ce contexte en exhibant un protocole probabiliste tel que, pour tout c > 0 , on résoud le problème en utilisant c opérations avec une probabilité de succès d’au moins 1 − 2Ω . Pour des raisons de simplicité, on va considérer seulement le cas, 264 Complexité et Algorithmique avancée n = m = 2, le protocole et l’analyse se généralisent d’une manière immédiate. On commencera par se limiter au cas assez simple où deux processeurs sont synchrones et opèrent en étapes synchronisées par une même horloge globale. 16.6.1 Le protocole Le protocole présenté ci-après est exécuté par chacun des deux processeurs. On indexe les processeurs par Pi et les choix possibles par Ci pour tout {0, 1}. Le processeur Pi lit initialement le registre Ci . Ainsi, les processeurs échangent-ils leurs registres après chaque itération du protocole. Ceci implique qu’à aucun moment les deux processeurs n’examinent le même registre. Chaque processus maintient également une variable locale dont la valeur est notée Bi . Algorithm 16.6.6 SYNCH-CCP Input : les registres C0 et C1 sont initialisés à 0 √ Output : exactement un des deux registres a la valeur 0. Pi initialement scanne Ci et a sa variable locale Bi initialisé à 0 1. Lire le registre courant et obtenir le bit Ri 2. Choisir une des 3 options √ (a) si (Ri = ) alors HALT (b) si (Ri = 0 et Bi = 1) alors écrire HALT √ dans le registre courant et (c) autrement, affecter un bit aléatoire à Bi , écrire Bi dans le registre courant 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 suffit de 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 Chapitre 16. Introduction à l’algorithmique probabiliste 265 √ les deux registres doivent avoir eu comme valeur écrite à la fois au 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. Notons Bi (t) et Ri (t), les valeurs utilisées par le processeur Pi juste après l’é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 = 1 et 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 en faisant un choix unique. Ceci implique cependant que le protocole se termine en un nombre fini d’étapes. Pourquoi cela se produit-il ? Remarquons qu’à chaque itération la probabilité que les deux bits B0 et B1 soient les mêmes est de 1/2. De plus, si à chaque étape ces deux bits prennent des valeurs distinctes alors le protocole se termine lors des deux prochaines étapes. La probabilité que le nombre d’étapes dépasse t est O( 21t ). 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( 21t ). 16.7 Le cas asynchrone On généralise maintenant ce protocole au cas asynchrone où deux processeurs 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émarrent en examinant les différents registres. En effet, le fait de choisir un unique registre de départ C0 ou C1 est en lui-même une instance du problème de coordination de choix. À la place de cela, on suppose que chaque processus choisit son registre initial de départ au hasard. Ainsi, les deux processeurs peuvent être en conflit dès la première étape et doivent utiliser le mécanisme de verrou pour résoudre le conflit. L’idée fondamentale 266 Complexité et Algorithmique avancée est d’associer une estampille (voir [Lam78, AR81] pour ce mécanisme de datation logique) ti sur le registre Ci , et Ti sur la variable locale Bi . On supposera qu’une opération de lecture sur le registre Ci opére sur une paire < ti , Ri > où ti est l’estampille et Ri la valeur du registre. Si les processeurs fonctionnaient de manière synchrone, ces estampilles seraient identiques au numéro d’itération du protocole pré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 son registre 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 courant et HALT (e) sinon Ti ← 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 registre et 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 a un coût total excédent c avec une probabilité d’au plus 2−Ω(c) Chapitre 16. Introduction à l’algorithmique probabiliste 16.7.2 267 Preuve Le seule différence réelle avec le protocole précédent réside dans les 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 libre de faire son choix. Pour démontrer la validité de√ce protocole, on dans sa cellule considère deux cas où un processus peut écrire courante - c’est le cas (2.c) et (2.d). Quand un processus termine une itération, son estampille locale Ti est égale à celle du registre √ courant 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 . Le seul √ 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 √ et ∗ ∗ soit t1−i et T1−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−i ait pu écrire dedans. Puisque les estampilles ne peuvent décroitre t∗1−i ≥ T∗i . De plus P1−i ne peut avoir son estampille T∗1−i qui dépasse t∗i puisqu’elle doit aller 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 √ T1−i = t1−i et le cas (2.d) peut permettre l’écriture par P1−i de . Toutefois, on peut 268 Complexité et Algorithmique avancée alors invoquer l’analyse du cas synchrone et écarter la possibilité de cette erreur. La complexité de ce protocole est simple à analyser. Le coût est proportionnel à la taille de l’estampillage le plus grand obtenu lors de l’exécution du protocole. L’estampille d’un registre peut croître seulement dans le cas (2.e) et ceci ne peut se produire que lorsque le cas 2 s’applique. De plus, le processeur Pi qui augmente la valeur de l’estampille doit avoir sa variable Bi courante choisie lors d’un accès à un autre registre. Ainsi l’analyse du cas synchrone s’applique. si elle est conceptuelle présente aussi un intérêt commun. elle se réfère donc au médium de communication. nous nous appuierons sur quatre textes qui exposent de façon claire la théorie (voir [KU87. CLN04]). il faut que le message reçu. lui-même dû à Boltzmann et issu de la thermodynamique. elle s’intéresse à la quantité intrinsèque d’information d’un objet. la différence. exprimée en nombre de bits nécessaires pour décrire entièrement l’objet considéré. Nous reviendrons aussi sur les travaux de Kolmogorov qui est le père de la théorie moderne de l’information et des probabilités. la complexité de Kolmogorov est dite complexité descriptionnelle. Comme on a pu le voir au chapitre 5. on aborde les théories de l’information de Shannon et Kolmogorov. permette de . la description du-dit objet. En d’autres termes on cherche à connaître la quantité d’information. La description d’un objet ne présente d’intérêt que dans la mesure où cette description permet de restituer entièrement l’objet. Toutefois. Lév76. comme dans cet D ouvrage le chapitre 18 sur l’informatique quantique (page 285) sont sous-tendus par le concept d’entropie. Si on veut pouvoir communiquer la description d’un objet à travers un médium de communication. Ces théories. Pour cet exposé.Chapitre 17 De Shannon à Kolmogorov ans cette partie du livre. La théorie de l’information ou de la complexité de Kolmogorov est différente de celle de Shannon en ce qu’elle s’intéresse à l’objet lui-même alors que la théorie de Shannon s’intéresse à la communication. LV97. 1 L’entropie L’entropie est un concept clé en théorie de l’information. d’un émetteur à un récepteur sous l’hypothèse que l’univers de tous les messages possibles est connu tant par l’émetteur que par le récepteur. Dans la théorie de l’information de Kolmogorov. l’une et l’autre étant a priori aussi vraisemblables.1. L’entropie existe en univers combinatoire. La théorie de Shannon. on est seulement intéressé au problème envoyer/recevoir un message. Ceci signifie qu’on ne s’y intéresse pas au "contenu en information" des messages transmis. probabiliste continu. Lorsque le récepteur reçoit une réponse. la connaissance de l’entropie . il a reçu un bit d’information. Intuitivement parlant. Et inversement. nous nous y intéressons du point de vue de la théorie de l’information. dite aussi théorie de la complexité informationnelle. l’entropie "mesure" l’incertitude qui règne dans un système physique. La mesure de Shannon est celle de la "liberté de choix" de sélection d’un message parmi tous ceux possibles. comme l’annonce le titre de son article (voir [Sha48a]) est une théorie de la communication de messages et non de l’information comme on peut le lire trop souvent. 17. Le récepteur "sait" qu’il ne peut recevoir qu’une information oui ou non. 17. nous ne nous intéresserons pas à cette dernière théorie qui renvoie plutôt au domaine mathématique de l’analyse. l’entropie associée mesure alors la quantité d’information que nous apporte cette connaissance par rapport au système dont est issue cette variable.1 Entropie et information de Shannon Supposons qu’on apprenne la valeur prise par une variable aléatoire X . on s’intéresse à la mesure du contenu en information de chaque objet individuellement considéré. 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. Pour ce qui nous concerne ici. Dans cette théorie. probabiliste discret.270 Complexité et Algorithmique avancée le restituer intégralement. ou information de Shannon. pn ) ≡ − X px . . mais bien la probabilité associée à cette valeur. . qu’il s’agisse d’ordinateurs ou d’automatismes. logq px (17. log 0 ≡ 0 puisque limx→0 x. . Ainsi si la variable X peut prendre les valeurs ♣. ce qui importe ce n’est pas la valeur prise par X en tant que telle. – soit comme une mesure de l’incertitude associée à une variable X avant qu’on en connaisse la valeur . . . 41 . La mesure d’entropie de Shannon.Chapitre 17. mais du fait qu’elle a pris telle ou telle valeur qui avait telle ou telle probabilité d’être prise. De Shannon à Kolmogorov 271 de x mesure l’incertitude associée à la valeur prise par la variable X avant qu’on connaisse cette valeur. . . .. 18 . pn . si q = 3. On admettra ici que 0. . ♠ avec des probabilités respectives 21 . Le contenu en information associé à une variable ne dépend pas de la valeur prise par la variable. . L’usage courant veut qu’on utilise le bit. si q = 10 c’est le décit.1) x où q exprime l’unité en laquelle s’exprime cette quantité d’information. p2 . Il se posait la question de savoir comment transmettre 1. En fait Shannon s’est intéressé à la transmission d’information à travers un canal. log x = 0. Si q = 2 l’unité est le bit. L’entropie peut ainsi être vue comme fonction d’une distribution de probabilités p1 . ♦. On peut en effet voir l’entropie. C’est ce qui fait que l’entropie associée à une variable aléatoire est définie comme fonction des probabilités des valeurs pouvant être prises par chaque variable aléatoire. ♥. . – soit comme la mesure de l’information acquise sur le système après connaissance de la valeur de X. associée à une telle distribution de probabilités est définie par 1 : H(X) ≡ H(p1 . p2 . c’est le trit. L’entropie n’est pas fonction des valeurs ainsi prises. 18 . en particulier dans les machines électroniques. L’utilisation du bit est liée aux contraintes physiques de représentation et usage de l’information. Ce sont ces deux aspects complémentaires qui donnent sa puissance explicative au concept d’entropie. . log − . log . + 2. la séquence 110 à ♥ et la séquence 111 à ♠. Ce résultat est connu sous la dénomination de Théorème de Shannon sur la transmission sans bruit. + 3. + 2.272 Complexité et Algorithmique avancée l’information produite par une source de manière optimale de telle façon que cette information puisse être restituée à l’autre extrémité du canal. Exemple 17. On aurait alors pour longueur moyenne du message élémentaire : 1 1 1 1 5 1.1 (Illustration du théorème de Shannon) Ainsi supposons comme ensemble des possibles générés par une source. ♥. La réponse est que H(X) bits sont nécessaires pour chaque symbole du message. les valeurs ♣. Dans un souci d’optimisation. les chaînes de bits 01 et 10 respectivement à ♥ et ♠. log − . la séquence 10 à ♦. Comme il y a 4 éléments. On peut ainsi décider d’associer le seul bit 0 à la survenance de ♣. il faudrait deux bits 8 8 de mémoire pour transmettre chaque élément dans une démarche naïve. log − . . 2 2 2 2 4 4 4 4 . 14 . 2 4 8 8 4 Et l’entropie associée serait alors : 1 1 1 1 1 1 1 1 H(X) = − . log 2 2 4 4 8 8 8 8 On aurait pu améliorer cette démarche en associant le bit 0 à ♣. 1 1 .1 : 1 1 1 1 1 1 1 1 H(X) = − . log − . le bit 1 à ♦. . log − . ♦. = bits. avec H(X) ≡ H(X1 ) = H(X2 ) = . ♠ avec les probabilités respectives 12 . 2 4 8 8 4 On remarquera que c’est inférieur aux deux bits de la démarche naïve. conformément à la définition 17. = H(Xn ). + 3. + 1. L’entropie associée à la source est alors.1. soit au total huit bits. On utilisera le moins possible de bits pour transmettre ♣ dont la fréquence d’apparition est plus importante que pour ♥ ou ♠ qui apparaissent moins souvent. = bits. . on peut utiliser cette différence de probabilités (un biais en terme de probabilités) pour transmettre l’information avec moins de bits. log − . + 2. La longueur moyenne d’une telle suite est alors : 1 1 1 7 1 1. comme ci-dessus. la lettre "e" est la plus fréquente dans les phrases en français. . j ∈ N ) pouvant chacune prendre ni valeurs i = 1. . . X2 .Chapitre 17. . Considérons k variables aléatoires indépendantes Xi . . et statistiquement. De Shannon à Kolmogorov 17. . . . On peut aussi l’interpréter comme donnant une mesure de l’incertitude moyenne sur la prochaine lettre à venir 1 . l’exemple de l’émetteur et du récepteur. an . . p ∈ N et le nombre de ces séquences est non seulement infini. .1 Alors que la variable X est considérée en général comme une chaîne de bits issue d’un ensemble a1 .1 est à une constante près. . de forme ai1 . n ∈ N . On en déduit que l’entropie est maximale dès lors que toutes les probabilités sont égales. La formule 17.1. xk et k1 + k2 + · · · + kq = k. ai2 . .2 273 Généralisation Si on reprend comme support du raisonnement. mais l’ensemble d’icelles est compact. a2 . Par exemple une lettre peut apparaître plusieurs fois dans un même message. en fait l’entropie d’une loi de probabilité est une mesure de sa dispersion. aq et que la valeur ai apparaisse ki fois dans le message 2 x = x1 . chaîne de bits) I = n et on a besoin de seulement I1 = n bits pour coder une telle information dans le système binaire. Le nombre de chaînes de bits différentes de longueur l = 2. (p(Xi1 ∩ Xi2 ) = p(Xi1 ) + p(Xi2 ) ∀i. Le nombre de combinaisons possibles est alors n = n1 . Ainsi. on suppose qu’à tout instant l’émetteur envoie une lettre α d’un alphabet avec une probabilité p(α) .e. 2. l’entropie est alors la quantité moyenne d’information fournie par chaque nouvelle lettre reçue. . Xk ) = log n1 + log n2 + · · · + log nk = log n (17. sur l’ensemble des lettres possibles. x2 . .aip .n + 1 est 2n ce qui correspond à un contenu en information dans chaque message (i. .. · · · nk et l’entropie est donnée par : H(X1 . Revenons à notre transmission d’information à travers un médium de communication (un canal). . . Pour fixer 1.1. .. · · · . k. 2.2) Supposons maintenant que la variable aléatoire X puisse prendre valeur parmi a1 . la théorie est suffisamment générale pour concerner aussi les séquences finies ou non.n2 . Remarque 17. celle de Boltzmann. . a2 . . on peut considérer les a1 . k2 .kq ! Remarque 17. chaque ki étant le nombre d’apparitions d’une lettre. on peut transmettre le message en H(X) bits. quelle est la quantité d’information apportée par la spécification complète de l’état desdites particules ? Il y a : k! |S| = k1 !. Pour le reconstruire. . kq (17.kq ! k1 !. . xk il faut donner l’ordre des mots dans l’ensemble (on l’appelle aussi la fonction caractéristique de l’ensemble). Si on suppose qu’on a un système composé de N particules indiscernables. . . .k2 ! · · · kq ! k1 .274 Complexité et Algorithmique avancée les idées. . la proportion de particules dans l’état i étant pi . De plus. c’est-à-dire que la lettre ai apparaît ki fois dans le message et non dans un mot particulier. il faut donner l’ordre des ki . . . . . .k2 !. . . et donc la quantité moyenne par particule est donnée par I= X 1 log |S| ∼ − pi . log k bits ce qui permet de restituer le message dans son ensemble.k2 !.1. . Les messages possibles de longueur k sont alors au nombre de : k! k = k1 !.kq ! façons d’organiser les N particules en respectant les proportions. . il s’agit bien du message dans son ensemble. . x2 .k2 !. . . . log k + log k1 !. . k Remarque 17. a2 . q ce qui se peut faire en q. . de longueur k.2 La fréquence de chaque symbole ai est définie ki par φi = . i = 1. . . . de telle façon qu’on ait : log k! k! ≤ H(x) ≤ q. les x∗ comme des mots sur cet alphabet et x comme le message à transmettre.logpi N . . . .1. aq comme les lettres d’un alphabet.3 On peut faire le parallèle avec la thermodynamique.3) et un message parmi tous ceux-ci est X Pour caractériser le message x = x1 . alors Ks (x) = ∞. nous noterons |x| la longueur de la séquence binaire afférente (son nombre d’éléments). Conventionnellement. 6 → 11 . avec les 1 les plus à droite. encore une fois. Cette notation caractérisera aussi la valeur absolue.Chapitre 17. et dans [LV97] on identifiera les nombres entiers et les séquences binaires afférentes obtenues par un codage binaire classique des dits entiers comme suit : 0 → Λ . l’entropie de la distribution de probabilité est égale à la quantité d’information apportée par chaque événement particulier. on retrouve la célèbre formule I = log |S| gravée sur la tombe de Boltzmann. On appelle alors p le programme et S le langage de programmation. Dans ce cas. c’est le contexte qui permettra de lever toute ambiguïté. ce qui est à l’origine de nombre de confusions qui amènent à parler de l’entropie d’un état particulier alors qu’il s’agit d’une notion globale définie sur un ensemble pour une mesure de probabilité déterminée. 8 → 001 . 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. Dans le cas où toutes les probabilités sont égales à 1/|S|. Comme nous l’avons vu au chapitre 5. 7 → 000 . ainsi : |−3| = 3. 3 → 00 . 17. De Shannon à Kolmogorov 275 en vertu de la formule de Stirling 1 . comme au chapitre 5. On peut définir cette façon de coder en disant qu’on associe à chaque entier n la nième suite binaire dans l’ordre lexicographique généré par la taille des suites. Ks (x) est la longueur minimale du programme écrit en langage S permettant 1. C’est ce qui pour nous définira un objet n qui suivant le contexte deviendra l’entier n ou une séquence binaire. . e . . 5 → 10 . 1 → 0 . 2 → 1 . 4 → 01 . si on considère un ensemble D = {xi : i = (1 · · · n)} d’objets énumérés par des nombres n(x). Rappel : limn→+∞ n! n 2πn ( n e) √ = 1 soit encore n ! ∼ √ 2πn n n .2 Notations Dans tout ce qui suit dans ce chapitre. Une fonction f est dite universelle (ou additivement optimale) sur K si f ∈ K et ∀g ∈ K il existe une constante cf. Définition 17.e.2 (fonction de deux variables) Si on remplace x par hx.i : N × N −→ N applique la paire (x. On dira alors qu’un langage S absorbe ou domine (linéairement) un langage S0 avec une précision de c si on a : ∀x. S2 . . . y) sur un singleton hx.g est une constante positive ne dépendant que de f et g. Considérons différents langages S1 .i est la fonction récursive bijective standard 1 . alors on définit ainsi une classe de fonctions à deux variables. . yi où h. l’intérêt est d’avoir une hiérarchie pour laquelle la classe minimale est unique. cf. . g spécifiant des objets de k sont dites équivalentes si et seulement si : |Kf (x) − Kg (x)| ≤ cf. méthodes) par rapport à la propriété de dominance linéaire.g ∀x. KS (x) ≤ KS0 (x) + c Deux langages S1 et S2 sont dits c-équivalents s’ils s’absorbent mutuellement par une constante c. .g . yi. la complexité optimale d’un objet ne dépend pas du langage dans lequel il est exprimé.g dépend de f et g mais pas de x.1 (fonction universelle) Soit K une classe de fonctions sur N . . .g telle que ∀x. Ksr (x). il est alors facile de construire un nouveau langage S donnant pour chaque objet x de D.2. Kf (x) ≤ Kg0 + cf. ou cf. . Sr de spécification des objets dans D. C’est-à-dire h.2. 1. .276 Complexité et Algorithmique avancée de générer x. une complexité KS (x) telle qu’elle ne dépasse que d’une constante c de même ordre de grandeur que log r le minimum des complexités KS1 (x). Si on considère la hiérarchie des classes d’équivalence des langages (i. Deux méthodes additivement optimales f. Définition 17. c’est la classe d’équivalence des langages de description qui domine tout autre langage de description. On en déduit que d’un point de vue asymptotique. KS2 (x). Ceci peut aussi s’écrire f0 (hn. une énumération de machines de Turing particulières T1 .Chapitre 17. T2 .2. De Shannon à Kolmogorov 17. Soit la classe des langages ou méthodes de description. On peut alors énoncer le lemme suivant : Lemme 17. définie par : {f : f est une fonction partiellement recursive} La définition 17.1 Soit f0 une fonction calculée par une machine de Turing universelle U. comme au chapitre 4. Une généralisation de ce qui précède est la complexité conditionnelle.|n| + 1. La première partie 11 · · · 11 représente le codage de la machine de Turing particulière Tn et la deuxième partie est le programme (le schème de Tn ) p proprement dit. pi) = fn (p). Ainsi la machine U simule l’exécution du programme p par la machine Tn . Etant donnée. Par convention nous écrirons U = T0 et donc aussi U(0p) = U(p). pi = |11 ·{z · · 11} 0 np |n| f ois Comme vu au chapitre 4 ce programme hn.2.1 nous dit qu’il existe une fonction qui est dite universelle (ou additivement optimale) pour une classe de fonctions. c’est la complexité de l’objet x étant connue celle de l’objet y.1 Il existe une fonction récursive partielle universelle.2. 1. Λ} le programme est constitué d’une suite ininterrompue de 0 et de 1 délimitée à droite et à gauche par .2.1 277 Le théorème d’invariance Le théorème d’invariance est la pierre angulaire de toute la théorie de Kolmogorov. on a alors : Kf0 (x) ≤ Kfn (x) + cfn . L’information entrante sur le ruban de U. Preuve 17. c’est à dire le programme que U devra effectuer sera de la forme : hn. si Tn exécute la fonction partiellement récursive fn . · · · qui ont pour alphabet externe {0. Ainsi. cfn ≈ 2. pi est composé de deux parties. y) sur un singleton hx. Théorème 17. Un ruban résultats et un ruban de travail. Λ). et on a alors h. yi. Preuve 17.ii : N × N × N −→ N et donc finalement (x. z) = hx. p. 1. Kf0 (x|y) ≤ Kf (x|y) + cf et cf ne dépend ni de x ni de y. y. il n’y a pas perte de généralité à considérer trois symboles. Soit f0 la fonction partiellement récursive universelle calculée par la machine de Turing universelle notée U.2. f2 . mais de f . A l’énumération des machines T1 . dite complexité conditionnelle de x eu égard à y est définie par : Kf (x|y) = min{|p| : f (hy. Ici. Définition 17. ce qui permet à la machine Tn considérée de détecter le début et la fin du programme 1 . y. pi) = x est une description de x. } p est un programme de calcul de x étant donné y. composée de deux rubans d’entrée.2. hy. pour toute autre fonction récursive partielle f . p ∈ {0. 1}∗ . pi) = x. alors Kf (x|y) = ∞. · · · de telle manière que la machine Ti exécute la fonction fi .i : N × N −→ N est une bijection standard d’une paire (x.1 (Invariance ) Il existe une fonction récursive partielle f0 telle que.e.278 Complexité et Algorithmique avancée des blancs (i. Soit n(T) le nombre associé à la machine de Turing T (voir chapitre 5). · · · doit être associée une énumération des fonctions partiellement récursives qu’elles exécutent f1 . zii = hx. h. T2 . l’un ordinaire et l’autre contenant des informations dites conditionnelles. y. mais pour l’exposé. Ceci étant. U démarre avec une entrée 0n 1p. zi.3 (Complexité conditionnelle) Soit des nombres entiers x.2 Considérons une machine de Turing à quatre rubans. La complexité Kf de x par rapport à y. il existe une constante cf telle que pour toutes séquences x.h. et si p n’existe pas. il est plus simple d’en considérer trois. on peut toujours se ramener à deux. Comme ci-dessus. Toute fonction f semi-récursive telle que : f (hy.2. y . . On peut généraliser la démarche avec des triples. Au chapitre 4 on n’avait utilisé que les deux symboles 0 et 1 dans l’alphabet extérieur pour montrer que c’est possible. 2. et de même pour exécuter un programme ADA depuis Pascal. Énumérons tous les programmes corrects syntaxiquement. et y sur l’autre. Tout programme syntaxiquement correct é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 le résultat est celui obtenu par exécution du programme. il faut utiliser ada∗ ∈ ADA∗. De Shannon à Kolmogorov 279 sur le ruban d’entrée ordinaire. soit PASC∗ = {pasc1 .4) où |ada∗| et |pasc∗| sont des constantes. ∀x (17. on aura : KADA (x) ≤ KPascal (x) + 2. Par conséquent. par exemple ADA et Pascal. on peut écrire un compilateur ADA en Pascal. Par conséquent : |KADA (x) − KPascal (x)| = 2. soit pasc∗ ∈ PASC∗. · · · } la liste de tels programmes. La complexité de Kolmogorov inconditionnelle de x se définit alors comme K(x) = K(x|Λ) où Λ est la séquence binaire vide (i. si on énumère tous les programmes syntaxiquement corrects en Pascal. Il existe parmi ceux-ci un programme ada∗ qui compile tout programme Pascal. · · · }. et on a donc du point de vue complexité : KPascal (x) ≤ KADA (x) + 2. pasc2 . nous pouvons définir une machine de référence U comme dans la preuve ci-dessus et sa fonction f0 associée et alors parler de K indépendamment de son indice. ada2 . On définit alors la complexité de Kolmogorov conditionnelle K(x|y) de x sous la condition y comme étant égale à Kf0 (x|y) pour cette fonction f0 optimale fixée. De même. soit : ADA∗ = {ada1 .e.|ada ∗ |. Il suffit alors de prendre cf = n + 1 pour terminer la preuve. les tailles des compilateurs. exprimées en nombres de symboles des langages de programmation.(|ada ∗ | + |pasc ∗ |). Mais pour exécuter un programme en Pascal depuis ADA.1 Considérons deux langages de programmation. s’arrête avec x sur le ruban de sortie pour n(T) = n.|pasc ∗ | .Chapitre 17. Exemple 17. |Λ| = 0). U s’arrête avec x sur le ruban résultats si et seulement si T démarrant avec une entrée p sur le ruban d’entrée ordinaire et y sur l’autre. écrits en ADA. . Ainsi toute fonction f0 qui satisfait au théorème d’invariance est optimale au sens ci-dessus. tout objet x. 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émentaire sur U. T1 . le compilateur pascal écrit en ADA est une donnée pour la machine de Turing élémentaire qu’est le compilateur ADA. On remarquera ici que la machine de Turing élémentaire est une donnée pour la machine de Turing universelle et que la donnée de la machine de Turing élémentaire pourrait très bien être un programme.6) on peut coder x par une machine de Turing élémentaire traduisant 14 (de la base 10) en se référant au codage du chapitre 4 pour l’alphabet extérieur d’une machine de Turing universelle. toute séquence binaire finie.2. Pour la machine de Turing universelle de référence. c’est-à-dire pour ce qui nous concerne. L’interprétation de K(x) comme étant le code minimal en deux parties de x.1. . Ainsi dans l’exemple 17. la longueur du plus petit programme p (au sens du nombre de caractères de l’alphabet extérieur utilisés) qui génère x est donnée par min{|p| : U(p) = x}.280 Complexité et Algorithmique avancée Le théorème d’incompressibilité nous dit que si on considère la machine de Turing universelle. 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 .1 on a vu que : U(0|p) = U(p). C’est ce qui a conduit dans les ordinateurs à ne pas distinguer une mémoire pour les programmes d’une mémoire pour les données. Dans l’exemple suivant : x = 1000000110000000000001 (17.5) Cette écriture souligne le fait que la nature de la complexité de Kolmogorov est liée à un code en deux parties. la seconde partie du code étant la donnée 1 qui doit être traitée par la dite machine de Turing élémentaire. La première partie est "le programme" qui code la machine de Turing élémentaire qui permet de générer x. · · · }} + O(∞) (17. doit être décrite en un code comportant deux parties.2. mais dans la preuve du lemme 17. soit U cette machine. une partie décrivant la machine de Turing élémentaire. aussi appelée le modèle pour les aspects "réguliers" de x 1. 2. C’est l’outil principal permettant d’estimer les bornes maximales pour K(x). On peut interpréter ceci en disant que la partie "modèle" de x constitue la partie signifiante de x (c’est-à-dire celle qui contient toute l’information) et que l’autre partie est ce qui reste.3 La première partie du théorème. Preuve 17. Ces bornes supérieures dépendent du choix de la fonction f de référence et diffèrent l’une de l’autre par une constante additive.2 Ne pas dépasser les bornes Le théorème 17. ∀y. considérons une machine de Turing élémentaire T telle que pour toute donnée hy.e.1 montre que la hiérarchie Kf des mesures de complexité de Kolmogorov en contient une qui est additivement optimale. En effet. · · · }} (17.2. K(x) ≤ |x| + c etK(x|y) ≤ K(x) + c. De Shannon à Kolmogorov 281 et la seconde partie.7) T contient alors toute l’information utile de x. à savoir K(x) ≤ |x| + c est évidente. T1 . Biens sûr celà 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 .2. Intuitivement. décrivant les aspects "irréguliers"de x sous forme d’un programme exécuté par T a une signification profonde.2 ∃c ∈ N : ∀x. on admettra évidemment que la complexité de Kolmogorov (désormais K-complexité) d’une séquence binaire ne saurait être supérieure à la longueur (i. au nombre de bits) de la dite séquence.2.Chapitre 17. La question restant en suspend étant comment trouver T parmi toutes celles capables d’exécuter x ? 17. D’où le théorème suivant : Théorème 17. Pour la seconde partie du théorème. zi. soit T une machine de Turing élémentaire qui se contente de recopier la donnée. elle calcule x si et seulement si la machine universelle de référence U fournit le . la K-complexité pour la machine T : KT (x) = |x|. on a alors. 3 Compressibilité et incompressibilité Une application essentielle de la complexité de Kolmogorov est liée à la propriété de compressibilité. . il existe une constante c telle que : K(x|y) ≤ KT (x|y) + c = K(x) + c.2. Il s’ensuit que pour toute valeur n ∈ N . . 17. et elle est alors dite incompressible.i i. quelle que soit la valeur de n ∈ N ∗ il y a une séquence x telle que : |x| = f (n) mais avec K(x) ≤ n + c. De telles séquences sont dites trés compressibles. Ainsi par exemple 22 peut s’écrire de façon plus synthétique f (1) = 2 et f (i) = 2f (i−1) pour i > 1. qu’elles mêmes.8) i=0 admettent une description plus courte. où C(x) est la compression de x. que suivant la nature de i..2. il existe une constante c telle que . Considérons f (i) = ii et les fonctions du type 2f (i) avec i ∈ N ∗ . c’est elle qui permet d’optimiser la compression de données sans pertes. C’est-à-dire. on constate couramment qu’il existe des séquences qui peuvent être décrites par des programmes plus courts . c’est-à-dire 2n − 1. on a KT (x|y) = K(x). Alors. Il y a 2n séquences binaires possibles de longueur n. i=n X 2i (17.1. il y a une autre séquence binaire x telle que |x| = n et C(x|y) ≥ n.2 2. Il est trivial de dire qu’il y a des séquences qui peuvent être décrites par des programmes de longueur plus courtes qu’elles mêmes sur une machine de Turing universelle. et par le théorème 17. i. En particulier. et toute séquence binaire y.. Pour toute fonction récursive f de ce type. f (i) le ratio de la longueur de la séquence x sur la longueur de sa description peut croître aussi rapidement que la fonction récursive elle-même. et il y en a au moins une telle que C(x) ≥ n. D’où la définition : .282 Complexité et Algorithmique avancée résultat x pour la donnée hz. et parmi celles-ci. ) . – . – c=1 ... c’est-à-dire qu’une séquence de longueur n sur deux au moins est 1-incompressible . c’est-à-dire c-incompressible 1 avec c aussi petit qu’on veut sera. Conformément à 17. 2n − 2n−0 + 1 il y a au moins une séquence de longueur n qui est 0-incompressible. ∀y ∈ N ∗ . D’où le théorème : Théorème 17. soit pour : – c= 0 . 2n − 2n−2 + 1 .3. Dans un premier temps donc. c’est-à-dire aléatoire .2. il n’y a qu’une seule séquence n-incompressible.4 (Séquence c-incompressible) Pour une constante c. i=0 Il y a donc au moins m − m. A : |A| = m} =⇒ {m.(1 − 2−c ) + 1} éléments de A au moins sont tels que C(x|y) ≥ log m − c. Preuve 17. intuitivement. De Shannon à Kolmogorov 283 Définition 17.2. Il faut bien comprendre ce que signifie ici c-incompressible.2c + 1 éléments de A qui n’admettent pas de programme de longueur inférieure à log m − c. – c= n . 1. dite aléatoire puisqu’elle n’admet pas d’autre représentation qu’elle même. on dira qu’une séquence x est c-incompressible si et seulement si C(x) ≥ |x| − c. Ainsi dire qu’une séquence de longueur n est 1-incompressible c’est dire qu’il n’existe pas de représentation d’elle-même de longueur égale ou inférieure à n − 1 (voir théorème 17.2. – c=2 .Chapitre 17.8 il y a donc 2n − 2n−c + 1 séquences binaires c-incompressibles. on considérera comme aléatoire toute séquence binaire qui n’admet d’autre représentation qu’elle même.3 (Incompressibilité) {∀c ∈ N ∗ . 2n − 2n−1 + 1. Une séquence incompressible.2.4 Le nombre de programmes de MTU de longueur inférieure à log m − c est donné par la formule : log m−c−1 X 2i = 2log m−c − 1. 2. La raison profonde en est que comme il y a relativement peu de programmes courts pour générer une suite de n bits. 17.3 fournissent les outils principaux pour aborder pratiquement les problèmes de compression des données et programmes.3 dit que cette estimation rapide est assez bonne. 17.2. considérons l’ensemble E formé de toutes les séquences de longueur n sur un alphabet donné ({0. il y a peu d’objets de faible complexité. Le théorème ci-dessus 17.2.284 Complexité et Algorithmique avancée Ainsi. E = {x | |x| = n} la cardinalité d’un tel ensemble est : m = 2n . 1} en l’occurence) .2. . On a une estimation de la complexité K(x) ≤ n + c pour c fixé quel que soit x dans E.2.2. Remarque 17.1 Ces trois théorèmes 17.1. En tous cas. Celà signifie que l’enjeu est de construire un modèle théorique qui "en fasse plus" que ce que peut faire une machine de Turing. Le modèle de calcul MTU est un modèle totalement abstrait qui a fondé l’informatique comme science. . C’est ce que nous allons essayer de faire dans ce qui suit. C’est à partir de cette abstraction qu’on a construit les ordinateurs. Comme nous l’avons vu. Par un de ces retournements dont la dialectique a le secret. mais ici il s’agit de pratique théorique car les moyens de calcul dont il est question ici n’existent pas et on ne sait s’ils existeront un jour. Tout au plus peut-on l’espérer ou le redouter. on pourrait penser que c’est aujourd’hui l’inverse qui se produit avec le modèle quantique.1 Introduction ’un des problèmes majeurs posé à la recherche en informatique L est de "dépasser" le modèle de Turing. C’est à partir de la pratique que le modèle théorique est remis en cause. Certes. et qui fasse au moins tout ce que fait une machine de Turing. un esprit scientifique ne saurait laisser passer cette éventualité sans en étudier les possibles. la MTU est une machine à états discrets bien déterminés et représentables en logique et algèbre de Boole.Chapitre 18 Le modèle quantique 18. 3) Ou encore : |00i. |1i2 . |1i (18.1) L’exécution d’un calcul nécessite en général plus d’un Cbit. |0i|1i. par omission de ⊗ |0i|0i.5) Dans l’écriture ci-dessus (18.4) On peut également utiliser une notation décimale : |0i2 . |0i ⊗ |1i. |11i (18. |1i|0i. |10i. on 1.5). Aux fins d’homogénéisation de nos notations nous allons utiliser les notations de Dirac pour les Cbits comme pour les Qbits. |1i ⊗ |1i (18.2 Complexité et Algorithmique avancée Retour sur les bits classiques . Par généralisation de cette notation décimale. nous noterons Cbits les bits classiques que nous connaissons bien.Cbits Dans ce chapitre. Il est alors utile et naturel de systématiser la notation précédente pour représenter les quatre états d’un système à deux Cbits par quatre vecteurs orthogonaux formés par le produit tensoriel (ou produit de Krönecker) de deux telles paires (on travaille alors dans un espace de dimension 4). Nous devons ici remercier D. Mermin qui les introduit de préférence à qubit. . Mermin qui nous a permis d’utiliser son article [Mer03]. |01i. |3i2 (18. |2i2 . à deux états {0. Nous avons repris ces notations dans cet ouvrage. Les notations Cbit et Qbit sont dues à David N. |1i|1i (18. les trouvant à la fois plus concises et plus explicites.286 18. Signalons également un ouvrage entièrement consacré à l’informatique quantique [NC04]. |1i ⊗ |0i.2) On trouve aussi une écriture équivalente plus concise. 1} et Qbits voir [Mer03] 1 les unités d’information quantique que nous allons à présent étudier. Les deux états d’un Cbits sont alors représentables par une paire de vecteurs orthogonaux de dimension 2 notés : |0i . l’indice 2 indique la dimension du vecteur en cause. |0i ⊗ |0i. c’est-à-dire : |xin . 0 ≤ x < 2n (18.z1 (18.8) Et évidemment. Ainsi. Il faut remarquer ici que cette notation a pour but d’homogènéiser la notation avec le calcul quantique pour lequel l’état de chaque photon est en fait une superposition d’états : |θi = cos θ| →i + sin θ| ↑i . Le modèle quantique 287 représente l’état d’un vecteur de n Cbits comme étant un vecteur en dimension 2n .9) 1.6) qui est le vecteur induit par le produit tensoriel de n paires orthogonales de vecteurs orthogonaux de dimension deux.z0 y1 .z1 y1 . les vecteurs correspondants dans le produit tensoriel sont obtenus de la façon suivante : y0 . Pour revenir à une notation plus classique. |1i ←→ 0 1 (18. on peut maintenant représenter ces Cbits par des vecteurs colonnes classiques 1 : |0i ←→ 1 0 . on obtient : |18i6 = |010010i = |0i|1i|0i|0i|1i|0i = (18.z0 y0 .7) |0i ⊗ |1i ⊗ |0i ⊗ |0i ⊗ |1i ⊗ |0i Le produit tensoriel est une façon bien appropriée de représentation des états possibles d’un système à plusieurs Cbits. z0 ←→ y1 z1 y0 .Chapitre 18. e.y1 . excepté l’opération de "mesure" que nous décrirons plus .11) ci-dessus. 0 ←→ z1 y1 x1 x0 .y0 .z1 (18. 18. |6i3 se note par le vecteur de dimension 8 (i.y0 . 0 .|1i.1 0.0.y1 .3 Opérations sur les Cbits En calcul quantique.y0 .|0i = 0. C’est une conséquence générale de la notation standard du produit tensoriel.z0 x0 .1.z0 x1 .0 1.z1 x1 .1.z1 x0 .11) Comme on peut le voir sur la formule (18.0 0.0.1 1. de dimension 23 ) avec un 1 à l’élément d’indice 6.0.0 1.1 0. l’avantage de cette forme est d’être homogène avec la représentation vectorielle du Cbit telle qu’elle est donnée par les formules 18.z1 x1 .z0 x0 .1.0.10) Par exemple le vecteur de dimension 8 représentant |6i3 est obtenu par : |6i3 = |110i = |1i.8.288 Complexité et Algorithmique avancée et z y x 0 .y1 . toutes les opérations sur les Qbits sont réversibles.y0 .1.z0 x1 .1 1.0 = 0 0 0 0 0 0 1 0 0 1 2 3 4 5 6 7 (18.y1 . les opérations réversibles sont moins évidentes. Ne rien faire. . l’inversion classique en algèbre de Boole. .x3 + 4. On peut définir l’opération d’échange des valeurs (opérateur swap notée S) : S|xyi = |yxi.Chapitre 18. 1. pour un seul bit. Flip.16) Et est décrite comme : X2 [|x3 i ⊗ |x2 i ⊗ |x1 i ⊗ |x0 i] = |x3 i ⊗ [X|x2 i] ⊗ |x1 i ⊗ |x0 i (18.13) 2.14) Lors de la manipulation d’opérations multi-Cbits. Il n’y a que deux opérations réversibles portant sur un seul Cbit. il est recommandé d’avoir une bonne vision de ce qui se passe pour chacun des états générés par l’opération sur chacun des Cbits. .15) Une opération qui concerne le Cbit n˚ 2 sera notée X2 et définie comme suit : X2 = 1 ⊗ X ⊗ 1 ⊗ 1 (18. .x1 + x0 alors on a : |xi4 = |x3 x2 x1 x0 i = |x3 i|x2 i|x1 i|x0 i = |x3 i ⊗ |x2 i ⊗ |x1 i ⊗ |x0 i (18. définie par : En fait c’est. de droite à gauche en associant ces index à la puissance de 2 représentée par chaque Cbit. X|1i = |0i (18. d’opérateur 1 : 1|0i = |0i.x2 + 2. Le modèle quantique 289 loin. Cette opération de mesure est triviale sur les Cbits et n’est pas reconnue comme une opération à part entière. (18. Lorsqu’il s’agit de deux Cbits. 2. On indexe les Cbits par les entiers 0.12) X|0i = |1i. 1|1i = |1i (18. Ainsi. 1. si x s’écrit en extension binaire : x = 8. ou l’opération identité.17) . y ∈ {0. Ainsi en est-il des opérations 12 (1 + Z1 Z0 ) et 12 (1 − Z1 Z0 ) portant sur des 2-Cbits. à savoir 0 et 1. 1}. en dehors de l’aspect pratique de la structure ainsi introduite par la représentation en vecteurs colonne du produit tensoriel. l’utilisation d’un espace vectoriel de dimension 2n peut sembler superfétatoire dès lors qu’on ne s’intéresse qu’à un seul ensemble des 2n vecteurs de la base orthonormée. Ainsi. De plus. les états possibles des combinaisons linéaires des vecteurs Cbits forment un espace vectoriel largement sous-utilisé. qui est bien définie dans un espace vectoriel de 1-Cbits (voir 18. une opération a priori non signifiante comme Z définie en 18.9) de dimension 2 n’a pas de sens dans le contexte des Cbits. Z|1i = −|1i (18.18 . mais qui soient correctes formellement. on peut définir l’opération suivante : Z|0i = |0i. Seuls les deux vecteurs |0i et |1i ont une signification. utilisée en conjonction avec une autre tout aussi a priori non-signifiante peut permettre des opérations très signifiantes dans un contexte multi-Cbits. {{x = y} ⇒ { (1 + Z1 Z0 [|xi|yi] = 2 = |xi|yi} ∧ {{x = 6 y} (18. Par exemple.290 Complexité et Algorithmique avancée On peut élaborer des opérations multi-Cbits significatives qui ne soient pas déduites d’opérations sur des Cbits seuls et qui n’ont a priori pas d’interprétation dans un environnement classique.18) Cette opération. Les seules opérations réversibles signifiantes sur n Cbits sont les (2n )! permutations des 2n vecteurs de base. Toutefois. 1 ∀x. laquelle est la distinction entre les deux seuls états possibles.19) 1 ⇒ { (1 + Z1 Z0 [|xi|yi] = 0}} 2 et pour 12 (1 − Z1 Z0 ) : . {{x 6= y} ⇒ { (1 − Z1 Z0 [|xi|yi] = 2 = |xi|yi} ∧ {{x = y} (18. Un autre exemple important d’opération 2-Cbits est le controle-non ou XOR réversible : C10 |xi|yi = (X10 )x |xi|yi = |xi|y ⊕ xi (18.Chapitre 18. Le modèle quantique 291 1 ∀x. si et seulement si le Cbit 1 (dit Cbit de contrôle) est à la valeur 1.22) L’opérateur ⊕ note l’addition modulo 2. 1}. y ∈ {0.20) 1 ⇒ { (1 − Z1 Z0 [|xi|yi] = 0}} 2 Ces deux opérateurs sont des opérateurs de projection de l’espace vectoriel couvert par tous les états possibles des 2-Cbits.21) = L’opération S10 qui échange les valeurs des Cbits 1 et 0 se comporte comme l’identité si leurs états sont |00i ou |11i et comme l’opérateur X1 X0 si les états sont |01i ou |10i . toute opération dont l’action n’est définie que sur les états de base classiques peuvent être identifiés avec leur extension linéaire dans tout l’espace vectoriel. On peut étendre cette opération au-delà des projections 1-Cbits. (18. 1 1 1 C10 = (1 + Z1 ) + X0 (1 − Z1 ) = (1 + Z1 + X0 − X0 Z1 ) (18. L’opération C10 inverse (débloque) le Cbit 0 (dit Cbit verrou). Les opérateurs de projection sont les extensions linéaires des vecteurs dans l’espace.23) 2 2 2 . à partir de la base sur laquelle ils sont définis. Plus généralement. Considérons l’opérateur S10 : S10 1 1 (1 + Z1 Z0 ) + X1 X0 (1 − Z1 Z0 ) 2 2 1 ou S10 = (1 + Z1 Z0 ) + X1 X0 − Y1 Y2 2 avec Y = XZ. 25) Or on a aussi : Il s’ensuit que : 1 H2 = (X + Z) = 1. 2 2 1 −1 (18.292 Complexité et Algorithmique avancée Cette opération possède une symétrie intéressante .27) En utilisant quatre fois une opération de type Hadamard.24) X2 = Z2 = 1 et XZ = −ZX (18.1 Transformation de Hadamard Une opération classique et qui elle aussi semble sans signification à première vue. on convertit C10 en C01 .4 Les bits quantiques ou Qbits On a représenté ci-dessus les états de n Cbits comme une base de 2 vecteurs orthonormés dans un espace vectoriel de dimension 2n construit comme étant le produit tensoriel de n vecteurs de l’espace à 2 dimensions. c’est la transformation dite de Hadamard qui se définit comme suit : 1 1 1 1 H = √ (X + Z) = √ .26) Et donc aussi : HXH = Z et HZH = X (18. 2 HX = (X + Z)X = Z(X + Z) = ZH (18. Nous n . on peut exécuter une transformation classique et très utile. 18. qui est d’interchanger les rôles des Cbits de contrôle et de verrouillage : C01 = (H1 H0 )C10 (H1 H0 ) 18. Les seuls opérations signifiantes a priori sur ces espaces vectoriels sont les permutations des vecteurs de base. mais qui va s’avérer très pratique.3. en échangeant les opérations X et Z on échange également le rôle des Cbits verrou et contrôle. Ainsi.31) Ceci peut se comprendre comme un état pour lequel le Cbit n˚1 est dans l’état |x1 i et le Cbit n˚ 2 est dans l’état |x0 i chaque Cbit a un . L’introduction des bits quantiques ou Qbits est en fait une extension de la notion d’état des Cbits.24) opèrent des combinaisons linéaires non triviales. ou mis en évidence des relations entre elles en introduisant des opérations a priori non signifiantes qui multiplient les vecteurs de base par des scalaires (en particulier 0 ou −1) ou (voir 18.|0i + β. L’état le plus général possible pour deux Cbits est de la forme : |Ψi = |x1 i|x0 i (18.29) 0≤x<2n Les amplitudes complexes étant contraintes par la condition de normalisation généralisée : X |αx |2 = 1 (18. Ainsi. Le modèle quantique 293 avons pu construire de telles opérations.28) Les amplitudes α et β sont des nombres complexes contraints par la relation de normalisation.|1i avec α2 + β 2 = 1 (18. la forme la plus générale pour l’état de n Qbits est donnée par : X |Ψi = αx |xin (18. On passe de la base classique des 2n états orthogonaux à des vecteurs unitaires arbitraires de l’espace vectoriel de toutes les combinaisons linéaires (appelées superpositions) des états de base classiques avec des coefficients complexes (appelés amplitudes).30) 0≤x<2n Étendre ainsi l’ensemble des états possibles de la base classique de vecteurs unitaires orthonormés à des vecteurs unitaires arbitraires de l’espace couvert par la base classique introduit la différence fondamentale entre Cbits et Qbits. L’extension consiste en l’utilisation de tout l’espace des vecteurs. l’état général d’un simple Qbit est-il la superposition de deux états de base classiques : |ψi = α.Chapitre 18. |0i). Ainsi dans un état d’un multi-Qbit.|0i) = α.30.γ. Entangled en anglais.|1i + β. l’état le plus général pour 2 Qbits est de la forme : |Ψi = α3 |3i2 + α2 |2i2 + α1 |1i2 + α0 |0i2 = α3 |1i|1i + α2 |1i|0i + α3 |0i|1i + α3 |0i|0i (18. le produit tensoriel de ceux de deux états de 1-Qbits.(γ.δ. Les ingrédients de base d’un algorithme quantique sont les opérateurs unitaires sur l’espace 1.γ.|0i|0i (18.δ. C’est là le distingo essentiel des Qbits d’avec les Cbits.|1i|0i + β. 18.|0i|1i + β.29 et 18. conformément à la règle sur la généralisation sur les états des multi-Qbits. Ainsi les états génériques des n-Qbits sont emmélés (imbriqués). Les opérateurs qui préservent la norme sur un espace vectoriel complexe sont les opérateurs unitaires.294 Complexité et Algorithmique avancée état qui lui est propre.|1i + δ.33) Mais l’état |Ψi de l’équation 18. Les états des de n Qbits dans lesquels aucun sous-ensemble inférieur à n n’a d’état propre sont dits emmélés ou empétrés 1 . Les états des n-Qbits sont obtenus par produit tensoriel d’états de moins de n-Qbits dont les amplitudes doivent satisfaire des contraintes comme exprimé dans les expressions 18. De la même façon.5 Opérations sur les Q-bits Les algorithmes quantiques opèrent sur les états des n-Qbits en respectant la condition de normalisation 18.29 ne peut avoir cette forme que si α3 α0 = α2 α1 .32) Si chaque Qbit a un état qui lui est propre. cet état d’un 2-Qbit sera. il n’e peut y avoir d’état individuel propre à chaque Qbit. Ainsi un état d’un 2-Qbit aura la formegénérale : |ψi|φi = (α.30.|1i|1i + α. . Le passage des Cbits aux Qbits ouvre des perspectives absolument nouvelles et quasi infinies. Tout ceci nous amène à un niveau de possibilités de calcul insoupconné et complètement nouveau. . on ne dispose d’aucun moyen pour identifier cet état. Les états classiques et opérations représentent alors un sous-ensemble (petit) des états quantiques et des opérations associées. alors. les coefficients α et β satisfassent à la condition de normalisation (voir 18. Le modèle quantique 295 complexe de dimension 2n : |Ψi −→ U|Ψi. 0 ou 1. Étant donnés n Qbits dans un état |Ψi. au lieu que les Cbits soient limités dans une collection d’états obtenus par permutations. En effet. les permutations des 2n vecteurs de base classiques. sont des cas spéciaux de tels opérateurs. de la base sur laquelle elles sont définies à la totalité de l’espace. alors la généralisation à n bits quantiques se fait naturellement : les états des Qbits consistent en toutes combinaisons linéaires complexes satisfaisant à la condition de normalisation et toutes les opérations réversibles qu’on peut exécuter sur ces Qbits consistent en toutes les opérations unitaires.Chapitre 18.34) Les opérations classiques et leurs extensions linéaires.29. Et. à la seule condition que les amplitudes associées. Tout cela serait trop beau s’il n’y avait une difficulté majeure là où un informaticien habitué à la manipulation des Cbits ne l’attend pas.30).28). c’est-à-dire pour connaître les coefficients αx de la formule 18. on peut agir sur les Qbits par une suite continue de transformations unitaires. c’est-à-dire pour extraire l’information qui y est associée . U unitaire (18. Si on considère les 2n états de n bits classiques comme les 2n vecteurs de base orthonormés |xin dans un espace vectoriel luimême de dimension 2n . et les opérations réversibles sur les Cbits comme de simples permutations sur ces vecteurs de base. Le problème majeur est effectivement lié à la difficulté dans laquelle on se trouve d’identifier l’état d’un Qbit donné. si le nombre d’états d’un Cbit est spécifié par un simple bit d’information. l’état d’un Qbit peut prendre une infinité de valeurs conformément à l’expression d’un Qbit ( voir expression 18. Si on dispose de n Qbits en l’état |xin "lire" le nombre x pose un problème majeur. par des mesures répétées on peut obtenir une bonne statistique de répartition des magnitudes |αx | mais cette possibilité est écartée par la deuxième règle fondamentale : Règle 18. Mesurer n-Qbits consiste a les confronter à un appareil qui produit un entier x : 0 ≤ x < 2n .34 de |Ψi. où αx est l’amplitude de |xin dans l’expansion 18.6. d’un octet ou d’un mot.6 Complexité et Algorithmique avancée Extraire l’information des Qbits ? C’est sans doute là. Les choses sont très différentes pour les Qbits. . Le rapport entre l’état |Ψi d’un Qbit et la valeur de x fournie par la mesure est le suivant : La probabilité d’obtenir x est juste px = |αx |2 . c’est bien celui qui consiste à en lire l’état. l’obstacle majeur auquel on est confronté dans l’utilisation des Qbits. d’un écran ou d’une impression sur imprimante suffit le plus souvent à connaître l’état d’un Cbit. Dés lors que l’ordinateur a fini de travailler sur des Cbits. La simple lecture d’une diode. leur état |xin reste stable tant qu’on n’y touche pas. Soient n Qbits en l’état : X |Ψin = αx . c’est de les mesurer. La mesure de l’état de n Qbits est irréversible : Chaque état Ψn d’amplitude positive αx peut devenir l’état |xin après mesure. Cette valeur est connue sous le nom de règle de Born d’après le nom du physicien Max Born. hors la réalisation physique d’un ordinateur quantique.296 18.|xin (18. On pourraît penser que. L’état après mesure ne contient aucune trace de l’information contenue dans l’état |Ψi précédant la mesure. Il n’en va pas de même avec les Qbits.35) x Il n’y a pas moyen de connaître la valeur de l’amplitude αx .1 Une fois donnée la valeur de x par la mesure. l’état des n Qbits n’est plus de longueur |Ψin . mais |xin . La seule façon dont on dispose pour extraire l’information des Qbits. S’il est un problème qui ne se pose pas avec les Cbits. 0 ≤ x < 2n P P Cbits/Qbits Sous-ensemble de n Cbits/Qbits Opérations réversibles sur les états Lecture possible de l’état ? Acquisition d’information Qbits Toujours signifiant Permutations αx |xin . nouvel |xi . Toutes les autres opérations sont unitaires. Récapitulatif des possibilités de manipulation des Cbits et des Qbits Cbits versus Qbits Cbits État pour n |xin . La mesure est LA SEULE opération irréversible sur les Qbits.Chapitre 18. |αx |2 = 1 Généralement sans signification Transformations unitaires OUI NON Lecture simple Mesure physique Nature de l’information acquise x x avec probabilité |αx |2 État après acquisition d’information Le même |xi Différent . Le modèle quantique 297 Il n’y a aucun moyen de reconstituer l’état initial à partir de l’état final. . g deux fonctions à valeurs réelles ou complexes définies sur E.1 Les symboles grand O Ω. qu’on appelle aussi taille d’un codage . f (n) et g(n) étant des fonctions de complexité (voir [GJ79]) à valeurs positives.Annexe A Notations de Bachman-Landau i E est un ensemble quelconque et f . où n est la taille d’une donnée. Θ grand O concerne des fonctions de R sur R et est défini de la manière suivante : {f (x) = O(g(x))}⇔{∃λ ∈ R∗+ . ce qui s’é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. on définit des symboles et notations utiles pour caractériser le comportement asymptotique de f et g. |f (x)| ≥ λ|g(x)|} En particulier. ∃r ∈ R|∀x≥r. S A. 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 < +∞ . On peut définir alors : 1. Il s’agit donc d’une propriété plus forte que celle du symbole O .1 Le symbole petit o L’expression f (x) = o(g(x))(x → +∞) signifie que le rapport tend vers 0 quand x → +∞.1. (∃λ ∈ R∗+ ) f (n) ≤ g(n) pour toute valeur de n. sauf peut être pour un ensemble fini (éventuellement vide). on a toujours : f (x) g(x) {f (x) = o(g(x))} ⇒ {f (x) = O(g(x))} . en particulier. {f (n) = Θ(g(n))} ⇔ {f (n) = O(g(n))} ∧ {g(n) = O(f (n))} A.300 Complexité et Algorithmique avancée d’instance I d’un problème donné (ou encore longueur d’entrée). {f (n) = Ω(g(n))} ⇔ {g(n) = O(f (n))} 3. 2. f (n) = O(g(n)) si et seulement si. 3 Euler. 209 Kolmogorov. 209 Dédale. 5 K Kantorovitch. 11 Elissa . 299 Boltzmann. 242. 44. 133 H I Intuitionnistes. 3 Labyrinthe. 3 Chinois. 3 G C Hilbert. 9 Church. 12 Didon Elissa. 5 Bachman. 65 Cook. 133 Leibniz. 67 Goldstine. 27 Hoare. 57 Lévine. 269 Kruskal. 53. 242 D L Dantzig. 28. 11 Gödel. 11 Euclide. 239 Lebedev. 3 Chaïtin nombre de. 7 Algoristes. 3 Énéide. 244 Burk. 174 Lupanov.Index des noms cités A Al jabr. 194 F Frege. 52 Chine. 133 Crête. 40. 133 Byrsa. 11 B Didon. 23 E Ecco Humberto. 3 Al Khawarizmi. 5 Ariane. 3 Las vegas. 269 Borükva. 3. 239 Carthage. 299 Larba. 12 Landau. 9. 12 Athènes. 3. 174 Couffignal. 54 S Scribe. 28 Winograd. 9 Shannon. 9 T Tablette A06456. 269 Sherwood. 133 Trémeaux. 239 Michel Simmonard. 209 Tractatus logico-philosophicus. 12 Monte Carlo. 4 R Romains. 11 Séleucides. 54. 212. 3. 242 Pythagore. 230 Tolstoï. 226 Bertrand Russel. 11 Thésée. 65 Prim. 11 Vat 6505. 9 Bernard Roy. 27. 147 Minos. 5. 212 Peano.302 M Markov. 133 Nim. 11 Minotaure. 226 Simplexe. 230 P Pan. 213 Sumériens. 240 N Neumann. 21 Turing. 242 Straßen. 5 Y Yablonski. 11 Complexité et Algorithmique avancée tic-tac-toe. 212 Witgenstein. 133. 28 . 209 Sollin. 23 Z Zénon. 5 Trathenbrot. 65 Tyr. 3 W Weyl Hermann. 11 du PGCD. 49. 203 Las Vegas. 240 non-polynomial en temps. 226 . 29. 104 simple. 240. 111. 52 Case du ruban. 7 de l’équation quadratique. 5 Algorithme. 6 Alphabet. 6 Algorithme d’Euclide. 49 Calculateur universel. 30 extérieur. 3 efficace. 287 Calculabilité. 40 Calculateur. 227 Branch and Bound (B and B). 147 fini. 69 Calcul quantique. 21 du Labyrinthe. 20 probabiliste.Index des concepts et notions A Axiome de l’infini. 149 digital. 104 Cheval. 38 C Calcul. 20 glouton. 147 B Bachman Landau Notation. 226 Branchement de machine. 239 spécification. 135 Alphabet d’états. 3. 30 Automate. 21 notion naïve. 149 Circuit hamiltonien. 133 Automate de Markov. 44 Church-Turing. 7 de Trémeaux. 3. 120 Chiffre d’une configuration. 29 Cbits. 29 intérieur. 65 Circuit booléen. 71 Algèbre de Boole. 5 numérique. 104 Chemin. 30. 40 intérieur. 79 Algoristes. 104 Chemin élémentaire. 301 Bijection. 241 Monte Carlo. 9 polynomial en temps. 34 de mouvement. 69 Bornage. 288 Chaîne. 126. 25 de solution. 28 de calcul. 93 Classe P. 43 instance. 169 Classe N P idée intuitive. 271 en temps. 175 raisonnable. 280 définition.304 Complexité et Algorithmique avancée Circuits booléens. 132 de Kolmogorov. 119 minimale. 271 Complexité algorithme de Straßen. 194 Complexité de Kolmogorov. 104 Connexité forte. 25 Configuration machine de Turing. 44 raisonnable. 193 D Dérivation . 125 des problèmes N PC. 156 Clause. 202 Clique. 135 Coloriage de graphe. 25 de machine. 163 Couverture de cardinal minimal. 25 de mot. 160 d’algorithmes. 23 Connexe. 56. 6 de problèmes. 53 Coupe minimale. 53 descriptionnelle. 56 conditionnelle. 23. 187 Codage. 191 Co-N P. 284 Concept d’algorithme. 28 de Lupanov-Yablonski. 43 Codage binaire. 15 Connexité. 25 de temps de calcul. 21. 187 Cycle eulérien. 153 informationnelle. 193 hamiltonien. 22 N PC. 120. 141 Conjecture. 25 de langage. 22 N P. 201 Échiquier. 213 algorithmique descriptionnelle. 41. 172 Clauses de Horn. 200. définition. 170 des problèmes N P. 157 Classe P. 6. 25 de problème. 24 Co-N PC. 27 Conjecture de Hilbert. 25. 272 Compressibilité. 170 des problèmes N P-complets. 104 Contenu en information. 201 Couverture d’un graphe. 194 Groupe codé. 106 stable maximal. 66 inapproximable. 215 Énoncé. 30 État initial. 163 Dump. 225 Expression satisfaite. 141 Décimal. 65 stable. 23 G Générique instance. 64 récursivement énumérable. 226 I Image mémoire. 225 Environnement. 108 approximable. 43 H Heuristique. 79 Espace d’états. 104 k-coloriage. 10 Degré extérieur. 272 Énumération implicite. 19 récursive. 104 2-SAT. 58 partiellement récursive. 163 Fonction calculable. 172 conjonctive. 197 Digital. 41 Finitude du codage. 103 Graphe biparti. 80 quotient. 187 Entropie. 56 polynomiale de la taille des données. 134 Graphe. 40. 70 Équivalence. 80 récursif. 94 Dualité. 43 . 27 Ensemble absorbant. 194 connexe. 104 fortement connexe. 42 Flot maximal. 120 Efficacité. 29 Équipotence. 227 optimale. 66 partiellement ordonné. 43 E Échiquier. 40 Fonction récursive. 116 coloriage. 34 Explosion combinatoire. 57 d’évaluation. 12 Finitude.Concepts et notions Machine de Turing. 21 305 F Fil d’Ariane. 226. 144 Forme normale disjonctive. 19 Intraitable. 104 Intractable. 133 de Turing à plusieurs rubans. 141 universelle. 37 Maxtermes. 44 Intérieur. 24 Instance codage. 139 représentation. 131 générique. 225 L λ-calcul. 30 transition élémentaire. 133 Instanciation. 143 reconnu. 148 tout à droite. 54. 35 à effacement et écriture. 142 récursivement énumérable. 27. 35 universelle. 142 universel. 47. 131. mintermes. 110. 151 chercheuse. 284 Index machine de Turing. 44. 39 Information absolue. 28 Machines en séquence. 29 . 44. 134 récursif. 139 RAM. 174 M Machine élémentaire. 134 taille. 39. 139 alternante. 29 index. 54 Information quantique unité. 110. 273 de transmission. 36 de Turing. 27 Lévine-Cook Théorème de complétude. 39 non déterministe. 143 élémentaire. 288 Instance. 44 générique. 141 description détaillée. 40 de Hermann Weyl. 30. 139 configuration. 172 Mémoire illimitée. 36 à plusieurs rubans. 57 incompressibilité. 56 de Shannon. 35 tout à gauche. 27 définition. 141 dérivation. 54. 54 quantité absolue. 28. 19 Intuitionnistes. 134 particulière. 5 J Jeu d’échecs. 162 Langage décidé.306 Complexité et Algorithmique avancée Incomplétude Théorème de Gödel. 132 oui. 169 combinatoire. 93 typage. 209 PLNE. 27 de la halte. 132 PL. 28 Normalisation.Concepts et notions ruban. 172 N Nombre cardinal. 134 PGCD. 227 Notation binaire. 241 Problème. 9 de Bachman-Landau. 20 Méthode PSEP. 52 ordinal. 226 Mintermes. 150 logique. 10 des arcs de cercle. 227 de séparation. maxtermes. 20 de Monte Carlo. 150 de sortie. 288 positionnelle. 21 Ordinateur. 194 Polytope. 301 de Dirac. 70 transcendant. 225 Couverture. 209 Porte. 150 Principe d’évaluation. 93 Porte d’entrée. 108 de Chaïtin. 130 Problème N P-complet. 52 Oméga Ω. 172 Modèle d’algorithme. 10 des heures. 4 Numérique probabiliste. 10 des secondes. 29 Mesure des angles. 119 d’existence de chemin. 10 Méthode de Las Vegas. 46 O O. 64 . 241 Numérotation machines. 3 Pire des cas. 129 307 Opération élémentaire. 28 Ordre préordre. 133 de Hilbert. 94. Russel. 27 Monôme. 15 Particulière instance. 109 de décision. 80 P Paradoxe de B. 226 Probabiliste numérique. 70 d’absorption. 54 Parcours. 110. 35. 10 des minutes. 107 interne. 218 reformulation. 168 fonctionnel. 19 RAM. 197 recouvrement. 288 matriciel. 213 généralisation. 22 SAT 2-SAT. 209 linéaire en nombres entiers. 194 récursive. 216 Programme. 20 Stabilité externe. 27 opératoire. 3. 20 Complexité et Algorithmique avancée Représentation Machine de Turing. 27 Produit de Krönecker. 288 Programmation linéaire. 156 réduit. 200 Réductibilité polynomiale. 209 Solution -approchée. 29 S Sac à dos. 45 Programme polynomial en temps. 192 du couplage. 200 Sexagésimal. 206 SAT. 63 Pseudo-polynomialité. 107 Straßen complexité. 45 Séquence aléatoire. 20 optimale. 22. 125 Ruban. 288 R Raisonnable. 217 . 121 Procédure. 39 machine de Turing. 208 Q Qbits. 205 Sac à dos problème de décision. 27 Procédure automatique. 59 Set covering problem. 206 SAT-Horn. 205 Satisfiabilité. 53 Pseudo-algorithme. 211 matriciel de Straßen. 113 du VRP. 120. 50. 19. 213 Tensoriel. 32. 144 Résoudre un problème. 30 Résolution de problème. 120. 10 Simplexe. 171 Schème d’encodage. 133 Recouvrement. 116 du flot maximal. 4.308 de Langford. 53 réduit minimal. 23 Relaxation. 131 Ressources. 20 acceptable. 150 d’un problème. 201 Valide. 58 formel de Peano. 225 Z Zéro. 201 Vérifiabilité polynomiale. 20 Temps. 174 Voyageur de commerce (VRP). 280 de complétude. 82 3-SAT. 29 Symboles. 28. 29 Système additif. 141 309 Treillis. 3 Transformation polynomiale. 185 Typage porte. 28 d’invariance. 125 d’une instance.Concepts et notions Symbole vide. 174 de Gödel. 132 de données. 162 formel. 150 U Unidimensionnalité. 3 des neuf procédures. 174 Thèse de Church. 41 V Validation. 4 Lévine-Cook. 57 de Pythagore. 168 Transition élémentaire. 9 de Post. 144 Temps de calcul. 171. 19 Théorème d’incomplétude. 11 Taille d’un circuit. 40 Traité d’algorithmique. 9 . 9 T Tablette des scribes. 65 positionnel. 213 de Straßen itératif. 7 de Borükva. 241 G Glouton. 35 tout à droite.Index des Algorithmes A matricielle de Straßen. 7 de Prim. 238. 36 chercheuse. 237. 213 Algorithme d’Euclide. 11 Las Vegas. 36 qui s’arrête. 242 de l’équation quadratique. 203 J jeu de Marienbad. 230 de Nim. 242 de Straßen. 239 probabiliste. 242 de Sollin. 238 Monte Carlo. 242 de Kruskal. Séparation et Évaluation Progressive. 35 tout à gauche. 230 M Machine à effacement et écriture. 217 du Labyrinthe. 240 numérique probabiliste. 226 . 35 Multiplication P PSEP. dans le sujet par la même porte que moi. s’il le souhaite.. . Il m’a par conséquent semblé qu’il était bon de donner au lecteur quelques éléments bibliographiques lui permettant "d’entrer".. c’eut été .A propos de la bibliographie On trouvera ci-aprés la liste des livres et articles utilisés pour écrire cet ouvrage. certains ne sont pas cités dans ces pages. mais ils ont contribué de façon parfois non explicite à la formulation de ma pensée en la matière.trop complexe. beaucoup d’auteurs ne sont pas cités ici qui ont eux aussi beaucoup écrit sur le sujet. il n’y a là rien d’exhaustif ni d’exclusif. Bien entendu. . A. N. 1990. On Measures of Information and their Characterization. and Lovasz. Auslander and S. Ana and J. universal traversal sequences. L. 1975. 1982. Arsac and Y. [AR78] M. Technical report. R.M. Kayal. and N. 160 :781–793. IEEE Press. ACM Transactions on Programming Languages and Systems. 29-31 Oct. Raymond. Akl. Random walks.Bibliographie [AD75] J. . M. Primes is in p. and Rackoff. Arnold and I. 4(2) :295–322. Guessarian. In ICCL. masson. Academic Press. and Lipton. Saxena. [AKL79] R. Systematic recursion removal.H. [AK82] J. Laurie. Communications of the ACM. 1979. C. Kodratoff. Math. In 20th Annual Symposium of Foundations of Computer Science FOCS. R. Kingston Ontario. pages 218–230. New York. [Akl05] S. 1978. The myth of universal computation. Karp.H. [AL94] E. Axzél and Daróczy. [AG90] A. [AKS04] M. January 2004. and the complexity of maze problems. January 2005. Mathématiques pour l’informatique. Some techniques for recursion removal from recursive functions. Taming Control Flow : A Structured Approach to Eliminating GOTO Statements. Aleliunas. 1994. Agrawal. Queen’s University. 21(2) :127–134. Ann. [AU93] A. Thatcher. An optimal algorithm for mutual exclusion in computer networks. Addison Wesley. [BC94] D. ACM. Aho and J. Aho and J. part i : efficiency and program structure. Text Compression. ACM. Commun.. 1979. Bovet and P.D. 1974. L. Maurice Nivat. January 1981.V. ACM. 1998. Borodin and R.D. Baala.B. Cleary. Algorithmique.D. Ullman. Witten. Ullman. J. 19(3) :526–568. Arsac. Addison Wesley.V. Technical report. 1994.L. Concepts fondamentaux de l’informatique. Crescenzi. The design and Analysis of [AU74] Computer algorithms. 1972. Bratley.A. conception et analyse. From function level semantics to program transformation and optimization. A. Aho and J. editors. NJ. J. volume NJ. 1993. and I. 1983. Masson & Presses de l’université de Montréal. Volume 1 : Colloquium on Trees in Algebra and Programming (CAAP’85). Christiane Floyd.C.314 [AR81] Complexité et Algorithmique avancée A. 1987. Constable. Brassard and P.K. Englewood Cliffs. . Dunod. [Baa98] H. 1985.R. 22(1) :43–54. A. Ullman. [BCW90] T. [Bac85] J.H. 1990. [BB87] G. Prentice Hall. Ricart. Mathematical Foundations of Software Development : Proceedings of the International Joint Conference on Theory and Practice of Software Development (TAPSOFT). Prentice Hall. pages 60–91. Syntactic source to source transforms and program manipulation. volume 185 of Lecture Notes in Computer Science. Subrecursive programming languages. Version itérative de la multiplication de Straßen. Montréal. [BC72] A. and James W. Bell.G. Commun. Agrawala and G.V. Englewood Cliffs. Springer-Verlag. Introduction to the theory of complexity. Backus. [Ars79] J. In Hartmut Ehrig. Data Structures and algo[AU83] rithms.I. 24(1) :43–54.P. ACM Computing Surveys. [Bir67] G. 1977. [Ber69] C. [Bol85] B. [BF01] R. Notes on recursion removal. Dunod. Technical report. [BFU93] A.H. Goldstine. Birkoff. [Ben73] G. Bollobás. Graphes et Hypergraphes. Lattice Theory. Neumann. . Preliminary discussion of the logical design of an electronic computer instrument. 1980. In Proceedings of the 2nd ACM Symposium on Principles of Distributed Computin(PODC). Baala and I. Another advantage of free choice : Completely asynchronous agrement protocols. and E. [BL01] H. [Bir77] R. and J. Academic Press. 1969. 1983.S. An efficient minimal cost flows algorithm. American Mathematical Society Colloquium Publications.Bibiographie 315 [BD77] R. 19 :1043–1051. H. volume 25.W. La théorie des graphes et ses applications. [Bir80] R. 1958. Random Graphs. Lavallée. Burks. 1967. Bennington. A. Information Processing Letters. Comptes Rendus de l’Académie des Sciences. May 1973. Broder. J. 2001. Ben Or. 1977. A transformation system for developing recursive programs. Version itérative de la multiplication de Strassen. Upfal. Bird. 20(6) :434–439. In Proceedings of the Fourth Annual ACM-SIAM Symposium on Discrete Algorithms. Fokkinga. Bird. Frieze. ACM. 77(2–4) :71–76. Backhouse and M. [Ben83] M. On the satisfiability and maximum satisfiability of random 3-cnf formulas. The associativity of equivalence and the Towers of Hanoi problem.S.E. Management science. Institute for Advanced Study. Berge. 1985. Communications of the ACM.M. 333(1) :383–388. 2001. [Ber58] C. Tabulation techniques for recursive programs. [BGN46] A. 24(1) :44– 67. 1993. Dunod. Berge. Darlington. 12(4) :403–417. January 1 1946. Burstall and J. P. 1993.V.L. Gough. Theory. Machines de Turing inductives à plusieurs têtes et algorithmes de kolmogorov. Goldberg. Contribution à la résolution d’un problème de construction d’un réseau électrique optimal. 26(5) :1411–1473. A methodology for decompilation. Belin. 1967. Bor˜ uvka. Elektronický Obzor. 1926. Comptes-rendus de l’Académie des Sciences de l’URSS. . Bourbaki. [Bri56] L. Martingales et marchés financiers. Cifuentes and K. M. Akad.. Bernstein and U. Coullard. 1977.Dokl. 1998.R. Traduction américaine : Inductive Turing Machines with a Multiple Head and Kolmogorov Algorithms. On renamable horn and generalized horn functions. [Bou98] N. Vazirani. Paris. éléments de mathématique. C. Soviet Math. [CC92] M.J. pages 33–47. A class of logic problems solvable by linear programming. Annals of Mathematics and Artifical Intelligence. On implementing the push-relabel method for the maximum flow problem. 19(4). and X. Sun. In Proceedings of the 33rd IEEE Symposium on Foundations of Computer Science. [CG77] B. + [C 94] J. 1997. Doklady (29) 2. Théorie des ensembles. 1994. Brillouin. Science and Information. 275-2. Chandru. Histoire d’algorithmes. SIAM Journal on Computing. In Proceedings of the XIX Conferencia Latinoamericana deInformatica. Cornuéjols. pages 257–266. Cherkaski and A. 15 :153–154. Academic press. [BV97] E. N. Chabert et al. Quantum complexity theory. + [CCH 90] V. Argentina. 1992. [Bur84] M.316 [Bor26] Complexité et Algorithmique avancée O. Hermann. [Bou67] N. Bouleau. En tchèque. Montanez. Nauk SSSR.V. Hammer. volume XX. 1990. Hermann. 1956. Algorithmica.Y. Conforti and G.L. Burgin. Buenos Aires. [CG93] C. 1984. Copeland.B. Lesne. Chang and K. Y. Discrete Applied Mathematics. Cook and D. 2001. Math. In Proceedings of the 5th international conference on Software engineering. Rivest. Buenos Aires. Program refinement by transformation. Belin.A. Cheatham Jr. 2002. pages 430–437. The complexity of theorem-proving procedures. 12-(2) :281–300. [CLRS01] T. 25 :211–239. and C. 1997. L¨ owe. 1992.V. DIMACS Discrete math and Theoretical computer science. Safe fusion of functional expressions.N. 1989. pages 11–20. In Proceedings of the XIX Conferencia Latinoamericana de Informatica. A. Chin. [CM89] S. Stein. [CM97] S.Bibiographie [Che77] 317 B. Mitchell. Cook. New York. and J.E. Minds and Machines.. Math. Introduction to algorithms. [CHT81] T. [Cif93] C. 7 :117–25.A. Leiserson. A structuring algorithm for decompilation. [CL05] Lectures Notes in Computer Sience. R. The steepest descent gravitational method for linear programming.H. Algorithm of construction q of maximal 2 flow in network with complexity 0(|v| ( |E|). Cherkaski. 1977. American J. Cooper and B. Church.Buenos Aires. G. 35 :1–17. Charpentier.. 1971. 58 :345–363. IEEE Press. Cormen. 2005. Accelerating Turing machines. New computational paradigms.H. and Nikolski N. Methods of Solutions of Economics Problems. [Chi92] W. [Chu36] A. 2004. L’héritage de Kolmogorov en mathématiques.L. 1981. C. An unsolvable problem of elementary number theory.E. 3526. . pages 267–276. Murty. [Cop02] B. 1936. S. Holloway.A. [Coo71] S. Cifuentes. G. Finding hard instances of the satisfiability problem : A survey. In 3rd ACM STOC. Townley. pages 151–158. 1993. [CLN04] E. Argentina. In Proceedings of the 1992 ACM conference on LISP and functional programming. MITpress-McGraw Hill. ACM Press. Trick. David and M. Faculté des Sciences de Paris. London. John Wiley. application aux machines à calculer et à la mécanique céleste. Darlington and R. Paris. Darwin.. [Cur97] S. 1993. A system which automatically improves programs. P˘ aun. Technical report. A Relational Approach to Optimization Problems. [DABC93] O.B. Coloring. pages 339–347. 1859.M. Copeland. [Cur51] J. 1988. pages 1–23. PhD thesis. [Dan51] G. 1995. DIMACS Serie in Discrete Mathematics and Computer Science. American Mathematical Society. V. Couffignal. Second DIMACS Implementation Challenge. June 1995. 1951. Biosystems. [Dan57] G. Analysis of production and allocation. 317 :251–267. Boufkhad. Andre. [Cur95] S. Juin 1938.H.A. Theoretical Computer Science. 2004. 1951. L’analyse mécanique. Chvatal and E. Koopman. Dynamic programming : a different perspective. Calude and G. In T.318 [Cop04] Complexité et Algorithmique avancée B. Y. Discrete variable extremum problem. 1976. and Satisfiability. 6(1) :41–60. Operations research. 5 :266–277. editor. Dantzig. Dantzig.S. editors. [DB76] J.J. Minimization of a linear function of variables subject to linear inequalities. Curtis. [Cou38] L. Burstall. Bio-steps beyond Turing. 1997. PhD thesis. Many hard examples for [CS88] resolution. Journal of the ACM. On the origin of species by means of natural selection. volume 26. Sat versus unsat. New York. De l’origine des espèces. In Actvity. Hypercomputation : philosophical issues. In S. Acta Informatica. Oxford University.B. In Algorithmic Languages and Calculi. Cliques. John Murray. (Traduction Française. [Dar59] C. Curtis. 1985. 35(4) :759–768. P. 2004. 77 (1-3) :175–194.C. Carlier. Monte carlo method. Szemeredl. 1957. and J. Curtis. . National Bureau of Standards Applied Mathematics Series. La Découverte). [CP04] C. Dubois. l’Humanité. [Deu85] D. 1972. Feather. L’aléatoire. In The IFIP TC2/WG 2. Gattari. Quantum theory. A goto-elimination method and its implementation for the McCAT C compiler.1 Working Conference on Program .P. Delahaye. Dixon. 1994.W. Erosa. Information. PhD thesis.S. ça se calcule. Dowlling and J. Logique. [Del95] J. Deutsch. Belin. Journal of Logic Programming.P. Karp. McGill University. 1992. Theoretical improvement in algorithmic efficiency for network problem. [DG91] G. [Fea87] M. Galler. Numerishe Mathematics. Master thesis. Journal of ACM. [DG84] W. Qu’est-ce que la philosophie ? Éditions de minuit. Dinic. 11 :1277– 1280. [Dij76] E. 1976. [Din70] E.E. Doklady. 1995. 1985. Proceedings of the Royal Society of London. [DK96] D. 1(3) :267–284. Linear time for testing the satisfiability of propositionnal horn formulas. Deleuze and F. 1400 :97–117. Soviet Math. Hermès. Tarjan. SIAM Journal on Computing. [Ero94] A. Kahane. [EK72] J. Edmonds and R. Rauch. A note on two problems in connection with graphs. 1970. informatique et paradoxes. [DRT92] B. the Church-Turing principle and the universal quantum computer.F. May 1994. Dacunha-Castel and J.A.P. 1991. complexité et hasard. 1(1) :83–89.M.Bibiographie 319 [Del94] J. Algorithm for solution of a problem of maximal flow in a network with power estimation in a network with effiency analysis. 1984.H. Dijkstra. and R. Paris 29/11/1996. M. A survey and classification of some program transformation approaches and techniques. Delahaye. 21(1) :1184–1192. Verification and sensitivity analysis of minimum spanning trees in linear time. 19-2. pages 39–48. Fulkerson. L. 1956.320 Complexité et Algorithmique avancée specification and transformation. Glück. Paris. Gaudel. and P. mode de programmation distribuée. La récursivité.R. Tolla.Rocquencourt. Z. and R. Galil. Conference : Recursive Distributed Programming Schemes. Konishi. Paris. 8 :399–404. Technical report. Chemins et flots. Princeton University. Mir. 1990. Maximal flow through networks. [Gin76] V. Third International Workshop on Intelligent Software Engineering. pages 231–45. [Gal78] Z. Moscou. Roucairol. 1976. 1993. pages 165–195.. 2000. [FRT76] R. [FF56] L. [FL91] G. Florin and I.R. Menzies. Hermés.R. 1993. Implementation of an experimental system for automatic program transformation based on generalized partial computation. NorthHolland Publishing Co. 1987. Ford and D. [FGS93] C. [FKG00] Y. [GG90] P. editor. Kawazaki. Ford and D. Canadian journal of mathematics. 65 :421–422. 2000. ordonnancements. Journal of Symbolic Logic. INRIA.R. Gauthier-villars. Gochet and P. Ginzburg.C. Fouché. [Fou00] W. 1962. Faure. and Lavallée I.R. Soria.Méthodes pour l’informatique fondamentale. C. Technical report. University of Limerick. [FF62] L. and M. 1976. 1991. Flow in networks. A new algorithm for the maximal flow problem. JAIST-Kanazawa. Lavallée. M. In T. Logique . Gomez. . C. October 1978. Florin. In 19th Symposium on Foundations of Computer Science. Fulkerson. Sur la physique et l’astrophysique. Ediscience International. Japan. Gribomont. Froidevaux. Futamura. Types de données et algorithmes. [FGI93] G. Arithmetical representations of brownian motion. IEEE. Bhaskar. Network flow and generalized path compression. Hopcroft and R. Université Paris 8. SIAM J. ICSI. éditions du Seuil. S. Garey and D. Thèse de doctorat. 1993. R.J.G. [HK88] P. Theoretical Computer Science. Algorithms for testing the satisfiability of propositionnal formulae. Haken. On the transformation of linear functiona : a new approach to recursion . 39 :297–308. Johnson. [Gou93] S. and S. 1985. pages 13–26. On the complexity of the satisfiability problem. Gould. New York University. Comme les huit doigts de la main. [HK73] J. [Hak85] A. Positional logic algebra. [GN79] Z. New York. Chtcherbanski.R. Courant Computer Science Report. Tarjan. L’éventail du vivant. On randomization in sequential and distributed algorithms. 1989. The intractability of resolution. [GTT89] A. Juin 2004. 1988. Gupta. Naamad. (Édition originale : eight Little piggies. [Gol79] A. In 11th Annual Symposium on Theory of Computing. ACM. 1979. Networks flows algorithms. Computer Science Department. 1993). [HC88] M. Goldberg. [Ha04] Q. Ha. Galil and A. Gallo and G.V. Internal report 97-039. Technical Report 16. Urbani.M. 7 :45–61. Complexité et programmabilité : la dérécursivation par les mots de la récursivité. Technical Report STAN-CS-89-1252. Hamann and L. 2(4) :225–231. [Gou97] S. Tardos. Harrison and H. 1979. A. Computers and intractability. ACM Computing Surveys (CSUR).S. Karp. An n5/2 algorithm for maximum matching in bipartits graphs. Smolka. Khoshnevisan. [GSB94] R. 1973. March 1994. of Computing. 1997. Goldberg. éditions du Seuil. 1989. and R. Stanford University. [GU89] G. Gould. May 1979. Journal of Logic Programming. 26(1) :7–86.T.Bibiographie 321 [GJ79] M. Freeman.J. [HL03] Q. 1988. Imperial College. Internal report. [Hu82] T. Computing partitions with applications to the knapsack problem.A. Addison wesley. Fast matrix multiplication : an iterative schema without stacks. Annals of Mathematics and Artificial Intelligence.322 Complexité et Algorithmique avancée removal. [HP82] S. Sahni.E. Harrison and H. Hu. Lavallée.G. Horowitz and S. An introduction to partial evaluation. Heilbrunner and W. Technical Report AIM-201. Horn. Jerosiow and J. [HP70] C. June 25-27 2003. A technique for recursion removal based on string homomorphisms. 1951. Ogihara. Solving propositionnal satisfiability problems. Wang. Khoshnevisan. Paterson. Comparative schematology. Cnf satisfiability test by counting and polynomial average time. Hammer and S. 2002. . [HO02] L. 93(1) :91–113.. [HS74] E. In ICSERA03. The Complexity Theory Companion. [Hor51] A. London. Springer. On sentences which are trues of direct unions of algebras. 1992. 1970. 1974. 1990. Méthodes booléennes en recherche opérationnelle. Theoretical Computer Science. 1 1970. Rudeanu. Pohlmann.C. Surv. [HK92] P. 1989. 1982. 28(3) :480–503. Dunod. Science of Computer Programming. 16 :14–21. 1982. Department of Computing. Journal of Symbolic Logic. 2(1) :69–81. SIAM Journal on Computing. Iwama. Hewitt and M. SanFransisco.T. 1 :167–187. UK. Ha and I. [Iwa89] K.E. [JW90] R. Combinatorial Algorithms. Jones.S. Hemaspaandra and M. ACM Comput. 18(2) :385–391.L. [HR70] P. [Jon96] Neil D. JACM. 1996. MIT Artificial Intelligence Laboratory. 21 :277– 292. A new approach to recursion removal. [KM49] L.K. Karmarkar. Lecture Notes in Computer Science. Sur le déplacement des masses. en Russe. Note rédigée en 1940. En Russe Léningrad 1939.V. n˚ 7-8 :227–229. Klee and G.J. Minty..I.Y. Machines à calculer électroniques. 4(4) :373–396. Mathematical methods in the organization and planning of production. [Kha79] L. pages 110–138. Academic Press.V. N. . 1997. 1942.B. A polynomial algorithm in linear programming. 6 :363–422. [Kar74] A. Paris.V. Doklady Akadamii Nauk SSR. Programmation mathématique optimale (en économie). [KG68] L. Inequalities III. 1979.V. 1346 :57–63. 1960. 1968. [Kit56] A. Kfoury. 1984. Kantorovitch. 1(11) :302–311. Problèmes de l’efficacité des transports. Déterminer le flot maximal dans un réseau par la méthode des préflots.. Éditions de la radio soviétique.V. Moscou. 15 :434–37. Kantorovitch and A. Combinatorica. Kantorovitch. Kantorovitch. [Kan63] L. Karzanov. 1974. Shiha. en français. STOC. A new polynomial-time algorithm for linear programming.V. Dokl. [KM72] V. Connaissance. 37. Karmarkar. 1963. 1949. [Kar84b] N. 1972. Calcul économique et utilisation des ressources. 1956.Bibiographie [Kan42] 323 L. 89. Mémoire de l’Académie des Sciences de l’U..G. traduction anglaise. Matermaticheskoe optimaloe programmirovanie (V ekonomike). Khachiyan. [Kan60] L. Gorstko. en Russe. Soviet Math. Kitov. Dunod. [Kfo97] A. Application des méthodes mathématiques aux questions d’analyse des transports (en russe).S. 1984. Recursion versus iteration at higher-orders. En russe. How good is the simplex algorithm ? In O. en russe. [Kar84a] N. A new polynomial-time algorithm for linear programming. editor. Kantorovitch and Savourine M.R.J. 244 :1093–1096.S. T. Management Science. N. volume 7. On Theory Of Computing. 1992.B. On the shortest spanning subtree of a graph and traveling salesman problem. Kozen. 2006. and R. Traduction Anglaise dans Amer. Information Theory and theory of algorithms. E. Information Processing Letters. Kolmogorov and V. A. A. 1965. E.Moscou. American Mathematical society. 1983. A. pages 507–511. In Proceedings of the 3rd Annual ACM-SIAM Symposium on Discrete algorithms. Theory of Computation. 1987. Oxford University Press.E. A. Three approaches to the quantitative definition of information. Of the 26th ACM Symp. A Half Century Survey. 29 :2(1963). Soc. M. On the k-server conjecture.C.N. Uspensky. Math. Kolmogorov. Sur la définition d’un algorithme. p 217-245. . Transmission. Uspenkhi Mat. Koppel. En Russe.N. J. 3. Rao. pages 48–50. The universal Turing Machine . Springer. pages 157–164.324 [Kol56] [Kol65] [Kol83] [Kol87] [Kop88] [Koz06] [KP92] [KP94] [KRT93] [Kru56] [KU58] Complexité et Algorithmique avancée A. S. 1(1) :1–7. 13(4) :3–28. Chelsea Publishing Company.. A faster deterministic maximum flow algorithm. Problems inform. King. June 25-27 1994. Papadimitriou. En Russe . Nauk. En Russe. Berlin 1933. Kolmogorov. 1993. Koutsoupias and C. Kruskal. 1958. Combinatorial foundations of information theory and the calculus of probabilities. Koutsoupias and C. Translat. On the greedy algorithm for satisfiability. Survey. San-Fransisco.A. Tarjan. Papadimitriou. New Yourk. Russian Math. 1956.H.N. In Proc. 30 :53–55. 38 :29–40. Foundations of the Theory of Probability.N. D.H. V. Nauka . Kolmogorov. 1988. In Proc. Selected works. 1956. Kolmogorov. Traduction anglaise de : Grundbegriffe der Wahrscheinlichkeitsrechnung. l. [Lav91a] I. présentation orale en 1971. Recouvrement d’un ensemble par une sous famille de ses parties (Set covering problem). Lavault. en Russe. SSR. [Lav74] I. [Lam78] L. July 10 1951. Algorithms and randomness. 5. Comptes rendus de l’Académie des Sciences. I. Hermés. [Leb51] S. 14 :1413–1416. artificielle ? La Pensée. Lebedev. Appl.. Évaluation des algorithmes distribués. Her[Lav95] més.. Algorithmique parallèle et distribuée. clocks and the ordering of events in a distributed system.A. en Russe. 1976. Thèse de docteur ingénieur. [Lav97] Octobre 1997. Time.. Juin 1974. [Lav91b] I. Université de Moscou. La pensée. Note sur le problème des tours de Hanoï. Lavallée. 1973. C. SIAM J. [Lév73a] L. 2(7). [Lév71] L. Uspensky. Lavallée. 1991. ACM. 32 :389–412. [Lav76] I. Thèse de doctorat. 1973. [Lav82] I. t. Lévine. On the notion of random sequence. Soviet math Doklady. AIED d. Lévine.N. Lavallée. 9(3) :265–276. 6. Lamport. Commun. 1982. Le problème universel de recherche. Reconnaissance du caractère distributif d’un treillis fini. Lavallée. Theory Probab. Juillet-Août 1991. 25. 1995.A. Lavallée. Lavallée. Vietnamica. AN Ukr. [Lav85] I. Vous avez dit complexité ? Regards. Revue roumaine de mathématiques pures et appliquées. Une procédure purement itérative pour le problème des tours de Hanoî. A–1341.282 :A–1339 . 28. Lévine. Kolmogorov and V. PPI. 1987.A. 1971. Letter to the department of material resources.. 1985.A. [Lév73b] L. Université Paris VI. . 1978. Quelques théorèmes sur l’approche algorithmique de la théorie des probabilités et de l’information. 282(282).Bibiographie [KU87] 325 A.A. Lavallée. 1977. An algorithm for the travelling salesman problem.. Karel. Jeju Island South Korea. ACM Press. 1990. [Lew78] H. K. [LN05b] I. Journal of the ACM.A. [LN05a] I. Networking and parallel computing. IEEE Computer Society. Lavault. IEEE Computer Society.Y. on Principles of Programming Languages (POPL). 2005. Liu and S.O. Rabin. Operationnal Research.326 Complexité et Algorithmique avancée [Lév76] L. ACM. J. 1963. In 4th International Workshop on Distributed Algorithms (WDAG-4). Différentes mesures de complexité pour des objets finis (description axiomatique).G. Landau and L. and C.D.R. Little. [LR81] Lehmann and M. 17 :522–526. In Proceedings of the Eighth Ann. Springer Verlag. K. Lavallée and D. pages 221–226. artificial intelligence. 1981.D. Lévine. Loveman. Stoller.C. A general scalable parallelizing of straßen’s algorithm for matrix multiplication on distributed memory computers. Parallel Winograd multiplication. Lavallée and C. Program improvement by source-tosource transformation. Spanning tree construction for nameless networks. pages 133–138. 1976. Bari. [LL90] I. Lewis. D. LNCS n˚486. Mécanique. [LMSK63] J. 24-26 Sept. [LS03] A. 25(1) :134–135. Baltimore. pages 116–122. Nguyen. 24(1) :121–145. en Russe. Optimizing ackermann’s function by incrementalization. On the advantage of free choice : A symmetric and fully distributed solution to the Dining Philosophers problem. 11 :972–990. Soviet Math Doklady. ACM Symp. volume 1. Lavallée and D. Nguyen. Murty. In 4th annual International Conference on Computing and Information Science. In 6th Conference on Software engineering. January 1978. Éditions de la paix Moscou. Lifchitz. K. Italie. Renaming a set of clauses as a horn set. Sweeney. In Proceedings of the . pages 41–56. July 2005. extended abstract. [Lov77] David B. [LL61] L. version Française 1961. Lupanov. Y. Branch-and-bound method : a survey. Radiofizika. Opérational research. traduit en anglais. en Russe. 22(4) :3–22. 1(1). A.K. Number Tome XLII.Bibiographie [Luc74] [Lup59] [Lup63] [LV90] [LV97] [LW66] [LZ70] [Mar54] [Mar63] [Mar67] [Mar79] 327 2003 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation. en Russe. G. pages 699–719. 1963. 1959.U. 1967. Lawler and D. A. On normal algorithm associated with the computation of boolean functions and predicates. 1963. 25(6) :83–124. Elsevier. Izvestiya VUZ.B. An Introduction to Kolmogorov Complexity and Its Applications.A. LI and P. Izvestia Akademic Nauk Armyan.E. The synthesis of certain classes of control system. 31 :161–208. Lucas. P. The complexity of finite objects and the developpement of the concepts of information and randomness by means of the theory of algorithms. Marandzhyan. 1970.L. Izvestia Akademic Nauk. Markov. 2003. E. volume A. 10 :63–97. M. 1990. L. . Problemy Kibernetiki. Lupanov.A. Vitanyi. A. SSSR. Lévine and A. ACM Press.B. JulyAugust 1966. 1997. Zvonkin. Russian Mathematical Surveys. Li and P.F. Dokl.B. 5 :922– 924. Wood. Une méthode de synthèse des circuits. en Russe. Codes et Machines. Markov. O. SSSR.A. Moscou-Léningrad. Algorithms and complexity. 1974. pages 85–91. A propos de quelques propriétés de fonctions récursives asymptotiquement optimales. second edition. M. Théorie des algorithmes. Soviet. Vitányi. Springer. Math. Éditions de l’Académie des Sciences de l’URSS.A. Markov. O. en Russe. On normal algorithm associated which computes boolean functions. 1979.. 1954. Competitive algorithms for k-server problems. pages 322–333. Upfal.L. Competitive algorithms for online problems. and S. [MMS90] M. Mc Carthy.A. 15(2) :163–165.N. Manasse.A. Information processing letters. Vitanyi. In Proc of the 20th ACM Symposium on Theory of Computing. Randomized algorithms and Probabilistic Analysis. volume 1. Quantum Computation [NC04] and Quantum Information. M. 1988. Sleator. Ming and P. Cambridge University Press. 1989. [MV90] L. [MP95] Rajeev Motwani and Raghavan Prabhkar.D. 2000.A.M. AI Commun. [MU00] M. 2002. Transformation rules and strategies for functional-logic programs. [MKM78] V. McGeoch. 1978. Elsevier. American Journal of Physics. [Mer03] N. Sleator. Cambridge University Press. Classical recursion theory.M. and D.. 2003. Recursive functions symbolic expressions and their computation by machine. [MMS88] M.D. 3(4) :184–195. [Odi99] P. Mitzenmacher and E. Nielsen and I. From Cbits to Qbits :Teaching Computer Scientists Quantum Mechanics. McGeoch. Communications of the ACM. L. 2004. 11 :208–230. Probability and Computing.P. Deforesting in accumulating parameters via type-directed transformations. Randomized algorithms. Journal of Algorithms. Odifreddi. M. Chuang. 1999. L. Algorithm for finding maximum flows in network. volume A. Moreno. Cambridge University Press.D. [Mor02] G. and D. 1960. 2002. Maheswari. 1990. 1990. Algorithms and complexity.N. Volume 2. Malhorta. 7-6 :277–78. 1995. Manasse. [Nis02] S. Mermin. . part i.B. North Holland. 71 :23–30.328 [Mc 60] Complexité et Algorithmique avancée J. In Asian Workshop on Programming Languages and Systems (APLAS).N. Kumar. Nishimura. Bibiographie 329 [Ous60] Ouspienski. New fast algorithms for matrix operations. Computational Complexity. Math. Leçons sur les fonctions récursivement calculables. Rules and strategies for transforming functional and logic programs. 1998. 1996. [Pan80] Y. FOCS-91.. Pan. 19th Annual Symposium on the foundations of Computer Science. Elsevier. Pettorossi and M. 36 :1389–1401. Proietti.C. H. MI USA.V. Proietti. Addison-Wesley. [PP96] A. Prim. Pagels. Pettorossi and M. 1990. Pettorossi and M.V. 32(1) :99–102. Surv. Pan. SIAM Journal on Computing. [Pan81] Y. en Russe. . volume B. 7(1) :73–125. In Ann Arbor. SIGPLAN Not. In Proc. Future directions in program transformation. Parallel Winograd multiplication. 28(2) :360–414. [Pap95] C. Pan. [Pri57] R. Surv. 1978. August 1995. ACM Comput. [PP97] A. New combinations of methods for the acceleration of matrix multiplication. Éditions d’état de Physique et mathématiques. Appl. Comp. Formal Models and Semantics chapitre 1. Interéditions.H. [Pap91] C. Program specialization via algorithmic unfold/fold transformations.. 1960.. 1991. On selecting satisfying truth assignement..V. [Pag90] H. 9(2) :321–342. Shortest connection networks and some generalizations. [Pan78] Y. pages 166–176. 1997. Perrin. Papadimitriou. 30(3es) :6. pages 163–169. Moscou. Les rêves de la raison (The dreams of reason). editor. Bell System Tech J. Papadimitriou.. [Per90] D. Proietti. 1957. ACM Comput. Proc. 1981. 1990. [PP98] A. Finite automata. 1980. In Proceedings of the 24th Symposium on Foundations of Computer Science FOCS. 1 et 2. Shannon. Dunod. 1983. Snir. Revue Française de R. Trystram. Exercices et problèmes résolus de recherche opérationnelle. Combinatorial Optimization . IBM Journal of Research and Development. Steiglitz. pages 403–409. G. C. Taming the y operator. P. Memory versus randomization in on-line algorithms. .-L Roch and D.O. Randomized Algorithms. Randomized byzantine generals. Sedgewick.330 [PS82] [R+ 85] [Rab83] [Rao90] [RM00] [Roy70] [Roz92] [RS61] [RS98] [RT82] [Sed88] [Sèv05] [Sha48a] Complexité et Algorithmique avancée C. Algorithms and complexity.H. Barcelona. Rabin. P.J. Rozas.R. Sève. 1992. 1982. 2000. J. Algorithms. 1988. pages 578–581. In Proceedings of the 24th Symposium on Foundations of Computer Science FOCS. ACM Press. The mathematical theory of communication. Motwani. 1982. 1948. Rao. 1998. Roy. Papadimitriou and K. B. B. Cambridge University Press. 1985. Raghavan and M. Simmonard. 1(18). R. Bell System Technical Journal.. In Parallel Computing : from theory to sound practice. pages 379–423. Prentice-Hall. 38 :683–707. pages 226–234. Masson. August 22-24 1990. Raghavan and R. Émergence. 1970. J. pages 247–264. Mai 2005. Addison-Wesley. 1ere edition. M. Nouvelle méthode permettant d’explorer un ensemble de possibilités et de déterminer un optimum. Odile Jacob. Parallel Winograd multiplication. R. complexité et dialectique. 1961. Roseau et al.O. Reasoning about probabilistic algorithms. Algèbre moderne et théorie des graphes T. L. In Proceedings of the 1992 ACM conference on LISP and functional programming. Roy and M. and D. Sc. Tarjan. Telpiz. 1949. San Jose.D. A universal Turing machine with two internal states. Bell System Technical Journal. 1970. B.M. 51(4) :37–40. Bell System Technical Journal. Timpson.G.. 1978.C. 1(28) :59–98. Shannon. M. 1(13) :354–356.Bibiographie [Sha48b] [Sha49] [Shi78] [Shi02] [Sip96] [SLM92] [SM56] [ST85a] [ST85b] [Str69] [Str70] [Tel89] [Tim04] 331 C. 32 :652–686. V. pages 623–656. Technical report. Remarks on universal quantum computer. Translating recursion equations into flow charts. Quantum Information Theory and The Foundations of Quantum Mechanics. D. Sipser.C. Shi. Maximum flow algorithm. H. Levesque. Automata Studies. Mc. Strong Jr. In Proceedings of the second annual ACM symposium on Theory of computing. M.E. Communications of the A. Kybernétika. PhD thesis. 1992. Journal of the A. Amortized efficiency of list update and paging rules. Numer. Press. C. C. July 1985.. Shannon and J. 28 :202–208. Sleator and R. 1969. Mitchell. D. 2002. Dpmt Standford University. Princeton univ. Introduction to the Theory of Computation.E. In Proceedings AAAI-92.M. 1989. The synthesis of two-terminal networks. . Y. Math. Gaussian elimination is not optimal. February 1985. Tarjan. Predstavlenie founki algebra logiki (représentation des fonctions de l’algèbre logique). Sleator and R. Shannon. pages 184–197. Self adjusting binary search trees. Comp. The mathematical theory of communication. En Russe. Physics Letters. Shiloach.. 1948. Y.R. 1996. 2004. Strassen. Selman. A new method for solving hard satisfiability problems. 1956. Carty. ACM Press. Queen’s College (Oxford). CA. H. International Thomson Publishing. C.D. compiler. En Russe. 1970. 1ère Édition allemande 1927. Princeton University Press.P. . Winograd. (édition Soviétique 1960). In Proceedings of the 2003 ACM SIGPLAN conference on Language. G. and tool for embedded systems. Ward. éyrolles. Technical report.332 [Tol39] Complexité et Algorithmique avancée A. Ward.544–546.. Turing. PhD thesis. Journal of Software Maintenance : Research and Practice.. 5(2) :101–122. June 1993.P. [War93b] M. Ser. 1993. On computable numbers with an application to the entscheindungsproblem. Calculabilité effective et Algorithmique théorique. Ward. Vanbroekhoven. Abstracting a Specification from Code. Oxford University. IBM Research report RC267. Algorithmes et machines à calculer. [War88] M. 1939. Janssens. 1985. The Computer Journal. Soc. Recursion removal/ introduction by formal transformation : An aid to program development and program comprehension. 1(9) :28–51. Proving Program Refinements and Transformations. [War92] M. London Math. Méthodes d’élimination des transports non rationnels lors de la planification. [Wey49] H.M. Iterative procedures for computing ackerman’s function. Princeton. Philosophie der Mathematik und Naturwissenchaft . ACM Press. 1949. 2003. [Vol85] P. Tolstoï. Monographies Dunod. et al. 8th11th January 1992. Ward. Ward and K. + [VJ 03] P. A recursion removal theorem. [War93a] M. Trahtenbrot. Weyl. [Win70] S. In Proceedings of the 5th Refinement Workshop. 42(8) :650–673. 1936. [WB99] M. Vollat.P.P. 1999.H. 2(42 et 43) :230–265 .P. pages 24–33. Le transport socialiste. Springer-Verlag. 1988.A. [Tur36] A. Philosophical of Mathematics and Natural Science. [Tra63] B. Advanced copy propagation for arrays. 1963. On the multiplication of 2x2 matrices. Bennett. [Yab00] K. [WP+ 78] H. On the impossibility of eliminating perebor in solving some problems of circuit theory.Bibiographie [Wir76] 333 N. Yaglom and I. Springer-Verlag New York. Journal of the ACM. et al.C. Yabuuti. and Glück Robert. [Yab59a] S. Yablonski. Introduction à la calculabilité. 1993. édition Française Probabilité et information Monographies Dunod 1959. [Wol91] P. In F.C. Inc. Algorithms + Datastructures = Programs. Englewood Cliffs. Prentice-Hall. 1959. [Yab59b] S. 2003. [YZR02] F. 1957. Extended Abstract. L. volume 69 of Lecture Notes in Computer Science. . Special transformation techniques. Doklady Akademii Nauk SSSR.C. Belin. Tokyo 1974. Zenjiro. 1978. Broy. Yao. In 18th Annual Symposium of Foundations of Computer Science FOCS. P. Gallimard. Wössner. Springer Verlag. Wirth. [Yao77] A. 2000. 1991. Probabilistic Computations : Toward a Unified Measure of Complexity. Program Construction. Technico-Théorique. WSDFU : program transformation system based on generalized partial computation. Interéditions. Problemy Kibernetiki. 1959. Yao.C. Veroiatnost I informatsia. En Russe : English translation in Soviet Mathematics Doklady. Tractatus logico-philosophicus. pages 358–378. K. 1976.. Pepper. Logish Philosophische Abhandlung. Wolper. Yoshihiko. 50-(1) :100–105. Bauer and M.M. [YY57] A. 2(2) :75–121. Classical physics and the Church–Turing thesis. En russe. [Yao03] A. édition allemande 1921. 124(1). New Jersey. Yablonski. Witgenstein. [Wit93] L.M. pages 222–227. 1977. Une histoire des mathématiques chinoises. IEEE. Yaglom. édition japonaise Iawanami Shoten. 2002. editors. pages 290–321. Sur la difficulté de la minimisation des circuits. et al.334 [ZH+ 97] Complexité et Algorithmique avancée H. I. In Proceedings of the second ACM SIGPLAN international conference on Functional programming. Hideya. ACM Press. Tupling calculation eliminates multiple data traversals. . pages 164–175. Zhenjiang. 1997. . Achevé d’imprimer en mars 2009 par la Sté ACORT Europe www.com Dépôt légal à parution Imprimé en France .cogetefi. . L'ouvrage se termine sur un chapitre consacré à l'informatique quantique. Doctorat. Il s'agit là du premier ouvrage en langue française traitant de la complexité en tant que telle. Ingéniorat. Maitrise. On y trouvera une introduction aux concepts fondamentaux du domaine.Complexité et algorithmique avancée une introduction Ivan Lavallée "Complexité et algorithmique avancée" est un exposé introductif à la pratique de la théorie de la complexité. il a été enseigné dans les trois cycles universitaires d'informatique et de cognitique et l'ouvrage est conçu pour être abordé par les étudiants des trois cycles universitaires. qu'il s'agisse de machine de Turing élémentaire ou universelle. P. L’ouvrage propose aussi des voies pour la recherche. une partie est consacrée à ces aspects pratiques. NP et NPC ainsi que le concept de quantité absolue d'information dû à Kolmogorov. on montre comment résoudre certains problèmes en faisant "tomber" la complexité en utilisant des concepts probabilistes. Public : Licence. de complexité au sens de Levin-Cook ou de Kolmogorov. professeur à l’université Paris VIII. et à l’Ecole Pratique des Hautes Etudes (EPHE).complets. Dans ce livre sont définies les trois principales classes de complexité. Dans une dernière partie. ou en utilisant des méthodes d'énumération implicite dont les principes sont décrits. L'auteur: Docteur d’État ès sciences. abordant les aspects pratiques au travers de la conception des algorithmes de résolution pour problèmes dits NP. Ce livre est destiné tant aux étudiants en informatique qu'aux ingénieurs et chercheurs. ISBN : 978 27056 6726 9 Hermann 9 33 euros 782705 667269 .
Copyright © 2024 DOKUMEN.SITE Inc.