Cours de complexité Université Joseph Fourier 2011-2012 Master 1 Informatique



Documents pareils
La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire Gérard Verfaillie ONERA/DCSD/CD, Toulouse

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Programmation linéaire

Représentation d un entier en base b

Licence Sciences et Technologies Examen janvier 2010

Calculabilité Cours 3 : Problèmes non-calculables.

Cours de Master Recherche

Université Paris-Dauphine DUMI2E 1ère année, Applications

Probabilités sur un univers fini

Introduction à la théorie des graphes. Solutions des exercices

Année 2014/ er septembre Version de Anca Muscholl, issue du poly de Marc Zeitoun. 1/143

Plus courts chemins, programmation dynamique

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Chapitre 2. Eléments pour comprendre un énoncé

Logiciel de Base. I. Représentation des nombres

Machines virtuelles Cours 1 : Introduction

Algorithme. Table des matières

Codage d information. Codage d information : -Définition-

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Compilation (INF 564)

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Initiation à l algorithmique

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Algorithmes de recherche

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Informatique Générale

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Chapitre 10 Arithmétique réelle

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Transmission d informations sur le réseau électrique

Rappels Entrées -Sorties

Table des matières. Introduction

Modèles de Calcul. Yassine Lakhnech. 2007/08 Université Joseph Fourier Lab.: VERIMAG. Modèles de Calcul Start p.

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

IV- Comment fonctionne un ordinateur?

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

CH.6 Propriétés des langages non contextuels

Premiers exercices d Algèbre. Anne-Marie Simon

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Conversion d un entier. Méthode par soustraction

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Rappels d architecture

GPA770 Microélectronique appliquée Exercices série A

Fondements de l informatique Logique, modèles, et calculs

Définitions. Numéro à préciser. (Durée : )

Algorithmique et Programmation Fonctionnelle

ARBRES BINAIRES DE RECHERCHE

Continuité et dérivabilité d une fonction

Objets Combinatoires élementaires

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

La mémoire. Un ordinateur. L'octet. Le bit

Quelques algorithmes simples dont l analyse n est pas si simple

Calculateur quantique: factorisation des entiers

Bases de programmation. Cours 5. Structurer les données

1 Définition et premières propriétés des congruences

ALGORITHMIQUE ET PROGRAMMATION En C

Jean-Philippe Préaux

Logique : ENSIIE 1A - contrôle final

Représentation des Nombres

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Par combien de zéros se termine N!?

Listes de fournitures du secondaire pour la rentrée

Quatrième partie IV. Test. Test 15 février / 71

Journées Télécom-UPS «Le numérique pour tous» David A. Madore. 29 mai 2015

Projet Matlab : un logiciel de cryptage

Cercle trigonométrique et mesures d angles

J AUVRAY Systèmes Electroniques TRANSMISSION DES SIGNAUX NUMERIQUES : SIGNAUX EN BANDE DE BASE

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Feuille TD n 1 Exercices d algorithmique éléments de correction

MATHÉMATIQUES DISCRÈTES (4) CRYPTOGRAPHIE CLASSIQUE

Problème d ordonnancement de véhicules en variables booléennes

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Quelques tests de primalité

Programmation C. Apprendre à développer des programmes simples dans le langage C

Structures algébriques

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Probabilités sur un univers fini

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Architecture des ordinateurs Introduction à l informatique

Cours 1 : Qu est-ce que la programmation?

Cours de Probabilités et de Statistique

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Cours d algorithmique pour la classe de 2nde

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Logique. Plan du chapitre

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Transcription:

Cours de complexité Université Joseph Fourier 2011-2012 Master 1 Informatique Enseignants responsables : Marie-Christine Rousset, Christian Boitet Prise de notes : Claude Vial 4 février 2013

Table des matières 1 Motivations 3 2 Modèle simple des MT (Machines de Turing) à quadruplets 4 2.1 Illustration............................................... 4 2.1.1 Exemple............................................. 4 2.1.2 Configuration initiale..................................... 4 2.1.3 Représentation d une bande vide............................... 5 2.1.4 Expression de bande...................................... 5 2.2 Définition plus formelle d un calcul de MT.............................. 5 2.3 Calcul d une MT............................................ 5 2.3.1 Configuration terminale.................................... 5 2.3.2 Calcul.............................................. 5 2.3.3 Résultat d un calcul...................................... 6 2.4 Complexité d un calcul d une MT et complexité d une MT..................... 6 2.5 Fonctions N k N calculées par MT................................. 6 2.5.1 Codage des entiers....................................... 6 2.5.2 Codage d une suite d entiers.................................. 6 2.5.3 MT qui calcule λxy[x + y]................................... 6 2.6 Fonctions calculées par une MT.................................... 6 2.6.1 Exemple............................................. 7 2.6.2 Fonctions Turing-calculables (T-calculables)......................... 7 3 Robustesse du modèle de MT 8 3.1 Objectifs................................................. 8 3.2 MT à quintuplets............................................ 8 3.3 MT à demi-bande............................................ 8 3.4 MT à plusieurs bandes......................................... 8 3.4.1 Notation (k bandes)...................................... 8 3.4.2 Exemple (2 bandes)...................................... 9 3.4.3 Théorème............................................ 9 4 Complexité : ordres de grandeur 10 4.1 Rappel.................................................. 10 4.1.1 Exemple............................................. 10 4.1.2 Fonctions de références.................................... 10 4.2 Définition 1............................................... 10 4.2.1 Exemple............................................. 10 4.3 Définition 2............................................... 10 4.4 Définition 3............................................... 10 4.5 Cas particuliers............................................. 11 4.6 Tableau comparatif........................................... 11 5 Réduction polynomiale entre modèles de calcul (RAM, Pseudo-Pascal, MT) 12 5.1 Machine RAM............................................. 12 5.1.1 Complexité d un programme RAM.............................. 12 5.1.2 Théorème............................................ 12 5.1.3 Démonstration......................................... 12 5.2 Modèle pseudo-pascal......................................... 13

TABLE DES MATIÈRES 3 5.2.1 Définition............................................ 13 5.3 Résultat central............................................. 14 6 Classification des problèmes 15 6.1 Classe P................................................. 15 6.1.1 Définition............................................ 15 6.2 Réduction polynomiale entre problèmes............................... 15 6.2.1 Problème de décision...................................... 15 6.2.2 Définition............................................ 15 6.2.3 Théorème............................................ 15 6.2.4 Définition............................................ 16 6.2.5 Machine de Turing Non Déterministe............................. 17 6.3 Classe NP................................................ 17 6.3.1 Définition............................................ 17 6.4 Problèmes NP-complet......................................... 17 6.4.1 Définition............................................ 17 6.4.2 Théorème de Cook....................................... 17 6.4.3 Exemples de problèmes NP-complets............................. 17

Chapitre 1 Motivations Les buts du cours de complexité sont les suivants : appréhender la notion de complexité intrinsèque d un calcul informatique, indépendamment d un langage ou de la machine sur laquelle s exécute l algorithme. appréhender la notion de complexité intrinsèque d un problème à résoudre ou d une fonction à calculer. Dans la suite, nous ne nous intéresserons qu aux problèmes décidables, c est-à-dire aux problèmes de décision, pour lesquels il existe un algorithme, qui se termine en un nombre fini d étapes, pour toute entrée, et qui est capable de répondre par oui ou par non à la question du problème posé. On classe les problèmes décidables en deux catégories : les problèmes «traitables»(tractable). Il s agit des problèmes pouvant être traités par un algorithme de complexité «raisonnable». Il s agit des problèmes de la classe P (polynomiaux). les problèmes «intraitables» (on dit souvent aussi «non traitables». Il s agit des problèmes de la classe N P (polynomiaux en utilsant une formulation non déterministe). Être capable de classer les problèmes en tant que problèmes traitables ou intraitables permet de déterminer à l avance la difficulté ou l impossibilité d écrire un algorithme. Afin de classer un problème dans une de ces catégories, nous introduirons des outils tels que la réduction polynomiale d un problème à un autre.

Chapitre 2 Modèle simple des MT (Machines de Turing) à quadruplets 2.1 Illustration Une Machine de Turing Z est constituée d un automate, d une bande infinie mais toujours presque partout blanche, et d une tête (ou curseur) de lecture-écriture pointant vers une cellule de la bande. Comme pour les automates d états finis et les automates à pile, cet automate, aussi appelé programme de la MT, est formé d un ensemble fini de nœuds portent des états et d arcs portant des transitions. Dans le modèle le plus simple, une transition entre 2 états q i et q l exprime une action du type : si le curseur pointe sur une cellule contenant le symbole S j, écrire à sa place le symbole S k, ou bien déplacer le curseur d une cellule à gauche ou à droite. On peut décrire un tel automate par un ensemble de quadruplets de forme [q i S j S k q l ] ou[q i S j Lq l ] ou[q i S j Rq l ]. Pour que le modèle soit universel, on convient que les symboles et les états sont pris dans deux ensembles disjoints infinis dénombrables : A(Z) S = {S 0, S 1, S 2,..., S n...} et E(Z) Q = {q 0, q 1, q 2,..., q m...}. On convient aussi de pouvoir utiliser à volonté des alias simples pour les caractères et les états. En particulier, on utilise B (le blanc) pour S 0 et (le bâton) pour S 1. IMPORTANT : le modèle simple est déterministe, ce qui se traduit par le fait qu il n y pas 2 transitions différentes partant d un état q i pour le même symbole S j (consistance). Une configuration d une Machine de Turing Z est formée de 3 éléments : un état, pris parmi l ensemble fini E(Z) des états de Z, bande infinie mais toujours presque partout blanche sur laquelle sont inscrits des caractères de son alphabet fini A(Z), et de la position du curseur. Une description instantanée dune MT est une chaîne finie représentant une configuration. On note l état courant et le symbole de la cellule sous le curseur, et on ne note pas les suites infinies de blancs à gauche et à droite. Il y a donc une description instantanée minimale, et une infinité d autres équivalentes, comme le montre l exemple suivant. 2.1.1 Exemple La configuration de cet exemple a la description minimale q 0 B, et d autres non minimales comme BBB q 0 B B, BBBBBBB q 0 B, B q 0 B BBBBBBB, etc. Un cas particulier est celui où la bande est totalement blanche. Si q i est l état courant, on peut alors écrire la configuration q i B ou q i ou q i ε. 2.1.2 Configuration initiale Une exécution (ou calcul) d une MT est une suite de configurations, à partir d une configuration initiale, obtenue en utilisant à chaque pas une transition (un quadruplet). À cause du caractère déterministe, un calcul

CHAPITRE 2. MODÈLE SIMPLE DES MT (MACHINES DE TURING) À QUADRUPLETS 6 de MT est unique. Il s arrête si et quand il atteint une configuration terminale, c est à dire une configuration γq i S j δ telle qu il n y ait aucun quadruplet commençant par q i S j. On convient que q 0 est toujours l état initial. Par contre, on a différents choix pour coder l entrée d une MT, selon qu on désire qu elle calcule sur des (listes de) nombres ou des (listes de) chaînes, pour réaliser une fonction arithmétique, ou bien résoudre un problème d analyse, de génération ou de transduction de chaînes. On convient toujours que, dans une configuration initiale, le curseur pointe vers le symbole le plus à gauche du codage de l entrée sur la bande. Dans notre exemple, la configuration est q 0 B que l on peut également écrire q 0 2 B afin de gagner en lisibilité et en espace. Ce n est pas une configuration initiale, car le curseur est sur le 2ème caractère du codage de l entrée. 2.1.3 Représentation d une bande vide Nous aurons parfois besoin dans le futur, notamment pour faire tourner une MT sur plusieurs configurations de départ différentes, de représenter une bande, ou partie de bande, vide. Par exemple, pour représenter une chaîne vide, nous écrirons q 1 ε, ou q 1, ou q 1 B si l on veut toujours mettre un vrai symbole après l état. 2.1.4 Expression de bande L expression de bande est la représentation de la partie codante, indépendamment du curseur et de l état. Dans notre exemple, l expression de bande est : 3 B S. 2.2 Définition plus formelle d un calcul de MT Une MT Z est définie sur un couple (A(Z), E(Z)), où A(Z) est un ensemble fini de symboles (contenant obligatoirement le symbole S 0 signifiant le vide, noté par la suite B pour blanc) et où E(Z) est un ensemble fini d états. Le programme de Z est décrit par un ensemble fini de quadruplets de la forme : qss q qslq qsrq Où q, q E(Z) et s, s A(Z). L représente le déplacement à gauche, et R le déplacement à droite. Cet ensemble de quadruplets est tel que deux quadruplets différents ne commencent pas par le même début qs, ce qui permet la propriété de consistance. 2.3 Calcul d une MT Le calcul d une MT correspond à une séquence finie de pas de calcul (on considère qu une MT qui ne termine pas ne calcule rien). Soit une configuration α de la forme α = γq i S j δ où γ, δ S. Un pas de calcul correspond à la transformation d une configuration α en une configuration β après exécution d un quadruplet : α = γq i S j δ Z β = γ q j S k δ 2.3.1 Configuration terminale Une configuration terminale est une configuration γ qsδ sur laquelle aucune instruction ne s applique, donc où la MT s arrête. 2.3.2 Calcul Un calcul de longueur p d une MT Z est une suite de configurations α 0 α 1...α p telle que α i Z α i+1 pour i < p et que α p est une configuration terminale. Si la configuration initiale est également terminale, le calcul se réduit à α 0 et sa longueur est p = 0.

CHAPITRE 2. MODÈLE SIMPLE DES MT (MACHINES DE TURING) À QUADRUPLETS 7 2.3.3 Résultat d un calcul Res Z (α 0 ) = α p 2.4 Complexité d un calcul d une MT et complexité d une MT La complexité (ou le temps) d un calcul est définie comme le nombre de pas de ce calcul, c est-à-dire au nombre de quadruplets exécutés lors du calcul (c est p dans la définition ci-dessus). La complexité (en temps) d une MT Z (supposée s arrêter sur toute entrée) est la fonction qui détermine (en ordre de grandeur) le nombre p de pas de calcul en fonction de la taille du mot d entrée. α 0 = Res Z (α 0 ) 2.5 Fonctions N k N calculées par MT 2.5.1 Codage des entiers binaire : l entrée est codée par une chaîne sur {B, 0, 1}, donc A(Z) contient au moins {B, 0, 1}. unaire : l entrée est codée par une chaîne sur {B, 1}, donc A(Z) contient au moins {B, 1}. n ñ : (n + 1) sur la bande. n+1 (si n est l entrée de la MT) C est le codage unaire que nous utiliserons. Le résultat est interprété comme le nombre de sur la bande au moment de l arrêt (on ne se soucie pas qu il y ait des B ou d autres caractères entre les.). Exemple Soit la MT Z possédant les quadruplets suivants : Z effectue le calcul suivant : Cela correspond à la fonction : (que l on peut également noter λn[n + 2]) 2.5.2 Codage d une suite d entiers q 0 n+1 Z q 2 n+2 f : N N n n + 2 q 0 R q 0 q 0 B q 1 q 1 L q 1 q 1 B R q 2 Le code d une suite d entiers est composé des codes des entiers séparés par des B. Par exemple, pour coder {22, 16, 57} nous ferons 23 B 17 B 57. 2.5.3 MT qui calcule λxy[x + y] Z : q 0 B q 0 q 0 B R q 1 q 1 B R q 2 q 1 R q 1 q 2 B q 3 q 0 x+1 B y+1 Z q 0 x BB y 2.6 Fonctions calculées par une MT Soit Z une MT. Pour tout k N, k associe à Z la fonction (partielle) d arité k des k-uplets d entiers dans les entiers (N k N) définie de la façon suivante :

CHAPITRE 2. MODÈLE SIMPLE DES MT (MACHINES DE TURING) À QUADRUPLETS 8 si la MT s arrête à partir de q 0 (x 1, x 2,..., x k ) et si on appelle Res Z (q 0 (x 1, x 2,..., x k )) la configuration finale : Ψ (k) Z (x 1,..., x k ) = le nombre de dans l expression de bande associée à Res Z (q 0 (x 1, x 2,..., x k )). sinon : Ψ (k) Z (x 1,..., x k ) n est pas définie. On note aussi : Ψ (k) Z (x 1,..., x k ). Une question classique est de déterminer quelle famille de fonctions calcule une MT en faisant varier k. 2.6.1 Exemple Avec la MT vue précédemment, nous avons : Ψ (2) Z = λxy[x + y] Ψ (1) Z = λx[x] Ψ (k) Z = λx 1x 2 x 3 x 4... x k [x 1 + x 2 + x 3 + 1 + x 4 + 1 + + x k + 1] 2.6.2 Fonctions Turing-calculables (T-calculables) Une fonction f : N k N (pouvant être partielle) est T-calculable s il existe une MT Z telle que : f = Ψ (k) Z

Chapitre 3 Robustesse du modèle de MT 3.1 Objectifs Montrer qu on ne modifie pas ce qui est calculable et ce qui ne l est pas en modifiant le modèle à quadruplets pour obtenir des variantes de MT. Étudier l impact sur la complexité de ces variantes. 3.2 MT à quintuplets Une MT à quintuplets est une variante sur le langage d instruction. qs[l N R]s q (N pour No_Move signifie qu il n y a aucun déplacement, L est mis pour Left, R pour Right.) Un quintuplet est équivalent à au plus deux quadruplets. Exemple : [ q s N s q ] [ q s s q ] [ q s L s q ] [ q s s q ], [ q s L q ] Théorème Tout calcul de Z à quintuplets de k pas de calcul peut être simulé par une MT Z à quadruplets ayant au plus 2k pas de calcul. Corollaire Les deux modèles de calcul sont équivalents en terme de calculabilité et en ordre de grandeur de complexité. 3.3 MT à demi-bande Nous imposons un début de bande, et obtenons ainsi une demi-bande infinie (infinie d un côté, finie de l autre). On admettra qu on peut toujours simuler une MT à bande infinie par une MT à demi-bande. 3.4 MT à plusieurs bandes 3.4.1 Notation (k bandes) q(s 1,.., s k )(a 1,.., a k )q où a i (i {1,.., k}) est une instruction ou un déplacement.

CHAPITRE 3. ROBUSTESSE DU MODÈLE DE MT 10 3.4.2 Exemple (2 bandes) Une MT à 2 bandes pour le test de palindrome sur des mots composés de 0 et de 1. S = {1, 0, N, Y, B} À l état initial, on a le mot d entré sur la partie codante de la première bande avec le curseur positionné au début du mot. 1. On recopie le mot sur la 2 nde bande. 2. On positionne la 1 ère tête de lecture au début du mot et la 2 nde à la fin du mot copié. 3. Tant que les 2 symboles lus sont identiques et différents de B, on déplace la 1 ère tête de lecture vers la droite et la 2 nde tête de lecture vers la gauche. 4. Si le symbole lu par les 2 têtes de lecture alors on écrit Y, sinon on écrit N. q 0 (1, B)(1, 1)q 0 q 0 (0, B)(0, 0)q 0 q 0 (1, 1)(R, R)q 0 q 0 (0, 0)(R, R)q 0 q 0 (B, B)(L, L)q 1 q 1 (1, 1)(L, 1)q 1 q 1 (0, 1)(L, 1)q 1 q 1 (1, 0)(L, 0)q 1 q 1 (0, 0)(L, 0)q 1 q 1 (B, 0)(R, 0)q 2 q 1 (B, 1)(R, 1)q 2 Nombre maximum de pas de calculs nécessaires pour terminer l exécution sur un mot de taille n : 1. 2n + 1 2. n + 1 3. n 4. 1 Ce qui donne 4n + 3, ce qui nous donne donc une complexité linéaire en O(n). Le test de palindrome peut-il être effectué avec une MT simple? Avec quel coût? 3.4.3 Théorème Soit une MT Z k à k bandes. Il existe une MT Z simple simulant n pas de calcul de Z k par au plus 2n (n + 2k + 1) pas de calcul de Z. Corollaire Le modèle de MT multi-bande est équivalent pour la calculabilité au modèle de MT simple. La MT simple correspondante a une complexité en ordre de grandeur égale au carré de la complexité de la MT multi-bande.

Chapitre 4 Complexité : ordres de grandeur 4.1 Rappel La complexité en temps d un calcul effectué par une MT Z est une fonction λn[c z (n)] qui détermine le nombre maximum de pas de calcul effectués par la MT Z en fonction de la taille n du mot d entrée. 4.1.1 Exemple MT à 2 bandes qui teste si un mot est un palindrome : 4n + 3. ordre de grandeur : n. MT simple qui teste si un mot est un palindrome : C Z = (n+2) (n+3) 2. ordre de grandeur : n 2. 4.1.2 Fonctions de références Par ordre de grandeur croissant : λn[log 2 n], λn[n], λn[n k ], λn[2 n ], λn[n!], λn[n n ]. 4.2 Définition 1 Une fonction g : N N est dite en ordre de grandeur inférieur à f, soit en O(f) s il existe une constante c et un entier n 1 tels que : n n 1, g(n) c f(n) 4.2.1 Exemple g = λ[4n + 3] est en O(n) (4n + 3 = O(n)), n 4, 4n + 3 5 n 4.3 Définition 2 Ordre de grandeur inférieur : O(f) = {g/ k 1 > 0, n 1 0, n n 1, g(n) k 1 f(n)} Ordre de grandeur supérieur : Ω(f) = {g/ k 2 > 0, n 2 0, n n 2, g(n) k 2 f(n)} Ordre de grandeur égal (ou exact) : Θ(f) = O(f) Ω(f) 4.4 Définition 3 Soit λn[ref(n)] une fonction de référence, on dira qu une MT Z a une complexité en ordre de grandeur égale (inférieur, ou supérieur) à λn[ref(n)] si sa fonction de complexité C Z est dans Θ(λn[ref(n)]) ( (λn[ref(n)]), Ω(λn[ref(n)])).

CHAPITRE 4. COMPLEXITÉ : ORDRES DE GRANDEUR 12 4.5 Cas particuliers Complexité constante : C Z est en Θ(1). Complexité linéaire : C Z est en Θ(n). Complexité quadratique : C Z est en Θ(n 2 ). Complexité polynomiale : C Z est en Θ(n k ). Complexité exponentielle : C Z est en Θ(2 n ). 4.6 Tableau comparatif n=5 n=50 n=1000 n=10000 n=10 6 Exemple Θ(1) 10ns 10ns 10ns 10ns accès dans un tableau Θ(logn) 10ns 20ns 30ns 40ns recherche dichotomique Θ(n) 50ns 100µs parcours d une liste Θ(nlogn) 50ns 400µs tri Θ(n 2 ) 25ns 1s 28h Θ(n 3 ) 27h Θ(2 n ) 320ns 130 jours

Chapitre 5 Réduction polynomiale entre modèles de calcul (RAM, Pseudo-Pascal, MT) 5.1 Machine RAM Chaque case contient un entier aussi grand qu on veut. Chaque registre contient un entier (au départ 0). Le registre r 0 joue un rôle particulier et est appelé «accumulateur». 5.1.1 Complexité d un programme RAM L ordre de grandeur du nombre maximum d instructions à exécuter sur une entrée de taille n, où la taille d un entier (ou d une séquence d entiers) est le nombre de bits (O et 1) de son codage binaire. 5.1.2 Théorème Le modèle RAM est polynomialement équivalent au modèle de machine de Turing. 5.1.3 Démonstration Le modèle MT peut être simulé par le modèle RAM Une MT à demi-bande de complexité f(n) peut être simulée par un programme RM de complexité O(f(n)). Les cases de la bandes sont numérotées à partir de 1. S = {s 0, s 1,.., s k } On construit une machine RAM sur le principe suivant : le registre n (i + 1) contient l entier j si s j est contenu dans la case n i de la bande de la MT. r 1 contient le numéro de la case pointée par la tête de lecture. Le programme RAM est une séquence de (k + 1) sous-séquences d instructions, chaque sous-séquence simulant l ensemble des instructions correspondant à un des (k + 1) symboles de la MT. Illustration q, s j, R, p N q,sj : LOAD 1 On met dans l accumulateur le numéro du symbole dans la case pointée par la tête de lecture. SUB = j JZERO N q,sj+4 JUMP N q,sj+1 LOAD 1 ADD = 1 ST ORE 1 JUMP N q,s0 On commence par copier le mot d entrée S i1..s in dans les registres de RAM. Θ(n) instructions. Pour simuler une instruction quadruplet : un nombre constant M = 7.

CHAPITRE 5. RÉDUCTION POLYNOMIALE ENTRE MODÈLES DE CALCUL (RAM, PSEUDO-PASCAL, MT)14 Θ(n) + Θ(f(n)) en O(f(n)) (à condition que f(n) Ω(n)) Le modèle RAM peut être simulé par le modèle MT Un programme RAM qui effectue f(n) instructions sur une entrée de taille n peut être simulé par une machine de Turing à 7 bandes de complexité en O(f(n) 3 ), à condition que les entiers soient codés en binaires. Principe de la simulation La première bande de la MT contient le codage en binaire de l entrée de la machine RAM. La seconde bande code le contenu des différents registres comme une séquence de mots b(i) 1 : b(c(i)) 2, séparés par B et terminé par *. Màj : On remplace par B b(i) : b(c(i)). On ajoute à la fin le nouveau mot B b(i) : b(c(i)). La troisième bande contient le codage binaire du compteur d instructions. La quatrième bande contient le codage en binaire du numéro du registre de travail. Les 3 dernières servent à faire les opérations arithmétiques. Pour chaque instruction RAM, on simule par un paquet d instructions à l aide d états (en nombre fini). Illustration ADD 20 (Ajoute au contenu de l accumulateur l entier que l on trouve dans le registre dont le numéro est contenu dans le registre numéro 20.) chercher sur la bande numéro 2 un mot de la forme B10100 : δb où δ est un mot, et on se positionne sur δ. copier le mot δ sur la bande numéro 4. chercher sur la bande numéro 2 un mot de la forme Bδ : γb. copier γ sur la bande numéro 6. chercher sur la bande numéro 2 un mot de la forme B0 : ub où u est un mot. copier le mot u sur la bande numéro 5. faire l addition binaire sur les trois dernières bandes. Coût de la recherche d un mot sur la bande numéro 2 : O(taille du mot d entrée de la bande n 2). le nombre de registres non nuls la taille d un motb(i) : b(c(i)) Le nombre de registre non nul est en O(f(n)). La taille d un mot b(i) : b(c(i)) est en O(f(n)) (car les entiers sont codés en binaire). Cela est fait pour n instructions, d où la complexité en O(f(n) 3 ). 5.2 Modèle pseudo-pascal 5.2.1 Définition La complexité d un programme pseudo-pascal est l ordre de grandeur du nombre d instructions élémentaires 3 à exécuter sur une entrée de taille n. Exemple x := y+1 Correspond à (x dans dans r 1 et y dans r 2 ) : LOAD 2 ADD = 1 STORE 1 Le modèle pseudo-pascal est équivalent en terme de complexité au modèle RAM. La complexité d un programme pseudo-pascal est la même en ordre de grandeur que le programme RAM qui le compile. 1. Codage binaire de l entier i. 2. Contenu du registre r i. 3. Instruction équivalente à un nombre constant d instructions RAM.

CHAPITRE 5. RÉDUCTION POLYNOMIALE ENTRE MODÈLES DE CALCUL (RAM, PSEUDO-PASCAL, MT)15 5.3 Résultat central Les modèles de calculabilité MT, RAM et pseudo-pascal sont tous polynomialement équivalents.

Chapitre 6 Classification des problèmes 6.1 Classe P 6.1.1 Définition La classe P des fonctions polynomiales ou des problèmes polynomiaux est l ensemble des fonctions/problèmes qui peuvent être calculés/décidables par un algorithme de complexité polynomiale. 6.2 Réduction polynomiale entre problèmes 6.2.1 Problème de décision Un problème de décision est un ensemble d instances X et une question Q(x)? pour x X. Si la réponse est «oui» on dit que x est une instance positive (négative sinon). 6.2.2 Définition Soit P 1 et P 2 deux problèmes, une réduction polynomiale de P 1 vers P 2 (P 1 p P 2 ) est une fonction de l ensemble des instances de P 1 telle que : elle est calculable en temps polynomiale. P 1 (x) est vrai si et seulement si P 2 (f(x)) est vrai. 6.2.3 Théorème Si P 1 p P 2 et si P 2 P alors P 1 P. (Si P 1 p P 2 et P 1 / P alors P 2 / P.) Si P 1 p P 2 et si P 2 p P 3 alors P 1 p P 3. Démonstration Si P 1 P : il existe un algorithme polynomiale qui décide si P (y) en temps en O(p(n)) 1 où n est la taille du codage de y. Pour résoudre P 1 (x) : calculer f(x) (où f est la réduction polynomiale qui permet P 1 p P 2 ). si P 2 (f(x)) est vrai, alors répondre oui au problème P 1. sinon, répondre non. Complexité O(p (n )) où n est la taille du codage de x et p est un polynôme. le résultat f(x) a une taille en O(p (n )). O(p(p (n ))) 1. p(n) est un polynôme.

CHAPITRE 6. CLASSIFICATION DES PROBLÈMES 17 O(p (n )) + O(p(p (n ))) O(p (n )) + O(p (n )) O(p (n )) Autre point : P 1 (x) P 2 (f(n)) et P 2 (y) P 3 (f (y)) P 1 (x) P 3 (f (f(n))) f f permet de passer de P 1 à P 2. 6.2.4 Définition Deux problèmes B 1 et B 2 sont polynomialement équivalents (B 1 p B 2 ) ssi B 1 p B 2 et B 2 p B 1. Exemple 1 Soit T S le problème du voyageur de commerce : Étant donnés un ensemble V de n villes et étant donné une matrice D de distances entre les paires de villes et un entier c. Existe-t-il un parcours fermé des n villes dont la longueur est inférieure ou égale à c? Mathématiquement, cela revient à trouver une permutation (v i1, v i2,.., v in ) telle que : ( n 1 k=1 d(v ik, v ik+1 )) + d(v in, v i1 ) c Algorithme On énumère toutes les permutations jusqu à en trouver une qui vérifie l inéquation si c est possible. Il y a n! permutations possibles, tester une inéquation a un coût en Θ(n), donc la complexité est en Θ(n n!) en Ω(2 n ). Exemple 2 Soit HC le problème du circuit hamiltonien : Étant donné un graphe G = (N, A) de k sommets (où A N N). Existe-t-il un circuit contenant chaque sommet du graphe une et une seule fois? Mathématiquement, cela revient à trouver une permutation (S i1, S i2,.., S ik ) des sommets du graphe G telle que : (S il, S il+1 ) A l [1, k 1], et (S ik, S il ) A. Algorithme On énumère toutes les permutations jusqu à en trouver une qui vérifie la propriété. Il y a k! permutations possibles, tester la propriété a un coût en Θ(k 3 ), donc la complexité est en Θ(k 3 k!). HC p T S Soit une instance quelconque de HC : G = (S, A) Soit f la transformation suivante : V = S { 1 si (v i, v j ) A f(g) = d(v i, v j ) = 2 sinon c = n Cette transformation f est de complexité polynomiale. G contient un cycle hamiltonien f(g) vérifie : ( n 1 k=1 d(v ik, v ik+1 )) + d(v in, v i1 ) c : Supposons que G contient un circuit hamiltonien. (S il..s in ) telle que l [1, n 1], (S il, S il+1 ) A et (S in, S ik ) A. d(s il, S il+1 ) = 1etd(S il, S il+1 ) = 1 ( n 1 k=1 d(v ik, v ik+1 )) + d(v in, v i1 ) n : Trivial, la démonstration est laissée en exercice au lecteur. HC p T S

CHAPITRE 6. CLASSIFICATION DES PROBLÈMES 18 6.2.5 Machine de Turing Non Déterministe Définition Une MTND (Machine de Turing Non Déterministe) est une MT dont l ensemble des quadruplets n est pas nécessairement consistant. plusieurs exécutions/calculs possibles à partir d une configuration initiale. Une MTND résout un problème B ssi à partir d une configuration initiale q 0 x : si B(x), il existe une configuration qui s arrête avec «OUI» sur la bande. si B(x), toutes les exécutions terminent avec un résultat différent de «OUI» sur la bande. Complexité L ordre de grandeur de la fonction qui détermine le nombre maximum de pas de calcul de l exécution la plus courte permettant de résoudre B. 6.3 Classe NP 6.3.1 Définition La classe NP est l ensemble des problèmes pour lesquels il existe une MTND pour les résoudre avec une complexité polynomiale. Question : Sont-ils décidables dans le modèle de calcul déterministe? Oui, mais avec une complexité exponentielle. 6.4 Problèmes NP-complet 6.4.1 Définition B est NP-complet si : B est dans NP. B NP, B p B. B 1 NP-complet tel que B 1 p B. 6.4.2 Théorème de Cook SAT est NP-complet. Problème SAT Étant donné une conjonction de clauses de logique propositionnelle, est-ce qu elle est satisfaisable? E 1... E k E i = x i1... x il Où x ij est une variable propositionnelle ou la négation d une variable propositionnelle. Exemple ( p 1 p 2 p 3 ) (p 1 p 2 p 3 ) Exemple d interprétation qui satisfait la formule : (p 1, p 2, p 3 ) = (F, V, F ). 6.4.3 Exemples de problèmes NP-complets SAT. 3-SAT Problème de couverture de graphes Étant donné un couple (G,j) où G est un graphe et j est un entier. Existe-t-il une couverture du graphe G = (V, E) contenant j sommets? Un ensemble S V est une couverture de G si (s 1, s 2 ) E, s 1 ou s 2 S.