Optimisation discrète, séance 5 : Cours THÉORIE de la COMPLEXITÉ

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)

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

Programmation linéaire

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

Nombres premiers. Comment reconnaître un nombre premier? Mais...

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

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

Eléments de Théorie des Graphes et Programmation Linéaire

Développement décimal d un réel

Représentation des Nombres

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

Logique. Plan du chapitre

Cryptographie et fonctions à sens unique

Conversion d un entier. Méthode par soustraction

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)

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Introduction à l étude des Corps Finis

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Représentation d un entier en base b

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

La fonction exponentielle

Cours de Master Recherche

Chapitre VI - Méthodes de factorisation

Logiciel de Base. I. Représentation des nombres

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

FONDEMENTS DES MATHÉMATIQUES

Pour l épreuve d algèbre, les calculatrices sont interdites.

Resolution limit in community detection

Optimisation des fonctions de plusieurs variables

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

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

I- Définitions des signaux.

Fonctions de plusieurs variables

Cours 1 : Qu est-ce que la programmation?

Corrigé des TD 1 à 5

BACCALAUREAT GENERAL MATHÉMATIQUES

MIS 102 Initiation à l Informatique

Cours 1 : La compilation

Cours d algorithmique pour la classe de 2nde

Probabilités sur un univers fini

Rappels sur les suites - Algorithme

Fonctions homographiques

Machines virtuelles Cours 1 : Introduction

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

Recherche dans un tableau

La question est : dans 450 combien de fois 23. L opération est donc la division. Le diviseur. Le quotient

Image d un intervalle par une fonction continue

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

V- Manipulations de nombres en binaire

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Comparaison de fonctions Développements limités. Chapitre 10

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

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

Chapitre 10 Arithmétique réelle

Informatique Générale

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

Objets Combinatoires élementaires

Quelques tests de primalité

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Chapitre 2 Le problème de l unicité des solutions

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

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 1 : Introduction Ordinateurs - Langages de haut niveau - Application

ÉPREUVE COMMUNE DE TIPE Partie D

Suites numériques 3. 1 Convergence et limite d une suite

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Cours d arithmétique Première partie

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

Continuité en un point

Algèbre binaire et Circuits logiques ( )

Limites finies en un point

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Cours Fonctions de deux variables

Intégration et probabilités TD1 Espaces mesurés Corrigé

Résolution de systèmes linéaires par des méthodes directes

Théorie et codage de l information

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

chapitre 4 Nombres de Catalan

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

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Licence Sciences et Technologies Examen janvier 2010

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

Rappels et compléments, première partie : Nombres complexes et applications à la géométrie

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Compilation (INF 564)

Algorithme. Table des matières

Catalogue des connaissances de base en mathématiques dispensées dans les gymnases, lycées et collèges romands.

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

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

ALGORITHMIQUE ET PROGRAMMATION En C

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

III- Raisonnement par récurrence

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Continuité et dérivabilité d une fonction

Cours d Analyse. Fonctions de plusieurs variables

Transcription:

Graphes et Optimisation discrète 1 Optimisation discrète, séance 5 : Cours THÉORIE de la COMPLEXITÉ Résumé La solution d un problème combinatoire, quand elle existe, peut être déterminée par l énumération de toutes les possibilités : elle appartient à un ensemble fini et on peut à l aide d un algorithme fini tester si un élément de cet ensemble est une solution. Mais l énumération de toutes les solutions exige souvent un temps de calcul exponentiel par rapport à la complexité des données. Il existe de très nombreux problèmes, dits NP-complets, pour lesquels on ne connaît pas d algorithme plus efficace que l énumération de tous les sous ensembles d un ensemble. En un certain sens ces problèmes sont équivalents entre eux : un algorithme efficace (précisément polynômial) pour l un le serait pour tous. Curieusement on ne sait pas démontrer que ces problèmes n admettent pas d algorithme polynômiaux, c est la conjecture P NP. 1 Problème combinatoire et notion d algorithme 1.1 Exemples de problèmes résolus par un algorithme Opérations élémentaires sur les entiers par les méthodes apprises à l école élémentaire. Calcul de la valeur d un polynôme en un point par le schéma de Horner n k=0 a k x k = ((...((a n x + a n 1 )x + a n 2 )x...)x + a 1 )x + a 0 Multiplication de deux matrices (n, n) : L algorithme usuel en n 3 opérations n est pas optimal, voir ci-dessous en annexe l algorithme de Strassen. Résolution d un système linéaire : algorithme de Gauss. Pour une matrice pleine il faut n3 3 opérations élémentaires, l algorithme n est pas optimal. Calcul du PGCD de deux entiers : algorithme d Euclide (PGCD). Test de primalité relative de deux entiers : on peut par l algorithme d Euclide tester si le PGCD est 1. Test de primalité (PRIM). Il s agit de tester si un entier n est premier. Noter que si l entier s écrit en décimal avec 50 chiffres, il est de l ordre de 10 50. Ce qui interdit en pratique de le diviser par tous les entiers inférieurs. Certains entiers premiers célèbres sont des nombres de Mersenne (2 p +1), ils sont donc très très grands par rapport à leur représentation (l entier p écrit en décimal). Ce problème, historiquement très important, a de nombreuses applications (cryptographie)

Graphes et Optimisation discrète 2 Construction d un arbre minimal recouvrant un graphe. Vu à la séance 1. Connexité d un graphe. La construction d un arbre de recouvrement peut servir d algorithme, voir la séance 1. Notons que certains des algorithmes ci-dessus peuvent être appliqués théoriquement à des nombres réels mais que, interprétés sur un ordinateur, ils utiliseront des opérations en virgule flottante, portant sur des réels tronqués à un nombre fini de décimale, opérations qui feront des erreurs de troncature, ils ne font pas alors de calcul exact. Nous ne considérerons dans ce qui suit que des algorithmes portant sur des objets ayant une représentation finie. Nous en donnerons ci-dessous une définition plus précise. 1.2 Problème combinatoire Définition 1 (informelle) Un problème combinatoire est un problème portant sur un ensemble fini d objet fini et pour lequel on peut tester par un algorithme si un objet est solution. Un tel problème peut donc être résolu par énumération des objets et test pour déterminer si un objet est une solution. 1.2.1 Exemples k-coloration d un graphe. Est-il possible de colorier les noeuds d un graphe de façon à ce que deux noeuds adjacents n aient jamais la même couleur? Pour k = 2 on a un algorithme très rapide, vu à la séance 2. Circuit eulérien (EUL) : existe-t-il sur un graphe un circuit passant par toutes les arêtes une fois et une seule? Circuit hamiltonien (HAM) : existe-t-il sur un graphe un cycle passant par tous les sommets d un graphe une fois et une seule? Le problème du voyageur de commerce (TSP) : trouver un cycle hamiltonien de longueur minimal sur un graphe valué. Satisfiabilité d un ensemble de clauses 1 (SAT). Un ensemble de n clauses 2 (P 1 P 2... P k ) à p symboles est-il satisfiable, i.e. peuton donner des valeurs VRAI ou FAUX aux symboles P i pour que toutes les clauses soient vraies? (Des propositions quelconques peuvent être écrites comme une conjonction de clauses, leur satisfiabilité est ramenée à celle de chaque clause). On peut tester toutes les valeurs des symboles de proposition. Satisfiabilité d un ensemble de clauses de longueur au plus k (k-sat). La programmation linéaire en nombres entiers (ILP) : chercher le maximum d une fonction linéaire sur tous les vecteurs de R p à composantes entières qui vérifient un ensemble d inéquations linéaires (si l ensemble défini par les contraintes est borné il n y a donc qu un nombre fini de solutions possibles). 1 voir annexe ci-dessous 2 Voir l annexe 1

Graphes et Optimisation discrète 3 1.3 Rappel sur la notion d algorithme La notion d algorithme que nous utiliserons est stritement déterministe, ce qui exclut les opérations en virgule flottante. On suppose donné un langage de programmation L et une classe d objets C définis par des chaînes de caractères (nous dirons parfois que ces chaînes forment un mot). Un algorithme est une fonction définie par un programme (notion à préciser) écrit dans le langage L qui, si on lui donne en entrée un objet (ou un mot) n C, fournit en sortie un objet f(n). Comme à une chaîne de caractères on peut associer un entier et réciproquement, nous pouvons considérer tout aussi bien qu un programme opère sur les entiers. Dans tous les cas nous notons n le nombre de bits nécessaires pour représenter l objet n. Il y a plusieurs façons de coder un entier sous forme de chaînes de caractères, nous y reviendrons. Un n-uple d entiers peut être représenté par un seul entier, moyennant un codage adéquat, nous nous limiterons donc aux fonctions à un argument. Tous les langages de programmation usuels (Assembleur, C, Pascal, CAML, Mathematica...) sont équivalents en ce sens qu une fonction calculable par l un est calculable par tous les autres. Pour être équivalent à ceux-ci un langage doit comprendre, outre les opérations élémentaires, les test (IF...) et les boucles while, ou bien les tests et les GO TO, ou, c est équivalent, la composition des fonctions et la récursivité (langages fonctionnels), ou encore la possibilité de reconnaître une chaîne de caractères et la remplacer par une autre (Mathematica). L exécution d un algorithme ne se fait pas toujours en un temps fini : certains algorithmes bouclent indéfiniment. Nous supposerons que pour toutes les valeurs de n l algorithme s arrête en un nombre fini d étapes. (Rappel : le problème de l arrêt d un algorithme est indécidable, mais c est un autre problème...) Nous distinguerons dans la liste d exemples ci-dessus les problèmes (par exemple la primalité (PRIM)) des algorithmes particuliers pour les résoudre (par exemple tester toutes les divisions). 1.4 Algorithme de reconnaissance Nous nous limiterons dans cette étude aux fonctions, calculables par un algorithme, à valeurs {0, 1}. On peut considérer ces fonctions n f(n) comme des tests d appartenance des objets n C à un certain sous-ensemble (correspondant à la valeur 1). On dit aussi que ces fonctions acceptent un mot ou reconnaissent le sous langage de L qui est formé par les mots acceptés. Cela définit une classe particulière d algorithme, auxquels on peut ramener les autres, car à une fonction quelconque n f(n) définie sur les entiers, on peut associer la fonction de reconnaissance dont les données sont (n, m) qui renvoie 1 si et seulement si m = f(n). On peut donc ramener le calcul de f(n) aux problèmes de reconnaissance successifs f(n) = p pour des valeurs croissantes de p. Ainsi au problème du voyageur de commerce nous associerons le problème de reconnaissance (TSP) qui consiste à chercher si il existe un circuit hamiltonien de longueur égale ou inférieure à un entier k. 1.5 Différentes notions de complexité La complexité d un algorithme présente plusieurs aspects : - Complexité en nombre d opérations algébriques : notion utile pour des algorithmes qui définissent des fonction algébriques, elle est surtout utilisée pour des calculs en virgule flottante.

Graphes et Optimisation discrète 4 - Complexité en temps : temps de calcul. C est celle que nous allons développer. - Complexité en espace : encombrement mémoire. Elle est toujours inférieure la complexité en temps car lire ou écrire un bit est une opération. - Complexité algorithmique : longueur du programme. Elle sert à définir la complexité d un objet comme la longueur du plus court programme qui peut le calculer : une définition précise de cette complexité, la complexité au sens de Chaïtin-Kolmogorov a permis de donner une définition précise de la notion de suite aléatoire. 2 La complexité en temps 2.1 Introduction On veut mesurer le temps de calcul. Il dépend bien sûr de l ordinateur sur lequel le programme est exécuté. En première approximation nous pouvons considérer que le temps de calcul est proportionnel aux nombres d opérations élémentaires effectuées par l algorithme. Il dépend de la complexité des données, représentée par n, la lecture des données est d ailleurs une borne inférieure de la complexité. On peut préciser cette notion en remarquant que les ordinateurs opérant en pratique sur des bits on peut considérer qu une opération élémentaire est une opération sur les bits. On mesurera donc la complexité en temps par le nombre d opérations sur les bits, ce qui exige de décomposer les opérations des langages usuels en opérations proches de celles effectuées par des langages de très bas niveau. Bien sûr cela entraîne toujours une dépendance vis à vis de l ordinateur, par exemple du fait de l utilisation du parallélisme. Pour fixer les idées nous choisirons pour mesurer la complexité une écriture de l algorithme sous la forme d une Machine de Turing. Nous supposons donc qu un algorithme est écrit dans le langage des machines de Turing et nous en déduirons une définition précise de la complexité 2.2 Le codage des données Nous avons supposé plus haut qu un algorithme opérait sur des objets appartenant à une certaine classe C codés par des chaînes de caractères, ou, c est équivalent des entiers. Donnons quelques exemples de codage des données d un problème sous cette forme. Codage d un entier n Il peut être un-aire (une suite de n bâtons), binaire, décimal... Utiliser un codage un-aire signifie en pratique que l on rapporte la complexité d un algorithme sur les entiers à la valeur de l entier. Le codage en base k 2 implique entre l entier n et la longueur n de sa représentation une relation n k n. Donc le simple balayage des entiers inférieurs à n définit un nombre exponentiel d opérations par rapport à la longueur n des données. Codage d un graphe (G, A) On peut représenter un graphe à n noeuds par sa matrice booléenne, soit n 2 bits au plus. Codage d un ensemble de clauses 3 On peut représenter un ensemble de n clauses (P 1 P 2... P k ) à p arguments par une 3 Voir annexe 1 ci-dessous

Graphes et Optimisation discrète 5 matrice(n, p) à coefficients dans (1, 1, 0) pour représenter la présence d un symbole de proposition, l absence ou la présence de sa négation Nous verrons d autres exemples en exercice. 2.3 Les machines de Turing Le lecteur trouvera sur le WEB de nombreux sites décrivant les machines de Turing, cf. wikipedia. 2.4 Définition précise de la complexité Définition 2 La complexité d un algorithme est le nombre d opérations effectuées par la machine de Turing associée à cet algorithme qui est supposée s arrêter toujours. Remarquer que sur une machine de Turing le simple accès un objet rangé en mémoire (quelque part sur le ruban) est une opération polynômiale. C est une grande différence avec les ordinateurs actuels pour lesquels une copie d un élément n de la mémoire dans un registre correspond au pire à un nombre d opérations de l ordre de n. 3 Les problèmes combinatoires P et NP 3.1 Exemples de complexité Les opérations élémentaires sur les entiers (additions, multiplications...). Si les entiers sont représentés en binaire ce sont des opérations dont la complexité est linéaire par rapport à n. Entiers premiers entre eux. L algorithme d Euclide appliqué à deux nombres n et m < n réduit à chaque étape par une division euclidienne le plus grand des deux entiers d un facteur au moins 2. Il se termine donc en au plus log 2 n n opérations algébriques. Ce qui fait de l ordre de n 3 opérations élémentaires. Test de primalité (PRIM). D après un résultat récent 4 la complexité est inférieure à C n 12. SAT L algorithme qui teste toutes les valeurs possibles des symboles de propositions (soit 2 n ) est exponentiel par rapport aux nombres de symboles, et donc par rapport à la longueur des données. CLIQUE Etant donné un graphe n noeuds existe-t-il une clique (i.e. un sous graphe complet) à k noeuds? L énumération de tous les sous-graphes à k noeuds exige C k n tests sur ces sous-graphes. Il existe donc une constante c telle que le nombre d opérations pour cet algorithme est inférieur à cn k. 4 PRIMES is in P, Manindra Agrawal, Neeraj Kayal and Nitin Saxena

Graphes et Optimisation discrète 6 3.2 Définitions Définition 3 La complexité d un algorithme est polynômial (On dit de classe P) si il existe une constante C et un entier k tels que le nombre d opérations effectuées par la machine de Turing associée à cet algorithme pour une données n est inférieur à C n k. La primalité relative de deux entiers, la connexité d un graphe sont des algorithmes polynômiaux. On sait depuis peu (2002, voir note 4) que PRIM est dans P, c est un résultat non trivial. Voir en exercices que 2 SAT est polynômial. Pour CLIQUE si l on suppose que k est fixe et ne fait pas partie des données il est polynômial, mais on considère que k fait partie des données, l algorithme d énumération n est pas polynômial. Définition 4 La complexité d un algorithme est exponentielle (On dit de classe EXP) si, il existe une constante C et un entier k tels que le nombre d opérations effectuées par la machine de Turing associée à cet algorithme pour une données n est inférieur à C2 n. On a donc P EXP. Ainsi SAT résolu par énumération des valeurs des symboles de proposition est exponentiel. Il en est de même de CLIQUE, k-col, HAM, TSP par les algorithmes d énumération des solutions possibles. On ignore s ils sont dans P. La primalité par le test des divisions par tous les entiers inférieurs est exponentielle. Définition 5 Nous dirons qu un problème de reconnaissance est de classe P, EXP si il existe un algorithme de cette classe pour le résoudre. Pour la plupart des problèmes que nous avons définis il existe un algorithme simple pour tester si une donnée est une solution, mais il n est pas simple de trouver une solution. Nous allons donner une définition abstraite de ces problèmes : Définition 6 Le problème de reconnaissance défini par une fonction f(n) est de classe NP ( nondeterministic polynômial ) si il existe une constante C, un entier k, et une fonction g(m) calculable par un algorithme polynômial telle que à toute donnée n on puisse associer une donnée (le témoin ) m = φ(n) en entrée de g telle que m C n k et que g(m) = 1 si et seulement si f(n) = 1 Il y a beaucoup de variantes dans l écriture de cette définition, mais la classe NP ne change pas! Notons que la définition n exige pas que l on sache construire le témoin φ(n), mais seulement qu il existe : pour un problème NP on ne sait pas facilement trouver une solution, mais vérifier facilement qu une donnée est une solution. La totalité des problèmes de reconnaissance définis plus haut sont de classe NP. Un des rares algorithmes pour lequel ce résultat n est pas trivial ( test de primalité) s est révélé être de classe P! 3.3 Exemples de problèmes NP Pour k-col, la fonction est f(n) est la fonction qui vaut 1 si le graphe, codé par n, est coloriable en k couleurs et 0 sinon. Un coloriage d un graphe est la donnée du couple m = (n, p) ou n est le codage du graphe et p le codage d un coloriage des noeuds. On prend m = φ(n) =

Graphes et Optimisation discrète 7 (n, p). La fonction g(m) est une fonction qui teste si deux noeuds adjacents ont la même couleur. Tester la propriété revient à balayer toutes les arêtes, c est à dire la matrice du graphe, c est donc un algorithme linéaire par rapport à m = n + p car n est à peu près égal au nombre d arêtes du graphe. Pour CLIQUE, n est le code du graphe (et contient l entier k), f(n) la fonction qui vaut 1 si le graphe admet une clique d ordre k, 0 sinon. Une clique est la donnée du couple m = (n, p) ou N est le codage du graphe et p un sous-ensemble de noeuds. On prend donc m = φ(n) = (n, p). La fonction g(m) avec m = (n, p) est une fonction qui teste si un sous graphe de n associé aux noeuds p est complet. Tester la propriété revient à balayer toutes les arêtes du sous-graphe associé à p, c est donc un algorithme linéaire. Pour SAT, étant donné un ensemble de clauses codé par n, f(n) est la fonction qui vaut 1 si cet ensemble est satisfiable 0 sinon. Une valuation de cet ensemble est un couple m = (n, p) où n est le code de l ensemble des clauses et p le code d un ensemble de valeurs (VRAI ou FAUX) attribuées aux symboles P i. La complexité des données p et N sont (à peu près) le nombre de symboles P i et le nombre de symboles dans les clauses ( m = n + p ). On prend donc m = φ(n) = (n, p). La fonction g(m) est la fonction qui calcule la valeur des clauses avec pour données les clauses (codées par n) et un ensemble de valeurs des symboles (codées par p). Le calcul, par les règles usuelles du calcul booléen, comporte un nombre d opérations de l ordre de somme des longueurs des clauses, c est donc un algorithme linéaire vis à vis des données de g. 3.4 Robustesse de ces définitions Toutes les opérations algébriques (addition, multiplication...) sont polynômiales. De même les tests, les recopies d éléments en mémoire, ce qui fait que la classe P ne dépend pas du type d ordinateur ou du langage utilisé. Le parallélisme ne fait que modifier la constante C, l utilisation de machines de Turing très peu sophistiquées change la valeur de k seulement. Ces classes P, EXP, NP sont indépendantes des types d ordinateur utilisé, dès lors que l algorithme est décomposé en opérations sur des bits. 3.5 Problèmes NP : variantes de la définition Soit un problème NP. Par définition il existe une fonction g(m) opérant sur des objets m à définir, telle que f(n) = 1 si et seulement si il existe m tel que g(m) = 1. Choisissons pour m un couple (n, p) où p est le code d une suite d entier (p 1,..., p k ). Si bien que le problème associé à la fonction g a pour données k entiers supplémentaires. Ces entiers peuvent, par exemple, définir des GO TO p i, on peut donc considérer que ces entiers servent à définir l ordre de déroulement des instructions du programme. Le programme de la fonction g(m) est de complexité polynômial et il a pour donnée les objets initiaux mais son déroulement n est déterminé que par la donnée supplémentaire des entiers p 1,..., p k. On peut donc le considérer, par abus de langage, comme un programme non déterministe qui avec des données supplémentaires devient déterministe et polynômial. Autrement dit on peut considérer qu un problème est NP si il existe un algorithme non déterministe 5 polynômial qui lui 5 i.e. il attend qu on lui donne certains entiers pour s exécuter

Graphes et Optimisation discrète 8 est équivalent. Pour rendre la définition encore plus imagée on considère souvent qu un oracle donne les valeurs des entiers p 1,..., p k, que l on peut considérer comme la réponse à une question. 3.6 Représentation d un problème par un autre 3.6.1 Définitions Définition 7 Un problème de reconnaissance P 1 (données n, fonction f(n)) est polynômialement représentable dans le problème P 2 (données m, fonction g(m)) si, il existe une constante C, un entier k, et une fonction φ(m) telle que à toutes données n de P 1 on puisse associer une donnée m = φ(n) en entrée de P 2 telle que m C n k et que g(m) = 1 si et seulement si f(n) = 1 On note On n exige pas de construire φ(n). P 1 P P2 La relation P 1 P P2 est transitive. Si on a un algorithme polynômial pour P 2 on a un algorithme polynômial pour P 1. 3.6.2 Exemples Représentation de SAT dans CLIQUE voir l annexe 3 ci-dessous. Représentation de k COL dans SAT voir les exercices. Représentation de SAT dans 3 SAT Voir les exercices. Représentation de 3 SAT dans 3 SAT sym 3-SATsym est le problème consistant à décider la proposition Π : il existe un ensemble de valeurs de vérité P j = V RAI ou P j = F AUX tel que dans toutes les clauses il y ait (au moins) un élément vrai et (au moins) un élément faux. Voir l annexe 4 pour la démonstration. 4 Problèmes NP-Complet 4.1 Le théorème de Cook Théorème 1 Tous les problèmes de classe NP sont polynômialement représentables dans SAT. Notons qu il est souvent facile de démontrer qu un problème est polynômialement représentable dans SAT sans passer par le théorème de Cook (voir en exercice le cas de 3-SAT). Nous ne démontrons pas ce théorème. Sa démonstration repose sur une description du déroulement du programme d une machine de Turing à l aide de propositions 6 et de clauses de façon à ce que la donnée de l ensemble des états du ruban soit équivalente à la donnée d un ensemble de valeurs satisfaisant ces clauses. 6 Ex. : La valeur de la case i est 0, Écrire 1, Déplacer la tête de lecture à gauche...

Graphes et Optimisation discrète 9 4.2 Les problèmes NP-Complet Définition 8 Un problème de reconnaissance est NP-complet si tout problème de classe NP est polynômialement représentable dans ce problème. Définition 9 Un problème d optimisation (ou de calcul d une fonction) est NP-difficile si le problème de reconnaissance qui lui est associé est NP-complet. Comme tout problème NP est représentable dans SAT, il suffit de montrer que SAT est représentable dans un problème NP pour montrer que ce problème est NP-complet. En pratique on procède souvent par complexité croissante 4.3 Exemples de problèmes NP-complets SAT P 3 SAT P 3 SAT sym P 3 COL SAT P CLIQUE P HAM P T SP SAT d après le théorème de Cook. CLIQUE parce que SAT est représentable dans CLIQUE (sera fait en cours). 3-SAT (voir exercices). 3-SATsym : voir l annexe 4. 3-COL (voir exercices). HAM (admis) TSP (admis) La programmmation linéaire en nombre entiers. Un très grand nombre de problèmes, parfois très particuliers ou très sophistiqués et d une grande utilité pratique (ordonnancement, logistique, transport) sont NP-complets. Si l on connaissait un algorithme polynômial pour l un d entre eux, on en aurait un pour tous. Pour certains de ces problèmes (CLIQUE) il semble naturel qu il n y ait pas de méthode plus efficace que l énumération, d où le l intuition que ces problèmes devraient être dans EXP mais pas dans P. En pratique la notion de problème N P Complet correspond à des problèmes qui sont effectivement difficiles ; on ne connaît pas d algorithmes efficaces pour traiter ces problèmes dans des situations tout à fait usuelles. Un tel algorithme pour, par exemple SAT, étendrait considérablement les applications de l intelligence artificielle. 4.4 La conjecture P NP La situation étrange aujourd hui est que on ne sait pas démontrer que les problèmes NP complet ne sont pas polynômiaux, c est la conjecture P NP

Graphes et Optimisation discrète 10 5 Annexes 5.1 Annexe 1 : une présentation simplifiée du calcul propositionnel, point de vue sémantique Nous résumons quelques définitions et propriétés classiques du calcul des propositions. Une variable (notée P,P i, Q...) du calcul propositionnel, appelée aussi symbole de proposition peut prendre deux valeurs (dites de vérité) : VRAI (ou 1) et FAUX (ou 0). Une formule du calcul propositionel est construite à partir des symboles de proposition à l aide des opérateurs ( connecteurs ) négation ( ), disjonction ( ), conjonction ( ), exemple : ((P 1 P 2 ) (P 1 P 3 )). La valeur d une formule pour des valeurs données des variables se calcule selon les règles bien connues : en notant x, y les valeurs ( 0 ou 1) des variables, on a v( x) = 1 x, v(x y) = xy et v(x y) = x + y xy). L implication ( ) et l équivalence ( ) sont des symboles dérivés : P Q signifie P Q, P Q signifie P Q et Q P. Une clause est une formule disjonctive :(P 1 P 2... P k ). Règle de De Morgan : (P Q) P Q Distributivité : (P Q) P Q (P Q) R (P R) (Q R) (P Q) R (P R) (Q R) Forme normale : En utilisant les règles ci-dessus on montre que toute formule peut être mise sous une forme normale conjonctive (P 1 P 2... P k )... ( P i P j... P n ) ou disjonctive (P 1 P 2... P k )... ( P i P j... P n ). Un ensemble de formules est satisfiable si on peut donner des valeurs de vérité aux variables qui rendent vraies toutes les formules de l ensemble. Noter que si une formule s écrit C 1 C 2 elle est satisfiable si et seulement si C 1 et C 2 le sont ; en mettant les formules sous forme normale conjonctive on peut donc toujours considérer que l ensemble des formules à satisfaire est composé de clauses. Une formule est une tautologie si elle est vraie pour toutes les valeurs possibles de ses variables, c est à dire aussi si sa négation n est pas satisfiable. Une démonstration de la formule C à partir des formules (hypothèses ou axiomes) C i, i = 1,..., p équivaut à montrer que la formule (C 1... C p ) C est une tautologie. Ce qui revient aussi à démontrer que l ensemble des formules (C 1,..., C p, C) n est pas satisfiable, d où l importance du problème de la satisfiabilité. 5.2 Annexe 2 : L algorithme de multiplication matricielle de Strassen Un exemple classique de réduction de la complexité par partition, présenté sous forme d exercice. Combien de multiplications et additions sont nécessaires pour effectuer la multiplication de deux matrices par la formule classique?

Graphes et Optimisation discrète 11 Corr. n 3. Vérifier que la multiplication C = AB de deux matrices de dimension 2n partitionnées en 4 blocs (n, n) peut s écrire m 1 = (A 12 A 22 )(B 21 + B 22 ) m 2 = (A 11 + A 22 )(B 11 + B 22 ) m 3 = (A 11 A 21 )(B 11 + B 12 ) m 4 = (A 11 + A 12 )B 22 m 5 = A 11 (B 12 B 22 ) m 6 = A 22 (B 21 B 11 ) m 7 = (A 21 + A 22 )B 11 puis : C 11 = m 1 + m 2 m 4 + m 6 C 12 = m 4 + m 5 C 21 = m 6 + m 7 C 22 = m 2 m 3 + m 5 m 7 Noter qu il y a 7 multiplications et 18 additions de blocs. Supposons que les matrices soient de dimension n = 2 p (sinon on complète les matrices par des zéros jusqu à obtenir n = 2 p ). On effectue récursivement la multiplication des blocs, montrer que le nombre d opérations (additions et multiplications) T (n) nécessaires pour calculer le produit est solution de la récurrence T (n) = 7T ( n 2 ) + 18(n 2 )2, T (1) = 1 Corr. Comptez... Soit ɛ > 0. Montrer qu il existe une constante C > 0 telle que n log 2 7 T (n) Cn log 2 (7+ɛ) Le calcul exact montre que T (n) < n 3 pour n 2 15. Corr. On a T (n) 7T ( n 2 ) et donc T (n) n log 2 7. Soit ɛ > 0, comme log 2 7 > 2 il existe p 0 tel que si n > 2 p 0 on a 18( n 2 )2 ɛ( n 2 )log 2 7 ɛt ( n 2 ) et donc T (n) (7 + ɛ)t ( n 2 ) d où T (2 p ) (7 + ɛ) p p0 T (2 p0 ) et donc T (n) C(7 + ɛ) p avec C = (7 + ɛ) p 0 T (2 p 0 ), d où T (n) C(7 + ɛ) log 2n = Cn log 2 (7+ɛ)

Graphes et Optimisation discrète 12 5.3 Annexe 3 : CLIQUE est NP-complet Nous avons vu que CLIQUE est NP (ce qui implique que CLIQUE est représentable dans SAT), il nous reste donc à montrer que SAT est représentable dans CLIQUE ; SAT étant NP-complet d après le théorème de Cook, nous aurons donc montré que CLIQUE est NP-complet. Soit un ensemble de n clauses avec p symboles de proposition. Nous pouvons associer un graphe G à SAT de la manière suivante : Pour chaque clause (P 1 P 2... P k ) on crée k noeuds auxquels nous donnerons le nom de la proposition associée (i.e. P i ou P i ). On crée une arête entre deux noeuds si : i) les deux noeuds ne sont pas associés à des propositions qui sont la négation l une de l autre (i.e. P i et P i ) et ii) les deux noeuds n appartiennent pas à la même clause. Montrons qu il existe une clique à n noeuds dans G si et seulement si les clauses sont simultanément satisfiables : Si il existe une clique (i.e. un sous-graphe complet) à n noeuds dans ce graphe, donnons la valeur VRAI à toutes les propositions associées (i.e. si c est P i on choisit P i VRAI si c est P i on choisit P i FAUX). Ce choix n est pas contradictoire car deux noeuds de cette clique ne sont pas associés à une proposition P i et sa négation P i d après i) ; d autre part deux noeuds ne peuvent appartenir à la même clause d après ii) et il y a n noeuds dans la clique donc un noeud par clause et donc une proposition vraie par clause qui sont donc toutes satisfiables. Réciproquement, si les n clauses sont satisfiables, on peut choisir une proposition vraie par clause ; les n propositions ainsi définies forment une clique de G : en effet deux propositions quelconques ne peuvent être négation l une de l autre (car simultanément vraies) et n appartiennent pas à la même clause, elles sont donc reliées par une arête dans le graphe G. Les propositions qui ne sont pas dans la clique peuvent prendre des valeurs arbitraires. FIG. 1 Graphe complémentaire de G Prenons comme exemple les 4 clauses suivantes : P 1 P 2 P 3 P 4

Graphes et Optimisation discrète 13 P 1 P 2 P 3 P 1 P 2 P 3 P 2 P 3 P 4 Par souci de simplicité nous avons tracé 7 ci-dessus, non pas G, mais le graphe G complémentaire de G (i.e. une arête est dans G si et seulement si elle n est pas dans G) ; une clique de G est un ensemble indépendant dans G, i.e. un ensemble de noeuds non reliés par des arêtes. Les noeuds en blanc définissent une clique de G. En donnant la valeur VRAI à P 1, P 2, P 3, P 4 on satisfait toutes les clauses. 5.4 Annexe 4 : représentation de 3-SAT dans 3-SATSym 3-SATsym est le problème consistant à décider la proposition Π : il existe un ensemble de valeurs de vérité P j = V RAI ou P j = F AUX tel que dans toutes les clauses il y ait (au moins) un élément vrai et (au moins) un élément faux. Proposition 1 3-SATSym est polynômialement représentable dans 3-SAT et réciproquement. Noter d abord que pour vérifier que un ensemble de clauses a la propriété Π il suffit d ajouter à cet ensemble toutes les clauses obtenues en remplaçant chaque symbole de proposition par sa négation et de vérifier que cet ensemble est satisfiable ; ce qui montre que 3-SATSym est linéairement représentable dans 3-SAT. Montrons que 3-SAT est représentable dans 3-SATSym. On considère un ensemble de n clauses de la forme L 1 i L2 i L3 i où la notation Lj i désigne un symbole P k ou P k. L ensemble des clauses L 1 L 2 L 3 est satisfiable si et seulement si les 4n clauses L 1 i L2 i Q i L 1 i Q i R L 2 i Q i R L 3 i Q i R ont la propriété Π. Pour le montrer on notera que L 1 i L2 i L3 i est équivalent à L1 i L2 i Q i et Q i L 3 i et donc, en utilisant la définition de l équivalence (A B ssi A B et B A) et les règles du calcul des propositions, à L 1 i L2 i Q i L 1 i Q i L 2 i Q (2) i L 3 i Q i Si les clauses L 1 i L2 i L3 i sont satisfiables on vérifie facilement que les 4 clauses (1) ont la propriété Π en donnant à Q i la valeur de L 1 i L2 i et à R la valeur FAUX. (1) 7 Il faut ajouter des arêtes entre tous les noeuds d une même clause.

Graphes et Optimisation discrète 14 Réciproquement si ces 4n clauses (1) ont la propriété Π on peut supposer que R a la valeur FAUX : en effet si les 4n clauses ont la propriété Π, cela signifie qu il existe un ensemble de valeurs de vérité pour les symboles P k, Q i et R tel que une proposition soit VRAI et une FAUX dans chaque clause ; Si dans cet ensemble R est VRAI, on prend les valeurs complémentaires (i.e. on remplace VRAI per FAUX et vice-versa) ces nouvelles valeurs vérifient la propriété Π et R est FAUX. Si R est FAUX les 4n clauses 1 sont satisfiables ce qui implique que l ensemble 2 est satisfiable ; or ces clauses sont elles même sont équivalentes à l ensemble L 1 i L 2 i L 3 i