COMPLEXITE DES PROBLEMES COMBINATOIRES Master d’Informatique : spécialité IAD P. Chrétienne : Prof. Université Paris 6.

Slides:



Advertisements
Présentations similaires
Algorithmes et structures de données avancées Cours 7
Advertisements

Algorithmes et structures de données avancés
Sensibilisation à l’Algorithmique et structure de données
CONCEPTION DES BASES DE DONNÉES: modèle entités-associations
Séminaire Biblio LISC - 3/04/02 Complexité, information Daprès JP Delahaye (1999)
Pour tout entier n,n est entier ou irrationnel Un beau théorème absent de larithmétique dEuclide (Livres 7 à 9 des Éléments)
Conception et analyse des algorithmes
COURS SUR LA THEORIE DES GRAPHES
Systèmes d’information
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Algorithmes Branch & Bound
Chapitre 2 Réductions: exemples et méthodes
Programmation logique Démonstrateur automatique
Chapitre 2 Réductions: exemples et méthodes
Coloration gap sommet identifiante de graphes
IFT Complexité et NP-complétude
IFT Chapitre 1 Classes de complexité fondamentales:
IFT Au delà de NP: hiérarchie polynomiale, EXP, NEXP.
Algorithmes d ’approximation
Introduction aux problèmes d'ordonnancement sans temps-morts.
8INF8061 Conception et analyse des algorithmes Comment comparer deux problèmes?
Programmation linéaire en nombres entiers : les méthodes de troncature
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
D.E ZEGOUR Ecole Supérieure d’Informatique
D.E ZEGOUR Ecole Supérieure d’Informatique
Programmation linéaire en nombres entiers
Algorithmes Branch & Bound
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Problème de double digestion
CHAPITRE III Calcul vectoriel
Programmation dynamique

Post-optimisation, analyse de sensibilité et paramétrage
Résolution des équations différentielles
Chapitre 4 La représentation des nombres.
Algorithmique Boucles et Itérations
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Analyse de la proposition d’enseignement du cercle circonscrit au triangle Type de tâches et tâches  Un seul type de tâches T : « déterminer le nombre.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 5 Support de cours rédigé par Bernard COFFIN Université.
Des outils pour penser l’enseignement et l’apprentissage Notion d’O.M. : organisation mathématique ponctuelle Le modèle praxéologique Que devront savoir,
1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.
Cycle, Cocycle, Arbre et Arborescence
Chap.V RSA. I. Rappels Mathématiques La congruence Définition 1 a et b sont congrus modulo n s’ils ont même reste par la division par n. On note a≡b[n]
Contribution de Bordeaux Enseigner le cosinus en 4ème.
Cours de base: Programmation linéaire Dr TARI Abdelkamel Maître de Conférences Habilité Chef du projet CRITT-Béjaia Directeur du Laboratoire LIMED Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 1 Support de cours rédigé par Bernard COFFIN Université.
Vanotti Lucile Adjointe au chef de section « Ingénierie des prix de production » 17/06/2014 Mesurer des indices de prix à la production dans l’industrie.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 6 Support de cours rédigé par Bernard COFFIN Université.
Initiation aux bases de données et à la programmation événementielle Outil de création des tables Support de TD rédigé par Bernard COFFIN Université Paris.
Un usage de la notion d’O.M. pour la préparation de l’épreuve sur dossier du CAPES.
Inéquation Partie 2. x est plus grand que 12. Rappel : Les symboles utilisés x est plus grand ou égal à 12. x est plus petit que 12. x est plus petit.
1 Les groupements d’échangeurs thermiques, illustration de systèmes énergétiques, introduction aux systèmes complexes. Comprendre.
Chapitre 2 Variables aléatoires 1. Variables aléatoires : définition Résultat d’une expérience dont l’issue est multiple (VARIABLE) et imprévisible (ALÉATOIRE)
Chapitre 6 Les tests d ’ hypoth è se 2 – Les tests du  2 (chi 2)
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 7 Support de cours rédigé par Bernard COFFIN Université.
GRAFCET Chaîne d’information Principes généraux Le GRAFCET
Chapitre 2 Résolution de Programmes Linéaires. La méthode graphique Cette méthode est simple et s’applique à des problèmes de programmation linéaire à.
1 A. Cornuéjols Introduction à l’intelligence artificielle Introduction à l’Intelligence Artificielle (Cours n°2) Recherche non informée dans les graphes.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
La spécialité mathématique en TS. Les mathématiques sont une science qui se construit elle-même grâce à la démonstration. Axiomes et définitions Théorèmes.
Paramètres S Rappels de théorie des circuits
Complexité des Problèmes Combinatoires Module IAD/RP/RO/Complexité Philippe Chrétienne.
AMPERES Apprentissages Mathématiques et Parcours d'Études et de Recherches pour l'Enseignement Secondaire « Triangles » Trois contributions : équipes de.
Régression linéaire (STT-2400) Section 3 Préliminaires, Partie II, La loi multinormale Version: 8 février 2007.
1 Initiation aux bases de données et à la programmation événementielle Construction d’un état Support de TD rédigé par Bernard COFFIN Université Paris.
AUTOMATISME Chapitre 2: Le GRAFCET.
Complexité des Problèmes Combinatoires
Cycle, Cocycle, Arbre et Arborescence
Transcription de la présentation:

COMPLEXITE DES PROBLEMES COMBINATOIRES Master d’Informatique : spécialité IAD P. Chrétienne : Prof. Université Paris 6

PLAN DU COURS Problèmes de décision. Algorithme déterministe. La classe P. Algorithme non déterministe. La classe NP. Propriétés de la classe NP. Réduction polynomiale dans NP. Problème NP-complet. SAT est NP-complet Quelques réductions.

PLAN DU COURS (suite) Sous-problèmes et complexité Problèmes numériques. Algorithme pseudo- polynomial. Problème NP-complet au sens fort. Réduction pseudo-polynomiale. Problèmes de recherche et d ’optimisation. Réduction de Turing. Problème NP-difficile

Problèmes de décision Un problème de décision est défini par: un nom, des paramètres génériques, une question. PARTITION A={a 1,….,a n } s :A  Existe t’il B  A tel que s(B)=s(A/B)? CLIQUE Graphe G=(S,A) 1<k<n=Card(S) Existe t’il une clique d’ordre k dans G? SAT n variables logiques p clauses* Existe t’il une fonction de vérité telle que toutes les clauses soient vraies? * une clause est un "ou" logique sur une partie des 2n littéraux associés aux variables. Les 2 littéraux de la variable x sont x et  x.

Notations Problème  Sous-ensemble des énoncés à réponse « oui »: Y , Si l’on code les énoncés à partir - d’un alphabet ∑, - d’une fonction codage « compacte » : les nombres sont codés dans une base supérieure à 1 (par exemple en base 2). Ensemble des énoncés D  (un énoncé est une instanciation des paramètres de  ) Chaque énoncé I de D  est alors un mot c(I) sur ∑.

Fonction longueur l  d'un problème . l  (I) est un entier. Il existe 2 fonctions polynômes enti è res P(n) et Q(n) telles que : pour tout énoncé I de  : |c(I)| ≤ P(l  (I)) et l  (I) ≤ Q(|c(I)|) On dit que les fonctions |c| et l  sont polynomialement liées. En pratique : Calcul d'une fonction codage compacte c; Recherche d'une fonction l  aussi simple que possible polynomialement liée à |c|.

Exemple : SAT ∑ = {a,0,1,;} Si n variables logiques, une clause est codée par un élément de ∑ n. si n=5, le mot a001a est le code de la clause {  x 2,  x 3,x 4 } Le nombre de caractères pour coder p clauses (séparées par un ;) est en O(np). L SAT (I)=np est donc une fonction longueur possible pour SAT.

Exemple : CLIQUE Soit I=(G,k) un énoncé de CLIQUE. Si le graphe G a n sommets, G peut être cod é sur ∑ = {0,1,;} par sa matrice d'adjacence M=(m ij ) o ù m ij =1 si {i,j} est une arête de G (=0 sinon). Le nombre de caractères pour coder I est en O(n 2 ). Une fonction longueur possible pour CLIQUE est donc L CLIQUE (I)=n Il faut O(log 2 (n)) caractères pour coder k. Le mot 0110;1010;1101;0010 est le code du graphe suivant :

Exemple : PARTITION Si A possède n éléments, chaque entier s(a) est codé sur ∑ = {0,1,;} par sa repr é sentation binaire et les n codes sont s é par é s par n-1 ;. Si n=4, le mot 110;1010;1101;10 est le code de l'énoncé : A = {a 1,a 2,a 3,a 4 } s(a 1 ) = 6, s(a 2 )=10, s(a 3 )=13, s(a 4 )=2. Le nombre de caractères pour coder un énoncé est en O(n  log 2 s max  ) où s max = Max s(a i ). Une fonction longueur possible pour PARTITION est donc L PARTITION (I)=n  log 2 s max 

UC une unité centrale UC Algorithme résolvant  Machine de Turing déterministe: 1)  est un alphabet qui ne contient pas le caractère "blanc" ; 2)  est un alphabet incluant  et le caractère "blanc"; 3)Q={q 0,q Y,q N,….,q C } est un ensemble fini (états de l’UC) ; 4) q 0 est l’état initial et q Y,q N sont 2 états distincts dits terminaux ; 5)  : Q  {q Y,q N }    Q  {-1,+1} est la fonction de transition. Programme P = (Q,q 0,q Y,q N, , ,  ): L/E une tête de lecture-écriture L/E Bande une bande doublement infinie B

Exécution (notée P(x)) du programme P pour la donnée x. Etat initial global: Exécution de P pour la donnée x: c est le caractère contenu dans la cellule b pointée par LE; et  (q,c)=(q',c',d') Tantque q  {q Y,q N } faire B[b]:= c'; q:= q'; b:= b+d'; Remarque : le nombre d'étapes de calcul de P(x) peut être infini. q0q0 01 x -22

A=(Q,q 0,q Y,q N, , ,  ) est un algorithme qui résout  si 1)  est l'alphabet utilisé pour coder les énoncés de  ; 2)pour tout mot x sur ∑, A(x) s’arrête (terminaison); 3)x  Y(  )  A(x) s’arrête dans l'état q Y. (validité) Complexité de l'algorithme A: Soit  A (x) le nombre de steps de calcul exécutés par A(x). La fonction complexité T A : N  N est définie par: T A (n)=Max{  A (x)  L  (x)=n} (Rappel : L  (x) est le nombre de caractères du mot x) Si T A (n)=O(p(n)) où p est un polynôme, alors A est un algorithme polynomial. Notation : P est la classe des problèmes de décision résolus par un algorithme polynomial.

Soit  un problème de décision. Soit V=(Q,q 0,q Y,q N, , ,  ) un programme tel que : a)  est l'alphabet utilisé pour coder  ; b)  inclut  et le caractère spécial "blanc" (non dans  ); c)Q est un ensemble fini d'états ; d)q 0 est l'état initial ; e)q Y,q N sont 2 états terminaux distincts ; f)  est une fonction de transition de type  : Q  {q Y,q N }    Q  {-1,+1}. Algorithme non déterministe polynomial résolvant 

Calcul de V pour la donnée (x,y) où : x   * est de longueur n et y   * est de longueur k : Le calcul V(x,y) est dit "réussi" s’il s’arrête dans l ’état q Y. 1)le mot x est écrit dans les cellules 0,1,..., n-1 ; 2)le mot y est écrit dans les cellules -k,-k+1,...,-1 ; 3)les autres cellules contiennent le caractère "blanc"; 4)V est exécuté à partir de l’état initial q q0q0 x y Etat initial du calcul V(x,y)

La classe NP est l’ensemble des problèmes de décision résolus par un algorithme non déterministe polynomial. V est un algorithme non déterministe polynomial qui résout  s'il existe un polynôme p(n) tel que : 1)pour tout code x de longueur n d'un énoncé à réponse "oui", il existe un mot y de longueur au plus p(n) tel que V(x,y) est réussi après au plus p(n) steps de calcul ; 2)pour tout mot x sur  qui n'est pas le code d'un énoncé à réponse "oui", il n'existe aucun mot y   * pour lequel V(x,y) est réussi.

Comment montrer qu'un problème de décision  est dans NP ? 2) Définition de l'algorithme de vérification. On construit un algorithme de vérification V, dont les données sont les couples (I,c) où c  C(I), tel que : - si I  Y , il existe un certificat c  C(I) tel que V répond oui pour la donnée (I,c) ; - si I  Y , V répond non pour toute donnée (I,c), - V est de complexité polynomiale en l  (I). 1) Définition des certificats. Etant donné un énoncé I de longueur n, on se pose la question: A partir de quelle information sur I, de longueur polynomiale en n, peut-on vérifier que I est à réponse "oui"? On appelle alors certificats de I les informations susceptibles de permettre cette vérification. L'ensemble des certificats de I est noté C(I).

Exemple: le problème CLIQUE Algorithme de vérification V: V répond oui pour la donnée (I,c) (c est un certificat de I) si chaque paire de sommets de c est une arête de G. V répond non dans les autres cas. Certificats de l'instance I=(G,k) : Les certificats de I sont par exemple les sous-ensembles de k sommets de G.

Propriétés de NP À V est associé un polynôme p tel que: pour tout énoncé I de Y  de longueur n, il existe un certificat c de C(I) tel que: P  NP On peut utiliser l’algorithme polynomial A qui résout  comme algorithme de vérification V. Si   NP,  est résolu par un algorithme de complexité O(2 q(n) ) où q est un polynôme. l(c)<p(n) et  V (I,c)<p(n) Soit V un algorithme non déterministe polynomial pour . où  V (I,c) est le nombre de steps exécutés du calcul réussi V(I,c)

Soit x le code d'un énoncé I de . Etape k de l'algorithme associée à l'examen du k ième mot y sur  de longueur au plus p(n): 1° exécution des p(n) premiers steps (au plus) du calcul V(x,y). 2° si cette exécution s'arrête avant le step p(n), alors si l' é tat de terminaison est q Y alors retourner "oui" et arrêt de l'algorithme; sinon si k+1 > A(p(n)) alors retourner "non" et arrêt de l'algorithme. o ù A(p(n)) est le nombre de mots sur  de longueur au plus p(n). Si Card  =a, alors au plus O(a p(n) ) certificats sont examinés et pour chacun d’eux au plus p(n) steps sont exécutés. D’où la complexité de l'algorithme : O(p(n) a p(n) )=O(2 q(n) ).

Réductions dans NP Intuitivement,  2 est plus difficile que  1 si l'existence d'un algorithme résolvant  2 implique celle d'un algorithme résolvant  1 "à un coût polynomial près". Application f calculable polynomialement telle que: f : D(  1 )  D(  2 ) I  Y (  1 )  f(I)  Y (  2 ) Notation:  1   2 Soient  1 et  2 deux problèmes de NP. Réduction polynomiale de  1 sur  2 :

Propriétés de  dans NP Deux problèmes  1 et  2 sont équivalents si  1   2 et  2   1 La relation  induit un ordre partiel sur les classes d’équivalence. Question : Existe t’il une classe de problèmes de NP plus difficiles que tous les autres? Définition :Un problème  * est dit NP-complet si pour tout   NP,    * Question équivalente : Existe t’il un problème NP-complet? La relation  est réflexive et transitive.

SAT est NP-complet C’est le théorème de COOK (1971) N variables logiques x j, j=1,..N. P clauses C p, p=1..P, sur les variables Fonction longueur pour SAT: l SAT (V,C)=P  N SAT Question: Existe t’il une fonction de vérité sur les variables telle que toutes les clauses soient vraies? Une clause est un sous-ensemble de littéraux. Un littéral est soit une variable, soit une variable complémentée. Une clause est vraie pour une fonction de vérité sur les variables si au moins un de ses littéraux est vrai.

Un énoncé de SAT: V= {x 1, x 2, x 3, x 4, x 5 } C défini par 6 clauses: {x 1,  x 3,  x 5 } {  x 2, x 3,  x 4, x 5 } {  x 1, x 4 } {x 2,  x 5 } {x 1, x 2,  x 4,  x 5 } {x 3, x 5 } Cet énoncé est à réponse « oui » car les 6 clauses sont vraies pour la fonction de vérité: x 1 =«vrai », x 2 =« faux », x 3 =« vrai », x 4 =« vrai », x 5 =« faux »,

Soit p le polynôme associé à V. Pour tout code x de longueur n d'un énoncé à réponse "oui", il existe un certificat y de longueur au plus p(n) tel que: V(x,y) s ’arrête dans l’état q Y après au plus p(n) steps. Soit  un problème de NP.  est résolu par un algorithme non déterministe polynomial V. Remarque importante : Lors de l’exécution des p(n) premiers steps de V(x,y), seules les cellules de la zone Z(V)=B[-p(n)..p(n)] de la bande peuvent être modifi é es par la tête de L/E.

Définition: A chaque step t  {0,p(n)}, on définit l'état de V par: l’état e  Q = {q 0,q 1,q 2,…q E } de l’UC, la position de L/E, le contenu des cellules de Z(V). Remarque : Si l'exécution du calcul réussi V(x,y) se termine après moins de p(n) steps, l'état de V reste par convention celui du step de terminaison.

Soit un mot x  ∑* (de longueur l(x)=n), On construit un énoncé f(x) de SAT. La fonction f doit vérifier: f(x) est satisfiable si et seulement si il existe y de longueur au plus p(n) tel que V(x,y) s'arrête dans l' é tat q Y après au plus p(n) steps. L’énoncé f(x) « simule » l'évolution des états du calcul V(x,y) où x est fixé et y est libre au cours des steps 0,1,..,p(n) avec des variables logiques contraintes par des clauses. Réduction polynomiale:   SAT On rappelle que V=(Q,q 0,q Y,q N, , ,  ) On note  ={ 1... a } et x= c(1) c(2) …. c(n)

Q(t,e), t  T,e  Q: (état de l ’UC après le step t=e). H(t,j), t  T,j  Z: (position de L/E après le step t=j). S(t,j,k), t  T,j  Z,k  {1..a} (B[j]= k après le step t). Clauses de f(x). 6 groupes de clauses G 1,…,G 6 G 1 : Existence et unicité de l ’état.  t  T, {Q(t,0),Q(t,1),…..,Q(t,E)} et  (e,e ’),e≠e ’,{  Q(t,e),  Q(t,e ’)) G2 : Existence et unicité de la position de L/E G3 : Existence et unicité de la lettre pointée sur la bande par L/E Variables de f(x). Notations: n=l(x), T={0,…,p(n)} et Z={-p(n),…,p(n)}

G 4 : Etat initial. Pour l ’UC : {Q(0,0)} Pour L/E : {H(0,0)} Pour la bande: {S(0,0,c(1))}, {S(0,1,c(2))},;….., {S(0,n-1,c(n))}. G 5 : Etat final. Pour l ’UC: {Q(p(n),1)} G 5 : Transitions. Notation (q  {q 1,q 2 }): (q ’,c ’,d ’)=(q e ’, k ’, d ’)=  (q,c). Q(t,e)  H(t,j)  S(t,j,k)  Q(t+1,e ’) Q(t,e)  H(t,j)  S(t,j,k)  H(t+1,j+d ’) Q(t,e)  H(t,j)  S(t,j,k)  S(t+1,j,k ’) Chaque implication s ’écrit sous la forme d ’une clause: Ex: la 1 ère :{  Q(t,e),  H(t,j),  S(t,j,k), Q(t+1,e ’)},

Q(t,e)  H(t,j)  S(t,j,k)  Q(t+1,e ) Q(t,e)  H(t,j)  S(t,j,k)  H(t+1,j ) Q(t,e)  H(t,j)  S(t,j,k)  S(t+1,j,k ) Si q  {q 1,q 2 }, il faut « figer » l ’état, donc pour e  {1,2} : Supposons que I soit à réponse "oui". Soit x le code de l'énoncé I. Soit y un certificat de longueur au plus p(n) tel que le calcul V(x,y) est réussi après au plus p(n) steps. On définit alors comme suit une fonction de vérité sur les variables de f(x) qui rend toutes les clauses de f(x) "vraies".

1)les valeurs de vérité S(0,j,k) pour j = -p(n),...,-1 correspondent au certificat y écrit à gauche de la cellule 0; 2)les valeurs de vérité des variables Q(t,e), H(t,j) et S(t,j,k) correspondent aux états successifs lors de l’exécution de V(x,y) du step t=0 jusqu'au step de terminaison de V(x,y); 3)les valeurs de vérité associées à l'état du step de terminaison et des steps fictifs suivants correspondent à l'état du step de terminaison. Par définition des clauses de f(x), toutes ces clauses sont vraies pour les valeurs de vérité ainsi définies.

alors, par construction de f(x), V(x,y) répond « oui » pour le certificat y défini par les lettres k telles que S(0,j,k)= vrai (j  {-p(n)..-1}. Il en résulte que la propriété : x code d'un énoncé de I à réponse "oui"  f(x) est satisfiable est vraie. Comme: 1) le nombre de variables de f(x) est majoré par un polynôme en n, 2) le nombre de clauses de f(x) est majoré par un polynôme en n, la longueur de f(x) est majorée par un polynôme en n. Il en résulte que   SAT. Réciproquement, si f(x) est satisfiable,

Quelques réductions SAT  3-SAT 3-SAT est le sous-problème de SAT constitué des énoncés pour lesquels chaque clause contient exactement 3 littéraux. Réduction I:énoncé de SAT (N var., P clauses) f(I): énoncé de 3-SAT (N ’var., P ’clauses) variable de I variable de f(I) clause à 1 littéral x 2 variables suppl. u et v 4 clauses: {x,u,v}, {x,  u,v} {x,u,  v},{x  u,  v)}

clause à 2 littéraux: {x,y} 1 variable suppl. w 2 clauses: {x,y,w}, {x, y,  w} clause à 3 littéraux: {x,y,z} 1 clause: {x,y,z} clause à k(>3) littéraux {z 1,…………,z k } k-3 variables suppl. u 1,…,u k-3 {u 1,z 3,  u 2 } {u 2,z 4,  u 3 } ………. {u k-4,z k-2,  u k-3 } {z 1,z 2,  u 1 } {u k-3,z k-1,z k } k-2 clauses:

Supposons que I est satisfiable pour la fonction de vérité  sur les variables de I : Toutes les clauses de type 1), 2) et 3) de f(I) sont vraies. clause à 2 littéraux: {x,y} 1 variable suppl. w 2 clauses: {x,y,w}, {x, y,  w} clause à 3 littéraux: {x,y,z} 1 clause: {x,y,z} clause à 1 littéral x 2 variables suppl. u et v 4 clauses: {x,u,v}, {x,  u,v} {x,u,  v},{x  u,  v)}

Considérons une clause c de type 4): {z 1,…………,z k } Si j  {1,2}, on pose: u j =« vrai » pour j=1,..,k-3 Si j  {k-1,k}, on pose: u j =« faux » pour j=1,..,k-3 Sinon, posons: u i =« faux » pour i=1..j-2 et u i =« vrai » pour i=j-1..k-3 Alors toutes les clauses de f(I) associées à la clause c de I sont vraies. Il en résulte que f(I) est satisfiable. {z 1,…………,z k } {u 1,z 3,  u 2 }{u 2,z 4,  u 3 } …...{u j-2,z j,  u j-1 }…….. {u k-4,z k-2,  u k-3 } {z 1,z 2,  u 1 } {u k-3,z k-1,z k } Soit z j le 1er littéral vrai de {z 1,…………,z k }

Réciproquement, supposons que f(I) soit satisfiable. Soit c une clause de type 1) ou 2) de I. Il existe une clause de f(I) pour laquelle tous les littéraux associés à des variables supplémentaires sont faux. Donc c est vraie. Les clauses de type 3 sont trivialement vraies. Considérons une clause c de type 4 : {z 1,…………,z k } et supposons qu ’elle soit « fausse » Comme toutes les clauses associées à c sont vraies, on a: {u 1,z 3,  u 2 } vrai donc u 2 faux …………………………….. {u k-4,z k-2,  u k-3 } vrai donc u k-3 faux {z 1,z 2,  u 1 } vraie donc u 1 faux {u k-3,z k-1,z k } faux contradiction Il en résulte que I est satisfiable. Comme N’ et P’ sont majorés par des polynômes en N  P, la réduction f est polynomiale.

3-SAT  VERTEX COVER Donnée: un graphe non orienté G=(V,E) et un nombre k(1<k<n) Le problème VC: Question: existe t ’il un support de G d ’au plus k sommets? I:énoncé de "3-SAT (N var.;P clauses) f(I): énoncé de VC variable b b b b arête clause {a,b,c} triangle a b c arêtes médianes K=2P+N

Supposons que I soit satisfiable. Chaque clause c de I contient au moins un littéral l(c) « vrai ». Considérons le sous-ensemble W de sommets de f(I) formé 1) des sommets-arêtes étiquetés par un littéral « vrai » 2) des 2 sommets du triangle T(c) non étiquetés par l(c) On a Card(W)=2P+N. W est un support car : - les arêtes des triangles sont couvertes. a b c - les arêtes associées aux variables sont couvertes; b b b - les arêtes médianes sont couvertes;

Réciproquement, supposons qu ’il existe un support W de f(I)tel que Card(W)≤2P+N. Comme tout support de f(I) a au moins 2P+N sommets, on a Card(W)=2P+N. Comme il faut au moins 2 sommets pour « couvrir » chaque triangle et au moins 1 sommet pour couvrir chaque arête associée à une variable, W contient exactement 2 sommets par triangle et 1 sommet par arête associée à une variable. Considérons la fonction de vérité définie par: b b b b=« vrai » si le sommet-arête étiqueté par b appartient à W Pour toute arête de type :

Soit b l’étiquette de z, Le sommet z’ appartient nécessairement au support W car Le sommet z n ’appartient pas à W. On a donc b= « vrai » et par conséquent la clause c est vraie. I est donc satisfiable. a b c Soit c une clause, z Soit z le sommet de T(c) non couvert par W, b b b z’ Soit z’ l’autre extrémité de l ’arête médiane issue de z.

Une fonction longueur pour VC est l VC (G,k)=Card V. Comme le nombre de sommets de f(I) est 3P+2N, la réduction f est calculable polynomialement en l 3-SAT (I)=N  P. Il en résulte que 3-SAT  VC et que VC est NP-complet.

Sous-problèmes et complexité Sous-problème de . Un sous-problème  ’ de  est défini par un sous-ensemble des énoncés de  et la même question que celle de . Exemples: 2-SAT et 3-SAT sont 2 sous-problèmes de SAT Un sous-problème est donc caractérisé par l ’ajout de contraintes supplémentaires sur les paramètres génériques. Exemple: Si un graphe G est un paramètre générique de , on obtient un sous-problème si l ’on impose que G est planaire ou encore que G est biparti.

Complexité des sous-problèmes Remarque: Un code raisonnable pour les énoncés de  ne l ’est pas forcément pour les sous-problèmes de . Exemple: Supposons qu ’ un graphe G soit un paramètre de . G est codé avec O(n 2 ) caractères. Considérons le sous-problème de  obtenu en imposant à G d ’être un graphe complet. G est alors codé avec O(log n) caractères. Propriété 1: Soit  P. Si  ’ est un sous-problème de  dont les énoncés sont reconnaissables en temps polynomial, alors  ’  P.

Propriété 2: Soit  ’ un sous-problème NP-complet de . S ’il existe un algorithme polynomial qui transforme un codage raisonnable de  ' en un codage raisonnable de , alors  est NP-complet. Exemple: 3-SAT NP-complet  SAT NP-complet Frontière entre sous-problèmes faciles et difficiles de . On fait « varier » un paramètre de , et l ’on s ’intéresse à la complexité des sous-problèmes associés. Exemple 1: Sous-problèmes de SAT obtenus en faisant varier le nombre de littéraux par clause. 2-SAT est polynomial, 3-SAT est NP-complet.

Exemple 2: Sous-problèmes de UET-SCHEDULING obtenus en faisant varier le nombre de machines. m=2: polynomial, m=3: ouvert, m paramètre: NP-complet Exemple 3: Sous-problèmes de UET-SCHEDULING obtenus en faisant varier le graphe de précédence. Arborescence: polynomial, graphe quelconque: NP-complet Problème UET-SCHEDULING Donnée: n tâches T i de durée unitaire, un graphe de précédence, m machines identiques, un nombre entier B. Question: Existe t ’il un ordonnancement de durée au plus B?

Problèmes numériques Considérons le problème PARTITION: Un énoncé de PARTITION: (A,s) tel que s(A)=2B (parité) L ’algorithme PRD suivant résout PARTITION. PRD calcule les valeurs booléennes b(i,k) où b(i,k) est vrai s ’il existe un sous-ensemble F de {a 1,…,a i } tel que s(F)=k. Pour i de 1 à n faire Pour k de 0 à B faire b(i,k)=b(i-1,k)  b(i-1,k-s(a i )). Initialisation: b(0,0):=« vrai »; b(0,k):=« faux » pour 1≤k≤B. Donc (A,s) est à réponse « oui » ssi b(n,B)=« vrai »

Pour tout énoncé I=(A,s) on a :  PRD (I)=O(nB) Cet algorithme n ’est donc pas polynomial car B n ’est pas polynomial en la longueur n  max{  log 2 (s(a i ))  /i=1..n} de (A,s). Remarque: Le sous-problème de PARTITION pour lequel les entiers s(a i ) sont majorés par une constante est polynomial. Algorithme pseudo-polynomial résolvant  Soit I un énoncé de  de longueur l(I). Notons M(I) le plus grand nombre de I. A est un algorithme pseudo-polynomial résolvant  si A résout  Pour tout énoncé I de , on a  A (I)=O(p[l (I),M(I)]) où p est un polynôme à 2 variables.

Remarque: Pour les problèmes  tels que pour tout énoncé I, on a M(I)≤q(l(I)) où q est un polynôme, un algorithme pseudo-polynomial est aussi polynomial. Définition: Un problème  est dit numérique s ’il n ’existe pas de polynôme p tel que pour tout énoncé I de , on ait M(I)≤p(l (I)). Exemple et Contre-exemple: CLIQUE n ’est pas un problème numérique. Comme CLIQUE est NP-complet, il ne peut être résolu par un algorithme pseudo-polynomial sauf si P=NP. PARTITION est un problème numérique résolu par l ’algorithme pseudo-polynomial PRD.

Problème NP-complet au sens fort Notation: Soit p un polynôme et soit  un problème. On note  p le sous-problème de  constitué des énoncés I tels que M(I)≤p(l(I)).  p n ’est pas un problème numérique. S ’il existe un algorithme pseudo-polynomial pour résoudre  p, alors  p est polynomial. Définition: Le problème  est NP-complet au sens fort s ’il existe un polynôme p tel que  p est NP-complet.

Remarque: Les problèmes non numériques NP-complets sont NP-complets au sens fort. (CLIQUE, VERTEX COVER, SAT, 3-SAT,…) Question: Existe t ’il un problème numérique NP-complet au sens fort? Réponse: Le problème 3-PARTITION est NP-complet au sens fort. 3-PARTITION: Donnée: A={a 1,……,a 3n }; s:A  telle que s(A)=nB et  i  {1,..,n} B/4 < s(ai) < B/2 Question: Peut-on réaliser une partition de A en n classes de même poids? Si la réponse est « oui », chaque classe contient exactement 3 éléments de A et est de taille B.

Réduction pseudo-polynomiale Pour montrer qu ’un problème est NP-complet au sens fort, on peut utiliser la réduction pseudo-polynomiale dans NP notée  ps. Définition de  ps Etant donnés 2 problèmes  et  ’ de NP, on définit   ps  ’ par: 1) il existe une réduction f de  à  ’ calculable polynomialement par rapport aux 2 variables M(I) et l(I). 2) Il existe un polynôme q 1 tel que pour tout énoncé I de , on a l(I) ≤ q 1 (l ’(f(I)). 3) Il existe un polynôme q 2 (de 2 variables) tel que pour tout énoncé I de , on a M’(f(I)) ≤ q 2 (l(I),M(I)).

Propriété: Si  est NP-complet au sens fort et si   ps  ’, alors  ’ est aussi NP-complet au sens fort. Preuve: Soit  NP-complet au sens fort. Il existe donc un polynôme p tel que  p est NP-complet. On montre alors l’existence d’un polynôme q tel que  p   ’ q. Soient f, q 1 et q 2 la réduction et les 2 polynômes associés à la relation   ps  ’. On peut supposer que: 1) q 2 est à coefficients positifs; 2) p est à coefficients positifs.

On montre que si I est un énoncé de  p, alors f(I) est un énoncé de  ’ q. On a M’(f(I)) ≤ q 2 (l(I),M(I)) ≤ q 2 (l(I),p(l(I))). (condition 3)) Comme q 2 est à coefficients positifs et l(I)≤q 1 (l ’(f(I) ) (condition 2) : M’(f(I)) ≤ q 2 (l(I),p(l(I))) ≤ q 2 (q 1 (l’(f(I)), p(q 1 (l’(f(I)))) = q(l’(f(I)) où q(x) est le polynôme q 2 (p(q 1 (x),q 1 (x))) Il en résulte que f est une réduction de  p à  ’ q. De plus, par la condition 1, on a pour tout I énoncé de  l’(f(I)) ≤ r(l(I),M(I)) où r est un polynôme (à 2 variables). Il en résulte que l’(f(I)) ≤ r(l(I),p(l(I)) ) = s(l(I)) où s(x)= r(x,p(x)) est un polynôme à une variable x. On a donc  p   ’ q et  ’ est NP-complet au sens fort.

Exemple: Le problème d’ordonnancement sur une machine, noté ONE_MACHINE_SCHED (OMS) est NP-complet au sens fort. Le problème OMS: une machine M; n tâches T i (durée p i, date de disponibilité r i, deadline d i ) Question: Est ’il possible d ’exécuter les n tâches sur M? On montre que 3-PARTITION  ps OMS Enoncé de 3-PARTITION: I=(A,s) où : Card(A)=3n ; s(A)=nB ;  a  A, B/4<s(a)<B/2. Enoncé f(I) de OMS: 3n tâches T i : (p i = s(a i ), r i =0, d i =nB+n-1) n-1 tâches D j : (p j =1, r j = jB+j-1, d j = jB+j)

Supposons l’énoncé (A,s) à réponse « oui ». Soit alors C 1,..,C n les sous-ensembles de 3 tâches T i associées aux n classes de A de poids B. L’ordonnancement de f(I) suivant est réalisable: D1D1 C1C1 C2C2 D2D2 D n-1 CnCn 0BB+1nB+n-12B+12B+2 Réciproquement, supposons qu’il existe un ordonnancement de l’énoncé f(I) de OMS. Les n-1 tâches D j sont bloquées dans les intervalles [jB+j-1,jB+j]. L’espace libre restant de l ’intervalle [0, nB+n-1] est juste suffisant pour les autres tâches T i. On peut donc partitionner A en n classes de poids B.

f est donc une réduction de 3-PARTITION à OMS. Pour un énoncé I=(A,s) de 3-PARTITION on a: l(I)=n  log 2 (B)  et M(I)= max{ (s(a i )/i=1..3n}. Pour un énoncé J=(n,r,p,d) de OMS on a: l’(J)=n  max{  log 2 (d i )  /i=1..n} M’(J)= max{d i /i=1..n}. Pour l’énoncé f(I) de OMS, on a donc: l’(f(I)) = (4n-1)  log 2 (nB+n-1)  M’(f(I))=nB+n-1. On a les inégalités suivantes (pour des cstes positives a, b, c; n≥n 0 (cste >0) et B≥B 0 (cste >0) : l ’(f(I)) ≤ 4n  log 2 (2nB)  ≤ an 2 +bn  log 2 (B)  ≤ c(n  log 2 (B)  ) 2 l(I)≤ (4n-1)  log 2 (nB+n-1)  M ’(f(I))=nB+n-1≤ nM(I) ≤ l(I)M(I)

Il en résulte que: l’(f(I)) est majorée par un polynôme en l(I) et M(I) (condition 1). l(I) est majorée par un polynôme en l’(f(I)) (condition 2). M’(f(I)) est majoré par un polynôme en l(I) et M(I) (condition 3). On a donc: 3-PARTITION  ps OMS. OMS est donc NP-complet au sens fort.

Problèmes NP-difficiles Problème de recherche  : A chaque énoncé I correspond un ensemble (éventuellement vide) de solutions noté S(I). Un algorithme A résout le problème  si pour tout énoncé I, il fournit une solution de S(I) si S(I)≠  ou écrit « pas de solution » si S(I)= . Remarques: Les problèmes de décision sont des problèmes de recherche: (S(I)={« oui »} si I  Y , sinon S(I)= . Les problèmes d’optimisation sont des problèmes de recherche: S(I) est l’ensemble des solutions optimales de l’énoncé I.

Réduction de Turing La réduction de Turing notée  T étend aux problèmes de recherche la réduction polynomiale dans NP. Définition: Soient  1 et  2 deux problèmes de recherche. On dit que  1  T  2 si l’existence d ’un algorithme résolvant  2 en un step (quelque soit l ’énoncé de  2 ) implique que  1 est polynomial. Remarque: Si  1 et  2 sont 2 problèmes de NP on a:  1   2   1  T  2

Exemple: Soit TSP le problème du voyageur de commerce (énoncé formé d ’une matrice D des distances entre n villes et d ’un nombre B). Soit TSP c le problème de décision complémentaire, Soit TSP_OPT le problème d’optimisation associé (énoncé: D) Remarque: On ne sait pas si TSP c est dans NP. Propriété: TSP  T TSP c et TSP  T TSP_OPT Soit I un énoncé de TSP, et soit  un algorithme 1-pas pour TSP c. Si la réponse  (I) est « oui » (resp. « non »), alors I est à réponse « non » (resp; « oui »). Soit I=(D,B) un énoncé de TSP, et soit  un algorithme 1-pas pour TSP_OPT. Soit s le tour retourné par  (D). Si d(s)≤B (resp >B) alors I est à réponse « oui » (resp. « non »).

Problème NP-difficile: Un problème de recherche  est NP-difficile s’il est plus difficile au sens de la réduction de Turing qu’un problème NP-complet.  est NP-difficile s’il existe  ’ NP-complet tel que  ’  T  Exemple: les problèmes TSP c et TSP_OPT sont NP-difficiles. D’une manière générale, le problème d’optimisation associé à un problème de décision NP-complet est NP-difficile. La réciproque est généralement vraie: Un problème de décision est plus difficile au sens de la réduction de Turing que le problème d’optimisation associé.

Exemple: TSP_OPT  T TSP On introduit un problème de décision intermédiaire TSP_INT: Donnée: (D,B) et L: liste de sommets distincts. Question: Existe t ’il un tour s=L.R de coût au plus B? On a: TSP_INT  T TSP. En effet, TSP est NP-complet et TSP_INT est dans NP. Montrons que l ’on a TSP_OPT  T TSP_INT Notons  l ’algorithme 1-pas qui résout TSP_INT. On considère alors l’algorithme suivant de complexité polynomiale en l(I) qui permet de calculer le coût minimal d’un tour :

Soit C le coût d ’un tour quelconque; l:=0; u:=C; Tantque u-l>0 faire k:=  1/2(u+l)  ; Si  (D,k, )=« oui » alors u:=k sinon l:=k+1; FinTantque; C*:=k. On utilise ensuite l’algorithme de complexité polynomiale en l(I) suivant qui permet de construire un tour de coût minimal. Dichotomie sur la valeur du tour optimal  log 2 (C)  appels à l ’algorithme 1-pas .

L:=(1); R:=(2,..,n); Pour k de 2 à n-1 faire r:=PREMIER(R); Tantque  (D,C*, L.r ) =« non » faire r := SUIVANT(r,R); FinTantque; L:=L.r ; R:=SUPPRIMER(r,R); FinPour. La liste L retournée par cet algorithme est un tour de coût minimal. En effet, l’invariant suivant est vrai: A la fin de l’itération k de la boucle Pour, il existe un tour de coût C* préfixé par L. De plus l’algorithme est en O(n 2 ) puisque le nombre de passages dans la boucle Tantque est au plus n. Il en résulte que : TSP_OPT  T TSP_INT