Académique Documents
Professionnel Documents
Culture Documents
Table of Contents
I. CADRE GENERAL DE LA COMPLEXITE D’UN PROBLEME ...................................................................... 3
P a g e 1 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020
INTRODUCTION
P a g e 2 | 19
RECHERCHE OPERATIONNELLE : COMPLEXITE D’UN PROBLEME GROUPE 10 4GCU 2019-2020
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”.
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.
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
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
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 ».
II.1.2 PRINCIPE
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.
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.
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
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
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.
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
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.
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
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
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.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
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
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 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