• Aucun résultat trouvé

4 Probl` emes NP-Complet

N/A
N/A
Protected

Academic year: 2021

Partager "4 Probl` emes NP-Complet"

Copied!
16
0
0

Texte intégral

(1)

Optimisation discr`ete, s´eance 3 : cours TH´ EORIE de la COMPLEXIT ´ E

Objectifs

La solution d’un probl`eme combinatoire, quand elle existe, peut ˆetre d´etermin´ee par l’´enum´eration d’un ensemble fini E de possibilit´es. S’il y a un algorithme simple pour tester si un ´el´ement de cet ensemble est une solution, on dispose d’un algorithme pour trouver une solution au probl`eme en testant toutes les possibilit´es. Mais le cardinal de E est souvent exponentiel par rapport `a la taille des donn´ees, ce qui rend l’´enum´eration impossible dans un temps raisonnable.

Il existe de tr`es nombreux probl`emes d’un grand int´erˆet pratique pour lesquel on ne connaˆıt pas d’algorithme plus efficace qu’un test portant sur tous les sous ensembles d’un ensemble, ce qui implique un temps de calcul exponentiel par rapport `a la taille de l’ensemble. Nous verrons que, en un certain sens, ces probl`emes qui sont dits NP- complets, sont ´equivalents entre eux : un algorithme efficace pour l’un le serait pour tous.

Curieusement on ne sait pas d´emontrer que ces probl`emes n’admettent pas d’algorithme polynˆomiaux, c’est la conjectureP6=N P.

1 La notion d’algorithme

1.1 Exemples d’algorithmes

• Op´erations ´el´ementaires sur les entiers. On apprend `a l’´ecole ´el´ementaire `a faire ces op´erations en n’utilisant que les chiffres du d´eveloppement d´ecimal, ce qui fait un algo- rithlme tr`es efficace mˆeme pour de grands entiers.

• Valeur d’un polynˆome : le sch´ema de Horner.

n

X

k=0

akxk= ((...((anx+an−1)x+an−2)x...)x+a1)x+a0 permet un calcul en nmultiplications etn−1 additions.

• Multiplication de deux matrices (n, n) : L’algorithme usuel enn3 op´erations n’est pas optimal, voir ci-dessous en annexe l’algorithme de Strassen.

• R´esolution d’un syst`eme lin´eaire : algorithme de Gauss.

L’algorithme usuel pour trianguler une matrice pleine fait n33 op´erations ´el´ementaires.

(2)

• Test de primalit´e relative : on peut d´eterminer si deux entiers sont premiers entre eux par l’algorithme d’Euclide (PGCD), c’est un algorithme tr`es efficace mˆeme pour des entiers grands.

• Construction d’un arbre minimal recouvrant un graphe.

On a vu un algorithme tr`es efficace `a la s´eance 1.

• Connexit´e d’un graphe.

La construction d’un arbre de recouvrement peut servir d’algorithme, voir la s´eance 1.

Pour tous les probl`emes suivants (d´esign´es par une abr´eviation conventionnelle) il existe un algorithme simple, mais peu efficace : l’´enum´eration de toutes les possibilit´es d’un ensemble tr`es grand.

PRIM : Test de primalit´e.

Il s’agit de tester si un entier n est premier. Ce qui peut se faire en testant si l’entier n est divisible par tous les entiers plus petits. Noter que si l’entier s’´ecrit en d´ecimal avec 50 chiffres, il est de l’ordre de 1050. Ce qui interdit en pratique de le diviser par tous les entiers inf´erieurs mˆeme si par la division n’est pas une op´eration tr`es coˆuteuse en temps de calcul. Certains entiers premiers c´el`ebres sont des “nombres de Mersenne”

(2p+ 1), ils sont donc tr`es tr`es grands par rapport `a leur repr´esentation (l’entier p´ecrit en d´ecimal). Ce probl`eme, historiquement tr`es important, a de nombreuses applications (cryptographie).

k-COL : k-coloration d’un graphe.

Est-il possible de colorier avec k couleurs les noeuds d’un graphe de fa¸con `a ce que deux noeuds adjacents n’ait jamais la mˆeme couleur ? Le probl`eme d’optimisation correspondant est de trouver un entier k cas minimal. Pourk= 2 on a un algorithme tr`es rapide, voir exercices.

EUL : Circuit eul´erien : existe-t-il sur un graphe un circuit eul´erien ?

HAM : Circuit hamiltonien : existe-t-il sur un graphe un cycle passant par tous les sommets d’un graphe ?

TSP : Le probl`eme du voyageur de commerce : existe-t-il un cycle hamiltonien de longueur inf´erieure `a un entierksur un graphe valu´e. ? Le probl`eme d’optimisation correspondant est de trouver un entier cask minimal.

SAT : Satisfiabilit´e d’un ensembe de clauses1.

Un ensemble denclauses (P1∨ ¬P2∨...∨Pk) `apsymboles est-il satisfiable, i.e. peut-on donner des valeurs “Vrai”, “Faux” aux symboles Pi pour que toutes les clauses soient vraies ? (Des propositions quelconques peuvent ˆetre ´ecrites comme une conjonction de clauses, leur satisfiabilit´e est ramen´ee `a celle de chaque clause). On peut tester toutes les valeurs des symboles de proposition, mais cela fait 2p tests `a effectuer.

1voir annexe 1

(3)

k-SAT : Satisfiabilit´e d’un ensemble de clauses de longueur au plusk.

ILP : La programmation lin´eaire en nombres entiers : chercher s’il existe des vecteurs deRp

`a composantes enti`eres qui v´erifient un ensemble d’in´equations lin´eaires. Le probl`eme d’optimisation correspondant est de trouver parmi ces solutions le minimum d’une forme lin´eaire (en fait on montre qu’un algorithme pour le probl`eme d’optimisation peut s’adapter en un crit`ere d’existence de la solution d’un syst`eme d’in´equations).

1.2 Rappel sur la notion d’algorithme

La notion d’algorithme que nous utiliserons est stritement d´eterministe, ce qui exclut les op´erations en “virgule flottante”. On suppose donn´es un langage de programmationLet une classe d’objets C d´efinis par des chaˆınes de caract`eres (nous dirons un mot). Un algorithme est une fonction d´efinie par un programme ´ecrit dans le langage L qui, si on lui donne en entr´ee un objet n ∈ C, fournit en sortie un objet f(n). Comme `a une chaˆıne de caract`eres on peut associer un entier et r´eciproquement, nous pouvons consid´erer tout aussi bien qu’un programme op´ere sur les entiers.

Notation

Nous notons |n| le nombre de “bits” n´ecessaires pour repr´esenter l’objet n.

− Il y a plusieurs fa¸cons de coder un entier sous forme de chaˆınes de caract`eres, nous y reviendrons.

− Un n-uple d’entiers peut ˆetre repr´esent´e par un seul entier, moyennant un codage ad´equat, nous nous limiterons donc aux fonctions `a un argument.

− Tous les langages de programmations usuels (Assembleur, C, Pascal, CAML, Mathemat- ica...) sont ´equivalents en ce sens qu’une fonction calculable par l’un est calculable par tous les autres. Pour ˆetre ´equivalent `a ceux-ci un langage doit comprendre, outre les op´erations

´el´ementaires, les test (IF...) et les boucles “WHILE”, ou bien les tests et les “GO TO”, ou, c’est ´equivalent, la composition des fonctions et la r´ecursivit´e (langages fonctionnels), ou encore la possibilit´e de reconnaˆıtre une chaˆıne de caract`eres et la remplacer par une autre (Mathematica).

− L’ex´ecution d’un algorithme ne se fait pas toujours en un temps fini : certains algorithmes

“bouclent” ind´efiniment. Nous supposerons que pour toutes les valeurs de n l’algorithme s’arrˆete en un nombre fini d’´etapes.

(Rappel : le probl`eme de l’arrˆet d’un algorithme est ind´ecidable, mais c’est un autre probl`eme...)

− Nous distinguerons dans la liste d’exemples ci-dessus les “probl`emes” (comme la primalit´e) des algorithmes particuliers pour les r´esoudre (tester toutes les divisions).

1.3 Algorithme de reconnaissance

Nous nous limiterons dans cette ´etude aux fonctions `a valeurs {0,1}. On peut consid´erer ces fonctionsn→f(n) comme des tests d’appartenance des objets n∈ C `a un certain sous- ensemble (correspondant `a la valeur 1). On dit aussi que ces fonctions acceptent un motou reconnaissentle sous langage deLqui est form´e par les mots accept´es. Cela d´efinit une classe particuli`ere d’algorithme, mais notons que, `a une fonction quelconque n→ f(n) d´efinie sur les entiers, on peut associer la fonction de reconnaissance dont les donn´ees sont (n, m) qui

(4)

renvoie 1 si et seulement sim=f(n). On peut donc ramener le calcul def(n) aux probl`emes de reconnaissances successifsf(n) =p pour des valeurs croissantes dep.

Ainsi au probl`eme du voyageur de commerce nous associerons le probl`eme de reconnaissance (TSP) qui consiste `a chercher si il existe un circuit hamiltonien de longueur ´egale ou c’est

´equivalent, inf´erieure `a un entierk.

1.4 Diff´erentes notions de complexit´e d’un algorithme La complexit´e d’un algorithme pr´esente plusieurs aspects :

Complexit´e en nombre d’op´erations alg´ebriques : notion utile pour des algorithmes qui d´efinissent des fonction alg´ebriques, elle est surtout utilis´ee pour des calculs en virgule flottante.

Complexit´e en temps : “temps de calcul”. C’est celle que nous allons d´evelopper.

Complexit´e en espace : “encombrement m´emoire”. Elle est toujours inf´erieure la com- plexit´e en temps car lire ou ´ecrire un bit est une op´eration.

Complexit´e algorithmique : “longueur du programme”. Elle sert `a d´efinir la complexit´e d’un objet comme la longueur du plus court programme qui peut le calculer : une d´efinition pr´ecise de cette complexit´e, la complexit´e au sens de Cha¨ıtin-Kolmogorova permis de donner une d´efinition pr´ecise de la notion de suite al´eatoire.

2 La complexit´ e en temps

2.1 Introduction

Notre objectif est de mesurer le “temps de calcul”. Il d´epend bien sˆur de l’ordinateur sur lequel le programme est ex´ecut´e. En premi`ere approximation nous pouvons consid´erer que le temps de calcul est proportionnel aux “nombres d’op´erations ´el´ementaires” effectu´ees par l’algorithme.

Il d´epend de la complexit´e des donn´ees, repr´esent´ee par|n|, la lecture des donn´ees est d’ailleurs une borne inf´erieure de la complexit´e.

On peut pr´eciser cette notion en remarquant que les ordinateurs op´erant en pratique sur des

“bits” on peut consid´erer qu’une op´eration ´el´ementaire est une op´eration sur les bits. On mesurera donc la complexit´e en temps par le nombre d’op´erations sur les bits, ce qui exige de d´ecomposer les op´erations des langages usuels en op´erations proches de celles effectue´ees par des langages de tr`es bas niveau. Bien sˆur cela entraˆıne toujours une d´ependance vis `a vis de l’ordinateur, par exemple du fait de l’utilisation du parall´elisme. Pour fixer les id´ees nous choisirons pour mesurer la complexit´e une ´ecriture de l’algorithme sous la forme d’une

“Machine de Turing”. Nous supposons donc qu’un algorithme est ´ecrit dans le langage des machines de Turing et nous en d´eduirons une d´efinition de la complexit´e

(5)

2.2 Le codage des donn´ees

Nous avons suppos´e plus haut qu’un algorithme op´erait sur des objets appartenant `a une certaine classe C d´efinie par des chaˆınes de caract`eres, ou, c’est ´equivalent des entiers. Don- nons quelques exemples de codage des donn´ees d’un probl`eme sous cette forme en pr´ecisant les cons´equences de ce codage sur la complexit´e des algorithmes qui l’utilisent.

• Codage d’un entier n

Il peut ˆetre un-aire(une suite de n bˆatons), binaire, d´ecimal... Utiliser un codage un- airesignifie en pratique que l’on rapporte la complexit´e d’un algorithme sur les entiers

`a la valeur de l’entier. Le codage en basek≥2 implique entre l’entiernet la longueur

|n| de sa repr´esentation une relation n ∼ k|n|. Donc le simple balayage des entiers inf´erieurs `and´efinit un nombre exponentiel d’op´erations par rapport `a la longueur |n|

des donn´ees.

• Codage d’un graphe (G, A)

On peut repr´esenter un graphe `a n noeuds par sa matrice bool´eenne, soit n2 bits au plus.

• Codage d’un ensemble de clauses 2

On peut repr´esenter un ensemble denclauses (P1∨ ¬P2∨...∨Pk) `ap variablesPi, i= 1, ..., p par une matrice (n, p) `a coefficients dans (1,−1,0) pour repr´esenter la pr´esence d’un symbole de proposition, l’absence de celui-ci ou la pr´esence de sa n´egation (on peut supposer qu’une variable n’apparaˆıt qu’au plus une fois dans chaque clause, puisque si Pi et ¬Pi figure dans la mˆeme clause, celle-ci est toujours vraie , et si Pi ou ¬Pi apparaissent plusieurs fois on peut supprimer les occurences multiples sans changer la valeur de la clause).

Nous verrons d’autres exemples en exercice.

2.3 Les machines de Turing

Le lecteur trouvera sur le WEB de nombreux sites d´ecrivant les machines de Turing. Voir les liens du site du cours.

2.4 D´efinition pr´ecise de la complexit´e

D´efinition 1 La complexit´e d’un algorithme est le nombre d’op´erations effectu´ees par la machine de Turing associ´ee `a cet algorithme qui est suppos´ee s’arrˆeter toujours.

Remarquer que sur une machine de Turing le simple acc`es `a un objet rang´e en m´emoire (quelque part sur le ruban) est une op´eration polynomiale. C’est une grande diff´erence avec les ordinateurs actuels pour lesquels une copie d’un ´el´ement|n|de la m´emoire dans un registre correspond au pire `a un nombre d’op´erations de l’odre de |n|.

2voir annexe 1 ci-dessous

(6)

3 Les probl` emes P et NP

3.1 Exemples de complexit´e Un entier nest suppos´e cod´e avec |n|bits.

+,*,/ : Les op´erations ´el´ementaires sur les entiers (additions, multiplications...). Si les en- tiers sont repr´esent´es en binaire ce sont des op´erations dont la complexit´e est lin´eaire par rapport `a|n|.

PGCD : Entiers premiers entre eux.

L’algorithme d’Euclide appliqu´e `a deux nombres n etm < n r´eduit `a chaque ´etape le plus grand des deux entiers d’un facteur au moins 2 par une division euclidienne. Il se termine donc en au plus log2n∼ |n|op´erations alg´ebriques. Ce qui fait de l’ordre de

|n|3 op´erations ´el´ementaires.

PRIM : Test de primalit´e.

D’apr`es un r´esultat r´ecent (2002) la complexit´e est inf´erieure `a C|n|12. SAT : Satisfiabilit´e d’un ensemble de clause.

L’algorithme qui teste toutes les valeurs possibles des symboles de propositions (soit 2n) est exponentiel par rapport aux nombres de symboles, et donc par rapport `a la longueur des donn´ees.

CLIQUE : Etant donn´e un graphe n noeuds existe-t-il une clique (i.e. un sous graphe complet) `a knoeuds ?

L’´enum´eration de tous les sous-graphes `aknoeuds exigeCnktests sur ces sous-graphes.

Il existe donc une constante ctelle que le nombre d’op´erations pour cet algorithme est de l’ordre decnk.

3.2 D´efinitions

D´efinition 2 La complexit´e d’un algorithme est polynomial (On dit de classe P) si, il existe une constante C et un entier k tels que le nombre d’op´erations effectu´ees par la machine de Turing associ´ee `a cet algorithme pour une donn´ees n est inf´erieur `a C|n|k.

Comme nous l’avons vu au paragraphe pr´ec´edent, la primalit´e relative de deux entiers, par l’algorithme d’Euclide, la connexit´e d’un graphe, par la construction d’un arbre de recou- vrement, sont des probl`emes qui ont des algorithmes polynomiaux. Il existe un algorithme polynˆomial pour PRIM, mais, nous l’avons dit plus haut, que ce r´esultat n’est pas ´evident.

Nous verrons en exercice qu’il existe une algorithme polynˆomial pour 2−SAT. Pour CLIQUE, l’algorithme d’´enum´eration des sous-graphe d’ordrekest polynˆomial si on supposekfix´e, mais on consid`ere quek fait partie des donn´ees, l’algorithme n’est plus polynˆomial.

D´efinition 3 La complexit´e d’un algorithme est exponentielle (On dit de classe EXP) si, il existe une constante C telle que le nombre d’op´erations effectu´ees par la machine de Turing associ´ee `a cet algorithme pour une donn´ees nest inf´erieur `a C2|n|.

(7)

On a donc P ⊂EXP.

Ainsi SAT par ´enum´eration des valeurs est exponentiel. Il en est de mˆeme de CLIQUE, k-COL, HAM, TSP par les algorithmes d’´enum´eration (et d’ailleurs par tous les algorithmes connus). On ignore s’ils sont dans P. Le test des divisions par tous les entiers inf´erieurs est un algorithme exponentiel pour PRIM.

3.3 Probl`emes NP

Il est facile de v´erifier qu’un sous graphe est une clique d’ordre n, mais il est difficile de trouver cette clique sans parcourir tous les sous-graphes. De mˆeme, si on se donne la valeur des symboles de proposition P1, P2, ..., Pp il est facile de v´erifier qu’un ensemble de clauses construit avec ces symboles est satisfait, mais trouver les bonnes valeurs pour les symboles Pi est difficile.

Tous les algorithmes que nous avons ´etudi´es ci-dessus ont la caract´eristique suivante : il est

“facile” de v´erifier qu’un objet est solution du probl`eme, mais il est souvent “difficile” de le trouver. Soit, plus pr´ecis´ement, une fonctionf(n) calculable par un algorithme (par exemple n est le code d’un ensemble de clauses et f(n) = 1 si l’ensemble est satisfiable, 0 sinon) on peut dans les exemples ci-dessus associer `a un objetnun autre objetm(par exemplemcode un ensemble de valeurs de v´erit´e des symboles Pi) tel que

f(n) = 1 ⇔ g(m) = 1

o`ug(m) est une fonction calculable facilement (par exemple le calcul des valeurs des clauses pour des valeurs de v´erit´e d´efinies parm).

Le terme “facile” d´esigne pour nous un calcul polynˆomial par rappot `a la taille des donn´ees ; il y a cependant une petite difficult´e : il ne faut pas que l’objet soit trop “gros” sinon un calcul polynˆomial par rapport `a |m| pourrait ˆetre exponentiel par rapport `a |n| (dans les exemples pr´ec´edentsnetm sont des objets de mˆeme taille (|n| ∼ |m|)).

Cela nous conduit `a poser la d´efinition suivante

D´efinition 4 Un algorithme pour calculer une fonction f(n) (o`uf(n) = 0ou1) est declasse NP (en anglais : non-deterministic polynomial) si il existe une constante C, un entier k, et une fonction g(m) calculable par un algorithme polynomial telle que `a toute donn´ee n on puisse associer une donn´ee (le “t´emoin”) m=φ(n) en entr´ee de g telle que

|m| ≤C|n|k et queg(m) = 1 si et seulement si f(n) = 1

Il y a beaucoup de variantes dans l’´ecriture de cette d´efinition, mais la classe NP ne change pas ! Notons que la d´efinition n’exige pas que l’on sache “construire” le t´emoin φ(n), mais seulement qu’il existe.

D´efinition 5 Un probl`eme de reconnaissance est de classe P, EXP ou NP si il existe un algorithme de cette classe pour le r´esoudre.

(8)

3.4 Exemples de probl`emes NP

La totalit´e des probl`emes de reconnaissance d´efinis plus haut sont de classe NP. Un des rares algorithmes pour lequel ce r´esultat n’est pas trivial (PRIM) s’est r´ev´el´e ˆetre de classe P !

SAT : le probl`eme de la satisfiabilit´e d’un ensemble de clauses.

L’entier m est donc un couple (n, p) o`u n est le code de l’ensemble des clauses et p le code d’un ensemble de valeurs des symboles. La fonction g(m) est la fonction qui calcule la valeur des clauses avec pour donn´ees les clauses et un ensemble de valeurs des symboles ; Le calcul deg(m), par les r`egles usuelles du calcul bool´een, a un nombre d’op´erations de l’ordre de la somme des longueurs des clauses, c’est donc un algorithme lin´eaire vis `a vis des donn´eesm de g.

k-COL : le probl`eme du coloriage d’un graphe avec kcouleurs.

L’entier m est la donn´ee du couple (n, p) ou n est le codage du graphe g(m) est une fonction qui teste si deux noeuds adjacents ont la mˆeme couleur, et p le codage d’un coloriage des noeuds. Tester la propri´et´e revient `a balayer toutes les arˆetes, c’est `a dire la matrice du graphe, c’est donc un algorithme lin´eaire.

CLIQUE : le probl`eme de l’existence d’un sous-graphe complet d’ordre k dans un graphe cod´e par n (les donn´ees sont donc n et k). L’entier m est la donn´ee du couple (n, p) ounest le codage du graphe etp le codage d’un sous-ensemble de noeuds. La fonction g(m) est une fonction qui teste si un sous graphe est complet, . Tester la propri´et´e revient `a balayer toutes les arˆetes du sous-graphe associ´e `a p, c’est donc un algorithme lin´eaire (car le codage d’une arˆete repr´esente un au moins un bit).

3.5 Robustesse de ces d´efinitions

Toutes les op´erations alg´ebriques (addition, multiplication...) sont polynomiales. De mˆeme les tests, les recopies d’´el´ements en m´emoire, ce qui fait que la classe P ne d´epend pas du type d’ordinateur utilis´e. Le parall´elisme ne fait que modifier la constanteC, l’utilisation de machines de Turing tr`es peu sophistiqu´ees change la valeur de k seulement. Les classes P, EXP, NP sont donc ind´ependantes des types d’ordinateur utilis´es, d`es lors que l’algorithme est d´ecompos´e en op´erations sur des bits.

3.6 Probl`emes NP : d´efinitions ´equivalentes

Un probl`eme NP est par d´efinition tel que f(n) = 1 si et seulement si il existe un entierφ(n) tel queg(φ(n)) = 1, on peut donc aussi ´ecrire que

f(n) = 1 ⇔ ∃mtel queg(m) = 1 sans oublier qu’il doit exister C, k∈N tels que|m| ≤C|n|k.

Avec avec une l´eg`ere modification des notations ant´erieures, on peut consid´erer que l’objet

(9)

mqui d´epend denest le couplem= (n, φ(n))), on peut donc aussi ´ecrire, en modifiant aussi la d´efinition de g, que

f(n) = 1 ⇔ ∃ptel queg(n, p) = 1

Cet entier (ou chaˆıne de caract`eres)ppeut aussi repr´esenter unkupled’entiers (en plus d’autre chose). Si bien que on peut supposer que le probl`eme associ´e `a la fonctiong a pour donn´ees k entiers suppl´ementaires. Ces entiers ne sont pas connus, mais d’apr`es la d´efinition des probl`eme NP, on suppose qu’il existem, et donc ici des entiers, queg(m) = 1. Cela revient

`a dire qu’il existe un “oracle” qui donne les entiers qui permettent de v´erifier que le r´esultat est 1. Comme ces entiers peuvent , par exemple, d´efinir des “GO TO” on peut consid´erer que ces entiers servent `a d´efinir l’ordre de d´eroulement des instructions du programme : c’est le cˆot´e “non d´etermiste” des algorithmes associ´es `a des probl`emes NP.

D´efinition 6 Un probl`eme de reconnaissance, d´efini par une fonction f(n), est declasse NP si il existe un programme polynˆomial mais non d´eterministe pour tester si f(n) = 1 .

4 Probl` emes NP-Complet

4.1 Repr´esentation d’un probl`eme par un autre

4.1.1 D´efinitions

D´efinition 7 Un probl`eme de reconnaissance P1 (donn´ees n, fonction f(n)) est polyno- mialement repr´esentable dans le probl`eme P2 (donn´ees m, fonction g(m)) si, il existe une constante C, un entier k, et une fonctionφ(m) telle que `a toutes donn´ees nde P1 on puisse associer une donn´eem=φ(n) en entr´ee de P2 telle que

|m| ≤C|n|k et queg(m) = 1 si et seulement si f(n) = 1 On ´ecrit

P1P P2 Remarque :

− On n’exige pas de “construire”φ(n).

− La relation P1P P2 est transitive.

− Si on a un algorithme polynomial pour P2 on a un algorithme polynomial pour P1. 4.1.2 Exemples

− Repr´esentation de SAT dans ILP

A chaque symbole de propositionPi on associe sa valeur de v´erit´exi= 0 ouxi = 1. La valeur de¬Pi est donc 1−xi. A une clause, par exemple : Pi∨ ¬Pj∨...∨Pk, on associe l’in´egalit´e

xi+ 1−xj+...+xk ≥1

qui est satisfaite si et seulement si la clause est satisfaite. A un ensemble de nclauses pour psymboles de propositionPi est associ´e par ce proc´ed´e un ensemble de nin´egalit´es lin´eaires

`a p variables, auxquelles on ajoute xi ≥0 et xi ≤1. La satisfiabilit´e des clauses ´equivaut `a

(10)

l’existence d’une solution `a ce syst`eme d’in´equations lin´eaires en nombres entiers.

− Repr´esentation de k-COL dans SAT Voir les exercices.

− Repr´esentation de SAT dans 3-SAT Voir les exercices.

− Repr´esentation de 3-SAT dans 3-SATsym Voir annexe 4 ci-dessous.

4.2 Le th´eor`eme de Cook

Th´eor`eme 1 Tous les probl`emes de classe NP sont polynomialement repr´esentables dans SAT.

Notons qu’il est souvent facile de d´emontrer qu’un probl`eme est polynomialement repr´esentable dans SAT sans passer par le th´eor`eme de Cook (voir en exercice le cas de 3-SAT). Nous ne d´emontrons pas ce th´eor`eme. Sa d´emonstration repose sur une description du d´eroulement du programme d’une machine de Turing `a l’aide de propositions3 de fa¸con `a ce que la donn´ee de l’ensemble des ´etats du ruban soit ´equivalente `a la donn´ee d’un ensemble de valeurs satifaisant ces propositions.

4.3 Les probl`emes NP-Complet

D´efinition 8 Un probl`eme de reconnaissance de classe NP estNP-complet si tout probl`eme de classe NP est polynomialement repr´esentable dans ce probl`eme.

D´efinition 9 Un probl`eme d’optimisation (ou de calcul d’une fonction) estNP-difficile si le probl`eme de reconnaissance qui lui est associ´e est NP-complet.

Comme tout probl`eme NP est repr´esentable dans SAT, il suffit de montrer que SAT est repr´esentable dans un probl`eme NP pour montrer que ce probl`eme est NP-complet. En pratique on proc`ede souvent par complexit´e croissante, par exemple on montre que

SAT ≤P 3−SAT ≤P 3−SAT sym≤P 3−COL SAT ≤P CLIQU E ≤P HAM ≤P T SP 4.4 Exemples de probl`emes NP-complets

SAT : d’apr`es le th´eor`eme de Cook.

CLIQUE : parce que SAT est repr´esentable dans CLIQUE (voir annexe 3).

3-SAT : (voir exercices).

3Ex. : “La valeur de la caseiest 0”,“Ecrire 1”, “D´eplacer la tˆete de lecture `a gauche”...

(11)

3-SATsym : Nous aurons besoin de ce probl`eme comme interm´ediaire entre 3-SAT et 3-COL (voir annexe 4 ci-dessous).

3-COL : (voir exercices).

HAM : Le probl`eme de l’existence d’un circuit hamiltonien (admis).

TSP : Le probl`eme du voyageur de commerce (admis).

ILP : La programmmation lin´eaire en nombre entiers : nous avons vu ci-dessus que SAT est repr´esentable dans ILP.

Un tr`es grand nombre de probl`emes d’une grande utilit´e pratique (ordonnancement, logis- tique, transport, graphe) sont NP-complets. Si on connaissait un algorithme polynomial pour l’un d’entre eux, on en aurait un pour tous. Pour certains de ces probl`emes (comme CLIQUE) il semble naturel qu’il n’y ait pas de m´ethode plus efficace que l’´enum´eration, d’o`u

“l’intuition” que ces probl`emes devraient ˆetre dans EXP.

En pratique la notion de probl`eme NP-Complet correspond `a des probl`emes qui sont au- jourd’hui effectivement difficiles ; on ne connaˆıt pas d’algorithmes efficaces pour traiter ces probl`emes dans des situations tout `a fait usuelles. Or un tel algorithme pour, par exemple, SAT ´etendrait consid´erablement les applications de “l’intelligence artificielle”.

4.5 La conjecture P 6=N P

Toute l’exp´erience acquise laisse penser que les probl`emes NP-complet ont une complexit´e non polynˆomiale, or la situation ´etrange aujourd’hui est que on ne sait pas d´emontrer que ces probl`emes NP-complet ne sont pas polynˆomiaux, c’est la conjecture

P6=NP

?

5 Annexes

5.1 Annexe 1 : une pr´esentation simplifi´ee du calcul propositionnel, point de vue “s´emantique”

− Unevariable (appel´ee aussi “symbole de proposition”, ou “proposition atomique”, not´ee P,Pi,Q...)du calcul propositionnel peut prendre deux valeurs (dites de v´erit´e) : Vrai (1) et Faux (0).

− Une formule du calcul propositionel est construite `a partir des variables `a l’aide des op´erateurs (“connecteurs”) n´egation (¬), disjonction (i.e. le “ou”, not´e ∨), conjonction (i.e.

le “et”,∧), exemple : ¬((P1∨ ¬P2)∧(P1∨P3)) .

− La valeur d’une formule pour des valeurs donn´ees des variables se calcule selon les r`egles bien connues : en notant x, y les valeurs ( 0 ou 1) des variables, on a v(¬x) = 1−x, v(x∧y) = min(x, y) =xy etv(x∨y) = sup(x, y) =x+y−xy).

− L’implication(⇒) etl’´equivalence(⇔) sont des symboles d´eriv´es : P ⇒Qsignifie¬P∨Q,

(12)

P ⇔Q signifieP ⇒QetQ⇒P.

− Uneclauseest une formule disjonctive :(P1∨ ¬P2∨...∨Pk).

−R`egle de De Morgan :

¬(P ∨Q)⇔ ¬P ∧ ¬Q

¬(P ∧Q)⇔ ¬P ∨ ¬Q

− Distributivit´e:

(P ∨Q)∧R⇔(P ∧R)∨(Q∧R) (P ∧Q)∨R⇔(P ∨R)∧(Q∨R)

− Forme normale :

En utilisant les r`egles ci-dessus on montre que toute formule peut ˆetre mise sous une forme normale conjonctive (P1∨ ¬P2∨...∨Pk)∧...∧(¬Pi∨Pj∨...∨Pn) ou disjonctive (P1∧ ¬P2∧ ...∧Pk)∨...∨(∧Pi∧Pj∧...∧Pn).

−Un ensemble de formules estsatisfiablesi on peut donner des valeurs de v´erit´e aux variables qui rendent vraies toutes les formules de l’ensemble. Noter que si une formule s’´ecritC1∧C2 elle est satisfiable si et seulement si C1 et C2 le sont ; en mettant les formules sous forme normale conjonctive on peut donc toujours consid´erer que l’ensemble des formules `a satisfaire est compos´e de clauses.

− Une formule est une tautologie si elle est vraie pour toutes les valeurs possibles de ses variables, c’est `a dire aussi si sa n´egation n’est pas satisfiable.

− Uned´emonstrationde la formuleC`a partir des formules (appel´ees hypoth`eses ou axiomes) Ci, i= 1, ..., p´equivaut `a montrer que la formule (C1∧...∧Cp)⇒Cest une tautologie. Ce qui revient aussi `a d´emontrer que l’ensemble des formules (C1, ..., Cp,¬C) n’est pas satisfiable, d’o`u l’importance du probl`eme de la satisfiabilit´e.

5.2 Annexe 2 : L’algorithme de multiplication matricielle de Strassen Un exemple classique de r´eduction de la complexit´e d’un calcul en virgule flottante par partition.

•Combien de multiplications et additions sont n´ecessaires pour effectuer la multiplication de deux matrices par la formule classique ?

•Montrer que la multiplicationC=ABde deux matrices de dimension 2npartitionn´ees en 4 blocs (n, n) peut s’´ecrire

m1 = (A12−A22)(B21+B22) m2 = (A11+A22)(B11+B22) m3 = (A11−A21)(B11+B12) m4 = (A11+A12)B22

m5 = A11(B12−B22) m6 = A22(B21−B11) m7 = (A21+A22)B11

(13)

puis :

C11 = m1+m2−m4+m6 C12 = m4+m5

C21 = m6+m7

C22 = m2−m3+m5−m7

Noter qu’il y a 7 multiplications et 18 additions de blocs.

•Supposons que les matrices soient de dimensionn= 2p (sinon on compl`ete les matrices par des z´eros jusqu’`a obtenirn= 2p). On effectue r´ecursivement la multiplication des blocs, mon- trer que le nombre d’op´erations (additions et multiplications)T(n) n´ecessaires pour calculer le produit est solution de la r´ecurrence

T(n) = 7T(n

2) + 18(n

2)2, T(1) = 1 Corr. Comptez...

• Soit² >0. Montrer qu’il existe une constanteC >0 telle que nlog27≤T(n)≤Cnlog2(7+²) Le calcul exact montre que T(n)< n3 pour n≥215.

Corr. On a

T(n)≥7T(n 2)

et doncT(n)≥nlog27. Soit² >0, comme log27>2 il existep0 tel que sin >2p0 on a 18(n

2)2≤²(n

2)log27 ≤²T(n 2) et doncT(n)≤(7 +²)T(n2) d’o`u

T(2p)≤(7 +²)p−p0T(2p0) et doncT(n)≤C(7 +²)p avec C = (7 +²)−p0T(2p0), d’o`u

T(n)≤C(7 +²)log2n=Cnlog2(7+²) 5.3 Annexe 3 : CLIQUE est NP-complet

Nous avons vu que CLIQUE est NP, il nous reste donc `a montrer que SAT est repr´esentable dans CLIQUE ; SAT ´etant NP-complet d’apr`es le th´eor`eme de Cook, nous aurons donc montr´e que CLIQUE est NP-complet.

Soit un ensemble de n clauses avec p symboles de proposition. Nous pouvons associer un graphe `a ces clauses de la mani`ere suivante :

− Pour chaque clause (P1∨ ¬P2∨...∨Pk) on cr´eeknoeuds et nous appellerons pour chacun de ces noeuds la propositionPi ou¬Pi, la “proposition associ´ee”.

− On cr´ee une arˆete entre deux noeuds si les deux conditions suivantes sont v´erifi´ees :

(14)

1. les deux noeuds ne sont pas associ´es `a des propositions qui sont la n´egation l’une de l’autre (i.e. Pi et ¬Pi)

2. les deux noeuds n’appartiennent pas `a la mˆeme clause.

Nous allons montrer

Lemme 1 L’ensemble des clauses est satisfiable si et seulement il existe une clique4 `a n noeuds dans le graphe.

⇒) Montrons que si il existe une clique (i.e. un sous-graphe complet) `a n ´el´ements dans ce graphe, on peut donner des valeurs aux symbolesPi, i= 1, ..., pqui rendent toutes les clauses vraies.

Les n noeuds de cette clique appartiennent `a diff´erentes clauses (d’apr`es 2) et la clique ne contient pas simultan´ement une proposition et sa n´egation (d’apr`es 1). Si on attribue la valeur “Vrai” `a toutes les propositions associ´ees aux noeuds de cette clique toutes les clauses seront vraies ( donc si c’est Pi, Pi sera vraie, et si c’est ¬Pj, Pj sera fausse, c’est possible puisque Pi et ¬Pi ne figure pas ensemble dans les noeuds de la clique) . Si un symbole Pj

ne figure pas dans la clique on lui attribue une valeur quelconque ; ainsi tous les symboles Pi, i= 1, ..., pont une valeur et toutes les clauses sont vraies.

⇐) Montrons que si il existe des valeurs des symbolesPi qui rendent lesnclauses vraies alors il existe une clique `a nnoeuds dans le graphe.

Chosissons dans chacune des nclauses une proposition Pi ou ¬Pi qui est vraie. On obtient ainsi une liste de n noeuds associ´es `a des propositions vraies, appartenant `a des clauses diff´erentes, et dans cette liste ne peuvent donc figurer `a la fois une proposition et sa n´egation.

Cesnnoeuds v´erifient donc 1 et 2 et forment donc une clique.

5.4 Annexe 4 : 3-SATsym est NP-complet Soit un ensemble E de nclauses L1i ∨L2i ∨L3i `a 3 ´el´ements.

D´efinition 10 On note 3-SATsym le probl`eme consistant `a d´ecider la propri´et´eΠ :

il existe un ensemble de valeurs de v´erit´ePj =V rai ouPj =F auxtelles que dans toutes les clauses il y ait (au moins) un ´el´ement vrai et (au moins) un ´el´ement faux.

Nous voulons d´emontrer le

Th´eor`eme 2 3-SATsym est NP-complet.

Il suffit de montrer que 3-SATsym ≤P 3-SAT et 3-SAT ≤P 3-SATsym. Or 3-SATsym est clairement un probl`eme NP, mais il n’est pas n´ecessaire de faire appel au th´eor`eme de Cook pour montrer la

Proposition 1 3-SATsym est polynˆomialement repr´esentable dans 3- SAT.

4Rappelons qu’une clique est un sous-graphe complet

(15)

En effet consid´erons un ensembleE de nclauses de 3-SATsym et l’ensembleF desnclauses obtenues en rempla¸cant chaque symbole par sa n´egation. L’ensembleE a la propri´et´e Π si et seulement si l’ensemble E∪F est satisfiable. Or le codage de E∪F est d’un encombrement au plus double de celui de E.

Montrons dans l’autre sens la

Proposition 2 3-SAT est polynˆomialement repr´esentable dans 3- SATsym.

Ajoutons une symbole de proposition Qi, i = 1, ..., n pour chaque clause de E, qui nous servira `a “donner un nom” `a L1i ∨L2i, et un symbole R qui nous servira `a “allonger” toutes les clauses de longueur 2 pour n’avoir que des clauses de longueur 3. Il suffit de montrer le Lemme 2 Lesn clauses L1i ∨L2i ∨L3i, i= 1, ..., n sont satisfiables si et seulement si les 4n clauses

L1i ∨L2i ∨ ¬Qi (1)

¬L1i ∨Qi∨R (2)

¬L2i ∨Qi∨R (3)

L3i ∨Qi∨R (4)

ont la propri´et´e Π.

Notons que la signification des 4 clauses apparaˆıt plus clairement en les r´e´ecrivant sous la forme

Qi ⇒L1i ∨L2i (5)

L1i ⇒Qi∨R (6)

L2i ⇒Qi∨R (7)

L3i ∨Qi∨R (8)

Cela montre que, si on supposeR faux (nous montrerons que l’on peut se ramener `a ce cas), les trois premi`eres clauses signifient que Qi⇔L1i ∨L2i (Le symboleQi n’est donc qu’un nom pour L1i ∨L2i) et que la derni`ere clause n’est autre que L1i ∨L2i ∨L3i.

⇐) Par hypoth`ese l’ensemble E des clausesL1i ∨L2i ∨L3i, i= 1, ..., n est satisfait par un jeu de valeurs des symboles Lji. Donnons `a Qi la mˆeme valeur qu’`a L1i ∨L2i et `a R la valeur

“Faux”. Il y a alors deux possibilit´es :

− Qi a la valeur “Vrai”, c’est donc aussi la valeur de L1i ∨L2i, on v´erifie par inspection que l’ensemble des 4 clauses (4) a la propri´et´e Π.

− Qi a la valeur “Faux”, c’est donc aussi la valeur de L1i ∨Li2 donc L1i et L2i ont la valeur

“Faux”, on v´erifie de nouveau par inspection que l’ensemble des 4 clauses (4) a la propri´et´e Π.

⇒) Par hypoth`ese l’ensemble des clauses (8) est satisfait par un jeu de valeurs des symboles Lji, Qi, R. Supposons que R ait la valeur “Faux”. Des trois premi`eres propositions de (8) on d´eduit queL1i∨L2i a la mˆeme valeur de v´erit´e queQi et, commeQi∨L3i est vrai,L1i∨L2i∨L3i est vrai.

Sinon, si R est faux, en changeant la valeur de v´erit´e de tous les symboles Lji, Qi, R en la valeur compl´ementaire l’ensemble des clauses (8) est toujours satisfait d’apr`es la propri´et´e Π etR a la valeur “Faux”, nous sommes donc ramen´es au cas pr´ec´edent.

(16)

5.5 Bibliographie

C. Papadimitriou, K. Steiglitz, Combinatorial Optimization: Algorithms and Complexity, Prentice-Hall, 1983.

M.R. Garey, D.S. Johnson, Computers and Intractibility: A Guide to the theory of NP- Completeness. San Francisco: W.H. Freeman & Company, Publishers 1979.

Voir aussi sur le WEB les liens du site du cours, www.etudes.ecp.fr.

S.L

CENTRALE

Références

Documents relatifs

P3 : Quand on multiplie/divise par un même nombre positif les deux membres d’une inégalité, on ne change pas son sens, mais si ce nombre est négatif, alors on change le sens

Un grand établissement de la ville de Djibouti stocke ses marchandises dans 7 dépôts que l’on note A, B, C, D, E, F et G afin d’être redistribuées ensuite vers les

Les probl´ ematiques li´ ees ` a l’analyse de donn´ ees g´ eom´ etriques sont en plein d´ eveloppement, aussi bien pour des applications en petite dimension (maillages ou nuages

4) Montrer que f réalise une bijection de [−1; 1] sur un intervalle [a; b] que l’on

On note C sa courbe représentative dans un repère orthonormé

[r]

[r]

The vehicle routing and truck driver scheduling problem (VRTDSP) aims to find a set of routes for a fleet of vehicles, such that each customer requesting service is visited within