Vous êtes sur la page 1sur 19

RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

Table of Contents
I. CADRE GENERAL DE LA COMPLEXITE D’UN PROBLEME ...................................................................... 3

I.1 DEFINITION ................................................................................................................... 3


I.2 METHODE D’EVALUATION DE LA COMPLEXITE D’UN PROBLEME ........................................ 3
I.3 QUELQUES PROBLEMES IMPORTANTS EN THEORIE DE LA COMPLEXITE ........................... 4
I.4 CLASSES DE COMPLEXITE ............................................................................................... 5
a) Les Propriétés ........................................................................................................................................ 5
b) Classe des problèmes de décision ......................................................................................................... 6
II. CLASSE DE COMPLEXITE TEMPORELLE .................................................................................................. 6

II.1 CLASSE P ....................................................................................................................... 6


I.1.1 DEFINITION ............................................................................................................................................ 6

II.1.3 EXEMPLE DE PROBLEMES PRATICABLES OU NON ................................................. 7


II.2 CLASSE NP .............................................................................................................................................. 7
II.2.1 DEFINITION ............................................................................................................................................ 7
➢ DEFINITION VIA LES CERTIFICATS .......................................................................................................... 7
➢ LA DEFINITION VIA LE NON-DETERMINISME ......................................................................................... 8
II.2.2 PRINCIPE ................................................................................................................................................ 8
II.2.3 EXEMPLE ................................................................................................................................................ 9
LA PROBLEMATIQUE NP=P ........................................................................................................................... 10
II.3 CLASSE NP-COMPLET ........................................................................................................................... 10
II.3.1 DEFINITION .......................................................................................................................................... 10
II.3.2 PRINCIPE .............................................................................................................................................. 10
II.3.3 EXEMPLE .............................................................................................................................................. 11
II.4 CLASSE NP-DIFFICILE (NP-DURES) ........................................................................................................ 17
II.4.1 DEFINITION .......................................................................................................................................... 17
II.4.2 PRINCIPE .............................................................................................................................................. 17
➢ Comment montrer qu’une propriété est NP-difficile? ........................................................................ 17
➢ Pourquoi montrer qu’une propriété est NP-difficile ?......................................................................... 17
II.4.3 EXEMPLE .............................................................................................................................................. 18
REFERENCES ................................................................................................................................................. 19

P a g e 1 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

INTRODUCTION

La théorie de la complexité est le domaine des mathématiques et plus précisément de


l’informatique théorique, qui étudie formellement la quantité des ressources (temps, espace,
mémoire) dont a besoin un algorithme pour résoudre un problème algorithmique. Il s’agit
donc d’étudier la difficulté intrinsèque des problèmes, de les organiser par classe de
complexité et d’étudier les relations entre elles. S’agissant des classes de complexité, les
problèmes sont regroupés en fonction de leur degré de complexité. Dans le cadre de notre
travail, nous étudierons principalement les classes P, NP, NP-complet et NP-difficile. De ce fait
cet exposé sera articulé comme suit : Premièrement nous parlerons du cadre général de la
complexité d’un problème en insistant sur les définitions essentielles, méthodes d’évaluation
de la complexité, les problèmes importants en théorie de la complexité puis dans un second
temps nous présenterons les classes de complexité temporelles en précisant les principes et
exemples de problèmes rencontrés dans ces classes.

P a g e 2 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

I. CADRE GENERAL DE LA COMPLEXITE D’UN PROBLEME


Au cœur de la théorie de la complexité et de son formalisme se trouve les problèmes de décision.
Un problème de décision est une question mathématiquement définie portant sur des
paramètres donnés sous forme manipulable informatiquement, et demandant une réponse par
oui ou par non. Le but de la théorie de celle-ci est donc de pouvoir dire si un problème est (ou
non) soluble efficacement par un ordinateur.
L’étude cette complexité –computational complexity- s’attache de ce fait à déterminer la
complexité intrinsèque d’un problème et à classifier les problèmes selon celle-ci, donc
à répondre à des questions comme :
— Quelle est la complexité minimale d’un algorithme résolvant tel problème ?
— Comment peut-on dire qu’un algorithme est optimal (en complexité) pour résoudre un
problème ?
— Existe-t-il un algorithme polynomial pour résoudre un problème donné ?
— Comment peut-on montrer qu’il n’existe pas d’algorithme polynomial pour un problème ?
— Qu’est-ce qu’un problème "dur" ?
— Comment prouver qu’un problème est au moins aussi "dur" qu’un autre ?

I.1 DEFINITION

Un problème est une « question » qui cherche une réponse et qui comporte un ensemble de
paramètres.
*description des paramètres ;
* propriétés que la réponse ou la solution, doit satisfaire ;
* Une instance du problème est obtenue quand on fixe les paramètres à
des valeurs données.
Tandis que la complexité désigne le caractère de ce qui contient ou rassemble plusieurs
éléments différents.
La complexité d’un problème est donc la complexité minimale dans le pire des cas d’un
algorithme qui le résout ; c’est souvent la complexité en temps qu’on considère mais on peut
s’intéresser à d’autres mesures comme par exemple la complexité en espace-.
Cette définition -un peu floue- ne précise pas quel modèle d’algorithme on choisit : l’analyse
de la complexité risque d’être différente si on programme en C ou “en Machine de Turing”.

I.2 METHODE D’EVALUATION DE LA COMPLEXITE D’UN PROBLEME


Calculer la complexité d’un problème est ardu en général. On se contente souvent d’encadrer :
✓ Pour trouver une borne supérieure, il suffit de trouver UN algorithme et d’évaluer sa
complexité. Bien sûr, si l’algorithme n’est pas très performant, la borne trouvée ne sera
pas de très bonne qualité.

P a g e 3 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

✓ Trouver une "bonne" borne inférieure s’avère souvent difficile. Par exemple, montrer
qu’un problème est de complexité au moins exponentielle, revient à montrer que TOUT
algorithme le résolvant est exponentiel. Quand les deux bornes coïncident, c’est l’idéal
mais c’est assez rare !
Citons trois outils utiles pour trouver une borne inférieure de la complexité d’un problème :
— Les méthodes dites d’oracle ou d’adversaire : on suppose qu’il existe un algorithme
utilisant moins d’un certain nombre d’opérations d’un certain type; on construit alors une
donnée qui met en défaut l’algorithme.
— Les arbres de décision : ils sont utilisés pour les algorithmes de type recherche ou tri "par
comparaisons". Dans ce cas, on suppose que seules des comparaisons entre les éléments sont
utilisées pour obtenir de l’information sur l’ordre ou l’égalité des éléments. Pour un
algorithme donné, un arbre de décision "représente" alors toutes les comparaisons exécutées
par l’algorithme sur les données d’une certaine taille.
▪ Un nœud correspond à une comparaison
▪ Ses fils aux différentes réponses possibles de la comparaison (donc si le test
est à valeur booléenne, les nœuds sont binaires);
▪ Une exécution possible correspond donc à une branche
▪ Deux données correspondant à la même branche correspondront à la même
suite d’instructions.

I.3 QUELQUES PROBLEMES IMPORTANTS EN THEORIE DE LA COMPLEXITE


On distingue plusieurs types de problèmes en théorie de la complexité :
✓ Problème de fonctions
✓ Problème d’optimisation (Maximisation et Minimisation)
✓ Problème de décision (Oui/Non)
On s’intéresse ici aux problèmes de décision. Et on peut citer quelques problèmes
importants de décision en théorie de la complexité.
a) Problème SAT
Le problème SAT est un problème de décision d'une grande importance en théorie de la
complexité.
Etant donné une fonction booléenne sous une forme conjonctive, existe-t-il une affectation
des variables rendant vraie cette fonction ?
➢ Le problème SAT s'énonce de la manière suivante :
* Données : un ensemble V de variables booléennes et une famille C de clauses sur
V, (une clause est un ensemble de variables booléennes sous la forme directe ou
complémentée; elle est vraie dès qu’une de ses variables est vraie, donc la somme).
* Question : Existe-t-il une façon d’affecter les valeurs « vrai » ou « faux » aux
variables afin de rendre vraie toutes les clauses ?
- Problème 3SAT : chaque clause ne contient que trois variables.
b) Problème du voyage de commerce TSP

P a g e 4 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

Étant donné n points (des « villes ») et les distances séparant chaque point, trouver un
chemin de longueur totale minimale qui passe exactement une fois par chaque point (et
revienne au point de départ).
On associe le problème de décision suivant.
* Données : un graphe complet G = (V,E,ω) avec V un ensemble de sommets, E un
ensemble d'arcs et ω une fonction de coût sur les arcs, et un entier B.
*Question : Existe-t-il un circuit hamiltonien (c'est-à-dire passant une et une seule
fois par chaque sommet) dont le coût (la somme du coût des arcs qui le composent) est
inférieur ou égal à B ?
c) Problème de répartition

* Données : un ensemble A={ai | iI } de n nombres entiers.


* Question : Existe-t-il une partition de A en deux sous-ensembles A1 et A2 de
même poids ?

I.4 CLASSES DE COMPLEXITE


L’idée est de classifier les problèmes selon leur complexité ; tout d’abord pour simplifier, on
se limite aux propriétés ou problèmes de décision :
a) Les Propriétés
OUI OU NON ?

On va se restreindre à des problèmes de décision (la sortie est de type OUI/NON), donc à
vérifier des propriétés : une propriété est juste une fonction à valeurs booléennes. Un
problème de décision peut donc être vu comme l’ensemble T d’instances du problème avec
pour chaque instance une réponse “oui” -on parle d’instances positives- ou “non” -on parle
d’instances négatives-.
Abstrait/Concret
A une propriété abstraite définie sur un ensemble quelconque, on peut associer une propriété
concrète définie sur des mots -la représentation des instances- : par exemple à la propriété
abstraite "être premier" définie sur les entiers, on associera la propriété "être la
représentation binaire d’un entier premier" définie sur {0,1}
Propriété/langage
On peut donc ensuite associer à la propriété le langage des (représentations des) instances
vérifiant cette propriété. Par exemple, à la propriété "être premier", on associera l’ensemble
des représentations des entiers premiers dans une certaine base non unaire. Donc, vérifier si
un entier est premier se ramène à tester si sa représentation (=un mot) est dans le langage.
De la même façon, à la propriété "être 3-coloriable", on associera les représentations des
graphes 3-coloriables, selon un codage donné.
Décider une propriété se ramène donc à tester l’appartenance d’un mot à un langage.

P a g e 5 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

b) Classe des problèmes de décision


— PSPACE : la classe des problèmes de décision pour lesquels il existe un algorithme de
résolution polynomial en espace. Bien sûr PTIME est inclus dans PSPACE : un algorithme
polynomial en temps "consomme au plus un espace polynomial".
— EXPTIME : la classe des problèmes de décision pour lesquels il existe un algorithme de
résolution exponentiel en temps.

II. CLASSE DE COMPLEXITE TEMPORELLE


II.1 CLASSE P

I.1.1 DEFINITION

Un problème de décision est dans P s’il peut être résolu par un algorithme déterministe en
un temps polynomial par rapport à la taille de l'instance. On qualifie alors le problème de «
polynomial ».

Cette définition est (quasiment-) indépendante du modèle d’algorithme choisi : un


algorithme polynomial en C sera polynomial s’il est traduit en termes de machine de Turing
et les modèles classiques de calcul (excepté les ordinateurs quantiques) sont
polynomialement équivalents.

II.1.2 PRINCIPE

Un problème de décision est dit praticable si il est dans P, impraticable sinon.


"existe-t-il ou non un algorithme praticable pour ce problème ?" se ramène pour le
problème à"être ou ne pas être dans P?"

Le principe de résolution est basé sur les machines de Turing :

• Machine de Turing standard : quintuplet M = (K, Γ, ∑, δ, q0)


– K : ensemble fini d'états
– ∑: alphabet d'entrée
– Γ : alphabet des symboles du ruban
– δ : fonction de transition
fonction partielle K x Γ ⟶ K x Γ x{←,→, S}, les symboles ← et →désignent un
déplacement élémentaire à gauche ou à droite, S pour Stay
– q0 ϵ K est l'état initial.
• Machine de Turing non déterministe : sext-uplet M = (K, Γ, ∑, δ, Δ, q0, F)
– D : relation de transition Δ ⊂ K x Γ x K x Γ x{←,→, S}
– F ⊂ K : états acceptants à Plusieurs sorties différentes pour la même entrée à

P a g e 6 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

accepteur dont le seul résultat qui nous intéresse est de savoir si la machine
s’arrête ou non.

• Une machine de Turing déterministe M = (K, Γ, ∑, δ, Δ, q0, F) est dite


polynomialement bornée s'il existe un polynôme p tel que pour toute entrée w, il
n'y a pas de configuration C telle que « (q0, #w) ├Mp(|w|+1) C » c'est-à-dire M
s'arrête toujours, et ce, en au plus p(|w|+1) étapes.
Un langage est dit polynomialement décidable si et seulement si il existe une
machine de Turing polynomialement bornée qui le décide

II.1.3 EXEMPLE DE PROBLEMES PRATICABLES OU NON

❖ ‘’Être trié’’ pour une liste d’entiers est P.


❖ ‘’Être premier’’ est P. On le sait depuis quelques années seulement.
❖ Le problème des échecs généralisés c’est-à-dire la taille de l’échiquier est non fixée, on a
une configuration, on cherche à savoir si elle est gagnante- n’est pas P.
❖ Décider si une expression rationnelle étendue (avec le complémentaire en plus de l’union,
la concaténation et l’étoile) représente tous les mots n’est pas P.
❖ Voyageur de commerce : Visite de n villes en faisant le moins de km possibles.
Résolution : produire toutes les permutations de villes possibles (sauf la première qui est
toujours la même), pour chaque permutation, calculer le trajet.

II.2 CLASSE NP
II.2.1 DEFINITION

La classe NP contient P et est contenue dans ExpTime (et même Pspace). Elle contient
beaucoup de propriétés associées à des problèmes courants : problèmes de tournées,
d’emploi du temps, de placement de tâches, d’affectation de fréquences, de rotation
d’équipages, de découpage...Or pour beaucoup d’entre elles, on n’a pas trouvé d’algorithme
polynomial, mais pour aucune d’entre elles, on n’a prouvé qu’elle ne pouvait pas être testée
en temps polynomial.
➢ DEFINITION VIA LES CERTIFICATS
L est dit NP si il existe un polynôme Q, et un algorithme polynomial à deux entrées et à
valeurs booléennes tels que:
L = {u | Ǝ c; A(c; u) = Vrai; ≤ Q(|u|)}
A est appelé algorithme de vérification,
c est appelé certificat (ou preuve, ou témoin..).
|c| représente la taille de c.
|c| ≤ Q(|u|) : la taille des certificats est bornée polynomialement par rapport à la taille de
l’entrée.
On dit que A vérifie L en temps polynomial.

P a g e 7 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

On peut par exemple voir c comme une preuve, A comme un algorithme qui vérifie la preuve.
Une propriété NP sera donc une propriété pour laquelle les instances positives ont une preuve
"courte" et "facile" à vérifier.

➢ LA DEFINITION VIA LE NON-DETERMINISME


On peut définir les propriétés NP en utilisant la notion d’algorithme NON-déterministe
polynomial :
Un algorithme non-déterministe peut être vu comme un algorithme avec des instructions de
type "choix(i, 1..n)" : on choisit aléatoirement un entier dans l’intervalle [1::n]. (On peut se
restreindre à juste choisir une valeur parmi deux.)
Soit A un algorithme non déterministe à valeurs booléennes et dont tous les calculs s’arrêtent
; il décide la propriété Pr suivante : "u vérifie Pr si et seulement s’il existe un calcul de A
sur u qui retourne Vrai." (Penser à un automate non déterministe : un mot est accepté si et
seulement s’il existe au moins un chemin acceptant.)
Complexité d’un algorithme non-déterministe : Un algorithme non-déterministe A est dit
polynomial si il existe un polynôme Q tel que pour toute entrée u, tous les calculs de A sur u
ont une longueur d’exécution bornée par Q(lul).

Les deux définitions sont équivalentes : un certificat correspond à une suite de choix dans
l’exécution de l’algorithme non déterministe.
A partir d’un algorithme non-déterministe polynomial pour vérifier P, on construira donc la
notion de certificat qui correspond à une suite de choix et d’algorithme de vérification qui
consiste à vérifier que l’exécution de l’algorithme non déterministe correspondant à la suite
de choix donnée par le certificat retourne Vrai.
A partir d’une notion de certificat et d’algorithme de vérification, on construit un algorithme
non-déterministe qui consiste à d’abord générer aléatoirement un certificat -la partie non
déterministe- et ensuite à le vérifier en utilisant l’algorithme déterministe de vérification.

II.2.2 PRINCIPE

Pour montrer qu’une propriété est NP, il faut:


▶ définir la notion de certificat et montrer que la taille d’un certificat est bornée
polynomialement par la taille du problème
▶ définir l’algorithme de Vérification et montrer qu’il est polynomial (et correct).

Un certificat pour G est juste un coloriage des nœuds.


On peut par exemple le représenter par un tableau de couleurs indexé par les sommets.
On a donc :
taille du certificat <= taille du graphe(on suppose que la taille d’un graphe est au moins le
nombre de sommets plus le nombre d’arcs)
La taille d’un certificat est alors bien linéaire, donc polynomialement bornée, par rapport à
celle de la donnée.
Un certificat est valide si et seulement si aucun arc ne relie deux nœuds de même couleur: le
vérifier est bien polynomial:
boolean

P a g e 8 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

A(col, G){
Pour chaque arc (s,d) de G
si col(s)=col(d) retourner Faux;
retourner Vrai;
}
La complexité de l’algorithme est de l’ordre de card(A) donc bien polynomiale.
’Être 3-coloriable’ est donc bien une propriété NP.
*Donnée: G = (S; A) un graphe, n un entier, n <= card(S)
Certificat: une suite de n sommets, soit par exemple un tableau de n sommets.
Donc la taille d’un certificat est au plus n (ou n ∗ log(card(S)), si on prend en compte la taille
du codage d’un sommet)
*Vérification: if faut vérifier que c’est bien un circuit : tous les sommets sont différents, un
sommet et son suivant sont bien reliés par un arc

//cert: tableau de n sommets


A(cert,G){
boolean dejapasse=new passe[nbsommets];
//pour vérifier on ne passe pas 2 fois par le meme
pour i de 1 à n
si dejapassé[cert[i]] retourner Faux;
//on passe deux fois par ce sommet
si (cert[i],cert[i+1]) n’est pas un arc de G
retourner Faux;
dejapasse[cert(i)]=true;
fin pour;
si (dejapassé[cert[n]]
ou (cert[n],cert[1]) n’est pas un arc)
alors retourner Faux;
sinon retourner Vrai;
La complexité de l’algorithme est de l’ordre de n donc bien polynomiale.
Donc, la propriété est bien NP!

II.2.3 EXEMPLE

—Soit la propriété "être satisfiable" pour une expression booléenne. Un certificat est juste
une valuation (i.e. une valeur booléenne. Un certificat est juste une valuation (i.e. une valeur
booléenne pour chaque variable). Il est valide si la valuation donne la valeur vraie à la
formule. Il est bien de taille polynomiale (même linéaire), puisque c’est juste un vecteur de n
booléens, si n variables sont présentes dans la formule ; vérifier qu’il est valide correspond à
évaluer l’expression avec cette valuation c’est aussi polynomial. La propriété est bien NP.
—Soit la propriété "être 3-coloriable " ; un certificat pour G est juste un coloriage des
nœuds. Il est valide si aucun arc ne relie deux nœuds de même couleur. La taille d’un
certificat est bien linéaire par rapport à celle de la donnée et vérifier qu’il est valide est bien
polynomial : "Être 3-coloriable" est donc bien une propriété NP.

P a g e 9 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

—Soit la propriété de graphe : "avoir un chemin sans cycle de longueur au moins k " ; un
certificat pour G est juste une suite de nœuds distincts. Il est valide s’il définit bien un
chemin sans cycle de longueur au moins k. La taille d’un certificat est bien polynomiale par
rapport à celle de la donnée et vérifier qu’il est valide est bien polynomial : la propriété est
NP.

LA PROBLEMATIQUE NP=P

Bien sûr, P est inclus dans NP : toute propriété P est une propriété NP ; l’algorithme de
vérification est l’algorithme de décision et n’a pas besoin de certificat : on peut prendre pour
certificat le mot vide.
On peut aussi montrer que NP est inclus dans PSPACE et donc dans EXPTIME : pensez à
l’algorithme qui énumère et teste tous les certificats possibles. Cet algorithme de
recherche exhaustive est souvent appelé l’algorithme du British Museum.
On conjecture que P#NP, mais personne n’a su le prouver ! Aucune propriété NP n’a été
prouvée à ce jour ne pas être P. D’un autre côté, pour beaucoup de propriétés NP, aucun
algorithme polynômial n’a été trouvé (on verra dans le prochain cours qu’il existe des
propriétés NP telles que si on trouvait un algorithme polynomial pour l’une d’entre elles, il y
aurait un algorithme polynomial pour n’importe quelle propriété NP). La conjecture a été
émise par S. Cook en 1971 et le "Clay Mathematics Institute" offre 1 million de dollars à celui
qui trouve la réponse à la question ! De même on conjecture que NP est strictement inclus
dans Pspace sans avoir réussi à la prouver.

II.3 CLASSE NP-COMPLET


II.3.1 DEFINITION

Pour un certain nombre de problèmes (chemins hamiltoniens, coloriage des graphes,


problèmes d'emplois du temps, factorisation des nombres entiers), une solution peut être
difficile à trouver, mais, si on en propose une, il est facile (= polynomial) de vérifier si elle
convient. La plupart des problèmes utiles sont soit résolubles au moyen d'un algorithme
polynomial, soit on peut vérifier si une solution proposée en est bien une en un temps
polynomial. Un examen attentif de ce deuxième type de problèmes a donné lieu, en 1971, à
un travail de Cook, à Toronto, intitulé "The Complexity of Theorem Proving Procedures" où
est introduite la notion de NP-complétude. De façon inattendue, cette propriété abstraite
d'un problème très artificiel se trouve être satisfaite par plusieurs centaines ou milliers de
problèmes concrets. Lorsqu'un problème est connu pour être NP-complet, ou pire, on peut
donc raisonnablement penser qu'il est inutile d'en chercher une solution sous forme d'un
algorithme de complexité polynomiale .
II.3.2 PRINCIPE

Comment démontrer qu’un problème  est NP-complet

P a g e 10 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

On montre que :
1) démontrer que   NP
2) démontrer qu’il existe P’NP-complet tel que P’ .
II.3.3 EXEMPLE

Les problèmes considérés sont polynomialement réductibles à des problèmes d'optimisation


linéaire en nombres entiers.
Optimisation linéaire :
trouver un n-uplet x = (x1, x2, ... , xn) de nombres réels qui maximisent une forme linéaire c x
en respectant des conditions A x ≤ b et x ≥ 0. En fait, si les coefficients sont rationnels, les
solutions éventuelles sont rationnelles. Des algorithmes polynomiaux existent. Une variante
de l'algorithme du pivot de Gauss permet de résoudre de tels problèmes. Si les coefficients
sont des entiers relatifs et les solutions des entiers positifs ou nuls, on sait que le problème
de l'optimisation linéaire (en nombres entiers) est NP-complet (attention ! la taille en
mémoire d'un entier est le logarithme de cet entier...)
- Le problème du sac à dos.
On a des objets de volumes v1, ... , vn et d'utilités u1, ... , un. On veut mettre dans un sac à
dos de volume V un nombre xi de chaque objet. On veut maximiser l'utilité totale. C'est un
problème d'optimisation linéaire en nombres entiers :
Maximiser ∑i ui xi sous les n + 1 contraintes xi ≥ 0 et ∑i vi xi ≤ V. Par exemple, maximiser 10
x1 + 8 x2 + 5 x3 avec les contraintes de positivité (sous-entendues) et la contrainte 6 x1 +
5 x2 + 4 x3 ≤ 9.
- Le problème du voyageur de commerce.
On considère le graphe non-orienté complet à n sommets Kn. Chaque arête de ce graphe a
un poids positif ou nul puv. On cherche un cycle passant une fois et une seule par chaque
sommet (on dit hamiltonien) et de poids total minimum. Ce problème peut être traduit en
un problème d'optimisation linéaire en nombres entiers.
Les variables sont xuv, avec xuv ≥ 0 et xuv ≤ 1. La forme est à minimiser. c'est ∑u, v puv xuv, avec
les contraintes supplémentaires qu'en chaque sommet deux arêtes exactement sont
choisies, ∑u xuv = 2 pour tout v, et que le cycle ne se décompose pas en cycles plus petits,
donc pour tout sous-ensemble Y de sommets le nombre d'arêtes ayant ses deux extrémités
dans Y est strictement plus petit que le cardinal de Y, c'est- à-dire que pour tout Y ≠ Kn, ∑u, v
xuv < |Y|, la somme portant sur tous les sommets u et v de Y.
La recherche d'une solution exacte de ces deux problèmes peut être impraticable.
Néanmoins, il existe des méthodes permettant d'obtenir des solutions approchées. Ce sont
les diverses méthodes heuristiques. Même pour trouver une solution exacte, la connaissance
de solutions
approchées permet de rendre l'algorithme meilleur, tout en en conservant, bien sûr, la
complexité exponentielle.
- Heuristique pour le sac à dos.
On peut chercher une solution rationnelle par une méthode de simplexe et arrondir à
P a g e 11 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

l'entier inférieur. En fait, dans ce cas, la méthode du simplexe est inutile. On trouve une
approximation entière en considérant l'objet ayant le plus grand rapport utilité/volume et en
remplissant le sac avec le maximum d'objets par ordre décroissant de ces rapports, par un
algorithme glouton. On vérifie aussi facilement que, si on ne se limite pas aux solutions
entières, on trouve la solution optimale en ne prenant que l'objet ayant ce plus grand
rapport.

Dans l'exemple maximiser 10 x1 + 8 x2 + 5 x3 avec les contraintes de positivité (sous


entendues) et la contrainte 6 x1 + 5 x2 + 4 x3 ≤ 9, On a comme rapports respectivement
10/6, 8/5 et 5/4, déjà classées par ordre décroissant. Une solution rationnelle est ici x1 = 1,5,
x2 = x3 = 0, d'utilité totale 15. Une solution entière approchée est x1 = 1, x2 = x3 = 0, d'utilité
totale 10. On peut déjà dire que, pour une solution entière optimale, l'utilité est de 10 au
moins et de 15 au plus.

- Heuristique pour le voyageur de commerce.


On peut partir d'un cycle hamiltonien, voire en essayer quelques-uns et les modifier
localement en essayant d'améliorer le poids total.Une autre heuristique (due à Christofidès)
consiste à remarquer que, si on enlève une arête à un cycle hamiltonien de poids minimum,
on a un arbre recouvrant de poids minimum pour le graphe restant. On peut donc partir d'un
arbre recouvrant de poids minimum pour le graphe, puis coupler les sommets de degré
impair de cet arbre par un couplage de poids minimum, deux choses qu'on sait faire en
temps polynomial. Le résultat n'est pas nécessairement hamiltonien. Mais on peut sauter
par-dessus des sommets déjà rencontrés. On obtient ainsi un circuit hamiltonien dont on
peut prouver que le poids est au plus 1,5 fois le poids d'un circuit de poids minimum. Le tout
est accompli en un temps cubique.

-La méthode de séparation-évaluation


On peut représenter les solutions d'un problème sous forme d'un arbre. à chaque noeud, on
fait un choix d'une valeur possible pour une variable. Les solutions sont donc disposées aux
feuilles. La recherche d'une solution optimale revient alors à regarder toutes les feuilles et à
retenir celle qui maximise (ou minimise) l'utilité (ou le poids). Pour le sac à dos, l'ensemble
des solutions est en nombre au moins 2n. D'où la complexité exponentielle. Pour le voyageur
de commerce, il y a 2a solutions au maximum.
La méthode de séparation-évaluation consiste à abandonner l'exploration de branches de
l'arbre lorsqu'on peut établir que toutes les solutions qui en découlent sont moins bonnes
qu'une solution qu'on possède déjà. Cette solution a priori, obtenue par une méthode
heuristique est par ailleurs actualisée lors du parcours de l'arbre.

Dans l'exemple du sac à dos, 10 x1 + 8 x2 + 5 x3 avec les contraintes de positivité (sous-


entendues) et la contrainte 6 x1 + 5 x2 + 4 x3 ≤ 9, l'arbre des solutions complet est :

P a g e 12 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

Certains noeuds sont barrés parce qu'on sait déjà que la contrainte de volume sera violée.
Pour limiter l'exploration, on va utiliser une borne inférieure (borne) correspondant à une
solution exacte connue et une borne supérieure (évaluation) fournie par une solution
rationnelle. Ces deux bornes sont au départ de 10 et de 15. On explore l'arborescence en
profondeur. A chaque nouveau noeud, on réévalue la borne supérieure, en fonction des
choix déjà faits. Cette évaluation peut être approchée (solution non entière) ou exacte
(solution entière). Si cette évaluation est strictement inférieure à la borne inférieure
courante + 1, il est inutile de continuer à explorer sous le noeud. Si l'évaluation est exacte et
supérieure à la borne inférieure courante, on a trouvé une solution entière meilleure. On
actualise donc la borne inférieure et on continue. Sinon, on continue.
Dans notre exemple, en faisant une exploration en profondeur, on trouve successivement :
Maximiser 10 x1 + 8 x2 + 5 x3 avec la contrainte 6 x1 + 5 x2 + 4 x3 ≤ 9

On arrive à 2. Le choix x1 = 0 fait réévaluer. On trouve l'optimum pour x2 = 9/5, soit une
évaluation de 14,4 non exacte donc on continue. On arrive à 3. L'évaluation donne x3 = 9/4
donc évaluation de 11,25, on continue et on trouve trois solutions d'utilités 0, 5 et 10. On
retourne en 2, puis 4. Avec les choix x1 = 0 et x2 = 1, l'optimum est x3 =1, solution exacte
donnant l'utilité 13. On actualise donc la borne à 13. On retourne en 1, puis en 5. L'optimum
est ici x2 = 3/5, soit une évaluation de 14,8. On continue vers 6, où l'optimum est x3 = 3/4,

P a g e 13 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

donc évaluation de 13,25. On peut s'arrêter car on n'aura aucune amélioration possible de la
borne 13.
Dans le cas d'un circuit hamiltonien, il faut définir la fonction d'évaluation. La résolution
exacte rationnelle du problème linéaire serait en effet trop longue. Il s'agit de minorer un
poids. L'évaluation doit donc être un minorant du poids d'un cycle hamiltonien. On choisit un
sommet, puis on cherche un
arbre recouvrant de poids minimum pour le graphe privé de ce sommet. On y ajoute la
somme des poids des deux arêtes de poids minimum qui arrivent à ce sommet. Ceci fournit
un minorant (évaluation). On va ensuite faire des branchements selon des arêtes à exclure
(=leur poids devient infini). On réévalue en recalculant un arbre de poids minimum qu'on
complète par les arêtes de poids minimum issues du premier sommet. Si on obtient ainsi un
cycle hamiltonien de poids inférieur, on actualise la borne, et ainsi de suite.

Exemple G = K6

P a g e 14 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

Conclusion : cycle hamiltonien de poids 14.


-La programmation dynamique
On introduit un paramètre supplémentaire tel que le problème à résoudre corresponde à la
dernière valeur du paramètre. Ce paramètre est choisi de façon que la résolution du
problème pour une valeur quelconque ne dépende que de la solution pour les valeurs plus
petites.
Exemple : le problème du sac à dos
P : Maximiser ∑i ui xi sous les n + 1 contraintes xi ≥ 0 et ∑i vi xi ≤ v.
On choisit le paramètre k et les problèmes P(k, v) : Maximiser ∑i ui xi sous les k + 1
contraintes xi ≥ 0 et ∑i vi xi ≤ v, où les sommes ne portent que sur les indices de 1 à k. P(1, v)
est facile à résoudre et pour P(k, v), on essaie les diverses valeurs possibles de xk, qui à
chaque fois ramènent à un problème de paramètre k – 1. Plus précisément, si z(k, v) est le
maximum pour P(k, v), z(k, v) = max{ z(k – 1, v – vk xk) + uk xk }, pris sur les valeurs possibles
de xk.
Maximiser 10 x1 + 8 x2 + 5 x3 avec les contraintes de positivité (sous-entendues) et la
contrainte 6 x1 + 5 x2 + 4 x3 ≤ 9, On choisit k = 1, 2 ou 3 et on s'intéresse seulement aux k
premières variables. v peut prendre toutes les valeurs de 0 à 9 (en fait de 4 à 9).
Pour k = 1, on doit maximiser 10 x1 avec 6 x1 ≤ v.
Pour k = 2, on a z(2, v) = max{ z(1, v – 5 x2) + 8 x2 }, avec v – 5 x2 ≥ 0.
Pour k = 3, on a z(3, v) = max{ z(2, v – 4 x3) + 5 x3 }, avec v – 4 x3 ≥ 0

P a g e 15 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

v=
II.2.2 0 1 2 3 4 5 6 7 8 9
k= 1 0 0 0 0 0 0 10 10 10 10
k= 2 0 0 0 0 0 8 10 10 10 10
k= 3 0 0 0 0 5 8 10 10 10 13

On retrouve le maximum 13, correspondant à (0, 1, 1)


Exemple : le voyageur de commerce
L'idée est de partir d'un sommet x et de construire tous les sous-ensembles S contenant ce
sommet et, pour chacun d'entre eux et pour chaque sommet u en-dehors de S, de chercher
un chemin hamiltonien allant de x à u, en n'utilisant que des sommets intermédiaires dans S.
On retient le plus petit poids de ces chemins. On fait de proche en proche le calcul pour tous
les sous-ensembles. Un cycle hamiltonien de poids minimum est un tel chemin jusqu'à un
sommet t, suivi de l'arête tx. On cherche donc le minimum des poids des chemins
hamiltoniens de x à u (qu'on a trouvés à la dernière étape) plus le poids de ux.
L'étape d'actualisation ressemble un peu à celle de Prim. Mais on raisonne sur des
ensembles de sommets...
Exemple

Par exemple, le 13 en dernière colonne, ligne y est la valeur minimale entre T(xzt, u) + p(u,y),
T(xzu, t) + p(t, y) et T(xtu, z) + p(z, y).
La longueur du cycle hamiltonien de plus faible poids est donc le minimum entre T(xyzt, u) +
p(u, x), T(xyzu, t) + p(t, x), T(xytu, z) + p(z, x) et T(xztu, y) + p(y, x).
Dans l'exemple, les valeurs sont 16, 17, 17, 17. Le minimum est donc 16.

En gardant trace de la façon dont sont calculés les nombres du tableau T, on peut
reconstituer le cycle hamiltonien. Ici, c'est xtyzux.
Au point de vue de la complexité, pour le cycle hamiltonien on a O(n 2n), ce qui est mieux
que la force brutale. Il y a en effet (n – 1)! permutations circulaires des n sommets. Les
regarder toutes conduit à une complexité O(nn e– n √n) d'après la formule de Stirling.
Pour le sac à dos, la solution semble polynomiale. En fait, elle est polynomiale en les
paramètres entiers. Mais chaque paramètre est une fonction exponentielle de la place qu'il

P a g e 16 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

occupe en mémoire. L'algorithme est donc bien exponentiel en la taille des données. Un tel
algorithme est appelé pseudo-polynomial.

II.4 CLASSE NP-DIFFICILE (NP-DURES)

II.4.1 DEFINITION

Quelle est la problématique ? Supposons qu’on soit dans la situation suivante : on cherche
un algorithme pour vérifier une propriété ; on a montré qu’elle est NP mais on ne trouve pas
d’algorithme P. Si on arrive à prouver qu’il n’y en a pas, on prouve P # NP, ce qui résoudrait
une conjecture sur laquelle se sont "acharnés" depuis 30 ans de nombreux chercheurs. Mais
on peut peut-être montrer qu’elle est NP-dure : intuitivement cela signifie qu’elle contient
toute la difficulté de la classe NP, et que donc si on trouvait un algorithme polynomial pour
cette propriété, on en aurait un pour toute propriété NP : cela justifie en quelque sorte de
ne pas avoir trouvé d’algorithme polynomial.
NP-difficile, en théorie de la complexité de calcul, est la propriété définissant une classe de
problèmes qui sont informellement « au moins aussi difficiles que les problèmes les difficiles
dans NP ».Une spéfication plus précise : un problème H est NP-difficile lorsque chaque
problème L de NP peut être réduit en temps polynomial à H ;autrement dit, en supposant une
solution de H a une unité de temps, M solution d peut être utilisé pour résoudre L en temps
polynomial. En conséquence, trouver un algorithme polynomial pour résoudre tout problème
de NP-difficile donnerait des algorithmes polynomiaux pour tous les problèmes de NP, ce qui
est peu probable car beaucoup d’entre eux sont considérés comme difficiles.
II.4.2 PRINCIPE

➢ Comment montrer qu’une propriété est NP-difficile?

Pour montrer que R est NP-difficile, plutôt que de montrer "directement" que toute propriété
NP se réduit polynomialement en R, il suffit de montrer qu’une propriété connue NP-difficile
se réduit polynomialement en R. En effet, comme ≤ 𝑃 est transitif, on a :
Proposition : si L ≤ P L’ et L est NP-difficle alors L’ est NP-difficile

➢ Pourquoi montrer qu’une propriété est NP-difficile ?

D’après la proposition précédente, si une propriété NP-difficile se révélait être P, on aurait P


= NP, ce qui est peu probable et en tout cas a résisté aux efforts de nombreux chercheurs !
Donc, montrer qu’une propriété est NP-difficile justifie raisonnablement qu’on n’ait pas
trouvé d’algorithme polynomial pour décider de cette propriété !
Remarque : par contre, montrer qu’une propriété est NP, c’est montrer qu’elle n’est pas "si
difficile", même si elle n’est peut-être pas P.

P a g e 17 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

II.4.3 EXEMPLE

Il existe un catalogue référence des propriétés NP-difficiles, livre de Garey et Johnson : "
Computers and Intractability : guide to the theory of NP-completeness " qui contient
beaucoup de problèmes mais date de 1979 ; il existe des sites Web essaient de tenir à jour le
catalogue comme le compendium problèmes d’optimisations NP.
Voici un court extrait du catalogue :

• 3-CNF-SAT : décider si une formule sous forme conjonctive avec au plus 3 littéraux
par clause est satisfiable.
• 3-coloriage de graphes : existe-t-il un coloriage en 3 couleurs d’un graphe tel que
deux sommets adjacents soient coloriés différemment.
• Le problème de l’existence d’une clique de taille k dans un graphe.
• Le problème du BinPacking.
• Le problème du sac à dos (non fractionnable).
• Le problème de l’existence d’un circuit hamiltonien.
• Le problème du voyageur de commerce.
• La programmation linéaire en entiers.
• Le problème du recouvrement d’ensembles.

Remarque 1 : ATTENTION à la spécification des problèmes : il suffit de changer à peine un


problème pour qu’il ne soit plus NP-difficile : par exemple, le 2-coloriage de graphes, le
problème de l’existence d’un circuit eulérien, la programmation linéaire en réels sont dans P.

Remarque 2 : pour prouver qu’une propriété R est NP-difficile, on peut donc choisir une
propriété au catalogue des NP-dures et essayer de la réduire dans R : le problème est de bien
choisir (bien sûr si elle est déjà dans le catalogue, c’est encore plus simple !) c’est à dire de
trouver une propriété connue NP-dure qui se réduit "facilement" et polynomialement en R.

CONCLUSION
Rendu au terme de cet exposé, il était question de la complexité d’un problème. Il en ressort
qu’au cœur de la théorie de la complexité et de son formalisme se trouve les problèmes de
décision, d’optimisation et de fonction. Parlant des problèmes de décision dont la solution est
OUI ou NON, il existe des classes de complexité de type P, NP, NP-complet et NP-difficile. Les
problèmes de classe P peuvent être résolus sur une machine déterministe (machine de Turing)
en temps polynomial, tandis que la classe NP est la classe des problèmes de décision pour
lesquels la réponse oui peut être décidée par un algorithme non-déterministe en un temps
polynomial par rapport à la taille de l'instance. Les problèmes importants en théorie de la
complexité sont entre autres le problème SAT, le problème du sac à dos, le voyageur de
commerce, le problème du plus court chemin.

P a g e 18 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020

REFERENCES

➢ WIKIPEDIA
➢ ACC : Master informatique S1 : Complexité des problèmes : les classes P et NP
➢ Cours 5 : Complexité et méthodes
➢ Complexité des problèmes : les classes P et NP /Sophie Tison ; Université de Lille
➢ Introduction aux classes de complexité classique /HUIN Nicolas
➢ Chapitre 4 :Problème NP-complet / Opti comb

P a g e 19 | 19

Vous aimerez peut-être aussi